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