コード例 #1
0
 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());
 }
コード例 #2
0
 /**
  * @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);
 }
コード例 #3
0
 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));
 }
コード例 #4
0
 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));
 }
コード例 #5
0
ファイル: CalendarPresenter.php プロジェクト: Trideon/gigolo
 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);
 }