validate([ 'school' => 'nullable|exists:schools,id', 'ensemble' => 'nullable|exists:nomination_ensembles,id', 'section' => 'nullable|string', 'newFilterParameters' => 'string', ]); session()->put('nominationAdminFilters', $newFilterData); $filterData = $newFilterData; } elseif (session()->has('nominationAdminFilters')) { $filterData = session()->get('nominationAdminFilters'); } else { $filterData = []; } // Populate variables to complete the filter form $schools = School::orderBy('name')->get(); $ensembles = NominationEnsemble::all(); $nominations = NominationEnsembleEntry::with('student.school'); if ($filterData['school'] ?? false) { $nominations = $nominations->whereHas('student', function ($query) use ($filterData) { $query->where('school_id', $filterData['school']); }); } if ($filterData['ensemble'] ?? false) { $nominations = $nominations->where('nomination_ensemble_id', $filterData['ensemble']); } if ($filterData['section'] ?? false) { $sectionFilter = explode('---', $filterData['section']); $nominations = $nominations->where('nomination_ensemble_id', $sectionFilter[0]); if ($sectionFilter[1] != 'all') { $nominations = $nominations->where('data->instrument', $sectionFilter[1]); } } $nominations = $nominations->paginate(50); $sections = []; foreach ($ensembles as $ensemble) { $sections[$ensemble->id.'---'.'all'] = $ensemble->name.' - ALL'; foreach ($ensemble->data['instruments'] as $instrument) { $sections[$ensemble->id.'---'.$instrument['name']] = $ensemble->name.' - '.$instrument['name']; } } return view('nomination_ensembles.meobda.admin.nominations', compact('nominations', 'schools', 'filterData', 'ensembles', 'sections')); } public function show(NominationEnsembleEntry $entry) { // TODO: Implement show() method. } public function create() { // TODO: Implement create() method. } public function store() { // TODO: Implement store() method. } public function edit(NominationEnsembleEntry $entry) { // TODO: Implement edit() method. } public function update(NominationEnsembleEntry $entry) { // TODO: Implement update() method. } public function destroy(NominationEnsembleEntry $entry) { // TODO: Implement destroy() method. } }