Allow filtering of entries on admin screen by entry type

This commit is contained in:
Matt Young 2024-11-02 07:49:25 -05:00
parent 1613b0e590
commit 0041c62008
3 changed files with 26 additions and 2 deletions

View File

@ -66,6 +66,19 @@ class EntryController extends Controller
$query->where('last_name', 'like', '%'.$filters['last_name'].'%');
});
}
if ($filters['entry_type']) {
// TODO define actions for each possible type filter from index.blade.php of the admin entry
match ($filters['entry_type']) {
'all' => null,
'seats' => $entries->where('for_seating', true),
'advancement' => $entries->where('for_advancement', true),
'seatsOnly' => $entries->where('for_seating', true)->where('for_advancement', false) ,
'advancementOnly' => $entries->where('for_seating', false)->where('for_advancement', true),
default => null,
};
}
}
$entries = $entries->paginate(25);

View File

@ -15,6 +15,7 @@ class FilterController extends Controller
$filters['grade'] = request('grade_filter') ? request('grade_filter') : null;
$filters['first_name'] = request('first_name_filter') ? request('first_name_filter') : null;
$filters['last_name'] = request('last_name_filter') ? request('last_name_filter') : null;
$filters['entry_type'] = request('entry_type_filter') ? request('entry_type_filter') : null;
session(['adminEntryFilters' => $filters]);

View File

@ -36,8 +36,18 @@
@php($n++);
@endwhile
</x-form.select>
<x-form.field name="first_name_filter" colspan="6" label_text="First Name" value="{{ ($filters['first_name'] ?? null) }}"/>
<x-form.field name="last_name_filter" colspan="6" label_text="Last Name" value="{{ ($filters['last_name'] ?? null) }}"/>
<x-form.field name="first_name_filter" colspan="5" label_text="First Name" value="{{ ($filters['first_name'] ?? null) }}"/>
<x-form.field name="last_name_filter" colspan="5" label_text="Last Name" value="{{ ($filters['last_name'] ?? null) }}"/>
@if(auditionSetting('advanceTo'))
<x-form.select name="entry_type_filter" colspan="2">
<x-slot:label>Entry Type</x-slot:label>
<option value="all" {{ ($filters['entry_type'] ?? null) == 'all' ? 'SELECTED':'' }}>All</option>
<option value="seats" {{ ($filters['entry_type'] ?? null) == 'seats' ? 'SELECTED':'' }}>{{ auditionSetting('auditionAbbreviation') }}</option>
<option value="advancement" {{ ($filters['entry_type'] ?? null) == 'advancement' ? 'SELECTED':'' }}>{{ auditionSetting('advanceTo') }}</option>
<option value="seatsOnly" {{ ($filters['entry_type'] ?? null) == 'seatsOnly' ? 'SELECTED':'' }}>ONLY {{ auditionSetting('auditionAbbreviation') }}</option>
<option value="advancementOnly" {{ ($filters['entry_type'] ?? null) == 'advancementOnly' ? 'SELECTED':'' }}>ONLY {{ auditionSetting('advanceTo') }}</option>
</x-form.select>
@endif
</x-form.body-grid>
<x-form.footer class="pb-4">
<x-form.button-nocolor href="{{ route('admin_entry_filter.clear') }}">Clear Filters</x-form.button-nocolor>