/**
  * @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);
     }
 }
Esempio n. 2
0
 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();
     }
 }