/**
  * Checks if access is allowed
  *
  * @return boolean
  */
 public function isAccessAllowed()
 {
     if ($this->request->getControllerActionName() === 'error') {
         return true;
     }
     $sessionHasReservation = $this->session->has(ReservationController::SESSION_IDENTIFIER_RESERVATION);
     $requestHasReservation = $this->request->hasArgument('reservation');
     if (!$requestHasReservation) {
         if ($sessionHasReservation) {
             $this->accessError = Reservation::ERROR_INCOMPLETE_RESERVATION_IN_SESSION;
         }
         return !$sessionHasReservation;
     }
     $sessionValue = (int) $this->session->get(ReservationController::SESSION_IDENTIFIER_RESERVATION);
     $reservationId = $this->getReservationIdFromRequest();
     if (!$sessionHasReservation && $requestHasReservation) {
         $this->accessError = Reservation::ERROR_MISSING_RESERVATION_KEY_IN_SESSION;
         return false;
     }
     if ((bool) $reservationId) {
         if (!($sessionHasReservation && $sessionValue === $reservationId)) {
             $this->accessError = Reservation::ERROR_MISMATCH_SESSION_KEY_REQUEST_ARGUMENT;
         }
         // allow access if argument reservation matches session value
         return $sessionHasReservation && $sessionValue === $reservationId;
     }
     $this->accessError = Reservation::ERROR_MISSING_SESSION_KEY_AND_REQUEST_ARGUMENT;
     return false;
 }
 /**
  * Slot method for CPSIT\T3eventsReservation\ReservationController signal 'handleEntityNotFoundError'
  *
  * @param array $params
  * @return array
  */
 public function handleEntityNotFoundSlot(array $params)
 {
     if (isset($params['config']) && is_array($params['config'])) {
         $handler = $params['config'][0];
         $actionName = $params['config'][1];
         $params[$handler]['actionName'] = $actionName;
         if ($handler === 'redirect') {
             $params[$handler]['statusCode'] = 302;
         }
         if ($this->session->has(ReservationController::SESSION_IDENTIFIER_RESERVATION)) {
             $reservationId = (string) $this->session->get(ReservationController::SESSION_IDENTIFIER_RESERVATION);
             $params[$handler]['arguments'] = ['reservation' => $reservationId];
         }
         if (isset($params['requestArguments']['reservation'])) {
             $params[$handler]['controllerName'] = 'Reservation';
             $params[$handler]['arguments']['reservation'] = $params['requestArguments']['reservation'];
         }
     }
     return [$params];
 }