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); } } }
public function addReservation(Reservation $reservation) { if (!$this->roomIsFree($reservation->getStartDate(), $reservation->getEndDate())) { throw new EReservationException(); } $this->reservations[] = $reservation; }
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; }
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; } }
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; }
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(); } }