/** * @EXT\Route( * "/api/session/event/{sessionEvent}/edit", * name="api_put_session_event_edition", * options = {"expose"=true} * ) * @EXT\ParamConverter("user", converter="current_user") * * Edits a session event * * @return \Symfony\Component\HttpFoundation\JsonResponse */ public function putSessionEventEditionAction(SessionEvent $sessionEvent) { $sessionEventDatas = $this->request->request->get('sessionEventDatas', false); $trimmedStartDate = trim($sessionEventDatas['startDate'], 'Zz'); $trimmedEndDate = trim($sessionEventDatas['endDate'], 'Zz'); $startDate = new \DateTime($trimmedStartDate); $endDate = new \DateTime($trimmedEndDate); $sessionEvent->setName($sessionEventDatas['name']); $sessionEvent->setStartDate($startDate); $sessionEvent->setEndDate($endDate); $sessionEvent->setDescription($sessionEventDatas['description']); $sessionEvent->setLocationExtra($sessionEventDatas['locationExtra']); $sessionEvent->setRegistrationType($sessionEventDatas['registrationType']); $sessionEvent->setMaxUsers($sessionEventDatas['maxUsers']); $sessionEvent->setLocationResource(null); $sessionEvent->setLocation(null); if ($sessionEventDatas['location']) { $location = $this->locationManager->getLocationById($sessionEventDatas['location']); if (!is_null($location)) { $sessionEvent->setLocation($location); } } if ($sessionEventDatas['locationResource']) { $locationResource = $this->cursusManager->getReservationResourceById($sessionEventDatas['locationResource']); if (!is_null($locationResource)) { $sessionEvent->setLocationResource($locationResource); } } $sessionEvent->emptyTutors(); $tutorsIds = $sessionEventDatas['tutors'] ? $sessionEventDatas['tutors'] : []; $tutors = $this->userManager->getUsersByIds($tutorsIds); foreach ($tutors as $tutor) { $sessionEvent->addTutor($tutor); } $this->cursusManager->persistSessionEvent($sessionEvent); $event = new LogSessionEventEditEvent($sessionEvent); $this->eventDispatcher->dispatch('log', $event); $this->cursusManager->checkPendingSessionEventUsers($sessionEvent); if ($sessionEvent->getRegistrationType() === CourseSession::REGISTRATION_AUTO) { $this->cursusManager->registerSessionUsersToSessionEvent($sessionEvent); } $serializedSessionEvent = $this->serializer->serialize($sessionEvent, 'json', SerializationContext::create()->setGroups(['api_user_min'])); return new JsonResponse($serializedSessionEvent, 200); }
public function createSessionEvent(CourseSession $session, $name = null, $description = null, $startDate = null, $endDate = null, $location = null, $locationExtra = null, Resource $reservationResource = null, array $tutors = [], $registrationType = CourseSession::REGISTRATION_AUTO, $maxUsers = null) { $eventName = is_null($name) ? $session->getName() : $name; $eventStartDate = is_null($startDate) ? $session->getStartDate() : $startDate; $eventEndDate = is_null($endDate) ? $session->getEndDate() : $endDate; $sessionEvent = new SessionEvent(); $sessionEvent->setSession($session); $sessionEvent->setName($eventName); $sessionEvent->setDescription($description); $sessionEvent->setStartDate($eventStartDate); $sessionEvent->setEndDate($eventEndDate); $sessionEvent->setLocation($location); $sessionEvent->setLocationExtra($locationExtra); $sessionEvent->setLocationResource($reservationResource); $sessionEvent->setRegistrationType($registrationType); $sessionEvent->setMaxUsers($maxUsers); foreach ($tutors as $tutor) { $sessionEvent->addTutor($tutor); } $this->persistSessionEvent($sessionEvent); $event = new LogSessionEventCreateEvent($sessionEvent); $this->eventDispatcher->dispatch('log', $event); if ($sessionEvent->getRegistrationType() === CourseSession::REGISTRATION_AUTO) { $this->registerSessionUsersToSessionEvent($sessionEvent); } return $sessionEvent; }