protected function AddItem(ReservationListItem $item) { $currentDate = $item->StartDate()->ToTimezone($this->timezone); $lastDate = $item->EndDate()->ToTimezone($this->timezone); if ($currentDate->GreaterThan($lastDate)) { Log::Error("Reservation dates corrupted. ReferenceNumber=%s, Start=%s, End=%s", $item->ReferenceNumber(), $item->StartDate(), $item->EndDate()); return; } if ($currentDate->DateEquals($lastDate)) { $this->AddOnDate($item, $currentDate); } else { while ($currentDate->LessThan($lastDate) && !$currentDate->DateEquals($lastDate)) { $this->AddOnDate($item, $currentDate); $currentDate = $currentDate->AddDays(1); } if (!$lastDate->IsMidnight()) { $this->AddOnDate($item, $lastDate); } } $this->_reservations[] = $item; $this->_reservationByResource[$item->ResourceId()][] = $item; }
protected function AddItem(ReservationListItem $item) { $currentDate = $item->StartDate()->ToTimezone($this->timezone); $lastDate = $item->EndDate()->ToTimezone($this->timezone); if ($currentDate->DateEquals($lastDate)) { $this->AddOnDate($item, $currentDate); } else { while (!$currentDate->DateEquals($lastDate)) { $this->AddOnDate($item, $currentDate); $currentDate = $currentDate->AddDays(1); } if (!$lastDate->IsMidnight()) { $this->AddOnDate($item, $lastDate); } } $this->_reservations[] = $item; $this->_reservationByResource[$item->ResourceId()][] = $item; }
private function Collides(ReservationListItem $item, $itemIndex) { $previousItem = $itemIndex > 0 ? $this->_items[--$itemIndex] : null; $nextItem = $itemIndex < count($this->_items) - 1 ? $this->_items[++$itemIndex] : null; $itemDateRange = new DateRange($item->StartDate(), $item->EndDate()); if ($previousItem != null) { if ($itemDateRange->Overlaps(new DateRange($previousItem->StartDate(), $previousItem->EndDate()))) { return true; } } if ($nextItem != null) { if ($itemDateRange->Overlaps(new DateRange($nextItem->StartDate(), $nextItem->EndDate()))) { return true; } } return false; }
public function testReservationListItemCreatesReservationSlot() { $view = new TestReservationItemView(1, Date::Parse('2011-11-22 04:34'), Date::Parse('2011-11-23 14:43'), 123); $item = new ReservationListItem($view); $this->assertEquals($view->StartDate, $item->StartDate()); $this->assertEquals($view->EndDate, $item->EndDate()); $this->assertEquals($view->ResourceId, $item->ResourceId()); $start = Date::Parse('2011-12-01'); $end = Date::Parse('2011-12-02'); $period = new SchedulePeriod($start, $end); $display = Date::Parse('2011-12-03'); $span = 3; $expectedSlot = new ReservationSlot($period, $period, $display, $span, $view); $actualSlot = $item->BuildSlot($period, $period, $display, $span); $this->assertEquals($expectedSlot, $actualSlot); }