コード例 #1
0
 public function ScheduleId()
 {
     if (!empty($this->_scheduleId)) {
         return $this->_scheduleId;
     }
     return parent::ScheduleId();
 }
コード例 #2
0
ファイル: QuotaRule.php プロジェクト: Trideon/gigolo
 /**
  * @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();
 }
コード例 #3
0
 /**
  * @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'));
 }
コード例 #4
0
ファイル: Quota.php プロジェクト: utn-frm-si/booked
 /**
  * @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);
         }
     }
 }