/** * Remove the specified resource from storage. * * @param Quiz $quiz * @return Response * @throws \Exception * @internal param int $id */ public function destroy(Quiz $quiz) { foreach ($quiz->tests as $test) { foreach ($test->results as $result) { $result->delete(); } $test->delete(); } foreach ($quiz->questions as $question) { $question->answers()->delete(); } $quiz->questions()->delete(); $quiz->delete(); return redirect()->back(); }
/** * 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(); }