/** * Update the specified quiz in database * * @param Request $request * @param Quiz $quiz * @return Response * @internal param int $id */ public function update(Request $request, Quiz $quiz) { $quiz->update(['subject' => $request->get('subject')]); foreach ($quiz->questions as $question) { $q = $request->get('existingquestions')[$question->id]; $question->text = $q['text']; $question->save(); foreach ($question->answers as $answer) { $answer->text = $q['answers'][$answer->id]; $answer->correct = $q['correct_answer'] == $answer->id; $answer->save(); } } foreach ($request->get('questions') as $q) { $question = $quiz->questions()->create(['text' => $q['text']]); $answers = $q['answers']; if (!array_key_exists('correct_answer', $q)) { $q['correct_answer'] = 0; } foreach (range(0, 3) as $i) { $question->answers()->create(['text' => $answers[$i], 'correct' => $i == $q['correct_answer'], 'question_id' => $question->id]); } } return redirect()->back(); }
/** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param Quiz $quiz * @return \Illuminate\Http\Response */ public function update(Request $request, Quiz $quiz) { $questions = $request->input('question'); $answers = $request->input('answer'); $correct = $request->input('correct'); $quiz->update(['name' => $request->input('name'), 'active' => $request->input('active'), 'total' => count($questions)]); foreach ($quiz->questions as $i => $question) { $question->update(['question' => $questions[$i]]); foreach ($question->answers as $j => $answer) { $j == $correct[$i] ? $answer->update(['answer' => $answers[$i][$j], 'correct' => true]) : $answer->update(['answer' => $answers[$i][$j], 'correct' => false]); } } return redirect()->action('QuizzesController@index'); }