public async Task<int> add(int id) {

            var produto = (Produto) await db.Produto.FindAsync(id);
            

            var produtoCarrinho = new ProdutoCarrinho();
            produtoCarrinho.Produto = produto;
            produtoCarrinho.Quantidade = 1;
            produtoCarrinho.Imagem = db.ProdutoImagem.Where(x => x.Produto.Id == produto.Id).FirstOrDefault().Imagem.Descricao;
            produtoCarrinho.Valor = (produtoCarrinho.Produto.Preco * produtoCarrinho.Quantidade);
            produtoCarrinho.Peso = produtoCarrinho.Produto.Peso * produtoCarrinho.Quantidade;

            var aspSessionCarrinho = Session["carrinho"] as SessionCarrinho;
            
            if (aspSessionCarrinho == null) {

                SessionCarrinho = new SessionCarrinho();
                SessionCarrinho.ProdutosCarrinho.Add(produtoCarrinho);

                Session.Add("carrinho", SessionCarrinho);

                return SessionCarrinho.ProdutosCarrinho.Count;

            }

            if (aspSessionCarrinho.ProdutosCarrinho.Any(x => x.Produto.Id == id)) {
                return aspSessionCarrinho.ProdutosCarrinho.Count;
            }

            aspSessionCarrinho.ProdutosCarrinho.Add(produtoCarrinho);

            Session["carrinho"] = aspSessionCarrinho;

            return aspSessionCarrinho.ProdutosCarrinho.Count;
        }
        public JsonResult change(int id, int quantidade) {

            var sessionCarrinho = Session["carrinho"] as SessionCarrinho;

            var newSessionCarrinho = new SessionCarrinho();

            foreach (var produtoCarrinho in sessionCarrinho.ProdutosCarrinho) {
                if (produtoCarrinho.Produto.Id == id) {
                    produtoCarrinho.Quantidade = quantidade == 0 ? 1 : quantidade;
                    produtoCarrinho.Valor = produtoCarrinho.Quantidade * produtoCarrinho.Produto.Preco;
                    produtoCarrinho.Peso = produtoCarrinho.Produto.Peso * produtoCarrinho.Quantidade;
                }

                newSessionCarrinho.ProdutosCarrinho.Add(produtoCarrinho);
            }

            Session["carrinho"] = newSessionCarrinho;

            return Json(new { RedirectUrl = Url.Action("Index", "Carrinho") }, JsonRequestBehavior.AllowGet);
        }
        public JsonResult remove(int id) {
            var sessionCarrinho = Session["carrinho"] as SessionCarrinho;

            var newSessionCarrinho = new SessionCarrinho();

            foreach (var produtoCarrinho in sessionCarrinho.ProdutosCarrinho)
            {
                if (produtoCarrinho.Produto.Id != id)
                {
                    newSessionCarrinho.ProdutosCarrinho.Add(produtoCarrinho);
                }

                
            }

            Session["carrinho"] = newSessionCarrinho;

            return  Json(new { RedirectUrl = Url.Action("Index", "Carrinho") }, JsonRequestBehavior.AllowGet);
        }