41 lines
1.1 KiB
PHP
41 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Actions\Tabulation;
|
|
|
|
use App\Models\Audition;
|
|
use App\Models\Ensemble;
|
|
use App\Models\Seat;
|
|
use function dd;
|
|
|
|
class GetAuditionSeats
|
|
{
|
|
public function __construct()
|
|
{
|
|
}
|
|
|
|
public function __invoke(Audition $audition): array
|
|
{
|
|
return $this->getSeats($audition);
|
|
}
|
|
|
|
protected function getSeats(Audition $audition)
|
|
{
|
|
$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;
|
|
}
|
|
}
|