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); }
/** * @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); }
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(); } } }
/** * @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); }
/** * @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')); }
/** * @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); }
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; }
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; }