auditionadmin/app/Actions/Tabulation/GetAuditionSeats.php

46 lines
1.3 KiB
PHP

<?php
namespace App\Actions\Tabulation;
use App\Exceptions\AuditionAdminException;
use App\Models\Audition;
use App\Models\Ensemble;
use App\Models\Seat;
/**
* @codeCoverageIgnore
*/
// TODO delete if truly depricated
class GetAuditionSeats
{
public function __construct()
{
}
public function __invoke(Audition $audition): array
{
return $this->getSeats($audition);
}
protected function getSeats(Audition $audition)
{
throw new AuditionAdminException('This method is being considered for deletion.');
$ensembles = Ensemble::where('event_id', $audition->event_id)->orderBy('rank')->get();
$seats = Seat::with('student.school')->where('audition_id', $audition->id)->orderBy('seat')->get();
$return = [];
foreach ($ensembles as $ensemble) {
$ensembleSeats = $seats->filter(fn ($seat) => $seat->ensemble_id === $ensemble->id);
foreach ($ensembleSeats as $seat) {
$return[] = [
'ensemble' => $ensemble->name,
'seat' => $seat->seat,
'student_name' => $seat->student->full_name(),
'school_name' => $seat->student->school->name,
];
}
}
return $return;
}
}