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); }
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); }