public async Task <IActionResult> GetAvailableMethods() { var assets = (await _assetsHelper.GetAssetsAvailableToClientAsync(_requestContext.ClientId, _requestContext.PartnerId)).ToList(); var cryptos = new WithdrawalMethod { Name = "Cryptos", Assets = assets .Where(x => x.BlockchainWithdrawal) .Select(x => x.Id) .ToList() }; var swift = new WithdrawalMethod { Name = "Swift", Assets = assets .Where(x => x.SwiftWithdrawal) .Select(x => x.Id) .ToList() }; var model = new WithdrawalMethodsResponse { WithdrawalMethods = new List <WithdrawalMethod> { cryptos, swift } }; return(Ok(model)); }
public async Task <IActionResult> GetAvailableMethods() { var model = new WithdrawalMethodsResponse(); try { var assetsTask = _assetsHelper.GetAssetsAvailableToClientAsync(_requestContext.ClientId, _requestContext.PartnerId); var pdTask = _personalDataService.GetAsync(_requestContext.ClientId); await Task.WhenAll(assetsTask, pdTask); var assets = assetsTask.Result.ToList(); var pd = pdTask.Result; var cryptos = new WithdrawalMethod { Name = "Cryptos", Assets = assets .Where(x => x.BlockchainWithdrawal) .Select(x => x.Id) .ToList() }; var swift = new WithdrawalMethod { Name = "Swift", Assets = assets .Where(x => x.SwiftWithdrawal && (!_blockedWithdawalSettings.AssetByCountry.ContainsKey(x.Id) || !_blockedWithdawalSettings.AssetByCountry[x.Id] .Contains(pd.CountryFromPOA, StringComparer.InvariantCultureIgnoreCase))) .Select(x => x.Id) .ToList() }; model.WithdrawalMethods = new List <WithdrawalMethod> { cryptos, swift }; } catch (Exception ex) { _log.Error(ex, "Error getting available methods", context: $"clientId: {_requestContext.ClientId}, partnerId: {_requestContext.PartnerId}"); model.WithdrawalMethods = new List <WithdrawalMethod> { new WithdrawalMethod { Name = "Cryptos", Assets = Array.Empty <string>() }, new WithdrawalMethod { Name = "Swift", Assets = Array.Empty <string>() } }; } return(Ok(model)); }