public async Task <bool> CashInViaBankCardEnabledAsync(string clientId, bool isIosDevice) { var cache = await _cacheManager.TryGetCashInViaBankCardEnabledForClientAsync(clientId, isIosDevice); if (cache != null) { return(cache.Value); } var assetGroups = (await _assetGroupClientLinkRepository.GetAllAsync(clientId)).ToArray(); var cashInViaBankCardsEnableForDeviceInAnyGroup = assetGroups.Any(x => x.ClientsCanCashInViaBankCards && x.IsIosDevice == isIosDevice); var clientDeviceNotAssignedToAnyGroup = assetGroups.All(x => x.IsIosDevice != isIosDevice); var conditions = await _assetConditionService.GetAssetConditionsLayerSettingsByClient(clientId); var conditionLayerCashInViaBankCardEnabled = conditions.ClientsCanCashInViaBankCards ?? true; var result = conditionLayerCashInViaBankCardEnabled && (cashInViaBankCardsEnableForDeviceInAnyGroup || clientDeviceNotAssignedToAnyGroup); await _cacheManager.SaveCashInViaBankCardEnabledForClientAsync(clientId, isIosDevice, result); return(result); }