public function __construct(CourseSessionRegistrationQueue $queue)
 {
     $session = $queue->getSession();
     $course = $session->getCourse();
     $user = $queue->getUser();
     $organizationAdmin = $queue->getOrganizationAdmin();
     $details = [];
     $details['userId'] = $user->getId();
     $details['username'] = $user->getUsername();
     $details['firsName'] = $user->getFirstName();
     $details['lastName'] = $user->getLastName();
     $details['courseId'] = $course->getId();
     $details['courseTitle'] = $course->getTitle();
     $details['courseCode'] = $course->getCode();
     $details['sessionId'] = $session->getId();
     $details['sessionName'] = $session->getName();
     $details['sessionStatus'] = $session->getSessionStatus();
     $details['sessionType'] = $session->getType();
     $details['organizationAdminId'] = $organizationAdmin->getId();
     $details['organizationAdminUsername'] = $organizationAdmin->getUsername();
     $details['organizationAdminFirsName'] = $organizationAdmin->getFirstName();
     $details['organizationAdminLastName'] = $organizationAdmin->getLastName();
     $details['organizationValidationDate'] = $queue->getOrganizationValidationDate();
     parent::__construct(self::ACTION, $details, $user);
 }
コード例 #2
0
 /**
  * @EXT\Route(
  *     "cursus/course/session/registration/queue/{queue}/accept",
  *     name="claro_cursus_course_session_user_registration_accept",
  *     options = {"expose"=true}
  * )
  * @EXT\ParamConverter("authenticatedUser", options={"authenticatedUser" = true})
  *
  * @param CourseSession $session
  * @param User          $user
  */
 public function courseSessionUserRegistrationAcceptAction(CourseSessionRegistrationQueue $queue)
 {
     $user = $queue->getUser();
     $session = $queue->getSession();
     $results = $this->cursusManager->registerUsersToSession($session, [$user], 0);
     if ($results['status'] === 'success') {
         $this->cursusManager->deleteSessionQueue($queue);
     }
     return new JsonResponse($results, 200);
 }
コード例 #3
0
 public function addUserToSessionQueue(User $user, CourseSession $session)
 {
     $sessionUser = $this->getOneSessionUserBySessionAndUserAndType($session, $user, 0);
     if (is_null($sessionUser)) {
         $queue = $this->getOneSessionQueueBySessionAndUser($session, $user);
         if (is_null($queue)) {
             $queue = new CourseSessionRegistrationQueue();
             $queue->setSession($session);
             $queue->setUser($user);
             $queue->setApplicationDate(new \DateTime());
             $this->om->persist($queue);
             $this->om->flush();
         }
     }
 }
コード例 #4
0
 /**
  * @EXT\Route(
  *     "cursus/course/session/registration/queue/{queue}/accept",
  *     name="claro_cursus_course_session_user_registration_accept",
  *     options = {"expose"=true}
  * )
  * @EXT\ParamConverter("authenticatedUser", options={"authenticatedUser" = true})
  *
  * @param CourseSession $session
  * @param User $user
  */
 public function courseSessionUserRegistrationAcceptAction(CourseSessionRegistrationQueue $queue)
 {
     $user = $queue->getUser();
     $session = $queue->getSession();
     $this->cursusManager->registerUsersToSession($session, array($user), 0);
     $this->cursusManager->deleteSessionQueue($queue);
     return new JsonResponse('success', 200);
 }
コード例 #5
0
 /**
  * @EXT\Route(
  *     "session/registration/queue/{queue}/user/validate",
  *     name="claro_cursus_session_registration_queue_user_validate",
  *     options={"expose"=true}
  * )
  * @EXT\ParamConverter("authenticatedUser", options={"authenticatedUser" = true})
  */
 public function sessionRegistrationQueueUserValidateAction(User $authenticatedUser, CourseSessionRegistrationQueue $queue)
 {
     $user = $queue->getUser();
     if ($authenticatedUser->getId() !== $user->getId()) {
         throw new AccessDeniedException();
     }
     $this->cursusManager->validateUserSessionRegistrationQueue($queue);
     $session = $queue->getSession();
     $course = $session->getCourse();
     $sessionFlashBag = $this->session->getFlashBag();
     $sessionFlashBag->add('success', $this->translator->trans('session_request_confirmation_success', ['%courseTitle%' => $course->getTitle(), '%sessionName%' => $session->getName()], 'cursus'));
     return new RedirectResponse($this->router->generate('claro_desktop_open'));
 }
コード例 #6
0
 /**
  * @EXT\Route(
  *     "/api/session/registration/queue/{queue}/accept",
  *     name="api_accept_session_registration_queue",
  *     options = {"expose"=true}
  * )
  * @EXT\ParamConverter("user", converter="current_user")
  *
  * Accepts session registration queue
  *
  * @return \Symfony\Component\HttpFoundation\JsonResponse
  */
 public function acceptSessionRegistrationQueueAction(CourseSessionRegistrationQueue $queue)
 {
     $user = $queue->getUser();
     $session = $queue->getSession();
     $results = $this->cursusManager->registerUsersToSession($session, [$user], CourseSessionUser::LEARNER, true);
     if ($results['status'] === 'success') {
         $serializedQueue = $this->serializer->serialize($queue, 'json', SerializationContext::create()->setGroups(['api_cursus']));
         $results['queue'] = $serializedQueue;
         $this->cursusManager->deleteSessionQueue($queue);
         $this->cursusManager->sendSessionRegistrationConfirmationMessage($user, $session, 'validated');
     }
     return new JsonResponse($results, 200);
 }
