Exemplo n.º 1
0
 public function PageLoad()
 {
     $this->page->BindResources($this->resourceRepo->GetResourceList());
     $this->page->BindAccessories($this->resourceRepo->GetAccessoryList());
     $this->page->BindSchedules($this->scheduleRepo->GetAll());
     $this->page->BindGroups($this->groupRepo->GetList()->Results());
 }
Exemplo n.º 2
0
 public function PageLoad()
 {
     $resources = $this->resourceRepository->GetResourceList();
     $groups = $this->groupRepository->GetList()->Results();
     $schedules = $this->scheduleRepository->GetAll();
     $this->page->BindResources($resources);
     $this->page->BindGroups($groups);
     $this->page->BindSchedules($schedules);
     $quotas = $this->quotaRepository->GetAll();
     $this->page->BindQuotas($quotas);
 }
Exemplo n.º 3
0
 /**
  * @name GetAvailability
  * @description Returns resource availability for the requested time. "availableAt" and "availableUntil" will include availability through the next 7 days
  * Optional query string parameter: dateTime. If no dateTime is requested the current datetime will be used.
  * @response ResourcesAvailabilityResponse
  * @return void
  */
 public function GetAvailability($resourceId = null)
 {
     $dateQueryString = $this->server->GetQueryString(WebServiceQueryStringKeys::DATE_TIME);
     if (!empty($dateQueryString)) {
         $requestedTime = WebServiceDate::GetDate($dateQueryString, $this->server->GetSession());
     } else {
         $requestedTime = Date::Now();
     }
     if (empty($resourceId)) {
         $resources = $this->resourceRepository->GetResourceList();
     } else {
         $resources[] = $this->resourceRepository->LoadById($resourceId);
     }
     $lastDateSearched = $requestedTime->AddDays(30);
     $reservations = $this->GetReservations($this->reservationRepository->GetReservationList($requestedTime, $lastDateSearched, null, null, null, $resourceId));
     $resourceAvailability = array();
     foreach ($resources as $resource) {
         $reservation = $this->GetOngoingReservation($resource, $reservations);
         if ($reservation != null) {
             $lastReservationBeforeOpening = $this->GetLastReservationBeforeAnOpening($resource, $reservations);
             if ($lastReservationBeforeOpening == null) {
                 $lastReservationBeforeOpening = $reservation;
             }
             $resourceAvailability[] = new ResourceAvailabilityResponse($this->server, $resource, $lastReservationBeforeOpening, null, $lastReservationBeforeOpening->EndDate, $lastDateSearched);
         } else {
             $resourceId = $resource->GetId();
             if (array_key_exists($resourceId, $reservations)) {
                 $resourceAvailability[] = new ResourceAvailabilityResponse($this->server, $resource, null, $reservations[$resourceId][0], null, $lastDateSearched);
             } else {
                 $resourceAvailability[] = new ResourceAvailabilityResponse($this->server, $resource, null, null, null, $lastDateSearched);
             }
         }
     }
     $this->server->WriteResponse(new ResourcesAvailabilityResponse($this->server, $resourceAvailability));
 }
Exemplo n.º 4
0
 public function LoadBlackout()
 {
     $id = $this->page->GetBlackoutId();
     $session = ServiceLocator::GetServer()->GetUserSession();
     Log::Debug('Loading blackout for editing. Id=%s', $id);
     $series = $this->manageBlackoutsService->LoadBlackout($id, $session->UserId);
     if ($series != null) {
         $this->page->BindResources($this->resourceRepository->GetResourceList());
         $this->page->SetBlackoutResources($series->ResourceIds());
         $this->page->SetBlackoutId($id);
         $this->page->SetBlackoutStartDate($series->CurrentBlackout()->StartDate()->ToTimezone($session->Timezone));
         $this->page->SetBlackoutEndDate($series->CurrentBlackout()->EndDate()->ToTimezone($session->Timezone));
         $this->page->SetTitle($series->Title());
         $this->page->SetIsRecurring($series->RepeatType() != RepeatType::None);
         $repeatConfiguration = $series->RepeatConfiguration();
         $this->page->SetRepeatInterval($repeatConfiguration->Interval);
         $this->page->SetRepeatMonthlyType($repeatConfiguration->MonthlyType);
         if ($repeatConfiguration->TerminationDate != null) {
             $this->page->SetRepeatTerminationDate($repeatConfiguration->TerminationDate->ToTimezone($session->Timezone));
         }
         $this->page->SetRepeatType($repeatConfiguration->Type);
         $this->page->SetRepeatWeekdays($repeatConfiguration->Weekdays);
         $this->page->SetWasBlackoutFound(true);
     } else {
         $this->page->SetWasBlackoutFound(false);
     }
     $this->page->ShowBlackout();
 }
