modiflecture
This commit is contained in:
parent
6afb45f006
commit
f8891d0498
3 changed files with 53 additions and 34 deletions
|
|
@ -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);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,3 +33,8 @@ function planning_view(array $sauveteurs, array $creneaux, array $grille, string
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
<<<<<<< Updated upstream
|
||||||
|
=======
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
>>>>>>> Stashed changes
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue