|null $ids */ public function __construct( private readonly ?array $ids = null, ) {} public function query(): Builder { $query = Bonus::query()->with('employee'); if ($this->ids !== null) { $query->whereIn('id', $this->ids); } return $query->orderByDesc('bonus_date'); } /** * @return array */ public function headings(): array { return [ 'Employee Number', 'Employee Name', 'Bonus Date', 'Bonus Type', 'Amount', 'Reason', ]; } /** * @param Bonus $bonus * @return array */ public function map($bonus): array { return [ $bonus->employee?->employee_number, $bonus->employee?->full_name, $bonus->bonus_date?->toDateString(), $bonus->bonus_type?->value, $bonus->amount, $bonus->reason, ]; } }