public CartItem Update(Guid contactId, CartItem cartItem) { using (CartLocker.Lock(contactId)) { var cart = GetCart(contactId); if (cart == null || cartItem == null) { return(null); } var updatedItem = cart.GetAllLineItems().FirstOrDefault(item => item.Code == cartItem.Sku); if (updatedItem != null) { var shipment = cart.GetFirstShipment(); cart.UpdateLineItemQuantity(shipment, updatedItem, cartItem.Qty); } else { updatedItem = cart.CreateLineItem(cartItem.Sku); updatedItem.Quantity = cartItem.Qty; UpdateCartLine(updatedItem); cart.AddLineItem(updatedItem); } ValidateCart(cart); _orderRepository.Save(cart); return(CreateCartItem(updatedItem, contactId.ToString())); } }
public string CreateCart(Guid contactId) { using (CartLocker.Lock(contactId)) { var cart = _orderRepository.LoadOrCreateCart <ICart>(contactId, DefaultCartName); _orderRepository.Save(cart); return(cart.CustomerId.ToString()); } }
public IEnumerable <CartItem> Pull(Guid contactId) { using (CartLocker.Lock(contactId)) { var cart = GetCart(contactId); var cartItems = cart?.GetAllLineItems(); if (cartItems == null) { return(new List <CartItem>()); } return(cartItems.Select(item => CreateCartItem(item, contactId.ToString()))); } }
public bool Delete(Guid contactId, CartItem cartItem) { using (CartLocker.Lock(contactId)) { var cart = GetCart(contactId); var itemToDelete = cart.GetAllLineItems().FirstOrDefault(item => item.LineItemId == cartItem.ItemId); if (itemToDelete != null) { var shipment = cart.GetFirstShipment(); var result = shipment.LineItems.Remove(itemToDelete); shipment.LineItems.Remove(itemToDelete); _orderRepository.Save(cart); return(result); } return(false); } }