예제 #1
0
        public virtual async Task <bool> IsInventorySufficientAsync(Product product, ProductSku productSku, int quantity)
        {
            var model = new InventoryQueryModel(product.TenantId, product.StoreId, product.Id, productSku.Id);

            var inventoryData =
                await(await _productInventoryProviderResolver.GetAsync(product)).GetInventoryDataAsync(model);

            return(product.InventoryStrategy == InventoryStrategy.NoNeed || inventoryData.Inventory - quantity >= 0);
        }
예제 #2
0
        protected virtual async Task <ProductDto> LoadDtoInventoryDataAsync(Product product, ProductDto productDto)
        {
            var models = product.ProductSkus.Select(x =>
                                                    new InventoryQueryModel(product.TenantId, product.StoreId, product.Id, x.Id)).ToList();

            var inventoryProvider = await _productInventoryProviderResolver.GetAsync(product);

            var inventoryDataDict = await inventoryProvider.GetSkuIdInventoryDataMappingAsync(models);

            productDto.Sold = 0;

            foreach (var productSkuDto in productDto.ProductSkus)
            {
                var inventoryData = inventoryDataDict[productSkuDto.Id];

                productSkuDto.Inventory = inventoryData.Inventory;
                productSkuDto.Sold      = inventoryData.Sold;
                productDto.Sold        += productSkuDto.Sold;
            }

            return(productDto);
        }