Meobda nomination ensemble #107
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -18,17 +18,6 @@
|
|||
@endforeach
|
||||
</x-form.select>
|
||||
|
||||
<x-form.select name="ensemble" onchange="this.form.submit()">
|
||||
<x-slot:label>Ensemble</x-slot:label>
|
||||
<option value="">All</option>
|
||||
@foreach($ensembles as $ensemble)
|
||||
<option value="{{ $ensemble->id }}"
|
||||
@if($ensemble->id == ($filterData['ensemble'] ?? null)) SELECTED @endif>
|
||||
{{ $ensemble->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</x-form.select>
|
||||
|
||||
<x-form.select name="section" onchange="this.form.submit()" colspan="2">
|
||||
<x-slot:label>Ensemble / Instrument</x-slot:label>
|
||||
<option value="">All</option>
|
||||
|
|
@ -39,6 +28,16 @@
|
|||
@endforeach
|
||||
</x-form.select>
|
||||
|
||||
<x-form.select name="split" onchange="this.form.submit()" colspan="2">
|
||||
<x-slot:label>Split</x-slot:label>
|
||||
<option value="">All</option>
|
||||
@foreach ($splits as $value => $name)
|
||||
<option value="{{$value}}"
|
||||
@if($value == ($filterData['split'] ?? null)) SELECTED @endif>
|
||||
{{$name}}</option>
|
||||
@endforeach
|
||||
</x-form.select>
|
||||
|
||||
|
||||
</x-form.body-grid>
|
||||
</x-form.form>
|
||||
|
|
|
|||
Loading…
Reference in New Issue