public function __construct(CourseSessionRegistrationQueue $queue) { $session = $queue->getSession(); $course = $session->getCourse(); $user = $queue->getUser(); $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['applicationDate'] = $queue->getApplicationDate(); parent::__construct(self::ACTION, $details, $user); }
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; }