//todo: move to private public async Task <IReadOnlyList <string> > ResolveAsync(string merchantId, AssetAvailabilityType type) { IAssetAvailabilityByMerchant personal = await _assetPersonalAvailabilityRepository.GetAsync(merchantId); string allowedAssets; switch (type) { case AssetAvailabilityType.Payment: allowedAssets = personal?.PaymentAssets ?? _assetsAvailabilitySettings.PaymentAssets; break; case AssetAvailabilityType.Settlement: allowedAssets = personal?.SettlementAssets ?? _assetsAvailabilitySettings.SettlementAssets; break; default: throw new Exception("Unexpected asset availability type"); } IEnumerable <string> generalAllowed = (await _assetGeneralAvailabilityRepository.GetAsync(type)).Select(x => x.AssetId); IEnumerable <string> resolved = allowedAssets.Split(AssetsSeparator).Where(x => generalAllowed.Contains(x)); return(resolved.ToList()); }
public static AssetAvailabilityByMerchantEntity Create(IAssetAvailabilityByMerchant src) { return(new AssetAvailabilityByMerchantEntity { PartitionKey = GeneratePartitionKey(src.MerchantId), RowKey = GenerateRowKey(src.MerchantId), MerchantId = src.MerchantId, PaymentAssets = src.PaymentAssets, SettlementAssets = src.SettlementAssets }); }
public async Task <IActionResult> GetAssetsPersonalSettings([FromQuery] string merchantId) { IMerchant merchant = await _merchantService.GetAsync(merchantId); if (merchant == null) { return(NotFound(ErrorResponse.Create("Couldn't find merchant"))); } try { IAssetAvailabilityByMerchant personal = await _assetsAvailabilityService.GetPersonalAsync(merchantId); return(Ok(Mapper.Map <AssetAvailabilityByMerchantResponse>(personal))); } catch (Exception ex) { await _log.WriteErrorAsync(nameof(AssetsController), nameof(GetAssetsPersonalSettings), ex); throw; } }