コード例 #7
0
 public function validateSessionQueue(CourseSessionRegistrationQueue $queue)
 {
     $user = $queue->getUser();
     $session = $queue->getSession();
     $course = $session->getCourse();
     $queueDatas = ['status' => 'success', 'type' => 'none', 'id' => $queue->getId(), 'courseId' => $course->getId(), 'sessionId' => $session->getId(), 'applicationDate' => $queue->getApplicationDate(), 'userId' => $user->getId(), 'username' => $user->getUsername(), 'firstName' => $user->getFirstName(), 'lastName' => $user->getLastName(), 'queueStatus' => $queue->getStatus()];
     $canValidate = $this->canValidateSessionQueue($queue);
     if ($canValidate) {
         $status = $queue->getStatus();
         if ($status === CourseRegistrationQueue::WAITING) {
             $queue->setStatus(0);
         } elseif ($status > 0) {
             $isAdmin = $this->authorization->isGranted('ROLE_ADMIN');
             $authenticatedUser = $this->tokenStorage->getToken()->getUser();
             if ($isAdmin) {
                 $status = 0;
             } elseif ($status & CourseRegistrationQueue::WAITING_ORGANIZATION) {
                 $status -= CourseRegistrationQueue::WAITING_ORGANIZATION;
                 $queue->setOrganizationValidationDate(new \DateTime());
                 $queue->setOrganizationAdmin($authenticatedUser);
                 $queue->setStatus($status);
                 $this->persistCourseSessionRegistrationQueue($queue);
                 $event = new LogSessionQueueOrganizationValidateEvent($queue);
                 $this->eventDispatcher->dispatch('log', $event);
                 $queueDatas['type'] = 'organization_validated';
                 $queueDatas['queueStatus'] = $queue->getStatus();
                 $queueDatas['organizationValidationDate'] = $queue->getValidatorValidationDate();
                 $queueDatas['organizationAdminId'] = $authenticatedUser->getId();
                 $queueDatas['organizationAdminUsername'] = $authenticatedUser->getUsername();
                 $queueDatas['organizationAdminFirstName'] = $authenticatedUser->getFirstName();
                 $queueDatas['organizationAdminLastName'] = $authenticatedUser->getLastName();
             } elseif ($status & CourseRegistrationQueue::WAITING_VALIDATOR) {
                 $status -= CourseRegistrationQueue::WAITING_VALIDATOR;
                 $queue->setValidatorValidationDate(new \DateTime());
                 $queue->setValidator($authenticatedUser);
                 $queue->setStatus($status);
                 $this->persistCourseSessionRegistrationQueue($queue);
                 $event = new LogSessionQueueValidatorValidateEvent($queue);
                 $this->eventDispatcher->dispatch('log', $event);
                 $queueDatas['type'] = 'validator_validated';
                 $queueDatas['queueStatus'] = $queue->getStatus();
                 $queueDatas['validatorValidationDate'] = $queue->getValidatorValidationDate();
                 $queueDatas['validatorId'] = $authenticatedUser->getId();
                 $queueDatas['validatorUsername'] = $authenticatedUser->getUsername();
                 $queueDatas['validatorFirstName'] = $authenticatedUser->getFirstName();
                 $queueDatas['validatorLastName'] = $authenticatedUser->getLastName();
             }
         }
         if ($queue->getStatus() === 0) {
             $results = $this->registerUsersToSession($session, [$user], 0, true);
             if ($results['status'] === 'success') {
                 $this->deleteSessionQueue($queue);
                 $this->sendSessionRegistrationConfirmationMessage($user, $session, 'validated');
                 $queueDatas['type'] = 'registered';
             } else {
                 $queue->setStatus(CourseRegistrationQueue::WAITING);
                 $this->persistCourseSessionRegistrationQueue($queue);
                 $queueDatas['status'] = 'failed';
                 $queueDatas['queueStatus'] = 1;
                 $queueDatas['datas'] = $results['datas'];
             }
         }
     } else {
         $queueDatas['type'] = 'not_authorized';
     }
     return $queueDatas;
 }
コード例 #8
0
 public function sessionQueue(CourseSession $session, User $user)
 {
     $now = new \DateTime();
     $status = 0;
     $validators = $session->getValidators();
     if ($session->getUserValidation()) {
         $status += CourseRegistrationQueue::WAITING_USER;
     }
     if ($session->getOrganizationValidation()) {
         $status += CourseRegistrationQueue::WAITING_ORGANIZATION;
     }
     if (count($validators) > 0) {
         $status += CourseRegistrationQueue::WAITING_VALIDATOR;
     } elseif ($session->getRegistrationValidation()) {
         $status += CourseRegistrationQueue::WAITING;
     }
     $sessionQueue = new CourseSessionRegistrationQueue();
     $sessionQueue->setUser($user);
     $sessionQueue->setSession($session);
     $sessionQueue->setApplicationDate($now);
     $sessionQueue->setStatus($status);
     $this->om->persist($sessionQueue);
     return $sessionQueue;
 }