public function ScheduleId() { if (!empty($this->_scheduleId)) { return $this->_scheduleId; } return parent::ScheduleId(); }
/** * @param ReservationSeries $reservationSeries * @return ReservationRuleResult */ public function Validate($reservationSeries) { $quotas = $this->quotaRepository->LoadAll(); $user = $this->userRepository->LoadById($reservationSeries->UserId()); $schedule = $this->scheduleRepository->LoadById($reservationSeries->ScheduleId()); foreach ($quotas as $quota) { if ($quota->ExceedsQuota($reservationSeries, $user, $schedule, $this->reservationViewRepository)) { Log::Debug('Quota exceeded. %s', $quota->ToString()); return new ReservationRuleResult(false, Resources::GetInstance()->GetString('QuotaExceeded')); } } return new ReservationRuleResult(); }
/** * @param ReservationSeries $reservationSeries * @return ReservationRuleResult */ public function Validate($reservationSeries) { $constraint = Configuration::Instance()->GetSectionKey(ConfigSection::RESERVATION, ConfigKeys::RESERVATION_START_TIME_CONSTRAINT); if (empty($constraint)) { $constraint = ReservationStartTimeConstraint::_DEFAULT; } if ($constraint == ReservationStartTimeConstraint::NONE) { return new ReservationRuleResult(); } $currentInstance = $reservationSeries->CurrentInstance(); $dateThatShouldBeLessThanNow = $currentInstance->StartDate(); if ($constraint == ReservationStartTimeConstraint::CURRENT) { $timezone = $dateThatShouldBeLessThanNow->Timezone(); /** @var $currentPeriod SchedulePeriod */ $currentPeriod = $this->scheduleRepository->GetLayout($reservationSeries->ScheduleId(), new ScheduleLayoutFactory($timezone))->GetPeriod($currentInstance->EndDate()); $dateThatShouldBeLessThanNow = $currentPeriod->BeginDate(); } Log::Debug("Start Time Rule: Comparing %s to %s", $dateThatShouldBeLessThanNow, Date::Now()); $startIsInFuture = $dateThatShouldBeLessThanNow->Compare(Date::Now()) >= 0; return new ReservationRuleResult($startIsInFuture, Resources::GetInstance()->GetString('StartIsInPast')); }
/** * @param array|ReservationItemView[] $reservationsWithinRange * @param ReservationSeries $series * @param string $timezone * @throws QuotaExceededException */ private function CheckAll($reservationsWithinRange, $series, $timezone) { $toBeSkipped = array(); /** @var $instance Reservation */ foreach ($series->Instances() as $instance) { $toBeSkipped[$instance->ReferenceNumber()] = true; if (!is_null($this->scheduleId)) { foreach ($series->AllResources() as $resource) { // add each resource instance if ($this->AppliesToResource($resource->GetResourceId())) { $this->AddInstance($instance, $timezone); } } } else { $this->AddInstance($instance, $timezone); } } /** @var $reservation ReservationItemView */ foreach ($reservationsWithinRange as $reservation) { if (!empty($this->resourceId)) { $applies = $this->AppliesToResource($reservation->ResourceId) && $series->ContainsResource($reservation->ResourceId); } else { $applies = $series->ContainsResource($reservation->ResourceId) || $series->ScheduleId() == $reservation->ScheduleId; } if ($applies && !array_key_exists($reservation->ReferenceNumber, $toBeSkipped) && !$this->willBeDeleted($series, $reservation->ReservationId)) { $this->AddExisting($reservation, $timezone); } } }