Filters working on admin entries page
This commit is contained in:
parent
91f47717d3
commit
d5fd164049
|
|
@ -15,8 +15,50 @@ class EntryController extends Controller
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
if(! Auth::user()->is_admin) abort(403);
|
if(! Auth::user()->is_admin) abort(403);
|
||||||
$entries = Entry::with(['student.school','audition'])->orderBy('updated_at','DESC')->paginate(10);
|
$filters = session('adminEntryFilters');
|
||||||
return view('admin.entries.index', ['entries' => $entries] );
|
$minGrade = Audition::min('minimum_grade');
|
||||||
|
$maxGrade = Audition::max('maximum_grade');
|
||||||
|
$auditions = Audition::orderBy('score_order')->get();
|
||||||
|
$schools = School::orderBy('name')->get();
|
||||||
|
|
||||||
|
|
||||||
|
$entries = Entry::with(['student.school','audition']);
|
||||||
|
$entries->orderBy('updated_at','DESC');
|
||||||
|
if($filters) {
|
||||||
|
if($filters['audition']) {
|
||||||
|
$entries->where('audition_id', $filters['audition']);
|
||||||
|
}
|
||||||
|
if($filters['school']) {
|
||||||
|
$entries->whereHas('student', function($query) use ($filters) {
|
||||||
|
$query->where('school_id', '=', $filters['school']);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if($filters['grade']) {
|
||||||
|
$entries->whereHas('student', function($query) use ($filters) {
|
||||||
|
$query->where('grade', $filters['grade']);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if($filters['first_name']) {
|
||||||
|
$entries->whereHas('student', function($query) use ($filters) {
|
||||||
|
$query->where('first_name', 'like', '%' . $filters['first_name'] . '%');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if($filters['last_name']) {
|
||||||
|
$entries->whereHas('student', function($query) use ($filters) {
|
||||||
|
$query->where('last_name', 'like', '%' . $filters['last_name'] . '%');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$entries = $entries->paginate(10);
|
||||||
|
return view('admin.entries.index', ['entries' => $entries,
|
||||||
|
'auditions' => $auditions,
|
||||||
|
'schools'=> $schools,
|
||||||
|
'minGrade' => $minGrade,
|
||||||
|
'maxGrade' => $maxGrade,
|
||||||
|
'filters' => $filters] );
|
||||||
}
|
}
|
||||||
|
|
||||||
public function create()
|
public function create()
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class FilterController extends Controller
|
||||||
|
{
|
||||||
|
public function adminEntryFilter(Request $request)
|
||||||
|
{
|
||||||
|
$filters = array();
|
||||||
|
$filters['audition'] = request('audition_filter') ? request('audition_filter') : null;
|
||||||
|
$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(['admin_entry_filter', $filters]);
|
||||||
|
session(['adminEntryFilters' => $filters]);
|
||||||
|
return redirect('/admin/entries');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function clearAdminEntryFilter(Request $request)
|
||||||
|
{
|
||||||
|
session()->forget('adminEntryFilters');
|
||||||
|
return redirect('/admin/entries');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,52 @@
|
||||||
<x-layout.app>
|
<x-layout.app>
|
||||||
<x-slot:page_title>Entry Administration</x-slot:page_title>
|
<x-slot:page_title>Entry Administration</x-slot:page_title>
|
||||||
|
|
||||||
|
{{-- Filter Control--}}
|
||||||
<x-card.card>
|
<x-card.card>
|
||||||
|
<x-card.heading>Set Filters</x-card.heading>
|
||||||
|
<x-form.form action="/filters/admin_entry_filter" method="POST">
|
||||||
|
<x-form.body-grid columns="12">
|
||||||
|
<x-form.select name="audition_filter" colspan="5">
|
||||||
|
<x-slot:label>Audition</x-slot:label>
|
||||||
|
<option value="">No Audition Filter</option>
|
||||||
|
@foreach($auditions as $audition)
|
||||||
|
<option value="{{ $audition->id }}" {{ ($filters['audition'] ?? null) == $audition->id ? 'SELECTED':'' }}>
|
||||||
|
{{ $audition->name }}
|
||||||
|
</option>
|
||||||
|
@endforeach
|
||||||
|
</x-form.select>
|
||||||
|
<x-form.select name="school_filter" colspan="5">
|
||||||
|
<x-slot:label>School</x-slot:label>
|
||||||
|
<option value="">No School Filter</option>
|
||||||
|
@foreach($schools as $school)
|
||||||
|
<option value="{{ $school->id }}" {{ ($filters['school'] ?? null) == $school->id ? 'SELECTED':'' }}>
|
||||||
|
{{ $school->name }}
|
||||||
|
</option>
|
||||||
|
@endforeach
|
||||||
|
</x-form.select>
|
||||||
|
<x-form.select name="grade_filter" colspan="2">
|
||||||
|
<x-slot:label>Grade</x-slot:label>
|
||||||
|
<option value="">No Grade Filter</option>
|
||||||
|
@php($n = $minGrade)
|
||||||
|
@while($n <= $maxGrade)
|
||||||
|
<option value="{{ $n }}" {{ ($filters['grade'] ?? null) == $n ? 'SELECTED':'' }}>
|
||||||
|
{{ $n }}
|
||||||
|
</option>
|
||||||
|
@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.body-grid>
|
||||||
|
<x-form.footer>
|
||||||
|
<x-form.button-nocolor href="filters/admin_entry_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>
|
||||||
|
|
||||||
|
{{-- Results Table--}}
|
||||||
|
<x-card.card class="mt-4">
|
||||||
<x-table.table with_title_area>
|
<x-table.table with_title_area>
|
||||||
<x-slot:title class="ml-3">Entries</x-slot:title>
|
<x-slot:title class="ml-3">Entries</x-slot:title>
|
||||||
<x-slot:subtitle class="ml-3">Click id to edit</x-slot:subtitle>
|
<x-slot:subtitle class="ml-3">Click id to edit</x-slot:subtitle>
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
'11' => 'sm:grid-cols-11',
|
'11' => 'sm:grid-cols-11',
|
||||||
'12' => 'sm:grid-cols-12'
|
'12' => 'sm:grid-cols-12'
|
||||||
];
|
];
|
||||||
$classes = "grid max-w-2xl grid-cols-1 gap-x-6 gap-y-3 ";
|
$classes = "grid grid-cols-1 gap-x-6 gap-y-3 ";
|
||||||
$classes .= $columnClasses["$columns"]
|
$classes .= $columnClasses["$columns"]
|
||||||
@endphp
|
@endphp
|
||||||
<div {{ $attributes->merge(['class' => $classes]) }}>
|
<div {{ $attributes->merge(['class' => $classes]) }}>
|
||||||
|
|
|
||||||
|
|
@ -5,5 +5,7 @@
|
||||||
{{ Audition::max('maximum_grade') }} is the oldest grade used. <br>
|
{{ Audition::max('maximum_grade') }} is the oldest grade used. <br>
|
||||||
{{ Audition::min('minimum_grade') }} is the youngest grade.
|
{{ Audition::min('minimum_grade') }} is the youngest grade.
|
||||||
|
|
||||||
|
@php( session(['testFnameFilter' => 'Matt']))
|
||||||
|
|
||||||
|
|
||||||
</x-layout.app>
|
</x-layout.app>
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
use App\Http\Controllers\DashboardController;
|
use App\Http\Controllers\DashboardController;
|
||||||
use App\Http\Controllers\EntryController;
|
use App\Http\Controllers\EntryController;
|
||||||
|
use App\Http\Controllers\FilterController;
|
||||||
use App\Http\Controllers\SchoolController;
|
use App\Http\Controllers\SchoolController;
|
||||||
use App\Http\Controllers\StudentController;
|
use App\Http\Controllers\StudentController;
|
||||||
use App\Http\Controllers\TestController;
|
use App\Http\Controllers\TestController;
|
||||||
|
|
@ -103,6 +104,12 @@ Route::middleware(['auth','verified'])->controller(SchoolController::class)->gro
|
||||||
Route::patch('/schools/{school}','update');
|
Route::patch('/schools/{school}','update');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Filter Related Routes
|
||||||
|
Route::prefix('filters')->middleware(['auth','verified'])->controller(FilterController::class)->group(function() {
|
||||||
|
Route::post('/admin_entry_filter','adminEntryFilter');
|
||||||
|
Route::get('/admin_entry_filter/clear','clearAdminEntryFilter');
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
//Route::get('/my_school', [SchoolController::class, 'my_school'])->middleware('auth','verified');
|
//Route::get('/my_school', [SchoolController::class, 'my_school'])->middleware('auth','verified');
|
||||||
//Route::get('/schools/create', [SchoolController::class, 'create'])->middleware('auth','verified');
|
//Route::get('/schools/create', [SchoolController::class, 'create'])->middleware('auth','verified');
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue