getStartDate()->format('Y-m-d'); $endDate = $absence->getEndDate()->format('Y-m-d'); $startHalf = $absence->getStartHalf(); $endHalf = $absence->getEndHalf(); // Cas d'une absence sur une seule date: on déduit matin/après-midi depuis les bornes. if ($startDate === $endDate) { if (HalfDay::AM === $startHalf && HalfDay::AM === $endHalf) { // Uniquement le matin absent. return [true, false]; } if (HalfDay::PM === $startHalf && HalfDay::PM === $endHalf) { // Uniquement l'après-midi absent. return [false, true]; } // Sinon, on considère la journée complète absente. return [true, true]; } // Premier jour d'une absence multi-jours qui commence l'après-midi. if ($dateYmd === $startDate && HalfDay::PM === $startHalf) { return [false, true]; } // Dernier jour d'une absence multi-jours qui se termine le matin. if ($dateYmd === $endDate && HalfDay::AM === $endHalf) { return [true, false]; } // Les jours intermédiaires sont entièrement absents. return [true, true]; } }