/**
  * To create a paper in order to take an assessment
  *
  * @access public
  *
  * @param integer $id id of exercise
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function exercisePaperAction($id)
 {
     $exerciseSer = $this->container->get('ujm.exercise_services');
     $user = $this->container->get('security.token_storage')->getToken()->getUser();
     if (!is_object($user)) {
         return $this->redirect($this->generateUrl('ujm_exercise_open', array('exerciseId' => $id)));
     }
     $uid = $user->getId();
     $em = $this->getDoctrine()->getManager();
     $exercise = $em->getRepository('UJMExoBundle:Exercise')->find($id);
     $exoAdmin = $exerciseSer->isExerciseAdmin($exercise);
     $this->checkAccess($exercise);
     $workspace = $exercise->getResourceNode()->getWorkspace();
     if ($exerciseSer->controlDate($exoAdmin, $exercise) === true && ($exercise->getPublished() === true || $exoAdmin === true)) {
         $session = $this->getRequest()->getSession();
         $dql = 'SELECT max(p.numPaper) FROM UJM\\ExoBundle\\Entity\\Paper p ' . 'WHERE p.exercise=' . $id . ' AND p.user='******'UJMExoBundle:Paper')->getPaper($user->getId(), $id);
         //if not exist a paper no finished
         if (count($paper) == 0) {
             if ($exerciseSer->controlMaxAttemps($exercise, $user, $exoAdmin) === false) {
                 return $this->redirect($this->generateUrl('ujm_paper_list', array('exoID' => $id)));
             }
             $paper = new Paper();
             $paper->setNumPaper((int) $maxNumPaper[0][1] + 1);
             $paper->setExercise($exercise);
             $paper->setUser($user);
             $paper->setStart(new \Datetime());
             $paper->setArchive(0);
             $paper->setInterupt(1);
             if ($exercise->getNbQuestion() > 0 && $exercise->getKeepSameQuestion() == true) {
                 $papers = $this->getDoctrine()->getManager()->getRepository('UJMExoBundle:Paper')->getExerciseUserPapers($user->getId(), $id);
                 if (count($papers) == 0) {
                     $tab = $this->prepareInteractionsPaper($id, $exercise);
                     $interactions = $tab['interactions'];
                     $orderInter = $tab['orderInter'];
                     $tabOrderInter = $tab['tabOrderInter'];
                 } else {
                     $lastPaper = $papers[count($papers) - 1];
                     $orderInter = $lastPaper->getOrdreQuestion();
                     $tabOrderInter = explode(';', $lastPaper->getOrdreQuestion());
                     unset($tabOrderInter[count($tabOrderInter) - 1]);
                     $interactions[0] = $em->getRepository('UJMExoBundle:Interaction')->find($tabOrderInter[0]);
                 }
             } else {
                 $tab = $this->prepareInteractionsPaper($id, $exercise);
                 $interactions = $tab['interactions'];
                 $orderInter = $tab['orderInter'];
                 $tabOrderInter = $tab['tabOrderInter'];
             }
             $paper->setOrdreQuestion($orderInter);
             $em->persist($paper);
             $em->flush();
         } else {
             $paper = $paper[0];
             if (!$exercise->getDispButtonInterrupt()) {
                 return $this->forceFinishExercise($paper);
             }
             $tabOrderInter = explode(';', $paper->getOrdreQuestion());
             unset($tabOrderInter[count($tabOrderInter) - 1]);
             $interactions[0] = $em->getRepository('UJMExoBundle:Interaction')->find($tabOrderInter[0]);
         }
         $session->set('tabOrderInter', $tabOrderInter);
         $session->set('paper', $paper->getId());
         $session->set('exerciseID', $id);
         $typeInter = $interactions[0]->getType();
         //To display selectioned question
         return $this->displayQuestion(1, $interactions[0], $typeInter, $exercise->getDispButtonInterrupt(), $exercise->getMaxAttempts(), $workspace, $paper);
     } else {
         return $this->redirect($this->generateUrl('ujm_paper_list', array('exoID' => $id)));
     }
 }