/// <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")); } }