@php $statusValue = $request->status?->value ?? (string) $request->status; $isPending = $statusValue === \App\Enums\VirtualCard\VirtualCardRequestStatus::Pending->value; $cardholder = $request->cardholder; $holderCountry = $cardholder?->card_type?->isBusiness() && $cardholder?->business?->country ? $cardholder->business->country : ($cardholder?->country ?? null); $walletCurrency = $request->wallet?->currency?->code; $requestNetwork = strtolower((string) ($request->network?->value ?? $request->network ?? '')); $compatibleProviders = $providers->filter(function ($provider) use ($holderCountry, $walletCurrency, $requestNetwork) { $networks = is_array($provider->supported_networks) ? array_map('strtolower', $provider->supported_networks) : []; $currencies = is_array($provider->supported_currencies) ? array_map('strtoupper', $provider->supported_currencies) : []; $networkOk = $requestNetwork === '' || empty($networks) || in_array($requestNetwork, $networks, true); $currencyOk = ! $walletCurrency || empty($currencies) || in_array(strtoupper($walletCurrency), $currencies, true); return $provider->status && $provider->supports('issue') && $networkOk && $currencyOk && $provider->supportsCountry($holderCountry); }); @endphp