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; }
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; }