Пример #1
0
 public function checkForValidReservation(Reservation $reservation)
 {
     foreach ($this->reservations as $existingReservation) {
         if ($reservation->getStartDate() >= $existingReservation->getStartDate() && $reservation->getStartDate() <= $existingReservation->getEndDate()) {
             throw new EReservationException($this->roomNumber, $reservation);
         } elseif ($reservation->getEndDate() >= $existingReservation->getStartDate() && $reservation->getEndDate() <= $existingReservation->getEndDate()) {
             throw new EReservationException($this->roomNumber, $reservation);
         }
     }
 }
Пример #2
0
 public function addReservation(Reservation $reservation)
 {
     if (!$this->roomIsFree($reservation->getStartDate(), $reservation->getEndDate())) {
         throw new EReservationException();
     }
     $this->reservations[] = $reservation;
 }
Пример #3
0
 function __construct($roomNumber, Reservation $reservation)
 {
     $this->message = "Room " . $roomNumber . " is already occupied for period from " . $reservation->getStartDate()->format("d-m-y") . " to " . $reservation->getEndDate()->format("d-m-y") . PHP_EOL;
 }
Пример #4
0
 private function isCollidingReservationExists(Reservation $reservation)
 {
     $reservationStartDate = $reservation->getStartDate();
     $reservationEndDate = $reservation->getEndDate();
     for ($i = 0; $i < count($this->reservations); $i++) {
         if ($reservationStartDate > $this->reservations[$i]->getEndDate() || $reservationEndDate < $this->reservations[$i]->getStartDate()) {
             return true;
         }
         return false;
     }
 }
Пример #5
0
 public function addReservation(Reservation $reservation)
 {
     if (!empty($this->reservations)) {
         foreach ($this->reservations as $res) {
             if ($reservation->getStartDate() >= $res->getStartDate() && $reservation->getStartDate() <= $res->getEndDate()) {
                 throw new EReservationException("A reservation already exists in that period.");
             }
             if ($reservation->getEndDate() >= $res->getStartDate() && $reservation->getEndDate() <= $res->getEndDate()) {
                 throw new EReservationException("A reservation already exists in that period.");
             }
         }
     }
     $this->reservations[] = $reservation;
 }
Пример #6
0
 private function compareTwoReservationsForOverlapping(Reservation $newReservation, Reservation $existingReservation)
 {
     if ($newReservation->getStartDate() >= $existingReservation->getStartDate() && $newReservation->getStartDate() <= $existingReservation->getEndDate() || $newReservation->getEndDate() <= $existingReservation->getEndDate() && $newReservation->getEndDate() >= $existingReservation->getStartDate() || $newReservation->getStartDate() <= $existingReservation->getStartDate() && $newReservation->getEndDate() >= $existingReservation->getEndDate()) {
         throw new EReservationException();
     }
 }
Пример #7
0
 private function areOverlappingReservations(Reservation $reservation1, Reservation $reservation2)
 {
     $secondStartsDuringFirst = $reservation2->getStarDate() >= $reservation1->getStarDate() && $reservation2->getStarDate() <= $reservation1->getEndDate();
     $firstStartsDuringSecond = $reservation1->getStarDate() >= $reservation2->getStarDate() && $reservation1->getStarDate() <= $reservation2->getEndDate();
     return $firstStartsDuringSecond || $secondStartsDuringFirst;
 }