public int Adicionar(AddCarrinhoViewModel model) { int quantidade = model.QuantidadeProduto; int quantidadeEmEstoque = _produtoRepositorio.Produtos .Where(p => p.ProdutoID == model.ProdutoID) .Select(p => p.Quantidade) .Sum(); int quantidadeNoCarrinho = _carrinho.Lines .Where(p => p.Produto.ProdutoID == model.ProdutoID) .Select(p => p.Quantidade) .Sum(); Produto produto = _produtoRepositorio.Produtos.FirstOrDefault(p => p.ProdutoID == model.ProdutoID); bool produtoEmEstoque = quantidadeEmEstoque >= quantidadeNoCarrinho && quantidadeEmEstoque >= model.QuantidadeProduto; if (produto != null) { if (produtoEmEstoque) { _carrinho.AddItem(produto, quantidade > 1 ? quantidade : 1); } else { TempData["fora_estoque"] = $"{produto.Nome} fora de estoque."; return(-1); } } return(_carrinho.QuantidadeTotal()); }