コード例 #1
0
 public function Bind(IReservationComponentInitializer $initializer)
 {
     $timezone = $initializer->GetTimezone();
     $reservationDate = $initializer->GetReservationDate();
     $requestedEndDate = $initializer->GetEndDate();
     $requestedStartDate = $initializer->GetStartDate();
     $requestedScheduleId = $initializer->GetScheduleId();
     $requestedDate = $reservationDate == null ? Date::Now()->ToTimezone($timezone) : $reservationDate->ToTimezone($timezone);
     $startDate = $requestedStartDate == null ? $requestedDate : $requestedStartDate->ToTimezone($timezone);
     $endDate = $requestedEndDate == null ? $requestedDate : $requestedEndDate->ToTimezone($timezone);
     if ($initializer->IsNew()) {
         $resource = $initializer->PrimaryResource();
         if ($resource->GetMinimumLength() != null && !$resource->GetMinimumLength()->Interval()->IsNull()) {
             $endDate = $startDate->ApplyDifference($resource->GetMinimumLength()->Interval());
         }
     }
     $layout = $this->scheduleRepository->GetLayout($requestedScheduleId, new ReservationLayoutFactory($timezone));
     $startPeriods = $layout->GetLayout($startDate);
     if (count($startPeriods) > 1 && $startPeriods[0]->Begin()->Compare($startPeriods[1]->Begin()) > 0) {
         $period = array_shift($startPeriods);
         $startPeriods[] = $period;
     }
     $endPeriods = $layout->GetLayout($endDate);
     $initializer->SetDates($startDate, $endDate, $startPeriods, $endPeriods);
     $hideRecurrence = !$initializer->CurrentUser()->IsAdmin && Configuration::Instance()->GetSectionKey(ConfigSection::RESERVATION, ConfigKeys::RESERVATION_PREVENT_RECURRENCE, new BooleanConverter());
     $initializer->HideRecurrence($hideRecurrence);
 }
コード例 #2
0
 /**
  * @name GetSchedule
  * @description Loads a specific schedule by id
  * @response ScheduleResponse
  * @param $scheduleId
  * @return void
  */
 public function GetSchedule($scheduleId)
 {
     $schedule = $this->scheduleRepository->LoadById($scheduleId);
     if ($schedule != null) {
         $layout = $this->scheduleRepository->GetLayout($schedule->GetId(), new ScheduleLayoutFactory($this->server->GetSession()->Timezone));
         $this->server->WriteResponse(new ScheduleResponse($this->server, $schedule, $layout));
     } else {
         $this->server->WriteResponse(RestResponse::NotFound(), RestResponse::NOT_FOUND_CODE);
     }
 }
コード例 #3
0
ファイル: SchedulePeriodRule.php プロジェクト: Trideon/gigolo
 /**
  * @param ReservationSeries $reservationSeries
  * @return ReservationRuleResult
  */
 public function Validate($reservationSeries)
 {
     $layout = $this->repository->GetLayout($reservationSeries->Resource()->GetScheduleId(), new ScheduleLayoutFactory($this->session->Timezone));
     $startDate = $reservationSeries->CurrentInstance()->StartDate();
     $startPeriod = $layout->GetPeriod($startDate);
     $endDate = $reservationSeries->CurrentInstance()->EndDate();
     $endPeriod = $layout->GetPeriod($endDate);
     $errors = new StringBuilder();
     if ($startPeriod == null || !$startPeriod->IsReservable() || !$startPeriod->BeginDate()->Equals($startDate)) {
         $errors->AppendLine(Resources::GetInstance()->GetString('InvalidStartSlot'));
     }
     if ($endPeriod == null || !$endPeriod->BeginDate()->Equals($endDate)) {
         $errors->AppendLine(Resources::GetInstance()->GetString('InvalidEndSlot'));
     }
     $errorMessage = $errors->ToString();
     return new ReservationRuleResult(strlen($errorMessage) == 0, $errorMessage);
 }
コード例 #4
0
ファイル: ScheduleService.php プロジェクト: ksdtech/booked
 public function GetLayout($scheduleId, ILayoutFactory $layoutFactory)
 {
     return $this->scheduleRepository->GetLayout($scheduleId, $layoutFactory);
 }
コード例 #5
0
 /**
  * @param Schedule $schedule
  * @return IScheduleLayout
  */
 public function GetLayout($schedule)
 {
     return $this->scheduleRepository->GetLayout($schedule->GetId(), new ScheduleLayoutFactory($schedule->GetTimezone()));
 }