/**
  * Persist given answer(s) for the exercise by current StudentQuizSession.
  * Each correct answer gives a point. Certain questions can give multiple points.
  *
  * @param \_OurBrand_\Quiz\Domain\Model\Exercises\MultipleChoiceSameAnswerExercise $exercise
  */
 public function registerAnswerAction($exercise)
 {
     $answers = $this->request->hasArgument('question') ? $this->request->getArgument('question') : array();
     $score = $exercise->calculateScoreForAnswers($answers);
     $status = $exercise->isCompleted($answers);
     // Save the score, for the given answers, on this exercise, during this quiz.
     $this->exerciseService->registerAnswer($score, $status, $answers, $exercise, $this->studentQuizSession);
     $this->studentQuizSessionService->updateProgress($this->studentQuizSession);
     $this->view->assign('value', array('timeRemaining' => $this->studentQuizSession->getTimeRemaining()));
     if (!$this->isJson) {
         $this->redirect('studentnavigate', 'quiz', $this->request->hasArgument('goto') ? $this->request->getArgument('goto') : 'next');
     }
 }
 /**
  * @return array
  */
 public function readyForCompletionDataProvider()
 {
     $exercises = array();
     $exercise = new MultipleChoiceSameAnswerExercise();
     $exercises['empty'] = array($exercise, 0);
     $exercise = new MultipleChoiceSameAnswerExercise();
     $exercise->setTitle('Title');
     $exercise->setDescription('Description');
     $exercises['no question'] = array($exercise, 0);
     $question = new MultipleChoiceQuestion();
     $exercise = new MultipleChoiceSameAnswerExercise();
     $exercise->setTitle('Title');
     $exercise->setDescription('Description');
     $exercise->addQuestion($question);
     $exercises['empty question'] = array($exercise, 0);
     $question = new MultipleChoiceQuestion();
     $question->setText('Question');
     $exercise = new MultipleChoiceSameAnswerExercise();
     $exercise->setTitle('Title');
     $exercise->setDescription('Description');
     $exercise->addQuestion($question);
     $exercises['no answers'] = array($exercise, 0);
     $answer = new MultipleChoicePossibleAnswer();
     $question = new MultipleChoiceQuestion();
     $question->setText('Question');
     $question->addPossibleAnswer($answer);
     $exercise = new MultipleChoiceSameAnswerExercise();
     $exercise->setTitle('Title');
     $exercise->setDescription('Description');
     $exercise->addQuestion($question);
     $exercises['empty answer'] = array($exercise, 0);
     $answer = new MultipleChoicePossibleAnswer();
     $answer->setText('Answer');
     $question = new MultipleChoiceQuestion();
     $question->setText('Question');
     $question->addPossibleAnswer($answer);
     $exercise = new MultipleChoiceSameAnswerExercise();
     $exercise->setTitle('Title');
     $exercise->setDescription('Description');
     $exercise->addQuestion($question);
     $exercises['only one answer'] = array($exercise, 0);
     $answer = new MultipleChoicePossibleAnswer();
     $answer->setText('Answer');
     $answer2 = new MultipleChoicePossibleAnswer();
     $answer2->setText('Answer');
     $question = new MultipleChoiceQuestion();
     $question->setText('Question');
     $question->addPossibleAnswer($answer);
     $question->addPossibleAnswer($answer2);
     $exercise = new MultipleChoiceSameAnswerExercise();
     $exercise->setTitle('Title');
     $exercise->setDescription('Description');
     $exercise->addQuestion($question);
     $exercises['ready'] = array($exercise, 1);
     return $exercises;
 }