/**
  * @param \_OurBrand_\Quiz\Domain\Model\Exercises\DragAndDropWordToQuestionExercise $exercise
  * @return void
  */
 public function updateAction($exercise)
 {
     $newQuestions = $answers = $extraWords = array();
     if ($this->request->hasArgument('questions')) {
         $newQuestions = $this->request->getArgument('questions');
     }
     if ($this->request->hasArgument('answers')) {
         $answers = $this->request->getArgument('answers');
     }
     if ($this->request->hasArgument('extraWords')) {
         $extraWords = $this->request->getArgument('extraWords');
     }
     $questions = array();
     foreach ($newQuestions as $i => $questionText) {
         $obj = array('question' => $questionText);
         $obj['answer'] = $answers[$i];
         $questions[] = $obj;
     }
     $exercise->setQuestionsFromArray($questions);
     $exercise->setExtraWordsFromArray($extraWords);
     $exercise->randomize();
     // Remove the possible session values in preview:
     $identifier = $this->persistenceManager->getIdentifierByObject($exercise);
     $this->loginSession->setData('answers-' . $identifier, null);
     if (!$this->request->hasArgument('json')) {
         $this->forward('update', 'exercise', null, array('exercise' => $exercise));
     }
     $this->forward('updateSilent', 'exercise', null, array('exercise' => $exercise, 'json' => $this->request->getArgument('json')));
 }
 /**
  * @dataProvider extraWordsDataProvider
  * @param array $data
  */
 public function testSetExtraWordsFromArray($data)
 {
     $exercise = new DragAndDropWordToQuestionExercise();
     $this->assertNull($exercise->setExtraWordsFromArray($data));
     $questions = $exercise->getQuestions();
     $num = 0;
     foreach ($data as $key => $row) {
         $this->assertSame($exercise, $questions[$key]->getExercise());
         $this->assertSame(null, $questions[$key]->getQuestion());
         $this->assertSame($row, $questions[$key]->getAnswer());
         $this->assertSame($num, $questions[$key]->getNumber());
         $this->assertSame($num, $questions[$key]->getSorting());
         $num++;
     }
     $this->assertEquals(count($data), count($exercise->getExtraWords()));
 }