public function testAddsReservationsToCalendar() { $startsBeforeWeek = new ReservationItemView(); $startsBeforeWeek->StartDate = Date::Parse('2011-07-30 12:00', 'UTC'); $startsBeforeWeek->EndDate = Date::Parse('2011-07-31 12:00', 'UTC'); $endsAfterWeek = new ReservationItemView(); $endsAfterWeek->StartDate = Date::Parse('2011-08-06 12:00', 'UTC'); $endsAfterWeek->EndDate = Date::Parse('2012-08-08 12:00', 'UTC'); $firstDayOnly = new ReservationItemView(); $firstDayOnly->StartDate = Date::Parse('2011-07-31 14:00', 'UTC'); $firstDayOnly->EndDate = Date::Parse('2011-07-31 16:25', 'UTC'); $secondAndThirdDay = new ReservationItemView(); $secondAndThirdDay->StartDate = Date::Parse('2011-08-01 14:00', 'UTC'); $secondAndThirdDay->EndDate = Date::Parse('2011-08-02 16:25', 'UTC'); $notInWeek = new ReservationItemView(); $notInWeek->StartDate = Date::Parse('2011-11-02 14:00', 'UTC'); $notInWeek->EndDate = Date::Parse('2011-11-03 16:25', 'UTC'); $reservations = array($startsBeforeWeek, $endsAfterWeek, $firstDayOnly, $secondAndThirdDay, $notInWeek); $timezone = 'America/Chicago'; $week = CalendarWeek::FromDate(2011, 8, 3, $timezone); $calendarReservations = CalendarReservation::FromViewList($reservations, $timezone, $this->fakeUser); $week->AddReservations($calendarReservations); $expectedFirstDay = Date::Parse('2011-07-31', $timezone); $expectedLastDay = Date::Parse('2011-08-06', $timezone); $this->assertEquals($expectedFirstDay, $week->FirstDay()); $this->assertEquals($expectedLastDay, $week->LastDay()); $day1 = new CalendarDay($expectedFirstDay); $day1->AddReservation(CalendarReservation::FromView($startsBeforeWeek, $timezone, $this->fakeUser)); $day1->AddReservation(CalendarReservation::FromView($firstDayOnly, $timezone, $this->fakeUser)); $day2 = new CalendarDay($expectedFirstDay->AddDays(1)); $day2->AddReservation(CalendarReservation::FromView($secondAndThirdDay, $timezone, $this->fakeUser)); $day3 = new CalendarDay($expectedFirstDay->AddDays(2)); $day3->AddReservation(CalendarReservation::FromView($secondAndThirdDay, $timezone, $this->fakeUser)); $day4 = new CalendarDay($expectedFirstDay->AddDays(3)); $day5 = new CalendarDay($expectedFirstDay->AddDays(4)); $day6 = new CalendarDay($expectedFirstDay->AddDays(5)); $day7 = new CalendarDay($expectedFirstDay->AddDays(6)); $day7->AddReservation(CalendarReservation::FromView($endsAfterWeek, $timezone, $this->fakeUser)); /** @var $actualDays array|CalendarDay[] */ $actualDays = $week->Days(); $this->assertEquals(7, count($actualDays)); $this->assertEquals($day1->Date(), $actualDays[0]->Date()); $this->assertEquals($day2, $actualDays[1]); $this->assertEquals($day3, $actualDays[2]); $this->assertEquals($day4, $actualDays[3]); $this->assertEquals($day5, $actualDays[4]); $this->assertEquals($day6, $actualDays[5]); $this->assertEquals($day7, $actualDays[6]); $next = Date::Parse('2011-08-07', $timezone); $prev = Date::Parse('2011-07-24', $timezone); $this->assertEquals($next, $week->GetNextDate()); $this->assertEquals($prev, $week->GetPreviousDate()); }
/** * @param UserSession $userSession * @param string $timezone */ public function PageLoad($userSession, $timezone) { $type = $this->page->GetCalendarType(); $year = $this->page->GetYear(); $month = $this->page->GetMonth(); $day = $this->page->GetDay(); $defaultDate = Date::Now()->ToTimezone($timezone); if (empty($year)) { $year = $defaultDate->Year(); } if (empty($month)) { $month = $defaultDate->Month(); } if (empty($day)) { $day = $defaultDate->Day(); } $schedules = $this->scheduleRepository->GetAll(); $showInaccessible = Configuration::Instance()->GetSectionKey(ConfigSection::SCHEDULE, ConfigKeys::SCHEDULE_SHOW_INACCESSIBLE_RESOURCES, new BooleanConverter()); $resources = $this->resourceService->GetAllResources($showInaccessible, $userSession); $selectedScheduleId = $this->page->GetScheduleId(); $selectedSchedule = $this->GetDefaultSchedule($schedules); $selectedResourceId = $this->page->GetResourceId(); $calendar = $this->calendarFactory->Create($type, $year, $month, $day, $timezone, $selectedSchedule->GetWeekdayStart()); $reservations = $this->reservationRepository->GetReservationList($calendar->FirstDay(), $calendar->LastDay()->AddDays(1), $userSession->UserId, ReservationUserLevel::ALL, $selectedScheduleId, $selectedResourceId); $calendar->AddReservations(CalendarReservation::FromViewList($reservations, $timezone)); $this->page->BindCalendar($calendar); $this->page->SetDisplayDate($calendar->FirstDay()); $this->page->BindFilters(new CalendarFilters($schedules, $resources, $selectedScheduleId, $selectedResourceId)); $this->page->SetScheduleId($selectedScheduleId); $this->page->SetResourceId($selectedResourceId); $this->page->SetFirstDay($selectedSchedule->GetWeekdayStart()); $details = $this->subscriptionService->ForUser($userSession->UserId); $this->page->BindSubscription($details); }
public function testGroupsReservationsByResource() { $start = Date::Now(); $end = Date::Now()->AddDays(1); $r1 = new ReservationItemView(); $r1->SeriesId = 1; $r1->ResourceId = 1; $r1->StartDate = $start; $r1->EndDate = $end; $r2 = new ReservationItemView(); $r2->SeriesId = 1; $r2->ResourceId = 2; $r2->StartDate = $start; $r2->EndDate = $end; $r3 = new ReservationItemView(); $r3->SeriesId = 2; $r3->ResourceId = 1; $r3->StartDate = $start; $r3->EndDate = $end; $reservations = array($r1, $r2, $r3); $timezone = 'America/Chicago'; $calendarReservations = CalendarReservation::FromViewList($reservations, $timezone, $this->fakeUser, true); $this->assertEquals(2, count($calendarReservations)); }
public function testGroupsReservationsByResource() { $start = Date::Now(); $end = Date::Now()->AddDays(1); $r1 = new TestReservationItemView(1, $start, $end, 1); $r1->SeriesId = 1; $r2 = new TestReservationItemView(2, $start, $end, 2); $r2->SeriesId = 1; $r3 = new TestReservationItemView(3, $start, $end, 1); $r3->SeriesId = 2; $reservations = array($r1, $r2, $r3); $resources = array(new FakeBookableResource(1, '1'), new FakeBookableResource(2, '2')); $calendarReservations = CalendarReservation::FromScheduleReservationList($reservations, $resources, $this->fakeUser, true); $this->assertEquals(2, count($calendarReservations)); }
public function PageLoad($userSession, $timezone) { $type = $this->page->GetCalendarType(); $year = $this->page->GetYear(); $month = $this->page->GetMonth(); $day = $this->page->GetDay(); $defaultDate = Date::Now()->ToTimezone($timezone); if (empty($year)) { $year = $defaultDate->Year(); } if (empty($month)) { $month = $defaultDate->Month(); } if (empty($day)) { $day = $defaultDate->Day(); } $schedules = $this->scheduleRepository->GetAll(); $showInaccessible = Configuration::Instance()->GetSectionKey(ConfigSection::SCHEDULE, ConfigKeys::SCHEDULE_SHOW_INACCESSIBLE_RESOURCES, new BooleanConverter()); $resources = $this->resourceService->GetAllResources($showInaccessible, $userSession); $selectedScheduleId = $this->page->GetScheduleId(); $selectedSchedule = $this->GetDefaultSchedule($schedules); $selectedResourceId = $this->page->GetResourceId(); $selectedGroupId = $this->page->GetGroupId(); $resourceGroups = $this->resourceService->GetResourceGroups($selectedScheduleId, $userSession); if (!empty($selectedGroupId)) { $tempResources = array(); $resourceIds = $resourceGroups->GetResourceIds($selectedGroupId); $selectedGroup = $resourceGroups->GetGroup($selectedGroupId); $this->page->BindSelectedGroup($selectedGroup); foreach ($resources as $resource) { if (in_array($resource->GetId(), $resourceIds)) { $tempResources[] = $resource; } } $resources = $tempResources; } if (!empty($selectedResourceId)) { $subscriptionDetails = $this->subscriptionService->ForResource($selectedResourceId); } else { $subscriptionDetails = $this->subscriptionService->ForSchedule($selectedSchedule->GetId()); } $calendar = $this->calendarFactory->Create($type, $year, $month, $day, $timezone, $selectedSchedule->GetWeekdayStart()); $reservations = $this->reservationRepository->GetReservationList($calendar->FirstDay(), $calendar->LastDay()->AddDays(1), null, null, $selectedScheduleId, $selectedResourceId); $calendar->AddReservations(CalendarReservation::FromScheduleReservationList($reservations, $resources, $userSession, true)); $this->page->BindCalendar($calendar); $this->page->BindFilters(new CalendarFilters($schedules, $resources, $selectedScheduleId, $selectedResourceId, $resourceGroups)); $this->page->SetDisplayDate($calendar->FirstDay()); $this->page->SetScheduleId($selectedScheduleId); $this->page->SetResourceId($selectedResourceId); $this->page->SetFirstDay($selectedSchedule->GetWeekdayStart()); $this->page->BindSubscription($subscriptionDetails); }