Пример #1
0
 /**
  * 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;
 }
Пример #2
0
 /**
  * Retourne vrai si la plage horaire est contenu dans la place horaire actuelle.
  *
  * @param PlageHoraire $plage
  * @param bool         $strict
  *
  * @return bool
  */
 public function includes(PlageHoraire $plage, $strict = true)
 {
     if (true === $strict) {
         return $this->getStart() <= $plage->getStart() && $this->getEnd() >= $plage->getEnd();
     }
     return $this->includes($plage, true) || $plage->includes($this, true) || $this->contains($plage->getStart()) || $this->contains($plage->getEnd());
 }