From c660e3b4f43ffd75a5d189e3910df22128cb7fcf Mon Sep 17 00:00:00 2001 From: Matt Young Date: Mon, 4 Nov 2024 07:13:52 -0600 Subject: [PATCH] Initial work on recaps --- .../Controllers/Admin/RecapController.php | 60 +++++++++++++++++++ resources/views/admin/recap/recap.blade.php | 50 ++++++++++++++++ .../admin/recap/selectAudition.blade.php | 13 ++++ routes/admin.php | 3 + 4 files changed, 126 insertions(+) create mode 100644 app/Http/Controllers/Admin/RecapController.php create mode 100644 resources/views/admin/recap/recap.blade.php create mode 100644 resources/views/admin/recap/selectAudition.blade.php diff --git a/app/Http/Controllers/Admin/RecapController.php b/app/Http/Controllers/Admin/RecapController.php new file mode 100644 index 0000000..716bfb7 --- /dev/null +++ b/app/Http/Controllers/Admin/RecapController.php @@ -0,0 +1,60 @@ +get(); + + return view('admin.recap.selectAudition', compact('auditions')); + } + + public function showRecap(Audition $audition) + { + $ranker = App::make(RankAuditionEntries::class); + $subscores = $audition->scoringGuide->subscores()->orderBy('tiebreak_order')->get(); + $judges = $audition->judges; + $entries = $ranker->rank('seating', $audition); + + $recapRows = []; + $rowOn = 1; + foreach ($entries as $entry) { + $recapRows[$rowOn]['rank'] = $entry->raw_rank; + $recapRows[$rowOn]['name'] = $entry->student->full_name(true); + $recapRows[$rowOn]['school'] = $entry->student->school->name; + $recapRows[$rowOn]['entryId'] = $entry->id; + foreach ($entry->scoreSheets as $sheet) { + foreach ($sheet->subscores as $subscore) { + $recapRows[$rowOn]['subscores']['judge'.$sheet->user_id][$subscore['subscore_name']] = $subscore['score']; + } + } + $recapRows[$rowOn]['total_score'] = $entry['score_totals'][0]; + $rowOn++; + } + //dd($recapRows); + + // Calculate ordinals for each score + $subscoreOrdinals = []; + $ssOn = 1; + foreach ($subscores as $subscore) { + $sortedEntries = $entries->sortByDesc(function ($entry) use ($ssOn) { + return $entry['score_totals'][$ssOn]; + }); + $thisOrdinal = 1; + foreach ($sortedEntries as $entry) { + $subscoreOrdinals['entry'.$entry->id][$ssOn] = $thisOrdinal; + $thisOrdinal++; + } + $ssOn++; + } + + return view('admin.recap.recap', compact('audition', 'subscores', 'judges', 'entries', 'recapRows', 'subscoreOrdinals')); + } +} diff --git a/resources/views/admin/recap/recap.blade.php b/resources/views/admin/recap/recap.blade.php new file mode 100644 index 0000000..7bfcbce --- /dev/null +++ b/resources/views/admin/recap/recap.blade.php @@ -0,0 +1,50 @@ + + {{$audition->name}} Recap + + + + + + # + Name + @foreach($subscores as $subscore) + {{ $subscore->name }} + @endforeach + Total + + + @foreach($subscores as $subscore) + @foreach($judges as $judge) + {{ $judge->last_name }} + @endforeach + Tot + @endforeach + + + + @foreach($recapRows as $row) + + {{$row['rank']}} + {{$row['name']}}
{{$row['school']}}
+ @php ($ssTotal = 0) + @php ($ssOn = 1) + @foreach($subscores as $subscore) + @foreach($judges as $judge) + + {{ $row['subscores']['judge'.$judge->id][$subscore->name] }} + + @php ($ssTotal += $row['subscores']['judge'.$judge->id][$subscore->name]) + @endforeach + + {{ $ssTotal }}
+ ( {{ $subscoreOrdinals['entry'.$row['entryId']][$ssOn] }} ) +
+ @php($ssOn++) + @endforeach + {{$row['total_score']}} + + @endforeach +
+
+
+
diff --git a/resources/views/admin/recap/selectAudition.blade.php b/resources/views/admin/recap/selectAudition.blade.php new file mode 100644 index 0000000..698bfb6 --- /dev/null +++ b/resources/views/admin/recap/selectAudition.blade.php @@ -0,0 +1,13 @@ + + Recap - Select Audition + + Select Audition + + @foreach($auditions as $audition) + + {{$audition->name}} + + @endforeach + + + diff --git a/routes/admin.php b/routes/admin.php index a5a40f1..59a3477 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -14,6 +14,7 @@ use App\Http\Controllers\Admin\PrintCards; use App\Http\Controllers\Admin\PrintRoomAssignmentsController; use App\Http\Controllers\Admin\PrintSignInSheetsController; use App\Http\Controllers\Admin\PrintStandNameTagsController; +use App\Http\Controllers\Admin\RecapController; use App\Http\Controllers\Admin\RoomController; use App\Http\Controllers\Admin\SchoolController; use App\Http\Controllers\Admin\ScoringGuideController; @@ -27,6 +28,8 @@ Route::middleware(['auth', 'verified', CheckIfAdmin::class])->prefix('admin/')-> Route::get('/logs', App\Http\Controllers\Admin\LogViewer::class)->name('admin.view_logs'); Route::get('/export_results', ExportResultsController::class)->name('admin.export_results'); Route::get('/print_stand_name_tags', PrintStandNameTagsController::class)->name('admin.print_stand_name_tags'); + Route::get('/recap', [RecapController::class, 'selectAudition'])->name('admin.recap.selectAudition'); + Route::get('/recap/{audition}', [RecapController::class, 'showRecap'])->name('admin.recap.recap'); Route::post('/auditions/roomUpdate', [ AuditionController::class, 'roomUpdate',