Beispiel #1
0
        public CartChangeData ChangeCartItem(ICart cart, int shipmentId, string code,
                                             decimal quantity, string size, string newSize, string displayName)
        {
            CartChangeData cartChange = null;

            if (quantity > 0)
            {
                if (size == newSize)
                {
                    // Custom cart change type: quantityChanged.
                    cartChange = new CartChangeData("quantityChanged", code);
                    cartChange.SetChange("oldQuantity", cart.GetAllLineItems().FirstOrDefault(x => x.Code == code).Quantity);

                    ChangeQuantity(cart, shipmentId, code, quantity);

                    return(cartChange);
                }

                // Custom cart change type: variantChanged.
                cartChange = new CartChangeData("variantChanged", code);
                cartChange.SetChange("oldSize", size);
                cartChange.SetChange("oldCode", code);
                cartChange.SetChange("oldPrice", cart.GetAllLineItems().FirstOrDefault(x => x.Code == code).PlacedPrice);

                var newCode = _productService.GetSiblingVariantCodeBySize(code, newSize);
                UpdateLineItemSku(cart, shipmentId, code, newCode, quantity, displayName);

                return(cartChange);
            }

            RemoveLineItem(cart, shipmentId, code);
            cartChange = new CartChangeData(CartChangeType.ItemRemoved, code);
            return(cartChange);
        }
Beispiel #2
0
        public async Task <ActionResult> AddToCart(string code)
        {
            ModelState.Clear();

            if (Cart == null)
            {
                _cart = _cartService.LoadOrCreateCart(_cartService.DefaultCartName);
            }

            var result = _cartService.AddToCart(Cart, code, 1);

            if (result.EntriesAddedToCart)
            {
                _orderRepository.Save(Cart);
                var change = new CartChangeData(CartChangeType.ItemAdded, code);
                await _recommendationService.TrackCartAsync(HttpContext, new List <CartChangeData> {
                    change
                });

                return(MiniCartDetails());
            }

            return(new HttpStatusCodeResult(500, result.GetComposedValidationMessage()));
        }