public int deleteCart(CartUpdateDTO cartUpdate)
        {
            var cart = Session["cart"];//get key cart

            if (cart == null)
            {
                List <CartItemDTO> listCart = new List <CartItemDTO>();
                string             jsonCart = JsonConvert.SerializeObject(listCart);
                Session["cart"] = jsonCart;
            }
            else
            {
                List <CartItemDTO> listCart = JsonConvert.DeserializeObject <List <CartItemDTO> >(cart.ToString());

                for (int i = 0; i < listCart.Count; i++)
                {
                    if (listCart[i].MaSanPham == cartUpdate.MaSanPham)
                    {
                        listCart.Remove(listCart[i]);
                        break;
                    }
                }

                string jsonCart = JsonConvert.SerializeObject(listCart);
                Session["cart"] = jsonCart;
            }
            return(1);
        }
        public int updateCart(CartUpdateDTO cartUpdate)
        {
            int tongtien = 0;
            var cart     = Session["cart"];//get key cart

            if (cart == null)
            {
                List <CartItemDTO> listCart = new List <CartItemDTO>();
                string             jsonCart = JsonConvert.SerializeObject(listCart);
                Session["cart"] = jsonCart;
            }
            else
            {
                List <CartItemDTO> listCart = JsonConvert.DeserializeObject <List <CartItemDTO> >(cart.ToString());

                for (int i = 0; i < listCart.Count; i++)
                {
                    if (listCart[i].MaSanPham == cartUpdate.MaSanPham)
                    {
                        listCart[i].SoLuong = cartUpdate.SoLuong;
                        break;
                    }
                }
                foreach (var item in listCart)
                {
                    tongtien += (Convert.ToInt32(item.Gia) * Convert.ToInt32(item.SoLuong));
                }
                string jsonCart = JsonConvert.SerializeObject(listCart);
                Session["cart"] = jsonCart;
            }
            return(tongtien);
        }
        public async Task <IActionResult> UpdateCart(int CartId, CartUpdateDTO cartUpdateDTO)
        {
            try
            {
                //check if cart id matched id requested
                if (cartUpdateDTO.CartId != null)
                {
                    if (CartId != cartUpdateDTO.CartId)
                    {
                        return(BadRequest(new { ApiProblem = "Entity Id does not match requested Id." }));
                    }
                }

                var cartIdExists     = _context.Carts.Any(c => c.CartId == cartUpdateDTO.CartId);
                var cartNameExists   = _context.Carts.Any(c => c.CartName == cartUpdateDTO.CartName);
                var tagAddressExists = _context.Carts.Any(c => c.TagAddress == cartUpdateDTO.TagAddress);

                //check if cartid does not exist
                if (!cartIdExists && cartUpdateDTO.CartId != null)
                {
                    //add error message
                    ModelState.AddModelError("CartId", "No cart found with given cart id.");
                }

                //check if CartName already exists
                if (cartNameExists)
                {
                    //check if the cart is another cart
                    var theCart = _context.Carts.Where(c => c.CartName == cartUpdateDTO.CartName).FirstOrDefault();
                    if (theCart.CartId != cartUpdateDTO.CartId)
                    {
                        //add error message
                        ModelState.AddModelError("CartName", "CartName already exists.");
                    }
                }

                //check if TagAddress already exists
                if (tagAddressExists)
                {
                    //check if the cart is another cart
                    var theCart = _context.Carts.Where(c => c.TagAddress == cartUpdateDTO.TagAddress).FirstOrDefault();
                    if (theCart.CartId != cartUpdateDTO.CartId)
                    {
                        //add error message
                        ModelState.AddModelError("TagAddress", "TagAddress already exists.");
                    }
                }

                //if model is not valid return error messages
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState.ToDictionary(x => x.Key, x => x.Value.Errors.Select(e => e.ErrorMessage).ToArray())));
                }

                //find cart
                var cart = await _context.Carts.FindAsync(CartId);

                //if site not found return error
                if (cart == null)
                {
                    return(NotFound());
                }

                //update cart
                cart.CartName   = cartUpdateDTO.CartName;
                cart.TagAddress = cartUpdateDTO.TagAddress;

                //put cart
                try
                {
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException) when(!CartExists(CartId))
                {
                    return(NotFound());
                }

                return(NoContent());
            }
            catch (NullReferenceException e)
            {
                //if exception is caught write to console and return error message
                Console.WriteLine("{0} Exception caught.", e);
                return(BadRequest(new { ApiProblem = "Invalid JSON format sent." }));
            }
        }