Exemplo n.º 1
0
 /**
  * Creates a new exercise paper for a given user.
  *
  * @param Exercise $exercise
  * @param User     $user
  *
  * @return Paper
  */
 public function createPaper(Exercise $exercise, User $user = null)
 {
     // Get the number of the new Paper
     $paperNum = 1;
     if ($user) {
         $lastPaper = $this->om->getRepository('UJMExoBundle:Paper')->findOneBy(['user' => $user, 'exercise' => $exercise], ['start' => 'DESC']);
         if ($lastPaper) {
             $paperNum = $lastPaper->getNumPaper() + 1;
         }
     }
     // Generate the list of Steps and Questions for the Paper
     $order = '';
     if (!empty($lastPaper) && $exercise->getKeepSteps()) {
         // Get steps order from the last user Paper
         $order = $lastPaper->getOrdreQuestion();
     } else {
         // Generate paper step order
         $questions = $this->pickQuestions($exercise);
         foreach ($questions as $question) {
             $order .= $question->getId() . ';';
         }
     }
     // Create the new Paper entity
     $paper = new Paper();
     $paper->setExercise($exercise);
     $paper->setUser($user);
     $paper->setNumPaper($paperNum);
     $paper->setOrdreQuestion($order);
     $paper->setAnonymous($exercise->getAnonymous());
     $this->om->persist($paper);
     $this->om->flush();
     return $paper;
 }