validate([ 'school' => 'nullable|exists:schools,id', 'section' => 'nullable|string', 'newFilterParameters' => 'string', 'split' => 'nullable|string', 'clear' => 'nullable|string', ]); if ($newFilterData['clear'] ?? false == 'clear') { $filterData = []; session()->forget('nominationAdminFilters'); } else { 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(); $sections = []; $splits = []; foreach ($ensembles as $ensemble) { // Populate sections for each ensemble $sections[$ensemble->id.'---'.'all'] = $ensemble->name.' - ALL'; foreach ($ensemble->data['instruments'] as $instrument) { $sections[$ensemble->id.'---'.$instrument['name']] = $ensemble->name.' - '.$instrument['name']; } // Populate splits for each ensemble $splits[$ensemble->id.'---'.'all'] = $ensemble->name.' - ALL'; foreach ($ensemble->data['split_names'] as $splitName) { $splits[$ensemble->id.'---'.$splitName] = $ensemble->name.' - '.$splitName; } } // Get and filter nominations $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['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]); } } if ($filterData['split'] ?? false) { $splitFilter = explode('---', $filterData['split']); $nominations = $nominations->where('nomination_ensemble_id', $splitFilter[0]); if ($splitFilter[1] != 'all') { $nominations = $nominations->where('data->split', $splitFilter[1]); } } $nominations = $nominations->paginate(50); return view('nomination_ensembles.meobda.admin.nominations', compact('nominations', 'schools', 'filterData', 'ensembles', 'sections', 'splits')); } 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. } }