diff --git a/app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminController.php b/app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminController.php index 7a7f263..b5badc9 100644 --- a/app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminController.php +++ b/app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminController.php @@ -14,9 +14,9 @@ class MeobdaNominationAdminController extends Controller implements NominationAd if (request('newFilterParameters')) { $newFilterData = request()->validate([ 'school' => 'nullable|exists:schools,id', - 'ensemble' => 'nullable|exists:nomination_ensembles,id', 'section' => 'nullable|string', 'newFilterParameters' => 'string', + 'split' => 'nullable|string', ]); session()->put('nominationAdminFilters', $newFilterData); $filterData = $newFilterData; @@ -29,16 +29,30 @@ class MeobdaNominationAdminController extends Controller implements NominationAd // 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['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]); @@ -47,17 +61,18 @@ class MeobdaNominationAdminController extends Controller implements NominationAd } } - $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']; + 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')); + compact('nominations', 'schools', 'filterData', 'ensembles', 'sections', 'splits')); } public function show(NominationEnsembleEntry $entry) diff --git a/resources/views/nomination_ensembles/meobda/admin/nominations.blade.php b/resources/views/nomination_ensembles/meobda/admin/nominations.blade.php index c933b49..08af986 100644 --- a/resources/views/nomination_ensembles/meobda/admin/nominations.blade.php +++ b/resources/views/nomination_ensembles/meobda/admin/nominations.blade.php @@ -18,17 +18,6 @@ @endforeach - - Ensemble - - @foreach($ensembles as $ensemble) - - @endforeach - - Ensemble / Instrument @@ -39,6 +28,16 @@ @endforeach + + Split + + @foreach ($splits as $value => $name) + + @endforeach + +