50 lines
1.7 KiB
PHP
50 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Tabulation;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Audition;
|
|
use Illuminate\Http\Request;
|
|
|
|
class SeatingStatusController extends Controller
|
|
{
|
|
/**
|
|
* Handle the incoming request.
|
|
*/
|
|
public function __invoke(Request $request)
|
|
{
|
|
$auditions = Audition::forSeating()
|
|
->withCount([
|
|
'entries' => function ($query) {
|
|
$query->where('for_seating', 1);
|
|
},
|
|
])
|
|
->withCount([
|
|
'unscoredEntries' => function ($query) {
|
|
$query->where('for_seating', 1);
|
|
},
|
|
])
|
|
->with('flags')
|
|
->get();
|
|
$auditionData = [];
|
|
foreach ($auditions as $audition) {
|
|
$noShowCount = $audition->entries->filter(function ($entry) {
|
|
return $entry->hasFlag('no_show');
|
|
})->count();
|
|
$auditionData[$audition->id] = [
|
|
'id' => $audition->id,
|
|
'name' => $audition->name,
|
|
'scoredEntriesCount' => $audition->entries_count - $audition->unscored_entries_count,
|
|
'totalEntriesCount' => $audition->entries_count,
|
|
'scoredPercentage' => $audition->entries_count > 0 ? ($audition->entries_count - $audition->unscored_entries_count) / $audition->entries_count * 100 : 100,
|
|
'scoringComplete' => $audition->unscored_entries_count === 0,
|
|
'seatsPublished' => $audition->hasFlag('seats_published'),
|
|
'audition' => $audition,
|
|
];
|
|
}
|
|
$auditionData = collect($auditionData);
|
|
|
|
return view('tabulation.status', compact('auditionData'));
|
|
}
|
|
}
|