whereKey($draw->id)->lockForUpdate()->firstOrFail(); if ($locked->status !== DrawStatus::Closed->value || (int) $locked->settle_version > 0) { throw new \RuntimeException('draw_not_runnable'); } if (! (bool) $locked->is_reopened && $locked->resultBatches()->exists()) { throw new \RuntimeException('draw_not_runnable'); } return $this->rng->executeLocked($locked); }); } catch (\RuntimeException) { return ApiResponse::error(trans('api.client_error'), ErrorCode::ClientHttpError->value, null, 409); } $draw->refresh(); return ApiResponse::success([ 'draw_no' => $draw->draw_no, 'status' => $draw->status, 'batch' => [ 'id' => (int) $batch->id, 'result_version' => (int) $batch->result_version, 'source_type' => $batch->source_type, 'status' => $batch->status, 'items_count' => $batch->items()->count(), ], ]); } }