protected virtual async Task UpdateProductDataAsync(int quantity, BasketItem item, ProductDto productDto) { item.SetIsInvalid(false); var productSkuDto = productDto.FindSkuById(item.ProductSkuId); if (productSkuDto == null) { item.SetIsInvalid(true); return; } if (productDto.InventoryStrategy != InventoryStrategy.NoNeed && quantity > productSkuDto.Inventory) { item.SetIsInvalid(true); } item.UpdateProductData(quantity, new ProductDataModel { MediaResources = productSkuDto.MediaResources ?? productDto.MediaResources, ProductUniqueName = productDto.UniqueName, ProductDisplayName = productDto.DisplayName, SkuName = productSkuDto.Name, SkuDescription = await _productSkuDescriptionProvider.GenerateAsync(productDto, productSkuDto), Currency = productSkuDto.Currency, UnitPrice = productSkuDto.DiscountedPrice, TotalPrice = productSkuDto.DiscountedPrice * item.Quantity, TotalDiscount = (productSkuDto.Price - productSkuDto.DiscountedPrice) * item.Quantity, Inventory = productSkuDto.Inventory }); if (!productDto.IsPublished) { item.SetIsInvalid(true); } }