/** * 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; }