public async Task <IActionResult> RemoverProduto(int id, int Quantidade) { PedidoCarrinho carrinho = HttpContext.Session.GetObjectFromJson <PedidoCarrinho>("CarrinhoDb"); if (carrinho == null) { carrinho = new PedidoCarrinho(); } PedidoCarrinho carrinhoDb = db.PedidosCarrinho.Where(x => x.UserId == carrinho.UserId).Include(x => x.Produtos).FirstOrDefault(); if (carrinho.Produtos != null) { if (carrinho.Produtos.Where(x => x.ProdutoId == id).FirstOrDefault().Quantidade - Quantidade > 0) { carrinho.Produtos.Where(x => x.ProdutoId == id).FirstOrDefault().Quantidade -= Quantidade; carrinhoDb.Produtos.Where(x => x.ProdutoId == id).FirstOrDefault().Quantidade -= Quantidade; } else { carrinho.Produtos.Remove(carrinho.Produtos.Where(x => x.ProdutoId == id).FirstOrDefault()); db.ProdutosCarrinho.Remove(carrinhoDb.Produtos.Where(x => x.ProdutoId == id).FirstOrDefault()); carrinhoDb.Produtos.Remove(carrinhoDb.Produtos.Where(x => x.ProdutoId == id).FirstOrDefault()); } } HttpContext.Session.SetObjectAsJson("CarrinhoDb", carrinho); db.Update(carrinhoDb); db.SaveChanges(); return(PartialView("_CheckoutProdutosPartial", await GetChekoutModel())); }
public async Task <IActionResult> FazerCheckout(CheckoutViewModel model) { ApplicationUser user = await _userManager.GetUserAsync(HttpContext.User); var pedido = new Pedido() { ApplicationUserId = this.User.FindFirstValue(ClaimTypes.NameIdentifier), Cep = model.CepEntrega, Complemento = model.ComplementoEntrega, DataEntrega = DateTime.ParseExact(model.DataEntrega, "dd/MM/yyyy", CultureInfo.CurrentCulture), Endereco = model.EnderecoEntrega, DataPedido = DateTime.Now, Numero = model.NumEntrega, TipoEntrega = model.TipoEntrega, }; var carrinho = HttpContext.Session.GetObjectFromJson <PedidoCarrinho>("CarrinhoDb"); pedido.Produtos = new List <ProdutoPedido>(); foreach (var item in carrinho.Produtos) { ProdutoPedido produtoPedido = new ProdutoPedido() { ProdutoId = item.ProdutoId, Quantidade = item.Quantidade, }; pedido.Produtos.Add(produtoPedido); } db.Add(pedido); db.SaveChanges(); var client = _clientFactory.CreateClient(); foreach (var produto in carrinho.Produtos) { var produtoEstoque = db.Produtos.Where(x => x.Id == produto.ProdutoId).FirstOrDefault(); if (produtoEstoque != null) { produtoEstoque.QtdEstoque -= produto.Quantidade; db.Update(produtoEstoque); } } db.SaveChanges(); db.PedidosCarrinho.Remove(db.PedidosCarrinho.Where(x => x.UserId == user.Id).FirstOrDefault()); db.SaveChanges(); PedidoCarrinho carrinhoSession = HttpContext.Session.GetObjectFromJson <PedidoCarrinho>("CarrinhoDb"); carrinhoSession.Produtos = new List <ProdutoCarrinho>(); HttpContext.Session.SetObjectAsJson("CarrinhoDb", carrinhoSession); return(RedirectToAction("ConfirmarCompra", "Checkout", new { id = pedido.Id })); }
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())); }