This commit is contained in:
PTA
2026-08-20 17:00:06 +02:00
parent 5d8c0993a6
commit 94e7f09eb4
58 changed files with 5605 additions and 615 deletions

View File

@@ -437,6 +437,34 @@ final class PlanningModel extends BaseModel
*
* @return array<int, array{c1: int, c2: int, date_jour: string}>
*/
/**
* Créneaux du planning tombant hors des dates de contrat de leur agent.
*
* Contrôle de VALIDATION, complémentaire des gardes posées à l'écriture
* (V7.15) : celles-ci empêchent d'en créer de nouveaux, celui-ci révèle ceux
* qui existaient déjà — saisis avant la règle, ou rendus illégitimes par un
* contrat raccourci depuis. La comparaison est faite en SQL, sur la fiche
* agent jointe : c'est elle qui fait foi au moment du contrôle.
*
* @return array<int, array{id_creneau: int, date_jour: string}>
*/
public function entriesOutsideContract(int $planningId): array
{
$stmt = $this->pdo->prepare(
'SELECT c.id_creneau, c.date_jour
FROM creneau_horaire c
JOIN planning p ON p.id_planning = c.id_planning
JOIN agent a ON a.id_agent = p.id_agent
WHERE c.id_planning = :id_planning
AND ((a.date_debut_contrat IS NOT NULL AND c.date_jour < a.date_debut_contrat)
OR (a.date_fin_contrat IS NOT NULL AND c.date_jour > a.date_fin_contrat))
ORDER BY c.date_jour'
);
$stmt->execute(['id_planning' => $planningId]);
return $stmt->fetchAll();
}
public function internalOverlaps(int $planningId): array
{
$stmt = $this->pdo->prepare(