public JsonResult UpdateCart(CartViewModel.ProductCart model) { IList <CartViewModel.ProductCart> productCarts = new List <CartViewModel.ProductCart>(); #region cart CookieHelper cookieHelper = new CookieHelper("Cart"); if (cookieHelper.GetCookie() != null) { string json = HttpUtility.UrlDecode(cookieHelper.GetCookie().Values["Cart"]); productCarts = JsonConvert.DeserializeObject <List <CartViewModel.ProductCart> >(json); } foreach (var p in productCarts) { if (p.Barcode.Equals(model.Barcode)) { p.Quantity = model.Quantity == 0 ? 1 : model.Quantity; break; } } string jsonString = JsonConvert.SerializeObject(productCarts); cookieHelper.SetCartCookie(jsonString); #endregion return(Json(new { }, JsonRequestBehavior.AllowGet)); }
public JsonResult AddToCart(CartViewModel.ProductCart model) { IList <CartViewModel.ProductCart> productCarts = new List <CartViewModel.ProductCart>(); #region cart CookieHelper cookieHelper = new CookieHelper("Cart"); if (cookieHelper.GetCookie() != null) { string json = HttpUtility.UrlDecode(cookieHelper.GetCookie().Values["Cart"]); productCarts = JsonConvert.DeserializeObject <List <CartViewModel.ProductCart> >(json); } //neu trung id va ma vach thi cong thêm số lượng, ngược lại thì mới add cookie bool exist = productCarts.Any(o => o.ProductId == model.ProductId && o.Barcode.Equals(model.Barcode)); if (exist) { foreach (var p in productCarts) { if (p.ProductId == model.ProductId && p.Barcode.Equals(model.Barcode)) { p.Quantity += model.Quantity; break; } } } else { productCarts.Add(model); } string jsonString = JsonConvert.SerializeObject(productCarts); cookieHelper.SetCartCookie(jsonString); #endregion int gia = 0; IList <ProductFrontPageMapping.ProductShowCart> productShowCarts = _menuRepository.GetProductShowCartByBarcode(productCarts.Select(o => o.Barcode).ToList()); IList <PromotionMapping.PromotionCheckProduct> promotions = _promotionRepository.GetActives(); IList <CartViewModel.CartItem> cartItems = new List <CartViewModel.CartItem>(); if (productCarts.Any()) { foreach (var o in productCarts) { var item = productShowCarts.FirstOrDefault(p => p.Barcode.Equals(o.Barcode)); #region ghép combo < 80K if (item.Price < 80000 && o.Quantity >= 2) { //nếu số lượng > 2 và giá < 80000 bắt đầu tính giá combo int giatru = (item.Price * 10) / 100; gia = item.Price - giatru; } else { gia = item.Price; } #endregion var cartItem = new CartViewModel.CartItem() { ProductId = o.ProductId, Name = item.NameProduct, Image = item.Img, Price = item.Price, PricePromotion = gia, Barcode = o.Barcode, Quantity = o.Quantity <= 0 ? 1 : o.Quantity, AttributeImg = item.AttributeImg, AttributeName = item.AttributeName, AttributeFlag = item.AttributeFlag, Link = item.Link }; #region check promotion if (promotions.Any()) { foreach (var pr in promotions) { var promotionDetail = pr.PromotionDetails.FirstOrDefault(dt => dt.ProductId == cartItem.ProductId); if (promotionDetail != null) { cartItem.HasPromotion = true; cartItem.PricePromotion = (int)promotionDetail.PriceDiscount; cartItem.Discount = (short)promotionDetail.Percent; break; } } } #endregion cartItems.Add(cartItem); } } CartViewModel.CartModel cartModel = new CartViewModel.CartModel() { CartItems = cartItems, Total = cartItems.Sum(o => o.Quantity * o.PricePromotion) }; string html = RenderPartialViewToString("ViewRender", cartModel); return(Json(new { html = html, countCart = cartModel.CartItems.Count() }, JsonRequestBehavior.AllowGet)); }