コード例 #1
0
 /**
  * @param ReservationSeries $reservation
  * @return ReservationRuleResult
  */
 public function Validate($reservation)
 {
     $reservation->UserId();
     $permissionService = $this->permissionServiceFactory->GetPermissionService();
     $resourceIds = $reservation->AllResourceIds();
     foreach ($resourceIds as $resourceId) {
         if (!$permissionService->CanAccessResource(new ReservationResource($resourceId), $reservation->BookedBy())) {
             return new ReservationRuleResult(false, Resources::GetInstance()->GetString('NoResourcePermission'));
         }
     }
     return new ReservationRuleResult(true);
 }
コード例 #2
0
ファイル: Quota.php プロジェクト: utn-frm-si/booked
 /**
  * @param ReservationSeries $reservationSeries
  * @param User $user
  * @param Schedule $schedule
  * @param IReservationViewRepository $reservationViewRepository
  * @return bool
  */
 public function ExceedsQuota($reservationSeries, $user, $schedule, IReservationViewRepository $reservationViewRepository)
 {
     $timezone = $schedule->GetTimezone();
     if (!is_null($this->resourceId)) {
         $appliesToResource = false;
         foreach ($reservationSeries->AllResourceIds() as $resourceId) {
             if (!$appliesToResource && $this->AppliesToResource($resourceId)) {
                 $appliesToResource = true;
             }
         }
         if (!$appliesToResource) {
             return false;
         }
     }
     if (!is_null($this->groupId)) {
         $appliesToGroup = false;
         foreach ($user->Groups() as $group) {
             if (!$appliesToGroup && $this->AppliesToGroup($group->GroupId)) {
                 $appliesToGroup = true;
             }
         }
         if (!$appliesToGroup) {
             return false;
         }
     }
     if (!$this->AppliesToSchedule($reservationSeries->ScheduleId())) {
         return false;
     }
     if (count($reservationSeries->Instances()) == 0) {
         return false;
     }
     $dates = $this->duration->GetSearchDates($reservationSeries, $timezone);
     $reservationsWithinRange = $reservationViewRepository->GetReservationList($dates->Start(), $dates->End(), $reservationSeries->UserId(), ReservationUserLevel::OWNER);
     try {
         $this->CheckAll($reservationsWithinRange, $reservationSeries, $timezone);
     } catch (QuotaExceededException $ex) {
         return true;
     }
     return false;
 }