entries()->with(['student', 'audition'])->get(); $entries = $entries->sortBy(function ($entry) { return $entry->student->last_name.$entry->student->first_name.$entry->audition->score_order; }); $auditions = Audition::open()->get(); $students = Auth::user()->students; return view('entries.index', ['entries' => $entries, 'students' => $students, 'auditions' => $auditions]); } public function store(Request $request) { if ($request->user()->cannot('create', Entry::class)) { abort(403); } // TODO write custom rule to verify the combination of student and audition is unique $validData = $request->validate([ 'student_id' => ['required', 'exists:students,id'], 'audition_id' => ['required', 'exists:auditions,id'], ]); $validData['for_seating'] = $request->get('for_seating') ? 1 : 0; $validData['for_advancement'] = $request->get('for_advancement') ? 1 : 0; $entry = Entry::create([ 'student_id' => $validData['student_id'], 'audition_id' => $validData['audition_id'], 'for_seating' => $validData['for_seating'], 'for_advancement' => $validData['for_advancement'], ]); return redirect('/entries'); } public function destroy(Request $request, Entry $entry) { if ($request->user()->cannot('delete', $entry)) { abort(403); } $entry->delete(); return redirect('/entries')->with('success', 'The '.$entry->audition->name.'entry for '.$entry->student->full_name().'has been deleted.'); } }