Exemplo n.º 1
0
        public AddToCartResult AddToCart(AddToCartItem item)
        {
            ShoppingCart cart      = null;
            Guid         sessionId = Guid.Empty;

            if (item.SessionId.HasValue)
            {
                cart      = dbContext.ShoppingCart.Include(x => x.Items).FirstOrDefault(c => c.SessionId.Equals(item.SessionId.Value));
                sessionId = item.SessionId.Value;
            }
            if (cart == null)
            {
                sessionId = Guid.NewGuid();
                cart      = new ShoppingCart {
                    SessionId = sessionId, CreatedOn = DateTime.Now
                };
                dbContext.ShoppingCart.Add(cart);
                dbContext.SaveChanges();
            }
            var existingProduct = cart.Items.SingleOrDefault(p => p.ProductId.Equals(item.ProductId));

            if (existingProduct == null)
            {
                cart.Items.Add(new CartItem {
                    ProductId = item.ProductId, Quanitity = item.Quantity
                });
            }
            else
            {
                existingProduct.Quanitity += item.Quantity;
            }
            dbContext.SaveChanges();
            return(new AddToCartResult {
                SessionId = cart.SessionId
            });
        }
Exemplo n.º 2
0
        //Nang Sandar: Add to Cart
        public async Task <IActionResult> AddToCart(int itemId, string qty)
        {
            List <AddToCartItem> allItem           = new List <AddToCartItem>();
            AddToCartItem        addToCartItem     = new AddToCartItem();
            List <AddToCartItem> addToCartItemList = new List <AddToCartItem>();
            var count = 0;

            if (HttpContext.Session.GetString("countSession") != null)
            {
                count = Int32.Parse(HttpContext.Session.GetString("countSession")) + 1;
            }


            using (var httpClient = new HttpClient())
            {
                string str = api_url + "ItemList";
                using (var response = await httpClient.GetAsync(str))
                {
                    string apiResponse = await response.Content.ReadAsStringAsync();

                    allItem = JsonConvert.DeserializeObject <List <AddToCartItem> >(apiResponse);
                }
            }
            if (HttpContext.Session.GetString("addedItemSession") == null)
            {
                addToCartItem             = allItem.Where(x => x.ItemID.Equals(itemId)).FirstOrDefault();
                addToCartItem.SelectedQty = Int32.Parse(qty);
                addToCartItemList.Add(addToCartItem);
                count++;
                string addedItemJson = Newtonsoft.Json.JsonConvert.SerializeObject(addToCartItemList);
                HttpContext.Session.SetString("addedItemSession", addedItemJson);
                HttpContext.Session.SetString("countSession", count.ToString());
            }
            else
            {
                addToCartItemList = JsonConvert.DeserializeObject <List <AddToCartItem> >(HttpContext.Session.GetString("addedItemSession"));

                List <AddToCartItem> addToCartUpdatedItemList = new List <AddToCartItem>();

                int index = -1;
                for (int i = 0; i < addToCartItemList.Count; i++)
                {
                    if (addToCartItemList[i].ItemID == itemId)
                    {
                        //here we go - found existing item in the list , so we just replace index variable with it's index number from loop
                        index = i;
                    }
                }
                if (index != -1)
                {
                    addToCartItemList[index].SelectedQty = addToCartItemList[index].SelectedQty + Int32.Parse(qty);
                }
                else //new item clicked
                {
                    addToCartItem             = allItem.Where(x => x.ItemID.Equals(itemId)).FirstOrDefault();
                    addToCartItem.SelectedQty = Int32.Parse(qty);
                    addToCartItemList.Add(addToCartItem);
                }

                string addedItemJson = Newtonsoft.Json.JsonConvert.SerializeObject(addToCartItemList);
                HttpContext.Session.SetString("addedItemSession", addedItemJson);
                HttpContext.Session.SetString("countSession", count.ToString());
            }

            return(RedirectToAction("Index"));
        }