diff --git a/app/Http/Controllers/Admin/ScoringGuideController.php b/app/Http/Controllers/Admin/ScoringGuideController.php index f3d985e..deb991f 100644 --- a/app/Http/Controllers/Admin/ScoringGuideController.php +++ b/app/Http/Controllers/Admin/ScoringGuideController.php @@ -135,6 +135,9 @@ class ScoringGuideController extends Controller if (! $guide->exists() || ! $subscore->exists()) { abort(409); } + if ($subscore->scoring_guide_id !== $guide->id) { // Make sure the subscore were updating belongs to the guide + abort(409); + } $validateData = request()->validate([ 'name' => ['required'], 'max_score' => ['required', 'integer'], @@ -157,6 +160,24 @@ class ScoringGuideController extends Controller return redirect('/admin/scoring/guides/'.$guide->id.'/edit')->with('success', 'Subscore updated'); } + public function subscore_destroy(ScoringGuide $guide, SubscoreDefinition $subscore) + { + if (! Auth::user()->is_admin) { + abort(403); + } + if (! $guide->exists() || ! $subscore->exists()) { + abort(409); + } + if ($subscore->scoring_guide_id !== $guide->id) { // Make sure the subscore were updating belongs to the guide + abort(409); + } + + $subscore->delete(); + + return redirect('/admin/scoring/guides/'.$guide->id.'/edit')->with('success', 'Subscore deleted'); + + } + public function reorder_display(Request $request) { diff --git a/resources/views/admin/scoring/edit-modify-subscore-modal.blade.php b/resources/views/admin/scoring/edit-modify-subscore-modal.blade.php index 18e8a11..d1b2283 100644 --- a/resources/views/admin/scoring/edit-modify-subscore-modal.blade.php +++ b/resources/views/admin/scoring/edit-modify-subscore-modal.blade.php @@ -1,4 +1,4 @@ - + Edit Subscore @@ -29,4 +29,11 @@ +
+
+ @csrf + @method('DELETE') + + +
diff --git a/routes/admin.php b/routes/admin.php index 22ea536..06a84f6 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -52,7 +52,8 @@ 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::patch('/guides/{guide}/subscore/{subscore}', 'subscore_update')->name('admin.scoring.subscore_update'); // Modify a subscore + Route::delete('/guides/{guide}/subscore/{subscore}', 'subscore_destroy')->name('admin.scoring.subscore_destroy'); // Delete a 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