示例#1
0
 /**
  * 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]);
 }