From 43647583e73474a08bf55edc48148c7b1c20201d Mon Sep 17 00:00:00 2001 From: Matt Young Date: Tue, 4 Jun 2024 02:12:10 -0500 Subject: [PATCH] Sorting working on scoring guides --- .../Admin/ScoringGuideController.php | 45 ++++++++-- .../views/admin/scoring/edit-detail.blade.php | 56 ++++++++++++ .../scoring/edit-display-order.blade.php | 45 ++++++++++ .../views/admin/scoring/edit-tabs.blade.php | 25 ++++++ .../scoring/edit-tiebreak-order.blade.php | 45 ++++++++++ resources/views/admin/scoring/edit.blade.php | 85 +++++-------------- routes/web.php | 2 + 7 files changed, 230 insertions(+), 73 deletions(-) create mode 100644 resources/views/admin/scoring/edit-detail.blade.php create mode 100644 resources/views/admin/scoring/edit-display-order.blade.php create mode 100644 resources/views/admin/scoring/edit-tabs.blade.php create mode 100644 resources/views/admin/scoring/edit-tiebreak-order.blade.php diff --git a/app/Http/Controllers/Admin/ScoringGuideController.php b/app/Http/Controllers/Admin/ScoringGuideController.php index b60d24c..fee3fa4 100644 --- a/app/Http/Controllers/Admin/ScoringGuideController.php +++ b/app/Http/Controllers/Admin/ScoringGuideController.php @@ -10,6 +10,7 @@ use Illuminate\Support\Facades\Auth; use function abort; use function dd; use function request; +use function response; use function sendMessage; class ScoringGuideController extends Controller @@ -36,11 +37,16 @@ class ScoringGuideController extends Controller return redirect('/admin/scoring'); } - public function edit(ScoringGuide $guide) + public function edit(Request $request, ScoringGuide $guide) { if (! Auth::user()->is_admin) abort(403); - $subscores = SubscoreDefinition::where('scoring_guide_id',$guide->id)->orderBy('display_order')->get(); - return view('admin.scoring.edit',['guide'=>$guide,'subscores'=>$subscores]); + $tab = $request->query('tab') ?? 'detail'; + if ($tab == 'tiebreakOrder') { + $subscores = SubscoreDefinition::where('scoring_guide_id', $guide->id)->orderBy('tiebreak_order')->get(); + } else { + $subscores = SubscoreDefinition::where('scoring_guide_id', $guide->id)->orderBy('display_order')->get(); + } + return view('admin.scoring.edit',['guide'=>$guide,'subscores'=>$subscores, 'tab'=>$tab]); } public function update(ScoringGuide $guide) @@ -64,8 +70,6 @@ class ScoringGuideController extends Controller 'name' => ['required'], 'max_score' => ['required','integer'], 'weight'=>['required','integer'], - 'display_order'=>['required','integer'], - 'tiebreak_order'=>['required','integer'], 'for_seating'=>['nullable','boolean'], 'for_advance'=>['nullable','boolean'], ]); @@ -73,17 +77,44 @@ class ScoringGuideController extends Controller $for_seating = $request->has('for_seating') ? (bool) $request->input('for_seating') : false; $for_advance = $request->has('for_advance') ? (bool) $request->input('for_advance') : false; + $display_order = SubscoreDefinition::where('scoring_guide_id','=',$guide->id)->max('display_order') + 1; + $tiebreak_order = SubscoreDefinition::where('scoring_guide_id','=',$guide->id)->max('tiebreak_order') + 1; + $subscore = SubscoreDefinition::create([ 'scoring_guide_id' => $guide->id, 'name' => $validateData['name'], 'max_score' => $validateData['max_score'], 'weight' => $validateData['weight'], - 'display_order' => $validateData['display_order'], - 'tiebreak_order' => $validateData['tiebreak_order'], + 'display_order' => $display_order, + 'tiebreak_order' => $tiebreak_order, 'for_seating' => $for_seating, 'for_advance' => $for_advance, ]); return redirect('/admin/scoring/guides/' . $guide->id . '/edit' )->with('success','Subscore added'); } + + public function reorder_display(Request $request) + { + if(! Auth::user()->is_admin) abort(403); + $order = $request->order; + foreach ($order as $index => $id) { + $subscore = SubscoreDefinition::find($id); + $subscore->update(['display_order' => $index]); + } + return response()->json(['status'=>'success']); + + } + + public function reorder_tiebreak(Request $request) + { + if(! Auth::user()->is_admin) abort(403); + $order = $request->order; + foreach ($order as $index => $id) { + $subscore = SubscoreDefinition::find($id); + $subscore->update(['tiebreak_order' => $index]); + } + return response()->json(['status'=>'success']); + + } } diff --git a/resources/views/admin/scoring/edit-detail.blade.php b/resources/views/admin/scoring/edit-detail.blade.php new file mode 100644 index 0000000..01a1f4b --- /dev/null +++ b/resources/views/admin/scoring/edit-detail.blade.php @@ -0,0 +1,56 @@ +@php use App\Settings; @endphp + + + Subscore Details + + + + Name + Max Score + Weight + For Seating + @if(Settings::advanceTo()) + For {{ Settings::advanceTo() }} + @endif + + + + + @foreach ($subscores as $subscore) + + {{ $subscore->name }} + {{ $subscore->max_score }} + {{ $subscore->weight }} + {{ $subscore->for_seating ? 'Yes' : 'No' }} + @if(Settings::advanceTo()) + {{ $subscore->for_advance ? 'Yes' : 'No' }} + @endif + + {{-- This came from AI, consider--}} + {{-- --}} + {{-- Save--}} + {{-- Delete--}} + {{-- Rename--}} + {{-- --}} +   + + + {{-- WHERE DID THIS EVEN COME FROM???--}} + {{-- --}} + @endforeach + + + Add Subscore + + + + + + @if(Settings::advanceTo()) + + @endif + Save + + + + diff --git a/resources/views/admin/scoring/edit-display-order.blade.php b/resources/views/admin/scoring/edit-display-order.blade.php new file mode 100644 index 0000000..5ca9a21 --- /dev/null +++ b/resources/views/admin/scoring/edit-display-order.blade.php @@ -0,0 +1,45 @@ +@php use App\Settings; @endphp + + + Subscore Display Order +
+ + @foreach ($subscores as $subscore) + + {{ $subscore->name }} + + @endforeach + +
+
+ + diff --git a/resources/views/admin/scoring/edit-tabs.blade.php b/resources/views/admin/scoring/edit-tabs.blade.php new file mode 100644 index 0000000..498ad19 --- /dev/null +++ b/resources/views/admin/scoring/edit-tabs.blade.php @@ -0,0 +1,25 @@ +@php + $normal_classes = 'border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 w-1/4 border-b-2 py-4 px-1 text-center text-sm font-medium'; + $active_classes = 'border-indigo-500 text-indigo-600 w-1/4 border-b-2 py-4 px-1 text-center text-sm font-medium'; +@endphp +
+
+ + + +
+ +
diff --git a/resources/views/admin/scoring/edit-tiebreak-order.blade.php b/resources/views/admin/scoring/edit-tiebreak-order.blade.php new file mode 100644 index 0000000..f7d7351 --- /dev/null +++ b/resources/views/admin/scoring/edit-tiebreak-order.blade.php @@ -0,0 +1,45 @@ +@php use App\Settings; @endphp + + + Subscore Display Order +
+ + @foreach ($subscores as $subscore) + + {{ $subscore->name }} + + @endforeach + +
+
+ + diff --git a/resources/views/admin/scoring/edit.blade.php b/resources/views/admin/scoring/edit.blade.php index 1a32f61..ebfc000 100644 --- a/resources/views/admin/scoring/edit.blade.php +++ b/resources/views/admin/scoring/edit.blade.php @@ -1,86 +1,39 @@ @php use App\Settings; @endphp Scoring Rules - -{{-- MAIN CARD--}} - + {{-- MAIN CARD--}} + Click here to rename Scoring Guide: {{ $guide->name }} - -
- - Subscores - - - Name - Max Score - Weight - Display Order - Tiebreak Order - For Seating - @if(Settings::advanceTo()) - For {{ Settings::advanceTo() }} - @endif - - - - - @foreach ($subscores as $subscore) - - {{ $subscore->name }} - {{ $subscore->max_score }} - {{ $subscore->weight }} - {{ $subscore->display_order }} - {{ $subscore->tiebreak_order }} - {{ $subscore->for_seating ? 'Yes' : 'No' }} - @if(Settings::advanceTo()) - {{ $subscore->for_advance ? 'Yes' : 'No' }} - @endif - -{{-- This came from AI, consider--}} -{{-- --}} -{{-- Save--}} -{{-- Delete--}} -{{-- Rename--}} -{{-- --}} -   - - - - @endforeach - - - Add Subscore - - - - - - - - @if(Settings::advanceTo()) - - @endif - Save - - - - + + @include('admin.scoring.edit-tabs') +
+ @switch($tab) + @case('detail') + @include('admin.scoring.edit-detail') + @break + @case('displayOrder') + @include('admin.scoring.edit-display-order') + @break + @case('tiebreakOrder') + @include('admin.scoring.edit-tiebreak-order') + @break + + @endswitch
-{{-- RENAME CARD--}} + {{-- RENAME CARD--}} Rename - +
- @php(dump($guide))
diff --git a/routes/web.php b/routes/web.php index 084ba7a..80bc1a8 100644 --- a/routes/web.php +++ b/routes/web.php @@ -26,6 +26,8 @@ Route::middleware(['auth','verified',CheckIfAdmin::class])->prefix('admin/')->gr Route::get('/guides/{guide}/edit','edit'); // Edit scoring guide Route::patch('/guides/{guide}/edit','update'); // Save changes to audition guide (rename) Route::post('/guides/{guide}/subscore','subscore_store'); // Save a new subscore + Route::post('/reorder-display','reorder_display'); + Route::post('/reorder-tiebreak','reorder_tiebreak'); });