コード例 #1
0
        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()));
            }
        }
コード例 #2
0
 public string CreateCart(Guid contactId)
 {
     using (CartLocker.Lock(contactId))
     {
         var cart = _orderRepository.LoadOrCreateCart <ICart>(contactId, DefaultCartName);
         _orderRepository.Save(cart);
         return(cart.CustomerId.ToString());
     }
 }
コード例 #3
0
        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())));
            }
        }
コード例 #4
0
 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);
     }
 }