/** * @EXT\Route( * "cursus/{cursus}/order/update/with/cursus/{otherCursus}/mode/{mode}", * name="claro_cursus_update_order", * options={"expose"=true} * ) * @EXT\ParamConverter("authenticatedUser", options={"authenticatedUser" = true}) */ public function updateCursusOrderAction(Cursus $cursus, Cursus $otherCursus, $mode) { $this->checkToolAccess(); if ($cursus->getParent() === $otherCursus->getParent()) { $newOrder = $otherCursus->getCursusOrder(); if ($mode === 'next') { $this->cursusManager->updateCursusOrder($cursus, $newOrder); } else { $cursus->setCursusOrder($newOrder + 1); $this->cursusManager->persistCursus($cursus); } return new JsonResponse('success', 204); } else { return new JsonResponse('Forbidden', 403); } }
public function updateCursusParentAndOrder(Cursus $cursus, Cursus $parent = null, $cursusOrder = -1) { if ($cursus->getParent() !== $parent || $cursus->getCursusOrder() !== $cursusOrder) { $cursusList = is_null($parent) ? $this->getAllRootCursus('', 'cursusOrder', 'ASC') : $this->getCursusByParent($parent); $cursus->setParent($parent); $i = 1; $updated = false; $this->om->startFlushSuite(); foreach ($cursusList as $oneCursus) { if ($oneCursus->getId() === $cursus->getId()) { continue; } else { $currentOrder = $oneCursus->getCursusOrder(); if ($currentOrder === $cursusOrder) { $cursus->setCursusOrder($i); $this->om->persist($cursus); $updated = true; $i++; } $oneCursus->setCursusOrder($i); $this->om->persist($oneCursus); $i++; } } if (!$updated) { $cursus->setCursusOrder($i); $this->om->persist($cursus); } $this->om->endFlushSuite(); } }