/**
  * json request, save the paper data.
  *
  * @EXT\Route(
  *      "/validate/{sid}/{page}/{all}",
  *      name="cpasimusante_simupoll_paper_save",
  *      defaults={ "page" = 1, "all" = 0 },
  *      requirements={},
  *      options={"expose"=true}
  * )
  *
  * @param int  $sid  id of Simupoll
  * @param int  $page for the pagination, page destination
  * @param bool $all  for use or not use the pagination
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function paperSaveAction(Request $request, $sid, $page, $all)
 {
     $em = $this->getDoctrine()->getManager();
     $session = $request->getSession();
     if ($request->isMethod('POST')) {
         $simupoll = $em->getRepository('CPASimUSanteSimupollBundle:Simupoll')->findOneById($sid);
         $user = $this->container->get('security.token_storage')->getToken()->getUser();
         $uid = $user->getId();
         //get NumPaper for the simupoll / user
         $maxNumPaper = $this->paperManager->getMaxNumPaper($sid, $uid);
         //Verify if it exists a not finished paper for the user
         //$paper = $this->paperManager->gePaper($sid, $uid);
         //list of answers
         $choices = $request->request->get('choice');
         $next_category = $request->request->get('next');
         $current_category = $request->request->get('current');
         //if there is no paper
         //  if (count($paper) == 0) {
         //Create paper
         $paper = new Paper();
         $paper->setUser($user);
         $paper->setStart(new \DateTime());
         $paper->setSimupoll($simupoll);
         $paper->setNumPaper((int) $maxNumPaper + 1);
         $em->persist($paper);
         $em->flush();
         //$this->paperManager->savePaper($user, $simupoll, $period, (int) $maxNumPaper + 1);
         //Save responses
         foreach ($choices as $choice) {
             $proposition = $em->getRepository('CPASimUSanteSimupollBundle:Proposition')->findOneById($choice[1]);
             $answer = new Answer();
             $answer->setPaper($paper);
             $answer->setQuestion($proposition->getQuestion());
             $answer->setAnswer($proposition->getId() . ';');
             $answer->setMark($proposition->getMark());
             $em->persist($answer);
         }
         $em->flush();
         //Set session
         $session->set('simupaper' . $sid, $paper->getId());
         $data = $choices;
         return new JsonResponse($data);
     }
 }
Beispiel #2
0
 /**
  * Save Paper.
  *
  * @return Paper $paper
  */
 public function savePaper($user, $simupoll, $period, $maxNumPaper)
 {
     $paper = new Paper();
     $paper->setUser($user);
     $paper->setStart(new \DateTime());
     $paper->setSimupoll($simupoll);
     $paper->setPeriod($period);
     $paper->setNumPaper($maxNumPaper);
     $this->om->persist($paper);
     $this->om->flush();
     return $paper;
 }