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']); $currentDate = Carbon::now('America/Chicago'); $currentDate = $currentDate->format('Y-m-d'); if ($audition->entry_deadline < $currentDate) { 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 (AuditionAdminException $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); } if (auth()->user()) { $message = 'Deleted entry '.$entry->id; $affected = [ 'entries' => [$entry->id], 'auditions' => [$entry->audition_id], 'schools' => [$entry->student->school_id], 'students' => [$entry->student_id], ]; AuditLogEntry::create([ 'user' => auth()->user()->email, 'ip_address' => request()->ip(), 'message' => $message, 'affected' => $affected, ]); } $entry->delete(); return redirect()->route('entries.index')->with('success', 'The '.$entry->audition->name.'entry for '.$entry->student->full_name().'has been deleted.'); } }