public function __construct(CourseSession $session, User $user) { $course = $session->getCourse(); $details = array(); $details['username'] = $user->getUsername(); $details['firsName'] = $user->getFirstName(); $details['lastName'] = $user->getLastName(); $details['sessionId'] = $session->getId(); $details['sessionName'] = $session->getName(); $details['sessionCreationDate'] = $session->getCreationDate()->format('d/m/Y H:i:s'); $details['courseId'] = $course->getId(); $details['courseTitle'] = $course->getTitle(); $details['courseCode'] = $course->getCode(); parent::__construct(self::ACTION, $details, $user); }
public function __construct(CourseRegistrationQueue $queue, CourseSession $session) { $course = $queue->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(); parent::__construct(self::ACTION, $details, $user); }
/** * @EXT\Route( * "cursus/course/session/{session}/default/switch", * name="claro_cursus_course_session_default_switch", * options={"expose"=true} * ) * @EXT\ParamConverter("authenticatedUser", options={"authenticatedUser" = true}) */ public function courseSessionDefaultSwitchAction(CourseSession $session) { $isDefault = !$session->isDefaultSession(); $session->setDefaultSession($isDefault); $this->cursusManager->persistCourseSession($session); return new JsonResponse(['id' => $session->getId(), 'default' => $isDefault], 200); }
public function __construct(CourseSession $session) { $course = $session->getCourse(); $workspace = $session->getWorkspace(); $learnerRole = $session->getLearnerRole(); $tutorRole = $session->getTutorRole(); $details = []; $details['id'] = $session->getId(); $details['name'] = $session->getName(); $details['defaultSession'] = $session->isDefaultSession(); $details['creationDate'] = $session->getCreationDate(); $details['publicRegistration'] = $session->getPublicRegistration(); $details['publicUnregistration'] = $session->getPublicUnregistration(); $details['registrationValidation'] = $session->getRegistrationValidation(); $details['startDate'] = $session->getStartDate(); $details['endDate'] = $session->getEndDate(); $details['extra'] = $session->getExtra(); $details['userValidation'] = $session->getUserValidation(); $details['organizationValidation'] = $session->getOrganizationValidation(); $details['maxUsers'] = $session->getMaxUsers(); $details['type'] = $session->getType(); $details['courseId'] = $course->getId(); $details['courseTitle'] = $course->getTitle(); $details['courseCode'] = $course->getCode(); if (!is_null($workspace)) { $details['workspaceId'] = $workspace->getId(); $details['workspaceName'] = $workspace->getName(); $details['workspaceCode'] = $workspace->getCode(); $details['workspaceGuid'] = $workspace->getGuid(); } if (!is_null($learnerRole)) { $details['learnerRoleId'] = $learnerRole->getId(); $details['learnerRoleName'] = $learnerRole->getName(); $details['learnerRoleKey'] = $learnerRole->getTranslationKey(); } if (!is_null($tutorRole)) { $details['tutorRoleId'] = $tutorRole->getId(); $details['tutorRoleName'] = $tutorRole->getName(); $details['tutorRoleKey'] = $tutorRole->getTranslationKey(); } parent::__construct(self::ACTION, $details); }
public function generateWorkspace(Course $course, CourseSession $session, User $user) { $model = $course->getWorkspaceModel(); $description = $course->getDescription(); $displayable = false; $selfRegistration = false; $selfUnregistration = false; $registrationValidation = false; $name = $course->getTitle() . ' [' . $session->getName() . ']'; $code = $this->generateWorkspaceCode($course->getCode()); if (is_null($model)) { $ds = DIRECTORY_SEPARATOR; $config = Configuration::fromTemplate($this->templateDir . $ds . 'default.zip'); $config->setWorkspaceName($name); $config->setWorkspaceCode($code); $config->setDisplayable($displayable); $config->setSelfRegistration($selfRegistration); $config->setSelfUnregistration($selfUnregistration); $config->setRegistrationValidation($registrationValidation); $config->setWorkspaceDescription($description); $workspace = $this->workspaceManager->create($config, $user); } else { $workspace = $this->workspaceManager->createWorkspaceFromModel($model, $user, $name, $code, $description, $displayable, $selfRegistration, $selfUnregistration); } $workspace->setWorkspaceType(0); $startDate = $session->getStartDate(); $endDate = $session->getEndDate(); if (!is_null($startDate)) { $workspace->setStartDate($startDate); } if (!is_null($endDate)) { $workspace->setEndDate($endDate); } $this->workspaceManager->editWorkspace($workspace); return $workspace; }
/** * @EXT\Route( * "/courses/widget/{widgetInstance}/session/{session}/informations/workspace/{withWorkspace}/mail/{withMail}/type/{type}", * name="claro_courses_widget_session_informations", * defaults={"withWorkspace"=1, "withMail"=1, "type"=0}, * options={"expose"=true} * ) * @EXT\Template("ClarolineCursusBundle:Cursus:sessionInformationsModal.html.twig") */ public function coursesWidgetSessionInformationsAction(WidgetInstance $widgetInstance, CourseSession $session, $withWorkspace = 1, $withMail = 1, $type = 0) { $user = $this->tokenStorage->getToken()->getUser(); $isAnon = $user === 'anon.'; $config = $this->cursusManager->getCoursesWidgetConfiguration($widgetInstance); $extra = $config->getExtra(); $disableWs = intval($withWorkspace) === 0; $allInfos = intval($type) === 0; if (intval($withWorkspace) === 1) { $disableClosedSessionsWs = isset($extra['disableClosedSessionsWs']) ? $extra['disableClosedSessionsWs'] : false; $disableUnstartedSessionsWs = isset($extra['disableUnstartedSessionsWs']) ? $extra['disableUnstartedSessionsWs'] : false; $now = new \DateTime(); $startDate = $session->getStartDate(); $endDate = $session->getEndDate(); $disableWs = $endDate < $now && $disableClosedSessionsWs || $startDate > $now && $disableUnstartedSessionsWs; } $sessionEvents = $this->cursusManager->getEventsBySession($session); $tutors = $this->cursusManager->getUsersBySessionAndType($session, CourseSessionUser::TEACHER); $sessionEventUsersStatus = []; $sessionEventUsers = $isAnon ? [] : $this->cursusManager->getSessionEventUsersByUserAndSessionAndStatus($user, $session, SessionEventUser::REGISTERED); foreach ($sessionEventUsers as $seu) { $sessionEvent = $seu->getSessionEvent(); $seId = $sessionEvent->getId(); $status = $seu->getRegistrationStatus(); $sessionEventUsersStatus[$seId] = $status; } return ['session' => $session, 'course' => $session->getCourse(), 'events' => $sessionEvents, 'tutors' => $tutors, 'workspace' => $session->getWorkspace(), 'disableWs' => $disableWs, 'withMail' => intval($withMail) === 1, 'sessionEventUsersStatus' => $sessionEventUsersStatus, 'allInfos' => $allInfos]; }
/** * @EXT\Route( * "/course/session/{session}/self/register", * name="claro_cursus_course_session_self_register", * options={"expose"=true} * ) * @EXT\ParamConverter("authenticatedUser", options={"authenticatedUser" = true}) * @EXT\Template("ClarolineCursusBundle:Widget:coursesListForRegistrationWidget.html.twig") */ public function courseSessionSelfRegisterAction(CourseSession $session, User $authenticatedUser) { if ($session->getPublicRegistration()) { if ($session->getRegistrationValidation()) { $this->cursusManager->addUserToSessionQueue($authenticatedUser, $session); } else { $this->cursusManager->registerUsersToSession($session, array($authenticatedUser), 0); } } return new JsonResponse('success', 200); }
/** * @EXT\Route( * "/api/session/{session}/edit", * name="api_put_session_edition", * options = {"expose"=true} * ) * @EXT\ParamConverter("user", converter="current_user") * * Edits a session * * @return \Symfony\Component\HttpFoundation\JsonResponse */ public function putSessionEditionAction(CourseSession $session) { $sessionDatas = $this->request->request->get('sessionDatas', false); $trimmedStartDate = trim($sessionDatas['startDate'], 'Zz'); $trimmedEndDate = trim($sessionDatas['endDate'], 'Zz'); $startDate = new \DateTime($trimmedStartDate); $endDate = new \DateTime($trimmedEndDate); $session->setName($sessionDatas['name']); $session->setStartDate($startDate); $session->setEndDate($endDate); $session->setDescription($sessionDatas['description']); $session->setDefaultSession((bool) $sessionDatas['defaultSession']); $session->setPublicRegistration((bool) $sessionDatas['publicRegistration']); $session->setPublicUnregistration((bool) $sessionDatas['publicUnregistration']); $session->setUserValidation((bool) $sessionDatas['userValidation']); $session->setMaxUsers($sessionDatas['maxUsers']); $session->setOrganizationValidation((bool) $sessionDatas['organizationValidation']); $session->setRegistrationValidation((bool) $sessionDatas['registrationValidation']); $session->setEventRegistrationType($sessionDatas['eventRegistrationType']); $session->setDisplayOrder($sessionDatas['displayOrder']); $details = $session->getDetails(); if (is_null($details)) { $details = []; } $details['color'] = $sessionDatas['color']; $session->setDetails($details); $cursusIds = $sessionDatas['cursus'] ? $sessionDatas['cursus'] : []; $validatorsIds = $sessionDatas['validators'] ? $sessionDatas['validators'] : []; $cursus = $this->cursusManager->getCursusByIds($cursusIds); $validators = $this->userManager->getUsersByIds($validatorsIds); $session->emptyCursus(); $session->emptyValidators(); foreach ($cursus as $c) { $session->addCursus($c); } foreach ($validators as $validator) { $session->addValidator($validator); } $this->cursusManager->persistCourseSession($session); $event = new LogCourseSessionEditEvent($session); $this->eventDispatcher->dispatch('log', $event); $serializedSession = $this->serializer->serialize($session, 'json', SerializationContext::create()->setGroups(['api_user_min'])); return new JsonResponse($serializedSession, 200); }
public function sendSessionRegistrationConfirmationMessage(User $user, CourseSession $session, $sessionStatus) { $content = ''; $object = ''; $sessionName = $session->getName(); $startDate = $session->getStartDate()->format('d/m/Y'); $endDate = $session->getEndDate()->format('d/m/Y'); switch ($sessionStatus) { case 'registered': $object = $this->translator->trans('session_registration_object', ['%session_name%' => $sessionName, '%start_date%' => $startDate, '%end_date%' => $endDate, '%status%' => $this->translator->trans('registered', [], 'platform')], 'cursus'); $content = $this->translator->trans('session_registration_registered_msg', ['%session_name%' => $sessionName, '%start_date%' => $startDate, '%end_date%' => $endDate], 'cursus'); break; case 'pending': $object = $this->translator->trans('session_registration_object', ['%session_name%' => $sessionName, '%start_date%' => $startDate, '%end_date%' => $endDate, '%status%' => $this->translator->trans('pending', [], 'platform')], 'cursus'); $content = $this->translator->trans('session_registration_pending_msg', ['%session_name%' => $sessionName, '%start_date%' => $startDate, '%end_date%' => $endDate], 'cursus'); break; case 'validated': $object = $this->translator->trans('session_registration_object', ['%session_name%' => $sessionName, '%start_date%' => $startDate, '%end_date%' => $endDate, '%status%' => $this->translator->trans('validated', [], 'cursus')], 'cursus'); $content = $this->translator->trans('session_registration_validated_msg', ['%session_name%' => $sessionName, '%start_date%' => $startDate, '%end_date%' => $endDate], 'cursus'); break; } $message = $this->messageManager->create($content, $object, [$user]); $this->messageManager->send($message, true, false); }
/** * @View(serializerGroups={"api_cursus"}) * @ApiDoc( * description="Returns workspace id of session", * views = {"cursus"} * ) * @Get("/session/{session}/workspace/id") */ public function getWorkspaceIdFromSessionAction(CourseSession $session) { $workspace = $session->getWorkspace(); return is_null($workspace) ? null : $workspace->getId(); }
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; }