Exemple #1
0
        public string Processar(IEntity entity)
        {
            Pedido pedido = (Pedido)entity;

            if (pedido.alterarLivros != false || pedido.alterarLivros == null)
            {
                Pedido pedidoBanco = null;

                if (pedido.Id != 0)
                {
                    pedidoBanco = (Pedido)daoPedido.Consultar(new Pedido()
                    {
                        Id = pedido.Id
                    }).FirstOrDefault();
                }
                var itensBanco        = new List <Rel_Pedido_Livro>();
                var quantidadeDoBanco = 0;
                if (pedidoBanco != null)
                {
                    itensBanco = pedidoBanco.LivrosDoPedido.ToList();
                }

                //Verifica se a alteração pretendida é enquanto o pedido é um carrinho
                if (pedido.StatusPedido.sta_ped_descricao == "Carrinho")
                {
                    foreach (var itemPassado in pedido.LivrosDoPedidoParaAlterar)
                    {
                        // 1
                        var quantidadePassada = itemPassado.hpl_quantidade;
                        if (pedidoBanco != null)
                        {
                            if (itensBanco.FirstOrDefault(i => i.Id == itemPassado.Id) != null)
                            {
                                quantidadeDoBanco = itensBanco.FirstOrDefault(i => i.Id == itemPassado.Id).hpl_quantidade;
                            }
                        }

                        // Verifica se a quantidade para alteração é diferente de zero
                        if (quantidadePassada != 0)
                        {
                            itemPassado.Livro.liv_quantidade -= quantidadePassada;
                        }
                    }
                }

                pedidoBanco = null;
            }

            return(null);
        }
Exemple #2
0
        public string Processar(IEntity entity)
        {
            Pedido pedido = (Pedido)entity;

            var pedidoAntigo = (Pedido)daoPedido.Consultar(pedido).FirstOrDefault();

            // para cada livro novo adicionado, recalcula os valores
            foreach (var item in pedidoAntigo.LivrosDoPedido)
            {
                // se um item do carrinho está com quantidade zero | remover ele do carrinho
                pedido.LivrosDoPedidoParaAlterar.FirstOrDefault(r => r.Id == item.Id).Livro.liv_quantidade += item.hpl_quantidade;

                // aplica as modificações necessárias ao livro
                daoLivro.Alterar(pedido.LivrosDoPedidoParaAlterar.FirstOrDefault(r => r.Id == item.Id).Livro);

                pedido.LivrosDoPedidoParaAlterar.Remove(item);
            }

            pedidoAntigo = null;

            return(null);
        }
Exemple #3
0
        public string Processar(IEntity entity)
        {
            Pedido pedido = (Pedido)entity;
            var    livroDoPedidoFoiRemovido = false;

            if (pedido.alterarLivros != false || pedido.alterarLivros == null)
            {
                // Verifica se um Id foi passado (Id passado = carrinho já existe)
                if (pedido.Id != 0)
                {
                    var pedidoBanco = (Pedido)daoPedido.Consultar(pedido).FirstOrDefault();
                    var itensBanco  = pedidoBanco.LivrosDoPedido.ToList();

                    // para cada livro novo adicionado, recalcula os valores
                    foreach (var itemBanco in itensBanco)
                    {
                        // busca pelo item passado pela view dentro da lista de itens do banco
                        var itemPassado = pedido.LivrosDoPedidoParaAlterar
                                          .FirstOrDefault(i => i.Livro.Id == itemBanco.Id);

                        // Se foi encontrado algum item que já esteja adicionado aos itens do banco
                        if (itemPassado != null) // se encontrou no banco, já existe no carrinho
                        {
                            var quantidadePassada = itemPassado.hpl_quantidade;
                            var quantidadeDoBanco = itemBanco.hpl_quantidade;

                            // remove o livro se a quantidade passada for negativa e no mesmo valor que o que tem no pedido
                            if ((quantidadePassada + quantidadeDoBanco) == 0)
                            {
                                var pedidoARemover = pedido.LivrosDoPedido.Where(e => e.Id == itemPassado.Id).FirstOrDefault();
                                pedido.LivrosDoPedido.Remove(pedidoARemover);
                                livroDoPedidoFoiRemovido = true;
                            }
                            else
                            {
                                itemPassado.hpl_quantidade = quantidadeDoBanco + quantidadePassada;
                                itemPassado.Id             = itemBanco.Id;
                                itemPassado.ped_id         = itemBanco.ped_id;
                            }
                        }
                        else
                        {
                            // atribui o livro ao pedido a ser alterado
                            pedido.LivrosDoPedido.Add(itemBanco);
                        }
                    }

                    pedidoBanco = null;
                }

                foreach (var livroAAlterar in pedido.LivrosDoPedidoParaAlterar)
                {
                    if (pedido.LivrosDoPedido != null)
                    {
                        // Quando o item do pedido for removido, não adiciona novamente
                        if (!livroDoPedidoFoiRemovido)
                        {
                            var livroQueVaiAtualizar = pedido.LivrosDoPedido.Where(e => e.Id == livroAAlterar.Id).FirstOrDefault();

                            if (livroQueVaiAtualizar != null)
                            {
                                pedido.LivrosDoPedido.Remove(livroQueVaiAtualizar);


                                pedido.LivrosDoPedido.Add(livroAAlterar);
                            }
                            else
                            {
                                pedido.LivrosDoPedido.Add(livroAAlterar);
                            }
                        }
                    }
                    else
                    {
                        pedido.LivrosDoPedido = new List <Rel_Pedido_Livro> {
                            livroAAlterar
                        };
                    }
                }
            }

            return(null);
        }