parent
d76236b47a
commit
cce7abdaf6
|
|
@ -11,6 +11,7 @@ use Illuminate\Support\Facades\Auth;
|
|||
|
||||
use function abort;
|
||||
use function auth;
|
||||
use function compact;
|
||||
use function request;
|
||||
use function to_route;
|
||||
use function view;
|
||||
|
|
@ -22,9 +23,28 @@ class StudentController extends Controller
|
|||
if (! Auth::user()->is_admin) {
|
||||
abort(403);
|
||||
}
|
||||
$students = Student::with(['school'])->withCount('entries')->orderBy('last_name')->orderBy('first_name')->paginate(15);
|
||||
$filters = session('adminStudentFilters') ?? null;
|
||||
$schools = School::orderBy('name')->get();
|
||||
$students = Student::with(['school'])->withCount('entries')->orderBy('last_name')->orderBy('first_name');
|
||||
// Apply filters
|
||||
if ($filters) {
|
||||
if ($filters['first_name']) {
|
||||
$students = $students->where('first_name', 'like', '%'.$filters['first_name'].'%');
|
||||
}
|
||||
if ($filters['last_name']) {
|
||||
$students = $students->where('last_name', 'like', '%'.$filters['last_name'].'%');
|
||||
}
|
||||
if ($filters['school'] && $filters['school'] != 'all') {
|
||||
$students = $students->where('school_id', $filters['school']);
|
||||
}
|
||||
if ($filters['grade'] && $filters['grade'] != 'all') {
|
||||
$students = $students->where('grade', $filters['grade']);
|
||||
}
|
||||
}
|
||||
$students = $students->paginate(15);
|
||||
$grades = Student::distinct()->pluck('grade');
|
||||
|
||||
return view('admin.students.index', ['students' => $students]);
|
||||
return view('admin.students.index', compact('students', 'schools', 'grades'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
|
|
@ -162,4 +182,9 @@ class StudentController extends Controller
|
|||
|
||||
return to_route('admin.students.index')->with('success', 'Student '.$name.' deleted successfully.');
|
||||
}
|
||||
|
||||
public function set_filter()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ class FilterController extends Controller
|
|||
{
|
||||
public function adminEntryFilter(Request $request)
|
||||
{
|
||||
$filters = array();
|
||||
$filters = [];
|
||||
$filters['id'] = request('id_filter') ?? null;
|
||||
$filters['audition'] = request('audition_filter') ? request('audition_filter') : null;
|
||||
$filters['school'] = request('school_filter') ? request('school_filter') : null;
|
||||
|
|
@ -17,12 +17,34 @@ class FilterController extends Controller
|
|||
$filters['last_name'] = request('last_name_filter') ? request('last_name_filter') : null;
|
||||
|
||||
session(['adminEntryFilters' => $filters]);
|
||||
|
||||
return redirect('/admin/entries')->with('success', 'Filters Applied');
|
||||
}
|
||||
|
||||
public function clearAdminEntryFilter(Request $request)
|
||||
{
|
||||
session()->forget('adminEntryFilters');
|
||||
|
||||
return redirect('/admin/entries')->with('success', 'Filters Cleared');
|
||||
}
|
||||
|
||||
public function adminStudentFilter(Request $request)
|
||||
{
|
||||
$filters = [];
|
||||
$filters['school'] = request('school_filter') ? request('school_filter') : null;
|
||||
$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;
|
||||
|
||||
session(['adminStudentFilters' => $filters]);
|
||||
|
||||
return redirect()->back()->with('success', 'Filters Applied');
|
||||
}
|
||||
|
||||
public function clearAdminStudentFilter()
|
||||
{
|
||||
session()->forget('adminStudentFilters');
|
||||
|
||||
return redirect(route('admin.students.index'))->with('success', 'Filters Cleared');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,36 @@
|
|||
<x-layout.app>
|
||||
<x-slot:page_title>Student Administration</x-slot:page_title>
|
||||
|
||||
<x-card.card class="mb-3">
|
||||
<x-card.heading>Filter Students</x-card.heading>
|
||||
<x-form.form method="post" action="{{route('admin.students.filter.set')}}">
|
||||
<x-form.body-grid columns="11">
|
||||
<x-form.field colspan="3" name="first_name_filter" label_text="First Name" value="{{ session('adminStudentFilters')['first_name'] ?? ''}}"/>
|
||||
<x-form.field colspan="3" name="last_name_filter" label_text="Last Name" value="{{session('adminStudentFilters')['last_name'] ?? ''}}"/>
|
||||
<x-form.select name="school_filter" colspan="3">
|
||||
<x-slot:label>School</x-slot:label>
|
||||
<option value="all" @if((session('adminStudentFilters')['school'] ?? null) == "all") selected @endif>All Schools</option>
|
||||
@foreach($schools as $school)
|
||||
<option value="{{$school->id}}" @if((session('adminStudentFilters')['school'] ?? null) == $school->id) selected @endif>{{$school->name}}</option>
|
||||
@endforeach
|
||||
</x-form.select>
|
||||
<x-form.select name="grade_filter" colspan="2">
|
||||
<x-slot:label>Grade</x-slot:label>
|
||||
<option value="all" @if((session('adminStudentFilters')['grade'] ?? null) == "all") selected @endif>All Grades</option>
|
||||
@foreach($grades as $grade)
|
||||
<option value="{{$grade}}" @if((session('adminStudentFilters')['grade'] ?? null) == $grade) selected @endif>{{$grade}}</option>
|
||||
@endforeach
|
||||
</x-form.select>
|
||||
|
||||
</x-form.body-grid>
|
||||
<x-form.footer class="pb-3">
|
||||
<x-form.button-nocolor href="{{ route('admin.students.filter.clear') }}">Clear Filters</x-form.button-nocolor>
|
||||
<x-form.button>Apply Filters</x-form.button>
|
||||
</x-form.footer>
|
||||
|
||||
</x-form.form>
|
||||
</x-card.card>
|
||||
|
||||
<x-card.card>
|
||||
<x-table.table with_title_area>
|
||||
<x-slot:title class="ml-3">Students</x-slot:title>
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@ Route::get('/results', [App\Http\Controllers\ResultsPage::class, '__invoke'])->n
|
|||
Route::prefix('filters')->middleware(['auth', 'verified'])->controller(FilterController::class)->group(function () {
|
||||
Route::post('/admin_entry_filter', 'adminEntryFilter')->name('admin_entry_filter.set');
|
||||
Route::get('/admin_entry_filter/clear', 'clearAdminEntryFilter')->name('admin_entry_filter.clear');
|
||||
Route::post('/admin_student_filter', 'adminStudentFilter')->name('admin.students.filter.set');
|
||||
Route::get('/admin_student_filter/clear', 'clearAdminStudentFilter')->name('admin.students.filter.clear');
|
||||
});
|
||||
|
||||
//Route::get('/my_school', [SchoolController::class, 'my_school'])->middleware('auth','verified');
|
||||
|
|
|
|||
Loading…
Reference in New Issue