Exemplo n.º 1
0
 /**
  * @EXT\Route(
  *     "/session/event/{sessionEvent}/self/register",
  *     name="claro_cursus_session_event_self_register",
  *     options={"expose"=true}
  * )
  * @EXT\ParamConverter("user", options={"authenticatedUser" = true})
  */
 public function sessionEventSelfRegisterAction(User $user, SessionEvent $sessionEvent)
 {
     $results = null;
     $disableRegistration = $this->platformConfigHandler->hasParameter('cursus_disable_session_event_registration') ? $this->platformConfigHandler->getParameter('cursus_disable_session_event_registration') : true;
     if (!$disableRegistration && $sessionEvent->getRegistrationType() === CourseSession::REGISTRATION_PUBLIC) {
         $results = $this->cursusManager->selfRegisterUserToSessionEvent($sessionEvent, $user);
     }
     return new JsonResponse($results, 200);
 }
Exemplo n.º 2
0
 public function selfRegisterUserToSessionEvent(SessionEvent $sessionEvent, User $user)
 {
     $results = [];
     $sessionRegistrationStatus = null;
     if ($sessionEvent->getRegistrationType() === CourseSession::REGISTRATION_PUBLIC) {
         $session = $sessionEvent->getSession();
         $sessionUser = $this->getOneSessionUserBySessionAndUserAndTypes($session, $user, [CourseSessionUser::LEARNER, CourseSessionUser::PENDING_LEARNER]);
         $sessionPendingUser = $this->getOneSessionQueueBySessionAndUser($session, $user);
         $sessionEventUser = $this->getSessionEventUserBySessionEventAndUser($sessionEvent, $user);
         if (is_null($sessionEventUser)) {
             if (is_null($sessionUser) && is_null($sessionPendingUser)) {
                 if ($session->getPublicRegistration()) {
                     if ($session->hasValidation()) {
                         $this->addUserToSessionQueue($user, $session);
                         $sessionRegistrationStatus = 'pending';
                     } else {
                         $sessionDatas = $this->registerUsersToSession($session, [$user], CourseSessionUser::LEARNER);
                         if ($sessionDatas['status'] === 'success') {
                             $sessionRegistrationStatus = 'registered';
                         } else {
                             $this->sendEventRegistrationConfirmationMessage($user, $sessionEvent, 'failed');
                         }
                     }
                     if ($sessionRegistrationStatus === 'registered') {
                         $eventDatas = $this->registerUsersToSessionEvent($sessionEvent, [$user]);
                         if ($eventDatas['status'] === 'failed') {
                             $this->createSessionEventUser($user, $sessionEvent, SessionEventUser::PENDING, null, new \DateTime());
                         }
                         $this->sendEventRegistrationConfirmationMessage($user, $sessionEvent, 'success', $eventDatas['status']);
                     } elseif ($sessionRegistrationStatus === 'pending') {
                         $this->createSessionEventUser($user, $sessionEvent, SessionEventUser::PENDING, null, new \DateTime());
                         $this->sendEventRegistrationConfirmationMessage($user, $sessionEvent, 'pending', 'failed');
                     }
                 }
             } elseif (!is_null($sessionUser)) {
                 $eventDatas = $this->registerUsersToSessionEvent($sessionEvent, [$user]);
                 if ($eventDatas['status'] === 'failed') {
                     $this->createSessionEventUser($user, $sessionEvent, SessionEventUser::PENDING, null, new \DateTime());
                 }
                 $this->sendEventRegistrationConfirmationMessage($user, $sessionEvent, 'none', $eventDatas['status']);
             } else {
                 $this->createSessionEventUser($user, $sessionEvent, SessionEventUser::PENDING, null, new \DateTime());
                 $this->sendEventRegistrationConfirmationMessage($user, $sessionEvent, 'none', 'failed');
             }
         }
     }
     return $results;
 }