/** * @EXT\Route( * "/api/cursus/{cursus}/edit", * name="api_put_cursus_edition", * options = {"expose"=true} * ) * @EXT\ParamConverter("user", converter="current_user") * * Edits a cursus * * @return \Symfony\Component\HttpFoundation\JsonResponse */ public function putCursusEditionAction(Cursus $cursus) { $cursusDatas = $this->request->request->get('cursusDatas', false); $cursus->setTitle($cursusDatas['title']); $cursus->setCode($cursusDatas['code']); $cursus->setDescription($cursusDatas['description']); $cursus->setBlocking((bool) $cursusDatas['blocking']); $color = $cursusDatas['color']; $details = ['color' => $color]; $cursus->setDetails($details); if ($cursusDatas['workspace']) { $worskpace = $this->workspaceManager->getWorkspaceById($cursusDatas['workspace']); $cursus->setWorkspace($worskpace); } if ($this->request->files->get('cursusDatas')['icon']) { $icon = $this->cursusManager->saveIcon($this->request->files->get('cursusDatas')['icon']); $cursus->setIcon($icon); } $this->cursusManager->persistCursus($cursus); $event = new LogCursusEditEvent($cursus); $this->eventDispatcher->dispatch('log', $event); $serializedCursus = $this->serializer->serialize($cursus, 'json', SerializationContext::create()->setGroups(['api_workspace_min'])); return new JsonResponse($serializedCursus, 200); }
public function createCursus($title, $code, Cursus $parent = null, Course $course = null, $description = null, $blocking = false, $icon = null, $color = null, Workspace $workspace = null) { $cursus = new Cursus(); $cursus->setTitle($title); $cursus->setCode($code); $cursus->setParent($parent); $cursus->setCourse($course); $cursus->setDescription($description); $cursus->setBlocking((bool) $blocking); $cursus->setIcon($icon); $cursus->setWorkspace($workspace); $cursus->setDetails(['color' => $color]); $orderMax = is_null($parent) ? $this->getLastRootCursusOrder() : $this->getLastCursusOrderByParent($parent); $order = is_null($orderMax) ? 1 : intval($orderMax) + 1; $cursus->setCursusOrder($order); $this->persistCursus($cursus); $event = new LogCursusCreateEvent($cursus); $this->eventDispatcher->dispatch('log', $event); return $cursus; }