/// <summary>
        /// Adiciona item ao carrinho
        /// </summary>
        /// <param name="idProduto"></param>
        /// <returns></returns>
        public IActionResult AdicionarItem(int idProduto)
        {
            try
            {
                var produto = _produtoBll.BuscarProdutoId(idProduto);
                if (produto != null)
                {
                    //Verifica se há estoque
                    if (produto.QuantidadeDisponivel > 0)
                    {
                        ProdutoCarrinho dadosItem = new ProdutoCarrinho();

                        dadosItem.IdProduto     = idProduto;
                        dadosItem.Nome          = produto.Nome;
                        dadosItem.ValorUnitario = produto.Valor;

                        List <ProdutoCarrinho> itensCarrinho = new List <ProdutoCarrinho>();
                        if (TempData["itensCarrinho"] != null)
                        {
                            itensCarrinho = JsonConvert.DeserializeObject <List <ProdutoCarrinho> >((string)TempData["itensCarrinho"]);
                            if (itensCarrinho != null && itensCarrinho.Count > 0)
                            {
                                ViewData["itensCarrinho"] = itensCarrinho;
                                ViewData["numeroItens"]   = itensCarrinho.Count();
                            }
                            else
                            {
                                ViewData["itensCarrinho"] = null;
                                ViewData["numeroItens"]   = 0;
                            }
                        }
                        else
                        {
                            ViewData["itensCarrinho"] = null;
                            ViewData["numeroItens"]   = 0;
                        }

                        //Verifica se existem itens no carrinho
                        if (itensCarrinho != null)
                        {
                            int numeroItens = (int)TempData["numeroItens"];

                            //Verificar se o item já está no carrinho
                            var itemJaAdicionado = itensCarrinho.Find(c => c.IdProduto == idProduto);

                            if (itemJaAdicionado == null)
                            {
                                dadosItem.QuantidadeProduto = 1;
                                dadosItem.ValorTotal        = dadosItem.ValorUnitario;
                                itensCarrinho.Add(dadosItem);
                            }
                            else
                            {
                                itensCarrinho.Remove(itemJaAdicionado);
                                itemJaAdicionado.QuantidadeProduto = itemJaAdicionado.QuantidadeProduto++;
                                itemJaAdicionado.ValorTotal        = itemJaAdicionado.ValorUnitario * itemJaAdicionado.QuantidadeProduto;
                                itensCarrinho.Add(itemJaAdicionado);
                                dadosItem.QuantidadeProduto = itemJaAdicionado.QuantidadeProduto;
                            }

                            produto.QuantidadeDisponivel = produto.QuantidadeDisponivel - dadosItem.QuantidadeProduto;
                            _produtoBll.AtualizarProduto(produto);

                            TempData["Mensagem"]      = "Item adicionado com sucesso.";
                            TempData["itensCarrinho"] = JsonConvert.SerializeObject(itensCarrinho);
                            TempData["numeroItens"]   = itensCarrinho.Count;
                            return(RedirectToAction("Index", "Carrinho"));
                        }
                        else
                        {
                            itensCarrinho = new List <ProdutoCarrinho>();

                            dadosItem.QuantidadeProduto = 1;
                            dadosItem.ValorTotal        = dadosItem.ValorUnitario;

                            itensCarrinho.Add(dadosItem);

                            TempData["itensCarrinho"] = JsonConvert.SerializeObject(itensCarrinho);
                            TempData["numeroItens"]   = itensCarrinho.Count;

                            return(RedirectToAction("Index", "Carrinho"));
                        }
                    }
                    else
                    {
                        TempData["Mensagem"]      = "Estoque do produto esgotado.";
                        TempData["itensCarrinho"] = ViewData["itensCarrinho"];
                        TempData["numeroItens"]   = ViewData["numeroItens"];
                        return(RedirectToAction("Index", "Home"));
                    }
                }
                else
                {
                    TempData["Mensagem"]      = "Estoque do produto esgotado.";
                    TempData["itensCarrinho"] = ViewData["itensCarrinho"];
                    TempData["numeroItens"]   = ViewData["numeroItens"];
                    return(RedirectToAction("Index", "Home"));
                }
            }
            catch (Exception ex)
            {
                TempData["Mensagem"] = "Erro: " + ex.Message;
                return(RedirectToAction("Index", "Carrinho"));
            }
        }