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 }); }
//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")); }