modiflecture

This commit is contained in:
ryana 2026-06-08 15:53:57 +02:00
parent 6afb45f006
commit f8891d0498
3 changed files with 53 additions and 34 deletions

View file

@ -1,53 +1,66 @@
<?php <?php
function planning_afficher_ctrl() { function planning_afficher_ctrl() {
require('models/connection.php');
require_once 'models/connection.php';
require_once 'models/planning_model.php';
$co = connection(); $co = connection();
require('models/planning_model.php');
$date = $_GET['date'] ?? date('Y-m-d'); $date = $_GET['date'] ?? date('Y-m-d');
$sauveteurs = get_all_sauveteurs($c);
$missions = get_missions_by_date($c, $date);
$sauveteurs = get_all_sauveteurs($co);
$missions = get_missions_by_date($co, $date);
// Couleurs
$couleurs = [ $couleurs = [
'Sauveteur disponible' => '#2ecc71', 'Sauveteur disponible' => '#2ecc71',
'Sauveteur en approche de la cavité' => '#9b59b6', 'Sauveteur en approche de la cavité' => '#9b59b6',
'Sauveteur sous terre' => '#8B4513', 'Sauveteur sous terre' => '#8B4513',
'Sauveteur équipe de gestion' => '#f1c40f', 'Sauveteur équipe de gestion' => '#f1c40f',
"Sauveteur en mission à l'extérieur" => '#e67e22', "Sauveteur en mission à l'extérieur" => '#e67e22',
'Sauveteur en repos' => '#3498db', 'Sauveteur en repos' => '#3498db',
'Sauveteur en brancardage civière' => '#e74c3c', 'Sauveteur en brancardage civière' => '#e74c3c',
]; ];
// Créneaux 8h - 20h (30 min)
$creneaux = []; $creneaux = [];
for ($min = 8 * 60; $min < 20 * 60; $min += 30) { for ($min = 8 * 60; $min < 20 * 60; $min += 30) {
$creneaux[] = sprintf('%02d:%02d', intdiv($min, 60), $min % 60); $creneaux[] = sprintf('%02d:%02d', intdiv($min, 60), $min % 60);
} }
// Index sauveteurs + grille vide
$sauveteursById = []; $sauveteursById = [];
$grille = [];
foreach ($sauveteurs as $s) { foreach ($sauveteurs as $s) {
$sauveteursById[$s['ID_Sauveteur']] = $s; $sauveteursById[$s['ID_Sauveteur']] = $s;
$grille[$s['ID_Sauveteur']] = array_fill_keys($creneaux, false); $grille[$s['ID_Sauveteur']] = array_fill_keys($creneaux, '');
} }
// Remplissage des missions
foreach ($missions as $m) { foreach ($missions as $m) {
$id = $m['ID_Sauveteur']; $id = $m['ID_Sauveteur'];
if (!isset($grille[$id])) continue; if (!isset($grille[$id])) continue;
$specialite = $sauveteursById[$id]['Specialite'] ?? ''; $specialite = $sauveteursById[$id]['Specialite'] ?? '';
$couleur = $couleurs[$specialite] ?? '#cccccc'; $couleur = $couleurs[$specialite] ?? '#cccccc';
$debut = new DateTime($m['DtaHeureDebut']);
$fin = new DateTime($m['DtaHeureFin']); $debut = new DateTime($m['DtaHeureDebut']);
$fin = new DateTime($m['DtaHeureFin']);
foreach ($creneaux as $c) { foreach ($creneaux as $c) {
$debutCreneau = new DateTime($date . ' ' . $c . ':00');
$finCreneau = (clone $debutCreneau)->modify('+30 minutes'); $start = new DateTime($date . ' ' . $c . ':00');
if ($debut < $finCreneau && $fin > $debutCreneau) { $end = (clone $start)->modify('+30 minutes');
if ($debut < $end && $fin > $start) {
$grille[$id][$c] = $couleur; $grille[$id][$c] = $couleur;
} }
} }
} }
require('views/planning_view.php'); require 'views/planning_view.php';
planning_view($sauveteurs, $creneaux, $grille, $date);
} }

View file

@ -5,21 +5,22 @@ require_once 'config.php';
// Récupère tous les sauveteurs // Récupère tous les sauveteurs
function get_all_sauveteurs(PDO $c): array { function get_all_sauveteurs(PDO $c): array {
$req = "SELECT ID_Sauveteur, Nom, Prenom, Specialite FROM Sauveteur ORDER BY Nom, Prenom"; $req = "SELECT ID_Sauveteur, Nom, Prenom, Specialite FROM Sauveteur ORDER BY Nom, Prenom";
$res = $c->query($req); return $c->query($req)->fetchAll(PDO::FETCH_ASSOC);
$sauveteurs = $res->fetchAll(PDO::FETCH_ASSOC);
$res->closeCursor();
return $sauveteurs;
} }
// Récupère les missions d'une journée // Récupère les missions d'une date
function get_missions_by_date(PDO $c, string $date): array { 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"; $req = "
$prep = $c->prepare($req); SELECT ID_Mission, DtaHeureDebut, DtaHeureFin, ID_Sauveteur
$prep->bindValue(':date', $date, PDO::PARAM_STR); FROM Mission
$prep->execute(); WHERE DATE(DtaHeureDebut) = :date
$missions = $prep->fetchAll(PDO::FETCH_ASSOC); OR DATE(DtaHeureFin) = :date
$prep->closeCursor(); ";
return $missions;
$stmt = $c->prepare($req);
$stmt->bindValue(':date', $date);
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_ASSOC);
} }

View file

@ -33,3 +33,8 @@ function planning_view(array $sauveteurs, array $creneaux, array $grille, string
</body> </body>
</html> </html>
<<<<<<< Updated upstream
=======
<?php
}
>>>>>>> Stashed changes