Exemplo n.º 1
0
 /**
  * @param ReservationSeries $reservationSeries
  * @return ReservationRuleResult
  */
 function Validate($reservationSeries)
 {
     $status = ReservationStatus::Created;
     /** @var BookableResource $resource */
     foreach ($reservationSeries->AllResources() as $resource) {
         if ($resource->GetRequiresApproval()) {
             if (!$this->authorizationService->CanApproveForResource($reservationSeries->BookedBy(), $resource)) {
                 $status = ReservationStatus::Pending;
                 break;
             }
         }
     }
     $reservationSeries->SetStatusId($status);
     return new ReservationRuleResult();
 }
Exemplo n.º 2
0
 public function CanApprove(ReservationView $reservationView, UserSession $currentUser)
 {
     if (!$reservationView->RequiresApproval()) {
         return false;
     }
     if ($currentUser->IsAdmin) {
         return true;
     }
     $canReserveForUser = $this->authorizationService->CanApproveFor($currentUser, $reservationView->OwnerId);
     if ($canReserveForUser) {
         return true;
     }
     foreach ($reservationView->Resources as $resource) {
         if ($this->authorizationService->CanApproveForResource($currentUser, $resource)) {
             return true;
         }
     }
     return false;
 }