lotteryPlayer(); abort_if($player === null, 500, 'lottery_player missing'); $currency = $this->resolveCurrencyCode($request, $player); if ($currency instanceof JsonResponse) { return $currency; } try { $data = $this->transferService->transferIn( $player, $currency, (int) $request->validated('amount'), (string) $request->validated('idempotent_key'), ); } catch (WalletOperationException $e) { return ApiResponse::error( LotteryMessage::wallet($request, $e->lotteryCode), $e->lotteryCode, null, $e->httpStatus, ); } return ApiResponse::success($data); } private function resolveCurrencyCode(WalletTransferRequest $request, Player $player): string|JsonResponse { $code = CurrencyResolver::resolve($request, $player, 'currency'); if (! CurrencyResolver::isEnabled($code)) { return ApiResponse::error( __('wallet.invalid_currency'), ErrorCode::WalletInvalidCurrency->value, null, 400, ); } return $code; } }