Beispiel #1
0
 public void Process(RestoreCartProductArgs args)
 {
     Assert.ArgumentNotNull(args.ShoppingCart, "ShoppingCart");
     Assert.ArgumentNotNull(args.CartManager, "CartManager");
     Assert.ArgumentNotNull(args.ProductRepository, "ProductRepository");
     Assert.ArgumentNotNull(args.StockManager, "StockManager");
     Assert.ArgumentNotNull(args.Result, "Result");
     Assert.ArgumentNotNullOrEmpty(args.ProductCode, "ProductCode");
     Assert.ArgumentCondition(args.Quantity > 0, "Quantity", "not > 0");
 }
        public void Process(RestoreCartProductArgs args)
        {
            var cart        = args.ShoppingCart;
            var cartProduct = cart.ShoppingCartLines.Where(x => x.Product.Code == args.ProductCode).SingleOrDefault();

            if (cartProduct != null && cartProduct.Quantity >= args.Quantity)
            {
                args.AbortPipeline();
                return;
            }
            args.Result.AttemptedRestore = true;
        }
        public void Process(RestoreCartProductArgs args)
        {
            var cartManager = args.CartManager;
            var cart        = args.ShoppingCart;
            var cartProduct = cart.ShoppingCartLines.Where(x => x.Product.Code == args.ProductCode).SingleOrDefault();

            if (cartProduct != null && cartProduct.Quantity < args.Quantity)
            {
                args.Quantity = args.Quantity - cartProduct.Quantity;
            }
            cartManager.AddProduct(args.ProductCode, args.Quantity);
        }
        public void Process(RestoreCartProductArgs args)
        {
            //TODO: Use a query instead? Ensure product is not hidden?
            var product = args.ProductRepository.Get <ProductBaseData>(args.ProductCode);

            if (product == null)
            {
                args.Result.Success = false;
                args.Result.FailedProducts.Add(args.ProductCode);
                args.AbortPipeline();
            }
        }
        public void Process(RestoreCartProductArgs args)
        {
            var stock = args.StockManager.GetStock(new Sitecore.Ecommerce.DomainModel.Products.ProductStockInfo
            {
                ProductCode = args.ProductCode
            });

            if (stock.Stock == 0)
            {
                args.Result.Success = false;
                args.Result.FailedProducts.Add(args.ProductCode);
                args.AbortPipeline();
            }
            else if (stock.Stock < args.Quantity)
            {
                //reduce stock added to cart, note product as failed, but don't abort
                args.Quantity       = (uint)stock.Stock;
                args.Result.Success = false;
                args.Result.FailedProducts.Add(args.ProductCode);
            }
        }
Beispiel #6
0
 public static void Run(RestoreCartProductArgs args)
 {
     CorePipeline.Run(Pipeline, args);
 }