Beispiel #1
0
 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;
 }
Beispiel #2
0
 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);
 }