public function validateUserSessionRegistrationQueue(CourseSessionRegistrationQueue $queue) { $results = ['status' => 'success', 'datas' => []]; $status = $queue->getStatus(); $user = $queue->getUser(); $session = $queue->getSession(); if ($status & CourseRegistrationQueue::WAITING_USER) { $status -= CourseRegistrationQueue::WAITING_USER; $queue->setStatus($status); $queue->setUserValidationDate(new \DateTime()); $this->persistCourseSessionRegistrationQueue($queue); $event = new LogSessionQueueUserValidateEvent($queue); $this->eventDispatcher->dispatch('log', $event); } if ($queue->getStatus() === 0) { $results = $this->registerUsersToSession($session, [$user], CourseSessionUser::LEARNER); if ($results['status'] === 'success') { $this->deleteSessionQueue($queue); $this->sendSessionRegistrationConfirmationMessage($user, $session, 'validated'); } else { $queue->setStatus(CourseRegistrationQueue::WAITING); $this->persistCourseSessionRegistrationQueue($queue); } } return $results; }