コード例 #1
0
        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);
        }