public async Task <IActionResult> AddToCart(string productId, int?quantity) { string cartId = GetCart(_services); var returnMessage = new ReturnMessage(); var product = await _productRepository.All.FirstOrDefaultAsync(d => d.Id == productId); if (product == null) { returnMessage.SetErrorMessage("Không tìm thấy trong danh sách sản phẩm."); return(Json(returnMessage)); } _shoppingCart.AddToCartSession(product, cartId, quantity.GetValueOrDefault()); //var dto = new ProductViewModel(); //PropertyCopy.Copy(product, dto); var session = HttpContext.Session.Get <List <CartProductViewModel> >("AddProducts"); if (session != null) { //Check exist with item product id if (session.Any(x => x.Id == productId)) { foreach (var item in session) { //Update quantity for product if match product id if (item.Id == productId) { //if (quantity != null) item.Quantity += (int)quantity; //item.Price = product.Price.GetValueOrDefault(); //hasChanged = true; if (quantity != null && quantity > 0) { item.Quantity = quantity.GetValueOrDefault(); returnMessage.setMessage("Sản phẩm đã có sẵn trong giỏ, bạn có muốn tăng thêm không?", item.Quantity); } HttpContext.Session.Set("AddProducts", session); return(Json(returnMessage)); } } } else { if (quantity != null) { session.Add(new CartProductViewModel() { Id = product.Id, Product = _productRepository.GetProductViewModelById(product.Id), Price = (long)product.PriceAfter.GetValueOrDefault(), Quantity = quantity.Value }); } //hasChanged = true; returnMessage.SetSuccessMessage("Sản phẩm đã được thêm thành công."); HttpContext.Session.Set("AddProducts", session); return(Json(returnMessage)); } //Update back to cart //if (hasChanged) //{ // HttpContext.Session.Set("AddProducts", session); //} } else { //Add new cart if (quantity != null) { { var cart = new List <CartProductViewModel> { new CartProductViewModel() { Id = product.Id, Product = _productRepository.GetProductViewModelById(product.Id), Price = (long)product.PriceAfter.GetValueOrDefault(), Quantity = quantity.Value } }; HttpContext.Session.Set("AddProducts", cart); returnMessage.SetSuccessMessage("Sản phẩm đã được thêm thành công."); return(Json(returnMessage)); } } else { returnMessage.setMessageFirst("Kiểm tra số lượng"); return(Json(returnMessage)); } } return(Json(returnMessage)); }