46 lines
1.3 KiB
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;
|
|
}
|
|
}
|