Nomination admin page working for MEOBDA rules.
This commit is contained in:
parent
60abd7de0f
commit
16e72ff06c
|
|
@ -0,0 +1,94 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\NominationEnsembles;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\NominationEnsemble;
|
||||||
|
use App\Models\NominationEnsembleEntry;
|
||||||
|
use App\Models\School;
|
||||||
|
|
||||||
|
class MeobdaNominationAdminController extends Controller implements NominationAdminController
|
||||||
|
{
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
if (request('newFilterParameters')) {
|
||||||
|
$newFilterData = request()->validate([
|
||||||
|
'school' => 'nullable|exists:schools,id',
|
||||||
|
'ensemble' => 'nullable|exists:nomination_ensembles,id',
|
||||||
|
'section' => 'nullable|string',
|
||||||
|
'newFilterParameters' => 'string',
|
||||||
|
]);
|
||||||
|
session()->put('nominationAdminFilters', $newFilterData);
|
||||||
|
$filterData = $newFilterData;
|
||||||
|
} elseif (session()->has('nominationAdminFilters')) {
|
||||||
|
$filterData = session()->get('nominationAdminFilters');
|
||||||
|
} else {
|
||||||
|
$filterData = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
dump($filterData);
|
||||||
|
|
||||||
|
// Populate variables to complete the filter form
|
||||||
|
$schools = School::orderBy('name')->get();
|
||||||
|
$ensembles = NominationEnsemble::all();
|
||||||
|
|
||||||
|
$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]);
|
||||||
|
if ($sectionFilter[1] != 'all') {
|
||||||
|
$nominations = $nominations->where('data->instrument', $sectionFilter[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$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'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return view('nomination_ensembles.meobda.admin.nominations',
|
||||||
|
compact('nominations', 'schools', 'filterData', 'ensembles', 'sections'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function show(NominationEnsembleEntry $entry)
|
||||||
|
{
|
||||||
|
// TODO: Implement show() method.
|
||||||
|
}
|
||||||
|
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
// TODO: Implement create() method.
|
||||||
|
}
|
||||||
|
|
||||||
|
public function store()
|
||||||
|
{
|
||||||
|
// TODO: Implement store() method.
|
||||||
|
}
|
||||||
|
|
||||||
|
public function edit(NominationEnsembleEntry $entry)
|
||||||
|
{
|
||||||
|
// TODO: Implement edit() method.
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update(NominationEnsembleEntry $entry)
|
||||||
|
{
|
||||||
|
// TODO: Implement update() method.
|
||||||
|
}
|
||||||
|
|
||||||
|
public function destroy(NominationEnsembleEntry $entry)
|
||||||
|
{
|
||||||
|
// TODO: Implement destroy() method.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace App\Providers;
|
namespace App\Providers;
|
||||||
|
|
||||||
|
use App\Http\Controllers\NominationEnsembles\MeobdaNominationAdminController;
|
||||||
use App\Http\Controllers\NominationEnsembles\MeobdaNominationEnsembleController;
|
use App\Http\Controllers\NominationEnsembles\MeobdaNominationEnsembleController;
|
||||||
use App\Http\Controllers\NominationEnsembles\MeobdaNominationEnsembleEntryController;
|
use App\Http\Controllers\NominationEnsembles\MeobdaNominationEnsembleEntryController;
|
||||||
use App\Http\Controllers\NominationEnsembles\NominationAdminController;
|
use App\Http\Controllers\NominationEnsembles\NominationAdminController;
|
||||||
|
|
@ -20,10 +21,10 @@ class NominationEnsembleServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
public function register(): void
|
public function register(): void
|
||||||
{
|
{
|
||||||
$this->app->bind(NominationEnsembleController::class, ScobdaNominationEnsembleController::class);
|
// $this->app->bind(NominationEnsembleController::class, ScobdaNominationEnsembleController::class);
|
||||||
$this->app->bind(NominationEnsembleEntryController::class, ScobdaNominationEnsembleEntryController::class);
|
// $this->app->bind(NominationEnsembleEntryController::class, ScobdaNominationEnsembleEntryController::class);
|
||||||
$this->app->bind(NominationAdminController::class, ScobdaNominationAdminController::class);
|
// $this->app->bind(NominationAdminController::class, ScobdaNominationAdminController::class);
|
||||||
$this->app->bind(NominationSeatingController::class, ScobdaNominationSeatingController::class);
|
// $this->app->bind(NominationSeatingController::class, ScobdaNominationSeatingController::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function boot(): void
|
public function boot(): void
|
||||||
|
|
@ -40,6 +41,7 @@ class NominationEnsembleServiceProvider extends ServiceProvider
|
||||||
// meobda implementation
|
// meobda implementation
|
||||||
$this->app->bind(NominationEnsembleController::class, MeobdaNominationEnsembleController::class);
|
$this->app->bind(NominationEnsembleController::class, MeobdaNominationEnsembleController::class);
|
||||||
$this->app->bind(NominationEnsembleEntryController::class, MeobdaNominationEnsembleEntryController::class);
|
$this->app->bind(NominationEnsembleEntryController::class, MeobdaNominationEnsembleEntryController::class);
|
||||||
|
$this->app->bind(NominationAdminController::class, MeobdaNominationAdminController::class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,12 +17,13 @@ class StudentFactory extends Factory
|
||||||
*/
|
*/
|
||||||
public function definition(): array
|
public function definition(): array
|
||||||
{
|
{
|
||||||
$school = School::factory()->create();
|
|
||||||
return [
|
return [
|
||||||
'school_id' => $school->id,
|
'school_id' => function () {
|
||||||
|
return School::factory()->create()->id;
|
||||||
|
},
|
||||||
'first_name' => fake()->firstName(),
|
'first_name' => fake()->firstName(),
|
||||||
'last_name' => fake()->lastName(),
|
'last_name' => fake()->lastName(),
|
||||||
'grade' => rand(7,12),
|
'grade' => rand(7, 12),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,74 @@
|
||||||
|
<x-layout.app>
|
||||||
|
|
||||||
|
<x-slot:page_title>Nomination Administration</x-slot:page_title>
|
||||||
|
<x-card.card class="mb-3">
|
||||||
|
<x-card.heading>Filters</x-card.heading>
|
||||||
|
<x-form.form method="GET" action="{{route('nomination.admin.index')}}">
|
||||||
|
<input type="hidden" name="newFilterParameters" value="true">
|
||||||
|
<x-form.body-grid class="my-2">
|
||||||
|
<x-form.select name="school" onchange="this.form.submit()">
|
||||||
|
|
||||||
|
<x-slot:label>School</x-slot:label>
|
||||||
|
<option value="">All</option>
|
||||||
|
@foreach($schools as $school)
|
||||||
|
<option value="{{ $school->id }}"
|
||||||
|
@if($school->id == ($filterData['school'] ?? null)) SELECTED @endif>
|
||||||
|
{{ $school->name }}
|
||||||
|
</option>
|
||||||
|
@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>
|
||||||
|
@foreach ($sections as $value => $name)
|
||||||
|
<option value="{{$value}}"
|
||||||
|
@if($value == ($filterData['section'] ?? null)) SELECTED @endif>
|
||||||
|
{{$name}}</option>
|
||||||
|
@endforeach
|
||||||
|
</x-form.select>
|
||||||
|
|
||||||
|
|
||||||
|
</x-form.body-grid>
|
||||||
|
</x-form.form>
|
||||||
|
</x-card.card>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="px-3">
|
||||||
|
{{ $nominations->onEachSide(3)->links() }}
|
||||||
|
</div>
|
||||||
|
<x-card.card class="mt-3">
|
||||||
|
<x-card.heading>Nominations</x-card.heading>
|
||||||
|
<x-table.table id="nominationTable">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<x-table.th>Name</x-table.th>
|
||||||
|
<x-table.th>School</x-table.th>
|
||||||
|
<x-table.th>Nominated For</x-table.th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<x-table.body>
|
||||||
|
@foreach($nominations as $nomination)
|
||||||
|
<tr>
|
||||||
|
<x-table.td>{{ $nomination->student->full_name('fl') }}</x-table.td>
|
||||||
|
<x-table.td>{{ $nomination->student->school->name }}</x-table.td>
|
||||||
|
<x-table.td>{{ $nomination->ensemble->name }} - {{ $nomination->data['instrument'] }}</x-table.td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</x-table.body>
|
||||||
|
</x-table.table>
|
||||||
|
</x-card.card>
|
||||||
|
|
||||||
|
|
||||||
|
</x-layout.app>
|
||||||
Loading…
Reference in New Issue