is_admin) abort(403); $filters = session('adminEntryFilters'); $minGrade = Audition::min('minimum_grade'); $maxGrade = Audition::max('maximum_grade'); $auditions = Audition::orderBy('score_order')->get(); $schools = School::orderBy('name')->get(); $entries = Entry::with(['student.school','audition']); $entries->orderBy('updated_at','DESC'); if($filters) { if($filters['audition']) { $entries->where('audition_id', $filters['audition']); } if($filters['school']) { $entries->whereHas('student', function($query) use ($filters) { $query->where('school_id', '=', $filters['school']); }); } if($filters['grade']) { $entries->whereHas('student', function($query) use ($filters) { $query->where('grade', $filters['grade']); }); } if($filters['first_name']) { $entries->whereHas('student', function($query) use ($filters) { $query->where('first_name', 'like', '%' . $filters['first_name'] . '%'); }); } if($filters['last_name']) { $entries->whereHas('student', function($query) use ($filters) { $query->where('last_name', 'like', '%' . $filters['last_name'] . '%'); }); } } $entries = $entries->paginate(10); return view('admin.entries.index', ['entries' => $entries, 'auditions' => $auditions, 'schools'=> $schools, 'minGrade' => $minGrade, 'maxGrade' => $maxGrade, 'filters' => $filters] ); } public function create() { if(! Auth::user()->is_admin) abort(403); $students = Student::with('school')->orderBy('last_name')->orderBy('first_name')->get(); $auditions = Audition::orderBy('score_order')->get(); return view('admin.entries.create', ['students' => $students, 'auditions' => $auditions]); } public function store() { if(! Auth::user()->is_admin) abort(403); request()->validate([ 'student_id' => ['required', 'exists:students,id'], 'audition_id' => ['required', 'exists:auditions,id'], ]); Entry::create([ 'student_id' => request('student_id'), 'audition_id' => request('audition_id'), ]); return redirect('/admin/entries'); } public function edit(Entry $entry) { if(! Auth::user()->is_admin) abort(403); $students = Student::with('school')->orderBy('last_name')->orderBy('first_name')->get(); $auditions = Audition::orderBy('score_order')->get(); return view('admin.entries.edit', ['entry' => $entry, 'students' => $students, 'auditions' => $auditions]); } public function update(Entry $entry) { if(! Auth::user()->is_admin) abort(403); request()->validate([ 'student_id' => ['required', 'exists:students,id'], 'audition_id' => ['required', 'exists:auditions,id'], ]); $entry->update([ 'student_id' => request('student_id'), 'audition_id' => request('audition_id'), ]); return redirect('/admin/entries'); } }