lotteryAdmin(); abort_if($admin === null, 401); if ($denied = AdminSiteScope::denyUnlessPlayerAccessible($admin, $player)) { return $denied; } $wallets = PlayerWallet::query() ->where('player_id', $player->id) ->orderBy('wallet_type') ->orderBy('currency_code') ->get(); $rows = $wallets->map(static function (PlayerWallet $w): array { $bal = (int) $w->balance; $frozen = (int) $w->frozen_balance; return [ 'id' => $w->id, 'wallet_type' => $w->wallet_type, 'currency_code' => $w->currency_code, 'balance' => $bal, 'frozen_balance' => $frozen, 'available_balance' => max(0, $bal - $frozen), 'status' => (int) $w->status, 'version' => (int) $w->version, ]; })->values()->all(); return ApiResponse::success([ 'player' => [ 'id' => $player->id, 'site_code' => $player->site_code, 'site_player_id' => $player->site_player_id, 'username' => $player->username, 'nickname' => $player->nickname, 'default_currency' => $player->default_currency, 'status' => (int) $player->status, ], 'wallets' => $rows, ]); } }