Esempio n. 1
0
        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");
                }
            }
        }
Esempio n. 3
0
        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();
 }
Esempio n. 7
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()));
        }