public function PageLoad(UserSession $user) { $showInaccessibleResources = $this->_page->ShowInaccessibleResources(); $schedules = $this->_scheduleService->GetAll($showInaccessibleResources, $user); if (count($schedules) == 0) { $this->_page->ShowPermissionError(true); return; } $this->_page->ShowPermissionError(false); $currentSchedule = $this->_builder->GetCurrentSchedule($this->_page, $schedules, $user); $targetTimezone = $this->_page->GetDisplayTimezone($user, $currentSchedule); $activeScheduleId = $currentSchedule->GetId(); $this->_builder->BindSchedules($this->_page, $schedules, $currentSchedule); $scheduleDates = $this->_builder->GetScheduleDates($user, $currentSchedule, $this->_page); $this->_builder->BindDisplayDates($this->_page, $scheduleDates, $currentSchedule); $resourceGroups = $this->_resourceService->GetResourceGroups($activeScheduleId, $user); $this->_builder->BindResourceGroups($this->_page, $resourceGroups); $resourceTypes = $this->_resourceService->GetResourceTypes(); $this->_builder->BindResourceTypes($this->_page, $resourceTypes); $resourceAttributes = $this->_resourceService->GetResourceAttributes(); $resourceTypeAttributes = $this->_resourceService->GetResourceTypeAttributes(); $layout = $this->_scheduleService->GetLayout($activeScheduleId, new ScheduleLayoutFactory($targetTimezone)); $reservationListing = $this->_reservationService->GetReservations($scheduleDates, $activeScheduleId, $targetTimezone); $dailyLayout = $this->_dailyLayoutFactory->Create($reservationListing, $layout); $filter = $this->_builder->GetResourceFilter($activeScheduleId, $this->_page); $this->_builder->BindResourceFilter($this->_page, $filter, $resourceAttributes, $resourceTypeAttributes); $resources = $this->_resourceService->GetScheduleResources($activeScheduleId, $showInaccessibleResources, $user, $filter); $this->_builder->BindReservations($this->_page, $resources, $dailyLayout); }
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); }
public function Bind(IReservationComponentInitializer $initializer) { $requestedScheduleId = $initializer->GetScheduleId(); $requestedResourceId = $initializer->GetResourceId(); $groups = $this->resourceService->GetResourceGroups($requestedScheduleId, $initializer->CurrentUser()); $resources = $groups->GetAllResources(); if (empty($requestedResourceId) && count($resources) > 0) { $first = reset($resources); $requestedResourceId = $first->Id; } $bindableResourceData = $this->GetBindableResourceData($resources, $requestedResourceId); if ($bindableResourceData->NumberAccessible <= 0) { $initializer->RedirectToError(ErrorMessages::INSUFFICIENT_PERMISSIONS); return; } $initializer->BindResourceGroups($groups); $initializer->BindAvailableResources($resources); $accessories = $this->resourceService->GetAccessories(); $initializer->BindAvailableAccessories($accessories); $initializer->ShowAdditionalResources($bindableResourceData->NumberAccessible > 0); $initializer->SetReservationResource($bindableResourceData->ReservationResource); }