コード例 #1
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;
 }