lotteryAdmin(); abort_if($admin === null, 401); $manage = AdminDrawResponsePolicy::canManageDrawResults($admin); $query = $draw->resultBatches() ->with(['items' => function ($q): void { $q->orderBy('prize_type')->orderBy('prize_index'); }]) ->orderByDesc('result_version'); if (! $manage) { $query->where('status', DrawResultBatchStatus::Published->value); } $batches = $query->get(); return ApiResponse::success([ 'draw_id' => (int) $draw->id, 'draw_no' => $draw->draw_no, 'draw_status' => $draw->status, 'capabilities' => AdminDrawResponsePolicy::capabilities($admin), 'batches' => $batches ->map(fn (DrawResultBatch $b): array => AdminDrawApiPresenter::resultBatch($b, $admin)) ->all(), ]); } }