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; $students->load('school'); return view('entries.index', ['entries' => $entries, 'students' => $students, 'auditions' => $auditions]); } public function store(Request $request, CreateEntry $creator) { if ($request->user()->cannot('create', Entry::class)) { abort(403); } $validData = $request->validate([ 'student_id' => ['required', 'exists:students,id'], 'audition_id' => ['required', 'exists:auditions,id'], ]); $audition = Audition::find($validData['audition_id']); if ($audition->entry_deadline < now()) { return redirect()->route('entries.index')->with('error', 'The entry deadline for that audition has passed'); } $validData['for_seating'] = $request->get('for_seating') ? 1 : 0; $validData['for_advancement'] = $request->get('for_advancement') ? 1 : 0; $enter_for = []; if ($validData['for_seating']) { $enter_for[] = 'seating'; } if ($validData['for_advancement']) { $enter_for[] = 'advancement'; } try { $creator($validData['student_id'], $validData['audition_id'], $enter_for); } catch (CreateEntryException $ex) { return redirect()->route('entries.index')->with('error', $ex->getMessage()); } return redirect()->route('entries.index')->with('success', 'The entry has been added.'); } public function destroy(Request $request, Entry $entry) { if ($request->user()->cannot('delete', $entry)) { abort(403); } $entry->delete(); return redirect()->route('entries.index')->with('success', 'The '.$entry->audition->name.'entry for '.$entry->student->full_name().'has been deleted.'); } }