61 lines
2.1 KiB
PHP
61 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Actions\Tabulation\RankAuditionEntries;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Audition;
|
|
use Illuminate\Support\Facades\App;
|
|
|
|
class RecapController extends Controller
|
|
{
|
|
public function selectAudition()
|
|
{
|
|
$auditions = Audition::orderBy('score_order')->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'));
|
|
}
|
|
}
|