Пример #1
0
        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()));
        }
Пример #2
0
        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 }));
        }
Пример #3
0
        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()));
        }