Exemplo n.º 5
0
 /**
  * @name GetAvailability
  * @description Returns resource availability for the requested time. "availableAt" and "availableUntil" will include availability through the next 7 days
  * Optional query string parameter: dateTime. If no dateTime is requested the current datetime will be used.
  * @response ResourcesAvailabilityResponse
  * @return void
  */
 public function GetAvailability($resourceId = null)
 {
     $dateQueryString = $this->server->GetQueryString(WebServiceQueryStringKeys::DATE_TIME);
     if (!empty($dateQueryString)) {
         $requestedTime = WebServiceDate::GetDate($dateQueryString, $this->server->GetSession());
     } else {
         $requestedTime = Date::Now();
     }
     if (empty($resourceId)) {
         $resources = $this->resourceRepository->GetResourceList();
     } else {
         $resources[] = $this->resourceRepository->LoadById($resourceId);
     }
     $startDate = $requestedTime->AddDays(-1);
     $endDate = $requestedTime->AddDays(7);
     $reservations = $this->reservationRepository->GetReservationList($startDate, $endDate, null, null, null, $resourceId);
     $indexedReservations = array();
     foreach ($reservations as $reservation) {
         $key = $reservation->GetResourceId();
         if (!array_key_exists($key, $indexedReservations)) {
             $indexedReservations[$key] = array();
         }
         $indexedReservations[$key][] = $reservation;
     }
     $resourceAvailability = array();
     foreach ($resources as $resource) {
         $resourceId = $resource->GetResourceId();
         $conflict = null;
         $nextReservation = null;
         $opening = null;
         if (array_key_exists($resourceId, $indexedReservations)) {
             $resourceReservations = $indexedReservations[$resourceId];
             /** @var $reservation ReservationItemView */
             foreach ($resourceReservations as $i => $reservation) {
                 if ($conflict == null && $reservation->BufferedTimes()->Contains($requestedTime, false)) {
                     $conflict = $reservation;
                 }
                 if ($nextReservation == null && $reservation->StartDate->GreaterThan($requestedTime)) {
                     $nextReservation = $reservation;
                 }
             }
             $opening = $this->GetOpeningAfter($resourceReservations, $requestedTime);
             if ($opening == null && $conflict != null) {
                 $opening = $conflict->BufferedTimes()->GetEnd();
             }
         }
         $resourceAvailability[] = new ResourceAvailabilityResponse($this->server, $resource, $conflict, $nextReservation, $opening, $endDate);
     }
     $this->server->WriteResponse(new ResourcesAvailabilityResponse($this->server, $resourceAvailability));
 }
 public function ProcessDataRequest($dataRequest)
 {
     if ($dataRequest == 'all') {
         $this->page->SetResourcesJson(array_map(array('AdminResourceJson', 'FromBookable'), $this->resourceRepository->GetResourceList()));
     } else {
         if ($dataRequest == 'users') {
             $groups = $this->resourceRepository->GetUsersWithPermission($this->page->GetResourceId());
             $response = new UserResults($groups->Results(), $groups->PageInfo()->Total);
             $this->page->SetJsonResponse($response);
         } else {
             if ($dataRequest == 'groups') {
                 $groups = $this->resourceRepository->GetGroupsWithPermission($this->page->GetResourceId());
                 $response = new GroupResults($groups->Results(), $groups->PageInfo()->Total);
                 $this->page->SetJsonResponse($response);
             }
         }
     }
 }
 public function PageLoad($userTimezone)
 {
     $session = ServiceLocator::GetServer()->GetUserSession();
     $this->page->BindSchedules($this->scheduleRepository->GetAll());
     $this->page->BindResources($this->resourceRepository->GetResourceList());
     $statusReasonList = array();
     foreach ($this->resourceRepository->GetStatusReasons() as $reason) {
         $statusReasonList[$reason->Id()] = $reason;
     }
     $this->page->BindResourceStatuses($statusReasonList);
     $startDateString = $this->page->GetStartDate();
     $endDateString = $this->page->GetEndDate();
     $filterPreferences = new ReservationFilterPreferences();
     $filterPreferences->Load($this->userPreferenceRepository, $session->UserId);
     $startDate = $this->GetDate($startDateString, $userTimezone, $filterPreferences->GetFilterStartDateDelta());
     $endDate = $this->GetDate($endDateString, $userTimezone, $filterPreferences->GetFilterEndDateDelta());
     $scheduleId = $this->page->GetScheduleId();
     $resourceId = $this->page->GetResourceId();
     $userId = $this->page->GetUserId();
     $userName = $this->page->GetUserName();
     $reservationStatusId = $this->page->GetReservationStatusId();
     $referenceNumber = $this->page->GetReferenceNumber();
     $resourceStatusId = $this->page->GetResourceStatusFilterId();
     $resourceReasonId = $this->page->GetResourceStatusReasonFilterId();
     if (!$this->page->FilterButtonPressed()) {
         // Get filter settings from db
         $referenceNumber = $filterPreferences->GetFilterReferenceNumber();
         $scheduleId = $filterPreferences->GetFilterScheduleId();
         $resourceId = $filterPreferences->GetFilterResourceId();
         $userId = $filterPreferences->GetFilterUserId();
         $userName = $filterPreferences->GetFilterUserName();
         $reservationStatusId = $filterPreferences->GetFilterReservationStatusId();
         $resourceStatusId = $filterPreferences->GetFilterResourceStatusId();
         $resourceReasonId = $filterPreferences->GetFilterResourceReasonId();
         $filters = $filterPreferences->GetFilterCustomAttributes();
     } else {
         $startOffset = $this->GetDateOffsetFromToday($startDate, $userTimezone);
         $endOffset = $this->GetDateOffsetFromToday($endDate, $userTimezone);
         $formFilters = $this->page->GetAttributeFilters();
         $filters = array();
         foreach ($formFilters as $filter) {
             $filters[$filter->Id] = $filter->Value;
         }
         $filterPreferences->SetFilterStartDateDelta($startOffset == null ? -14 : $startOffset);
         $filterPreferences->SetFilterEndDateDelta($endOffset == null ? 14 : $endOffset);
         $filterPreferences->SetFilterReferenceNumber($referenceNumber);
         $filterPreferences->SetFilterScheduleId($scheduleId);
         $filterPreferences->SetFilterResourceId($resourceId);
         $filterPreferences->SetFilterUserId($userId);
         $filterPreferences->SetFilterUserName($userName);
         $filterPreferences->SetFilterReservationStatusId($reservationStatusId);
         $filterPreferences->SetFilterResourceStatusId($resourceStatusId);
         $filterPreferences->SetFilterResourceReasonId($resourceReasonId);
         $filterPreferences->SetFilterCustomAttributes($filters);
         $filterPreferences->Update($this->userPreferenceRepository, $session->UserId);
     }
     $reservationAttributes = $this->attributeService->GetByCategory(CustomAttributeCategory::RESERVATION);
     $attributeFilters = array();
     foreach ($reservationAttributes as $attribute) {
         $attributeValue = null;
         if (array_key_exists($attribute->Id(), $filters)) {
             $attributeValue = $filters[$attribute->Id()];
         }
         $attributeFilters[] = new Attribute($attribute, $attributeValue);
     }
     $this->page->SetStartDate($startDate);
     $this->page->SetEndDate($endDate);
     $this->page->SetReferenceNumber($referenceNumber);
     $this->page->SetScheduleId($scheduleId);
     $this->page->SetResourceId($resourceId);
     $this->page->SetUserId($userId);
     $this->page->SetUserName($userName);
     $this->page->SetReservationStatusId($reservationStatusId);
     $this->page->SetResourceStatusFilterId($resourceStatusId);
     $this->page->SetResourceStatusReasonFilterId($resourceReasonId);
     $this->page->SetAttributeFilters($attributeFilters);
     $this->page->SetReservationAttributes($reservationAttributes);
     $filter = new ReservationFilter($startDate, $endDate, $referenceNumber, $scheduleId, $resourceId, $userId, $reservationStatusId, $resourceStatusId, $resourceReasonId, $attributeFilters);
     $reservations = $this->manageReservationsService->LoadFiltered($this->page->GetPageNumber(), $this->page->GetPageSize(), $filter, $session);
     /** @var ReservationItemView[] $reservationList */
     $reservationList = $reservations->Results();
     $this->page->BindReservations($reservationList);
     $this->page->BindPageInfo($reservations->PageInfo());
     $seriesIds = array();
     /** @var $reservationItemView ReservationItemView */
     foreach ($reservationList as $reservationItemView) {
         $seriesIds[] = $reservationItemView->SeriesId;
     }
     if ($this->page->GetFormat() == 'csv') {
         $this->page->ShowCsv();
     } else {
         $this->page->ShowPage();
     }
 }
Exemplo n.º 8
0
 public function GetAllResources($includeInaccessibleResources, UserSession $user)
 {
     $resources = $this->_resourceRepository->GetResourceList();
     return $this->Filter($resources, $user, $includeInaccessibleResources);
 }
Exemplo n.º 9
0
 public function ProcessDataRequest($dataRequest)
 {
     if ($dataRequest == 'all') {
         $this->page->SetResourcesJson(array_map(array('AdminResourceJson', 'FromBookable'), $this->resourceRepository->GetResourceList()));
     }
 }
 public function PageLoad()
 {
     $this->page->BindResourceGroups($this->resourceRepository->GetResourceGroups());
     $this->page->BindResources($this->resourceRepository->GetResourceList());
 }