From e112e3be8989f16784108921f7083cf238d4d8bd Mon Sep 17 00:00:00 2001 From: Matt Young Date: Wed, 12 Feb 2025 14:53:59 -0600 Subject: [PATCH] Check deadlines on nominations for SCOBDA rules --- ...cobdaNominationEnsembleEntryController.php | 38 ++++++++++++- .../scobda/entries/index.blade.php | 57 +++++++++++-------- 2 files changed, 69 insertions(+), 26 deletions(-) diff --git a/app/Http/Controllers/NominationEnsembles/ScobdaNominationEnsembleEntryController.php b/app/Http/Controllers/NominationEnsembles/ScobdaNominationEnsembleEntryController.php index 83aaf40..95fa5b0 100644 --- a/app/Http/Controllers/NominationEnsembles/ScobdaNominationEnsembleEntryController.php +++ b/app/Http/Controllers/NominationEnsembles/ScobdaNominationEnsembleEntryController.php @@ -7,11 +7,16 @@ use App\Models\NominationEnsemble; use App\Models\NominationEnsembleEntry; use App\Models\School; use App\Models\Student; +use Illuminate\Support\Carbon; class ScobdaNominationEnsembleEntryController extends Controller implements NominationEnsembleEntryController { public function index() { + // Get current date for checking deadlines + $currentDate = Carbon::now('America/Chicago'); + $currentDate = $currentDate->format('Y-m-d'); + $ensembles = NominationEnsemble::all(); // populate an array with each ensemble id as a key. Each item will be a collection of students available to be nominated $availableStudents = []; @@ -51,7 +56,7 @@ class ScobdaNominationEnsembleEntryController extends Controller implements Nomi return view('nomination_ensembles.scobda.entries.index', compact('ensembles', 'availableStudents', 'availableInstruments', 'nominatedStudents', - 'nominationsAvailable')); + 'nominationsAvailable', 'currentDate')); } public function show(NominationEnsembleEntry $entry) @@ -87,6 +92,13 @@ class ScobdaNominationEnsembleEntryController extends Controller implements Nomi $proposedEnsemble = NominationEnsemble::find($validData['ensemble']); + $currentDate = Carbon::now('America/Chicago'); + $currentDate = $currentDate->format('Y-m-d'); + if ($proposedEnsemble->entry_deadline < $currentDate) { + return redirect()->route('nomination.entry.index')->with('error', + 'The nomination deadline for that ensemble has passed'); + } + if (! in_array($validData['new_instrument'], $proposedEnsemble->data['instruments'])) { return redirect()->route('nomination.entry.index')->with('error', 'Invalid Instrument specified'); @@ -132,6 +144,14 @@ class ScobdaNominationEnsembleEntryController extends Controller implements Nomi return redirect()->route('nomination.entry.index')->with('error', 'You may only delete nominations from your school'); } + + $currentDate = Carbon::now('America/Chicago'); + $currentDate = $currentDate->format('Y-m-d'); + if ($entry->ensemble->entry_deadline < $currentDate) { + return redirect()->route('nomination.entry.index')->with('error', + 'You cannot delete nominations after the deadline'); + } + $entry->delete(); return redirect()->route('nomination.entry.index')->with('success', 'Nomination Deleted'); @@ -167,13 +187,27 @@ class ScobdaNominationEnsembleEntryController extends Controller implements Nomi public function move() { - // TODO: Verify the student being moved is from the users school $validData = request()->validate([ 'direction' => 'required|in:up,down', 'nominationId' => 'required|exists:App\Models\NominationEnsembleEntry,id', ]); $direction = $validData['direction']; $nomination = NominationEnsembleEntry::findOrFail($validData['nominationId']); + + // Verify the entry deadline for the ensemble has not passed + $currentDate = Carbon::now('America/Chicago'); + $currentDate = $currentDate->format('Y-m-d'); + if ($nomination->ensemble->entry_deadline < $currentDate) { + return redirect()->route('nomination.entry.index')->with('error', + 'The entry deadline for that nomination ensemble has passed'); + } + + // Verify the student being moved is from the users school + if (auth()->user()->school_id !== $nomination->student_id) { + return redirect()->route('nomination.entry.index')->with('error', + 'You cannot modify nominations of another school'); + } + $data = $nomination->data; if ($validData['direction'] == 'up') { $data['rank'] = $nomination->data['rank'] - 1.5; diff --git a/resources/views/nomination_ensembles/scobda/entries/index.blade.php b/resources/views/nomination_ensembles/scobda/entries/index.blade.php index ad9020b..e99734e 100644 --- a/resources/views/nomination_ensembles/scobda/entries/index.blade.php +++ b/resources/views/nomination_ensembles/scobda/entries/index.blade.php @@ -1,4 +1,5 @@ @php($n=1) + Nomination Entries @@ -7,7 +8,8 @@ @foreach($ensembles as $ensemble) {{ $ensemble->name }} - {{ $ensemble->data['max_nominations'] }} nominations accepted + {{ $ensemble->data['max_nominations'] }} nominations accepted + @@ -17,38 +19,45 @@ -{{-- List existing nominations--}} + {{-- List existing nominations--}} @foreach($nominatedStudents[$ensemble->id] as $nomination) {{ $nomination->data['rank'] }} {{ $nomination->student->full_name() }} {{ $nomination->data['instrument'] }} - - - Confirm you wish to delete the nomination of {{ $nomination->student->full_name() }}
- for the {{ $ensemble->name }} ensemble. -
-
- @csrf - - - -
-
- @csrf - - - -
-
+ @if($currentDate <= $ensemble->entry_deadline) + + + Confirm you wish to delete the nomination + of {{ $nomination->student->full_name() }}
+ for the {{ $ensemble->name }} ensemble. +
+
+ @csrf + + + +
+
+ @csrf + + + +
+
+ @endif @endforeach {{-- LINE TO ADD A NOMINATION--}} - @if($nominationsAvailable[$ensemble->id] && $availableStudents[$ensemble->id]->count() > 0) + @if($currentDate <= $ensemble->entry_deadline && $nominationsAvailable[$ensemble->id] && $availableStudents[$ensemble->id]->count() > 0)