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',