public void Inserir(IList <ItensCarrinho> itensCarrinho, int usuarioId) { try { using (var context = new LojaOnlineContext()) { double total = 0; Carrinhos carrinho = new Carrinhos(); carrinho.Status = Status.Fechado; carrinho.UsuarioId = usuarioId; carrinho.Total = total; context.Carrinho.Add(carrinho); context.SaveChanges(); foreach (var item in itensCarrinho) { ProdutoCarrinho produtoCarrinho = new ProdutoCarrinho(); produtoCarrinho.Carrinho = carrinho; produtoCarrinho.ProdutoId = item.ProdutoId; produtoCarrinho.Quantidade = item.Quantidade; context.ProdutoCarrinho.Add(produtoCarrinho); context.SaveChanges(); total = total + item.Valor; } carrinho.Total = total; context.Carrinho.AddOrUpdate(carrinho); context.SaveChanges(); } } catch (Exception ex) { throw new Exception(); } }
public ActionResult AdicionarAoCarrinho(int id) { using (ISession session = NHibernateHelper.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { Carrinho carrinho = (session.Query<Carrinho>().Where(x => x.Id == SessionCarrinho).FirstOrDefault()) ?? new Carrinho { Data = DateTime.Now }; var produto = session.Query<Produto>().Where(x => x.Id == id).FirstOrDefault(); ProdutoCarrinho pc; if (carrinho.Produtos != null) { pc = carrinho.Produtos.Where(x => x.Produto.Nome == produto.Nome).FirstOrDefault(); if (pc != null) { if ((pc.Quantidade + 1) <= pc.Produto.Estoque) { pc.Quantidade++; pc.CalcularSubtotal(); session.SaveOrUpdate(pc); } else { TempData["error"] = "Não é possível incluir mais unidades desse produto no carrinho."; } } else { pc = new ProdutoCarrinho { Produto = produto, Carrinho = carrinho, Quantidade = 1 }; pc.CalcularSubtotal(); produto.produtoCarrinho = pc.Produto.produtoCarrinho = pc; carrinho.Produtos.Add(pc); session.SaveOrUpdate(carrinho); } SessionCarrinho = carrinho.Id; } transaction.Commit(); return RedirectToAction("Index"); } } }
public async Task <ProdutoCarrinho> AddProductAsync(Produto produto) { // Simulate delay await Task.Delay(TimeSpan.FromSeconds(1)); if (lines.Where(line => line.Produto.Id == produto.Id).Any()) { var existingLine = lines.Where(line => line.Produto.Id == produto.Id).FirstOrDefault(); existingLine.Quantidade++; return(await Task.FromResult(existingLine)); } else { var newLine = new ProdutoCarrinho { Quantidade = 1, Produto = produto, }; lines.Add(newLine); return(await Task.FromResult(newLine)); } }
/// <summary> /// Remove item do carrinho /// </summary> /// <param name="idProduto"></param> /// <returns></returns> public IActionResult RemoverItem(int idProduto) { try { var produto = _produtoBll.BuscarProdutoId(idProduto); if (produto != null) { 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) { itensCarrinho.Remove(itemJaAdicionado); } TempData["itensCarrinho"] = JsonConvert.SerializeObject(itensCarrinho); TempData["numeroItens"] = itensCarrinho.Count; //Atualiza quantidade do produto em estoque produto.QuantidadeDisponivel = itemJaAdicionado.QuantidadeProduto; _produtoBll.AtualizarProduto(produto); TempData["Mensagem"] = "Item removido com sucesso."; return(RedirectToAction("Index", "Carrinho")); } TempData["itensCarrinho"] = TempData["itensCarrinho"]; TempData["numeroItens"] = TempData["numeroItens"]; return(RedirectToAction("Index", "Carrinho")); } TempData["itensCarrinho"] = TempData["itensCarrinho"]; TempData["numeroItens"] = TempData["numeroItens"]; return(RedirectToAction("Index", "Home")); } catch (Exception ex) { TempData["Mensagem"] = "Erro: " + ex.Message; return(RedirectToAction("Index", "Carrinho")); } }
/// <summary> /// Atualiza itens do carrinho /// </summary> /// <param name="idProduto">id do item</param> /// <param name="novaQuantidade">Nova quantidade do item</param> /// <returns></returns> public IActionResult AtualizarItem(int idProduto, int novaQuantidade) { try { var produto = _produtoBll.BuscarProdutoId(idProduto); if (produto != null) { ///Verifica se há estoque disponível 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 && itensCarrinho.Count > 0) { int numeroItens = (int)TempData["numeroItens"]; //Verificar se o item já está no carrinho var itemJaAdicionado = itensCarrinho.Find(c => c.IdProduto == idProduto); if (itemJaAdicionado != null) { if (novaQuantidade <= 0) { itensCarrinho.Remove(itemJaAdicionado); } else { itensCarrinho.Remove(itemJaAdicionado); dadosItem.QuantidadeProduto = novaQuantidade; dadosItem.ValorTotal = dadosItem.ValorUnitario * dadosItem.QuantidadeProduto; itensCarrinho.Add(dadosItem); } } //Atualiza quantidade do produto em estoque if (itemJaAdicionado.QuantidadeProduto > novaQuantidade) { int diferenca = itemJaAdicionado.QuantidadeProduto - novaQuantidade; produto.QuantidadeDisponivel = produto.QuantidadeDisponivel + diferenca; } else if (itemJaAdicionado.QuantidadeProduto < novaQuantidade) { int diferenca = novaQuantidade - itemJaAdicionado.QuantidadeProduto; produto.QuantidadeDisponivel = produto.QuantidadeDisponivel - diferenca; } _produtoBll.AtualizarProduto(produto); TempData["Mensagem"] = "Item atualizado com sucesso."; TempData["itensCarrinho"] = JsonConvert.SerializeObject(itensCarrinho); TempData["numeroItens"] = itensCarrinho.Count; return(RedirectToAction("Index", "Carrinho")); } TempData["itensCarrinho"] = ViewData["itensCarrinho"]; TempData["numeroItens"] = ViewData["numeroItens"]; return(RedirectToAction("Index", "Carrinho")); } else { 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")); } }
public void Deletar(ProdutoCarrinho produto) { _context.Entry(produto).State = Microsoft.EntityFrameworkCore.EntityState.Deleted; _context.SaveChanges(); }
public IActionResult AdicionarNoCarrinho(int ProdutoId, int Quantidade) { PedidoCarrinho carrinho = HttpContext.Session.GetObjectFromJson <PedidoCarrinho>("CarrinhoDb"); if (carrinho == null) { carrinho = new PedidoCarrinho() { Produtos = new List <ProdutoCarrinho>() } } ; var produtoEmCarrinho = carrinho.Produtos.Where(x => x.ProdutoId == ProdutoId).FirstOrDefault(); if (produtoEmCarrinho != null) { produtoEmCarrinho.Quantidade += Quantidade; } else { ProdutoCarrinho produtoCarrinho = new ProdutoCarrinho() { ProdutoId = ProdutoId, Quantidade = Quantidade }; carrinho.Produtos.Add(produtoCarrinho); } PedidoCarrinho pedidoCarrinho = db.PedidosCarrinho.Where(x => x.UserId == _userManager.GetUserAsync(HttpContext.User).Result.Id) .Include(x => x.Produtos) .FirstOrDefault(); if (pedidoCarrinho == null) { carrinho.UserId = _userManager.GetUserAsync(HttpContext.User).Result.Id; db.Add(carrinho); } else { List <ProdutoCarrinho> produtosNaoCadastrados = new List <ProdutoCarrinho>(); carrinho.Produtos.ForEach(prod => { var findProd = pedidoCarrinho.Produtos.Find(x => x.ProdutoId == prod.ProdutoId); if (findProd == null) { pedidoCarrinho.Produtos.Add(prod); } else { findProd.Quantidade = prod.Quantidade; } db.Update(pedidoCarrinho); }); } db.SaveChanges(); HttpContext.Session.SetInt32("CartNumber", carrinho.Produtos.Count()); HttpContext.Session.SetComplexData("CarrinhoDb", carrinho); return(Ok(carrinho.Produtos.Count().ToString())); }