user(); if (! $admin instanceof AdminUser) { return ApiResponse::error( trans('admin.unauthenticated', [], $request->lotteryLocale()), ErrorCode::AdminUnauthenticated->value, null, 401, ); } try { $started = $this->startService->start($draw); } catch (\RuntimeException $e) { return ApiMessage::runtimeErrorResponse($request, $e); } $ran = $this->orchestrator->trySettleDraw($started['draw']); $draw->refresh(); if (! $ran) { return ApiResponse::error( trans('admin.settlement_run_skipped', [], $request->lotteryLocale()), ErrorCode::ClientHttpError->value, [ 'draw_no' => $draw->draw_no, 'status' => $draw->status, 'settle_version' => (int) $draw->settle_version, 'cooldown_skipped' => $started['cooldown_skipped'], 'cooling_end_time' => $draw->cooling_end_time?->toIso8601String(), ], 409, ); } return ApiResponse::success([ 'ran' => true, 'draw_no' => $draw->draw_no, 'status' => $draw->status, 'settle_version' => (int) $draw->settle_version, 'cooldown_skipped' => $started['cooldown_skipped'], 'cooling_end_time' => $draw->cooling_end_time?->toIso8601String(), ]); } }