From 807baca51ef3c443adc2f8896bf9dbce3a682f14 Mon Sep 17 00:00:00 2001 From: kylian prebost Date: Mon, 8 Jun 2026 14:12:31 +0200 Subject: [PATCH 1/3] =?UTF-8?q?creation=20du=20crud=20et=20du=20controller?= =?UTF-8?q?s=20=20pour=20op=C3=A9rations.php=20et=20ajout=20dans=20le=20in?= =?UTF-8?q?dex?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/operation_ctrl.php | 0 index.php | 7 ++++++- models/operation_crud.php | 0 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 controllers/operation_ctrl.php create mode 100644 models/operation_crud.php diff --git a/controllers/operation_ctrl.php b/controllers/operation_ctrl.php new file mode 100644 index 0000000..e69de29 diff --git a/index.php b/index.php index a89fbc0..9dafbca 100644 --- a/index.php +++ b/index.php @@ -66,9 +66,14 @@ break; case 'operations': - require('views/operations_view.php'); + require('controllers/operation_ctrl.php'); + operations_form_ctrl(); break; + case 'add_operation': + require('controllers/operation_ctrl.php'); + add_operation_write_ctrl(); + break; default: require('views/404_view.php'); break; diff --git a/models/operation_crud.php b/models/operation_crud.php new file mode 100644 index 0000000..e69de29 From 3d920284090f366fc7273b4057eb02af19b5dc3a Mon Sep 17 00:00:00 2001 From: ryana Date: Mon, 8 Jun 2026 14:17:20 +0200 Subject: [PATCH 2/3] modif tous --- config.php | 5 ++ controllers/lecture_page_ctrl.php | 76 +++++++++++++++++-------------- models/lecture_page_model.php | 25 +++++++--- views/lecture_page.php | 9 +++- 4 files changed, 74 insertions(+), 41 deletions(-) create mode 100644 config.php diff --git a/config.php b/config.php new file mode 100644 index 0000000..2187112 --- /dev/null +++ b/config.php @@ -0,0 +1,5 @@ + '#2ecc71', - 'Sauveteur en approche de la cavité' => '#9b59b6', - 'Sauveteur sous terre' => '#8B4513', - 'Sauveteur équipe de gestion' => '#f1c40f', - "Sauveteur en mission à l'extérieur" => '#e67e22', - 'Sauveteur en repos' => '#3498db', - 'Sauveteur en brancardage civière' => '#e74c3c', -]; + $date = $_GET['date'] ?? date('Y-m-d'); + $sauveteurs = get_all_sauveteurs($c); + $missions = get_missions_by_date($c, $date); -$creneaux = []; -for ($min = 8 * 60; $min < 20 * 60; $min += 30) { - $creneaux[] = sprintf('%02d:%02d', intdiv($min, 60), $min % 60); -} + $couleurs = [ + 'Sauveteur disponible' => '#2ecc71', + 'Sauveteur en approche de la cavité' => '#9b59b6', + 'Sauveteur sous terre' => '#8B4513', + 'Sauveteur équipe de gestion' => '#f1c40f', + "Sauveteur en mission à l'extérieur" => '#e67e22', + 'Sauveteur en repos' => '#3498db', + 'Sauveteur en brancardage civière' => '#e74c3c', + ]; -// Indexer les sauveteurs par ID pour accès rapide à la spécialité -$sauveteursById = []; -foreach ($sauveteurs as $s) { - $sauveteursById[$s['ID_Sauveteur']] = $s; - $grille[$s['ID_Sauveteur']]= array_fill_keys($creneaux, false); -} + $creneaux = []; + for ($min = 8 * 60; $min < 20 * 60; $min += 30) { + $creneaux[] = sprintf('%02d:%02d', intdiv($min, 60), $min % 60); + } -foreach ($missions as $m) { - $id = $m['ID_Sauveteur']; - if (!isset($grille[$id])) continue; + $sauveteursById = []; + foreach ($sauveteurs as $s) { + $sauveteursById[$s['ID_Sauveteur']] = $s; + $grille[$s['ID_Sauveteur']] = array_fill_keys($creneaux, false); + } - $specialite = $sauveteursById[$id]['Specialite'] ?? ''; - $couleur = $couleurs[$specialite] ?? '#cccccc'; - $debut = new DateTime($m['DtaHeureDebut']); - $fin = new DateTime($m['DtaHeureFin']); + foreach ($missions as $m) { + $id = $m['ID_Sauveteur']; + if (!isset($grille[$id])) continue; - foreach ($creneaux as $c) { - $debutCreneau = new DateTime($date . ' ' . $c . ':00'); - $finCreneau = (clone $debutCreneau)->modify('+30 minutes'); - if ($debut < $finCreneau && $fin > $debutCreneau) { - $grille[$id][$c] = $couleur; + $specialite = $sauveteursById[$id]['Specialite'] ?? ''; + $couleur = $couleurs[$specialite] ?? '#cccccc'; + $debut = new DateTime($m['DtaHeureDebut']); + $fin = new DateTime($m['DtaHeureFin']); + + foreach ($creneaux as $c) { + $debutCreneau = new DateTime($date . ' ' . $c . ':00'); + $finCreneau = (clone $debutCreneau)->modify('+30 minutes'); + if ($debut < $finCreneau && $fin > $debutCreneau) { + $grille[$id][$c] = $couleur; + } } } -} -require 'view.php'; + require('views/planning_view.php'); + planning_view($sauveteurs, $creneaux, $grille, $date); +} diff --git a/models/lecture_page_model.php b/models/lecture_page_model.php index 1c2ca64..8bb7775 100644 --- a/models/lecture_page_model.php +++ b/models/lecture_page_model.php @@ -1,12 +1,25 @@ query($req); + $sauveteurs = $res->fetchAll(PDO::FETCH_ASSOC); + $res->closeCursor(); + return $sauveteurs; +} -$sauveteurs = $pdo->query('SELECT ID_Sauveteur, Nom, Prenom, Specialite FROM Sauveteur ORDER BY Nom, Prenom')->fetchAll(PDO::FETCH_ASSOC); +// Récupère les missions d'une journée +function get_missions_by_date(PDO $c, string $date): array { + $req = "SELECT ID_Mission, DtaHeureDebut, DtaHeureFin, ID_Sauveteur FROM Mission WHERE DATE(DtaHeureDebut) = :date OR DATE(DtaHeureFin) = :date"; + $prep = $c->prepare($req); + $prep->bindValue(':date', $date, PDO::PARAM_STR); + $prep->execute(); + $missions = $prep->fetchAll(PDO::FETCH_ASSOC); + $prep->closeCursor(); + return $missions; +} -$stmt = $pdo->prepare('SELECT ID_Mission, DtaHeureDebut, DtaHeureFin, ID_Sauveteur FROM Mission WHERE DATE(DtaHeureDebut) = ? OR DATE(DtaHeureFin) = ?'); -$stmt->execute([$date, $date]); -$missions = $stmt->fetchAll(PDO::FETCH_ASSOC); diff --git a/views/lecture_page.php b/views/lecture_page.php index df8dac2..96bec03 100644 --- a/views/lecture_page.php +++ b/views/lecture_page.php @@ -1,3 +1,7 @@ + Planning @@ -23,5 +27,8 @@ + - \ No newline at end of file + + Date: Mon, 8 Jun 2026 14:21:28 +0200 Subject: [PATCH 3/3] modif tous --- config.php | 5 ----- lecture_page_model | 1 - 2 files changed, 6 deletions(-) delete mode 100644 config.php delete mode 100644 lecture_page_model diff --git a/config.php b/config.php deleted file mode 100644 index 2187112..0000000 --- a/config.php +++ /dev/null @@ -1,5 +0,0 @@ -