Esempio n. 1
0
        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);
            }
        }