/** * Ajout d'une plage horaire. * * @param SDIS62\Core\Ops\Entity\PlageHoraire $plage_horaire * * @return self */ public function addPlageHoraire(PlageHoraire $plage_horaire) { // Règles d'ajout if ($plage_horaire instanceof PlageHoraire\GardePlageHoraire) { // Contrôles des gardes existantes (une dispo ne peut pas être ajoutée sur une garde) foreach ($plage_horaire->getPompier()->getGardes() as $garde) { if ($garde->includes($plage_horaire, false)) { throw new InvalidDateException('Une garde existe aux dates de la garde à ajouter'); } } // Contrôles des dispo existantes (si une garde est posé sur une dispo, on la transforme) foreach ($plage_horaire->getPompier()->getDispos() as $dispo) { if ($dispo->includes($plage_horaire, false)) { $plage_horaire->getPompier()->getPlagesHoraires()->removeElement($dispo); if ($dispo->getStart() < $plage_horaire->getStart()) { new PlageHoraire\DispoPlageHoraire($this, $plage_horaire->getPompier(), $dispo->getStart(), $plage_horaire->getStart()); } if ($dispo->getEnd() > $plage_horaire->getEnd()) { new PlageHoraire\DispoPlageHoraire($this, $plage_horaire->getPompier(), $plage_horaire->getEnd(), $dispo->getEnd()); } } } } elseif ($plage_horaire instanceof PlageHoraire\DispoPlageHoraire) { // Contrôles des gardes existantes (une dispo ne peut pas être ajoutée sur une garde) foreach ($plage_horaire->getPompier()->getGardes() as $garde) { if ($garde->includes($plage_horaire, false)) { throw new InvalidDateException('Une garde existe aux dates de la dispo'); } } // Contrôles des dispo existantes (une dispo ne peut pas être ajoutée sur une autre dispo) foreach ($plage_horaire->getPompier()->getDispos() as $dispo) { if ($dispo->includes($plage_horaire, false)) { throw new InvalidDateException('Une disponibilité existe aux dates de la dispo'); } } } $this->plages_horaires->add($plage_horaire); return $this; }
/** * Ajout d'une plage horaire. * * @param SDIS62\Core\Ops\Entity\PlageHoraire $plage_horaire * * @return self */ public function addPlageHoraire(PlageHoraire $plage_horaire) { $this->plages_horaires->add($plage_horaire); return $this; }