From e47ea2882a329aa3d7c0933141c3e244afce2eca Mon Sep 17 00:00:00 2001 From: Florent VIOLLEAU Date: Mon, 16 Dec 2024 18:47:22 +0100 Subject: [PATCH 1/2] [EdfColorDay Bridge] add new bridge --- bridges/EdfColorDayBridge.php | 116 ++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 bridges/EdfColorDayBridge.php diff --git a/bridges/EdfColorDayBridge.php b/bridges/EdfColorDayBridge.php new file mode 100644 index 00000000000..708260ceb93 --- /dev/null +++ b/bridges/EdfColorDayBridge.php @@ -0,0 +1,116 @@ + [ + 'name' => 'Choisir un contrat', + 'type' => 'list', + // we can add later more option prices like EJP + 'values' => [ + 'Tempo' => 'tempo' + ], + ] + ] + ]; + const CACHE_TIMEOUT = 7200; // 2h + + /** + * @param simple_html_dom $html + * @param string $contractUri + * @return void + */ + private function tempo(string $json): void + { + $jsonDecoded = json_decode($json, true, 512, JSON_THROW_ON_ERROR); + + $values = [ + $this->formatFrenchDate('now') => date('Y-m-d'), + 'Demain ' . $this->formatFrenchDate('tomorrow') => date('Y-m-d', strtotime('+1 day')) + ]; + + foreach ($values as $key => $value) { + $i++; + $item = []; + + $text = $key . ' : ' . $this->getDisplayableColor($jsonDecoded['values'][$value]); + $item['uri'] = self::URI . $contractUri; + $item['title'] = $text; + $item['author'] = self::MAINTAINER; + $item['content'] = $text; + $item['uid'] = hash('sha256', $item['title']); + + $this->items[] = $item; + } + } + + private function formatFrenchDate(string $datetime): string + { + // Set the locale to French + setlocale(LC_TIME, 'fr_FR.UTF-8'); + + // Create a DateTime object for the desired date + $now = new DateTime($datetime); + + // Format the date + return strftime('%A %d %B %Y', $now->getTimestamp()); + } + + private function getDisplayableColor(string $color): string + { + $displayableColor = null; + switch($color) { + case 'BLUE': + $displayableColor = '🟦 TEMPO_BLEU'; + break; + case 'WHITE': + $displayableColor = '⬜ TEMPO_BLANC'; + break; + case 'RED': + $displayableColor = '🟥 TEMPO_ROUGE'; + break; + default: + $displayableColor = '⬛ NON_DEFINI'; + break; + } + + return $displayableColor; + } + + private function getTempoYear(): string + { + $month = date('n'); // Current month as a number (1-12) + $year = date('Y'); // Current year + + // Assuming the tempo year starts in September + if ($month >= 9) { + return $year . '-' . ($year + 1); // e.g., 2024-2025 + } + + return ($year - 1) . '-' . $year; // e.g., 2023-2024 + } + + public function collectData() + { + $contract = $this->getKey('contract'); + + $header = [ + 'Content-type: application/json', + ]; + $opts = [ + CURLOPT_HTTPGET => 1, + ]; + + $json = getContents(self::URI . '?season=' . $this->getTempoYear(), $header, $opts); + + if ($contract === 'Tempo') { + $this->tempo($json); + } + } +} From 934c5be96326433c5a84245dcef267d800bb0af2 Mon Sep 17 00:00:00 2001 From: Florent VIOLLEAU Date: Mon, 16 Dec 2024 18:51:30 +0100 Subject: [PATCH 2/2] [EdfColorDay Bridge] lint --- bridges/EdfColorDayBridge.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bridges/EdfColorDayBridge.php b/bridges/EdfColorDayBridge.php index 708260ceb93..1b4e45c40b7 100644 --- a/bridges/EdfColorDayBridge.php +++ b/bridges/EdfColorDayBridge.php @@ -65,7 +65,7 @@ private function formatFrenchDate(string $datetime): string private function getDisplayableColor(string $color): string { $displayableColor = null; - switch($color) { + switch ($color) { case 'BLUE': $displayableColor = '🟦 TEMPO_BLEU'; break; @@ -87,7 +87,7 @@ private function getTempoYear(): string { $month = date('n'); // Current month as a number (1-12) $year = date('Y'); // Current year - + // Assuming the tempo year starts in September if ($month >= 9) { return $year . '-' . ($year + 1); // e.g., 2024-2025