/**
  * @Patch("/chapters/{lesson}/{chapter}",
  *          requirements={"lesson" = "\d+"})
  * @ParamConverter("lesson", class="IcapLessonBundle:Lesson")
  * @ParamConverter("chapter", class="IcapLessonBundle:Chapter", options={"mapping": {"chapter": "slug"}})
  * @View(serializerEnableMaxDepthChecks=true)
  */
 public function moveChapterAction(Lesson $lesson, Chapter $chapter)
 {
     // CHECK ACCESS
     $this->apiCheckAccess('EDIT', $lesson);
     $translator = $this->get('translator');
     $oldParent = $chapter->getParent();
     $newParentSlug = $this->request->request->get('newParent');
     $prevSiblingSlug = $this->request->request->get('prevSibling');
     $em = $this->getDoctrine()->getManager();
     $repo = $em->getRepository('IcapLessonBundle:Chapter');
     $newParent = $repo->findOneBySlug($newParentSlug);
     if ($prevSiblingSlug == null) {
         $repo->persistAsFirstChildOf($chapter, $newParent);
     } else {
         $prevSibling = $repo->findOneBySlug($prevSiblingSlug);
         $repo->persistAsNextSiblingOf($chapter, $prevSibling);
     }
     $em->flush();
     $this->dispatchChapterMoveEvent($lesson, $chapter, $oldParent, $chapter->getParent());
     return array('message' => $translator->trans('Your chapter has been modified', array(), 'icap_lesson'), 'chapter' => $this->formatChapterData($chapter));
 }