/** * Store all results and feedback for a course */ public function storeResults(Request $request) { $student = User::find($request->student_id); $course = Course::find($request->course_id); $exams = Exam::where('course_id', $course->id)->get(); // Validate when feedback is present and no result is entered $rules = []; $messages = []; foreach ($request->exams as $index => $exam) { if ($exam['result'] == '' && $exam['feedback'] != '') { $rules["exams.{$index}.result"] = 'required'; $messages[] = 'Er moet een resultaat ingevuld zijn als je feedback wilt geven.'; } } // Handle validation or store if (!empty($rules)) { $this->validate($request, $rules, $messages); } else { foreach ($request->exams as $index => $exam) { // Store result and feedback in DB if ($exam['result'] != '' && $exam['feedback'] != '') { // Save Result in db and get new id $result = new Result(); $result->exam_id = $exam['id']; $result->result = $exam['result']; $result->student_id = $student->id; $result->save(); // Save feedback with result id $feedback = new Feedback(); $feedback->result_id = $result->id; $feedback->content = $exam['feedback']; $feedback->student_id = $student->id; $feedback->save(); } } } return view('teacher.add_grade', ['student' => $student, 'course' => $course, 'exams' => $exams]); }