public IHttpActionResult UpdateQty(AddBasketItemModel model)
        {
            var basket = this.CustomerContext.CurrentCustomer.Basket();
            var exists = basket.Items.FirstOrDefault(item => item.Key == model.Key);

            if (exists != null)
            {
                if (model.Quantity.HasValue && model.Quantity > 0)
                {
                    basket.UpdateQuantity(exists.Key, model.Quantity.Value);
                }
                else
                {
                    basket.RemoveItem(model.Key);
                }

                basket.Save();
            }

            return(this.GetBasket());
        }
        public IHttpActionResult AddToBasket(AddBasketItemModel model)
        {
            var product = this.Helper.Query.Product.GetByKey(model.Key);
            var qty     = !model.Quantity.HasValue || model.Quantity <= 0 ? 1 : model.Quantity.Value;
            var basket  = this.CustomerContext.CurrentCustomer.Basket();

            if (product != null)
            {
                var exists = basket.Items.FirstOrDefault(item => item.ExtendedData["merchProductKey"] == model.Key.ToString());
                if (exists == null)
                {
                    basket.AddItem(product, qty);
                }
                else
                {
                    basket.UpdateQuantity(exists.Key, exists.Quantity + qty);
                }
            }
            else
            {
                var variant = this.Helper.Query.Product.GetProductVariantByKey(model.Key);
                if (variant == null)
                {
                    return(NotFound());
                }

                var exists = basket.Items.FirstOrDefault(item => item.ExtendedData["merchProductVariantKey"] == model.Key.ToString());
                if (exists == null)
                {
                    basket.AddItem(variant, qty);
                }
                else
                {
                    basket.UpdateQuantity(exists.Key, exists.Quantity + qty);
                }
            }

            basket.Save();
            return(this.GetBasket());
        }