From 4a21fb39ce84014f47c2dcfdfc844691e50eb246 Mon Sep 17 00:00:00 2001 From: Matt Young Date: Thu, 27 Jun 2024 14:08:58 -0500 Subject: [PATCH] Now able to edit subscores on scoring guides --- .../Admin/ScoringGuideController.php | 46 +++++++++++++++++++ app/Observers/ScoringGuideObserver.php | 10 ++-- .../views/admin/scoring/edit-detail.blade.php | 23 ++++------ .../edit-modify-subscore-modal.blade.php | 32 +++++++++++++ resources/views/admin/scoring/edit.blade.php | 3 +- ...on-scoring-guide-assignment-card.blade.php | 27 ++++++++++- routes/admin.php | 2 + 7 files changed, 121 insertions(+), 22 deletions(-) create mode 100644 resources/views/admin/scoring/edit-modify-subscore-modal.blade.php diff --git a/app/Http/Controllers/Admin/ScoringGuideController.php b/app/Http/Controllers/Admin/ScoringGuideController.php index 279be7d..f3d985e 100644 --- a/app/Http/Controllers/Admin/ScoringGuideController.php +++ b/app/Http/Controllers/Admin/ScoringGuideController.php @@ -76,6 +76,21 @@ class ScoringGuideController extends Controller return redirect('/admin/scoring/guides/'.$guide->id.'/edit')->with('success', 'Scoring guide updated'); } + public function destroy(ScoringGuide $guide) + { + if (! Auth::user()->is_admin) { + abort(403); + } + + if ($guide->auditions()->count() > 0) { + return redirect('/admin/scoring')->with('error', 'Cannot delete scoring guide with auditions'); + } + + $guide->delete(); + + return redirect('/admin/scoring')->with('success', 'Scoring guide deleted'); + } + public function subscore_store(Request $request, ScoringGuide $guide) { if (! Auth::user()->is_admin) { @@ -112,6 +127,37 @@ class ScoringGuideController extends Controller return redirect('/admin/scoring/guides/'.$guide->id.'/edit')->with('success', 'Subscore added'); } + public function subscore_update(ScoringGuide $guide, SubscoreDefinition $subscore) + { + if (! Auth::user()->is_admin) { + abort(403); + } + if (! $guide->exists() || ! $subscore->exists()) { + abort(409); + } + $validateData = request()->validate([ + 'name' => ['required'], + 'max_score' => ['required', 'integer'], + 'weight' => ['required', 'integer'], + 'for_seating' => ['nullable', 'boolean'], + 'for_advance' => ['nullable', 'boolean'], + ]); + + $for_seating = request()->has('for_seating') ? (bool) request()->input('for_seating') : false; + $for_advance = request()->has('for_advance') ? (bool) request()->input('for_advance') : false; + + $subscore->update([ + 'name' => $validateData['name'], + 'max_score' => $validateData['max_score'], + 'weight' => $validateData['weight'], + 'for_seating' => $for_seating, + 'for_advance' => $for_advance, + ]); + + return redirect('/admin/scoring/guides/'.$guide->id.'/edit')->with('success', 'Subscore updated'); + } + + public function reorder_display(Request $request) { if (! Auth::user()->is_admin) { diff --git a/app/Observers/ScoringGuideObserver.php b/app/Observers/ScoringGuideObserver.php index bd5a203..00a1dc7 100644 --- a/app/Observers/ScoringGuideObserver.php +++ b/app/Observers/ScoringGuideObserver.php @@ -11,7 +11,7 @@ class ScoringGuideObserver /** * Handle the ScoringGuide "created" event. */ - public function created(ScoringGuideObserver $scoringGuide): void + public function created(ScoringGuide $scoringGuide): void { ScoringGuideChange::dispatch(); } @@ -19,7 +19,7 @@ class ScoringGuideObserver /** * Handle the ScoringGuide "updated" event. */ - public function updated(ScoringGuideObserver $scoringGuide): void + public function updated(ScoringGuide $scoringGuide): void { AuditionChange::dispatch(); ScoringGuideChange::dispatch(); @@ -28,7 +28,7 @@ class ScoringGuideObserver /** * Handle the ScoringGuide "deleted" event. */ - public function deleted(ScoringGuideObserver $scoringGuide): void + public function deleted(ScoringGuide $scoringGuide): void { AuditionChange::dispatch(); ScoringGuideChange::dispatch(); @@ -37,7 +37,7 @@ class ScoringGuideObserver /** * Handle the ScoringGuide "restored" event. */ - public function restored(ScoringGuideObserver $scoringGuide): void + public function restored(ScoringGuide $scoringGuide): void { AuditionChange::dispatch(); ScoringGuideChange::dispatch(); @@ -46,7 +46,7 @@ class ScoringGuideObserver /** * Handle the ScoringGuide "force deleted" event. */ - public function forceDeleted(ScoringGuideObserver $scoringGuide): void + public function forceDeleted(ScoringGuide $scoringGuide): void { AuditionChange::dispatch(); ScoringGuideChange::dispatch(); diff --git a/resources/views/admin/scoring/edit-detail.blade.php b/resources/views/admin/scoring/edit-detail.blade.php index 0c5b100..7473215 100644 --- a/resources/views/admin/scoring/edit-detail.blade.php +++ b/resources/views/admin/scoring/edit-detail.blade.php @@ -8,8 +8,8 @@ Name Max Score Weight - For Seating @if(Settings::advanceTo()) + For Seating For {{ Settings::advanceTo() }} @endif @@ -17,36 +17,31 @@ @foreach ($subscores as $subscore) - + + {{ $subscore->name }} {{ $subscore->max_score }} {{ $subscore->weight }} - {{ $subscore->for_seating ? 'Yes' : 'No' }} @if(Settings::advanceTo()) + {{ $subscore->for_seating ? 'Yes' : 'No' }} {{ $subscore->for_advance ? 'Yes' : 'No' }} @endif - {{-- This came from AI, consider--}} - {{-- --}} - {{-- Save--}} - {{-- Delete--}} - {{-- Rename--}} - {{-- --}} -   +

[ edit ]

+ @include('admin.scoring.edit-modify-subscore-modal')
- {{-- WHERE DID THIS EVEN COME FROM???--}} - {{-- --}} @endforeach
- Add Subscore + Add Subscore - + @if(Settings::advanceTo()) + @endif Save diff --git a/resources/views/admin/scoring/edit-modify-subscore-modal.blade.php b/resources/views/admin/scoring/edit-modify-subscore-modal.blade.php new file mode 100644 index 0000000..18e8a11 --- /dev/null +++ b/resources/views/admin/scoring/edit-modify-subscore-modal.blade.php @@ -0,0 +1,32 @@ + + Edit Subscore + + + Name + Max Score + Weight + @if(auditionSetting('advanceTo')) + For Seating + For {{ auditionSetting('advanceTo') }} + @endif + + + + + + + + + @if(auditionSetting('advanceTo')) + + + + + + + @endif + Save + + + + diff --git a/resources/views/admin/scoring/edit.blade.php b/resources/views/admin/scoring/edit.blade.php index ebfc000..5d287cf 100644 --- a/resources/views/admin/scoring/edit.blade.php +++ b/resources/views/admin/scoring/edit.blade.php @@ -6,7 +6,6 @@ Click here to rename Scoring Guide: {{ $guide->name }} - @include('admin.scoring.edit-tabs')
@@ -31,7 +30,7 @@ Rename - +
diff --git a/resources/views/admin/scoring/index-audition-scoring-guide-assignment-card.blade.php b/resources/views/admin/scoring/index-audition-scoring-guide-assignment-card.blade.php index 6d092f0..69dab01 100644 --- a/resources/views/admin/scoring/index-audition-scoring-guide-assignment-card.blade.php +++ b/resources/views/admin/scoring/index-audition-scoring-guide-assignment-card.blade.php @@ -1,7 +1,32 @@
+ {{-- Unassigned auditions first --}} + @php($guide = $guides->find(0)) + + {{ $guide->name }} + +
+ @foreach($guide->auditions as $audition) +
{{ $audition->name }}
+ @endforeach +
+
+ + @foreach($guides as $guide) + @continue($guide->id === 0) - {{ $guide->name }} + + {{ $guide->name }} + @if($guide->auditions()->count() === 0) + + + + + + @endif +
@foreach($guide->auditions as $audition) diff --git a/routes/admin.php b/routes/admin.php index 4d6291f..22ea536 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -52,8 +52,10 @@ Route::middleware(['auth', 'verified', CheckIfAdmin::class])->prefix('admin/')-> Route::get('/guides/{guide}/edit', 'edit')->name('admin.scoring.edit'); // Edit scoring guide Route::patch('/guides/{guide}/edit', 'update')->name('admin.scoring.update'); // Save changes to audition guide (rename) Route::post('/guides/{guide}/subscore', 'subscore_store')->name('admin.scoring.subscore_store'); // Save a new subscore + Route::patch('/guides/{guide}/subscore/{subscore}', 'subscore_update')->name('admin.scoring.subscore_update'); // Save a new subscore Route::post('/reorder-display', 'reorder_display')->name('admin.scoring.reorder_display'); Route::post('/reorder-tiebreak', 'reorder_tiebreak')->name('admin.scoring.reorder_tiebreak'); + Route::delete('/guides/{guide}', 'destroy')->name('admin.scoring.destroy'); // Delete a scoring guide }); // Admin Auditions Routes