Exemplo n.º 1
0
        /// <summary>
        /// Cancela um pedido e sua entrega, se houver
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public bool CancelarPedido(RequisicaoCancelarPedidoDto requisicaoDto, ref RetornoDto retornoDto)
        {
            string mensagemErro = "";

            if (!UtilitarioBll.ValidarIdentificacao(requisicaoDto.Identificacao, requisicaoDto.IdUsuario, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.CancelarPedido, requisicaoDto.Id, mensagemErro);
                return(false);
            }

            PedidoVo pedidoVo = new PedidoVo();

            if (!ObterPorIdBd(requisicaoDto.Id, out pedidoVo, ref mensagemErro))
            {
                retornoDto.Mensagem = "Problemas para encontrar o pedido: " + mensagemErro;
                retornoDto.Retorno  = false;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.CancelarPedido, requisicaoDto.Id, retornoDto.Mensagem);
                return(false);
            }

            // Mudar o inativo que se refere ao cancelado para true
            pedidoVo.Inativo = true;
            pedidoVo.JustificativaCancelamento = string.IsNullOrWhiteSpace(requisicaoDto.Justificativa) ? "" : requisicaoDto.Justificativa.Trim();
            if (!EditarBd(pedidoVo, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Falha ao cancelar o pedido: " + mensagemErro;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.CancelarPedido, requisicaoDto.Id, retornoDto.Mensagem);
                return(false);
            }

            // Cancelar a entrega se houver
            if (pedidoVo.Tipo == TipoPedido.Entrega)
            {
                PedidoEntregaBll pedidoEntregaBll = new PedidoEntregaBll(pizzaByteContexto, false);
                if (!pedidoEntregaBll.CancelarEntrega(requisicaoDto, ref retornoDto))
                {
                    retornoDto.Retorno = false;
                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.CancelarPedido, requisicaoDto.Id, retornoDto.Mensagem);
                    return(false);
                }
            }

            // Cancelar contas
            ContaReceberBll contaReceberBll = new ContaReceberBll(pizzaByteContexto, false);

            if (!contaReceberBll.EstornarContasPedido(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            // Cancelar itens
            PedidoItemBll pedidoItemBll = new PedidoItemBll(pizzaByteContexto, false);

            if (!pedidoItemBll.EstornarLista(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            if (salvar)
            {
                // Salva as alterações
                if (!pizzaByteContexto.Salvar(ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = "Erro ao salvar o cancelamento: " + mensagemErro;

                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.CancelarPedido, requisicaoDto.Id, retornoDto.Mensagem);
                    return(false);
                }
            }

            logBll.ResgistrarLog(requisicaoDto, LogRecursos.CancelarPedido, requisicaoDto.Id, "Pedido cancelado.");
            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "OK";
            return(true);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Atualiza ou incluir dados de clientes, endereços e taxas
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        private bool AtualizarCadastros(RequisicaoEntidadeDto <PedidoDto> requisicaoDto, ref RetornoDto retornoDto)
        {
            string mensagemErro = "";

            // Incluir/editar cliente
            if (requisicaoDto.EntidadeDto.Cliente != null && requisicaoDto.EntidadeDto.Cliente.Id != Guid.Empty)
            {
                ClienteBll clienteBll = new ClienteBll(pizzaByteContexto, false);
                if (!clienteBll.IncluirEditar(requisicaoDto, requisicaoDto.EntidadeDto.Cliente, ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = mensagemErro;
                    return(false);
                }

                // Verificar endereço
                if (requisicaoDto.EntidadeDto.Entrega.ClienteEndereco != null && requisicaoDto.EntidadeDto.Entrega.ClienteEndereco.Id != Guid.Empty)
                {
                    CepBll cepBll = new CepBll(pizzaByteContexto, false);
                    if (!cepBll.IncluirEditar(requisicaoDto, requisicaoDto.EntidadeDto.Entrega.ClienteEndereco.Endereco, ref mensagemErro))
                    {
                        retornoDto.Retorno  = false;
                        retornoDto.Mensagem = mensagemErro;
                        return(false);
                    }

                    // Incluir/editar endereço do cliente
                    requisicaoDto.EntidadeDto.Entrega.ClienteEndereco.IdCliente = requisicaoDto.EntidadeDto.Cliente.Id;
                    ClienteEnderecoBll clienteEnderecoBll = new ClienteEnderecoBll(pizzaByteContexto, false);
                    if (!clienteEnderecoBll.IncluirEditar(requisicaoDto, requisicaoDto.EntidadeDto.Entrega.ClienteEndereco, ref mensagemErro))
                    {
                        retornoDto.Retorno  = false;
                        retornoDto.Mensagem = mensagemErro;
                        return(false);
                    }

                    // Incluir/editar a taxa de entrega, se houver
                    if (requisicaoDto.EntidadeDto.TaxaEntrega > 0 && !string.IsNullOrWhiteSpace(requisicaoDto.EntidadeDto.Entrega.ClienteEndereco.Endereco.Bairro) &&
                        !string.IsNullOrWhiteSpace(requisicaoDto.EntidadeDto.Entrega.ClienteEndereco.Endereco.Cidade))
                    {
                        TaxaEntregaBll taxaEntregaBll = new TaxaEntregaBll(pizzaByteContexto, false);
                        TaxaEntregaDto taxaDto        = new TaxaEntregaDto()
                        {
                            BairroCidade = requisicaoDto.EntidadeDto.Entrega.ClienteEndereco.Endereco.Bairro.Trim() + "_" + requisicaoDto.EntidadeDto.Entrega.ClienteEndereco.Endereco.Cidade,
                            ValorTaxa    = requisicaoDto.EntidadeDto.TaxaEntrega
                        };

                        if (!taxaEntregaBll.IncluirEditar(requisicaoDto, taxaDto, ref mensagemErro))
                        {
                            retornoDto.Retorno  = false;
                            retornoDto.Mensagem = mensagemErro;
                            return(false);
                        }
                    }
                }
            }

            // Se for do tipo entrega
            if (requisicaoDto.EntidadeDto.Tipo == TipoPedido.Entrega)
            {
                requisicaoDto.EntidadeDto.Entrega.IdPedido   = requisicaoDto.EntidadeDto.Id;
                requisicaoDto.EntidadeDto.Entrega.IdEndereco = requisicaoDto.EntidadeDto.Entrega.ClienteEndereco.Id;

                PedidoEntregaBll pedidoEntregaBll = new PedidoEntregaBll(pizzaByteContexto, false);
                if (!pedidoEntregaBll.IncluirEditar(requisicaoDto, requisicaoDto.EntidadeDto.Entrega, ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = mensagemErro;
                    return(false);
                }
            }

            return(true);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Obtém um pedido pelo ID
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public override bool Obter(RequisicaoObterDto requisicaoDto, ref RetornoObterDto <PedidoDto> retornoDto)
        {
            if (!base.Obter(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            string   mensagemErro = "";
            PedidoVo pedidoVo;

            if (!ObterPorIdBd(requisicaoDto.Id, out pedidoVo, ref mensagemErro))
            {
                retornoDto.Mensagem = "Erro ao obter o pedido: " + mensagemErro;
                retornoDto.Retorno  = false;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterPedido, requisicaoDto.Id, retornoDto.Mensagem);
                return(false);
            }

            PedidoDto pedidoDto = new PedidoDto();

            if (!ConverterVoParaDto(pedidoVo, ref pedidoDto, ref mensagemErro))
            {
                retornoDto.Mensagem = "Erro ao converter o pedido: " + mensagemErro;
                retornoDto.Retorno  = false;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterPedido, requisicaoDto.Id, retornoDto.Mensagem);
                return(false);
            }

            retornoDto.Entidade = pedidoDto;

            //Obter itens
            PedidoItemBll           pedidoItemBll      = new PedidoItemBll(true);
            RequisicaoObterListaDto requisicaoItensDto = new RequisicaoObterListaDto()
            {
                CampoOrdem         = "DESCRICAOPRODUTO",
                NaoPaginarPesquisa = true,
                Identificacao      = requisicaoDto.Identificacao,
                IdUsuario          = requisicaoDto.IdUsuario
            };

            requisicaoItensDto.ListaFiltros.Add("IDPEDIDO", requisicaoDto.Id.ToString());
            RetornoObterListaDto <PedidoItemDto> retornoItemDto = new RetornoObterListaDto <PedidoItemDto>();

            if (!pedidoItemBll.ObterListaFiltrada(requisicaoItensDto, ref retornoItemDto))
            {
                return(false);
            }

            retornoDto.Entidade.ListaItens = retornoItemDto.ListaEntidades;

            //Obter entrega
            if (pedidoDto.Tipo == TipoPedido.Entrega)
            {
                PedidoEntregaDto entregaDto       = new PedidoEntregaDto();
                PedidoEntregaBll pedidoEntregaBll = new PedidoEntregaBll(pizzaByteContexto, false);
                if (!pedidoEntregaBll.ObterEntregaPorIdPedido(requisicaoDto, ref entregaDto, ref mensagemErro))
                {
                    retornoDto.Mensagem = "Erro ao obter a entrega do pedido: " + mensagemErro;
                    retornoDto.Retorno  = false;

                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterPedido, requisicaoDto.Id, retornoDto.Mensagem);
                    return(false);
                }

                pedidoDto.Entrega = entregaDto;
            }

            //Obter cliente
            if (pedidoDto.IdCliente != null && pedidoDto.IdCliente != Guid.Empty)
            {
                requisicaoDto.Id = pedidoDto.IdCliente.Value;
                ClienteBll clienteBll = new ClienteBll(false);

                RetornoObterDto <ClienteDto> retornoClienteDto = new RetornoObterDto <ClienteDto>();
                if (!clienteBll.Obter(requisicaoDto, ref retornoClienteDto) && retornoClienteDto.Mensagem != "Erro ao obter o cliente: Cadastro não encontrado")
                {
                    retornoDto.Mensagem = retornoClienteDto.Mensagem;
                    retornoDto.Retorno  = false;

                    return(false);
                }

                if (retornoClienteDto.Mensagem == "Erro ao obter o cliente: Cadastro não encontrado")
                {
                    pedidoDto.Cliente.Nome = "Cadastro não encontro";
                }
                else
                {
                    pedidoDto.Cliente = retornoClienteDto.Entidade;
                }
            }

            retornoDto.Mensagem = "Ok";
            retornoDto.Retorno  = true;
            return(true);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Edita um pedido, seus itens, entrega e cliente, se houver
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public override bool Editar(RequisicaoEntidadeDto <PedidoDto> requisicaoDto, ref RetornoDto retornoDto)
        {
            if (!base.Editar(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            string   mensagemErro = "";
            PedidoVo pedidoVo     = new PedidoVo();

            if (!ObterPorIdBd(requisicaoDto.EntidadeDto.Id, out pedidoVo, ref mensagemErro))
            {
                retornoDto.Mensagem = "Problemas para encontrar o pedido: " + mensagemErro;
                retornoDto.Retorno  = false;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.EditarPedido, requisicaoDto.EntidadeDto.Id, retornoDto.Mensagem);
                return(false);
            }

            // Se não houver cliente, deixar o id Nulo
            if (requisicaoDto.EntidadeDto.Cliente == null || requisicaoDto.EntidadeDto.Cliente.Id == Guid.Empty)
            {
                requisicaoDto.EntidadeDto.IdCliente = null;
            }

            TipoPedido tipoAntigo = pedidoVo.Tipo;

            if (!ConverterDtoParaVo(requisicaoDto.EntidadeDto, ref pedidoVo, ref mensagemErro))
            {
                retornoDto.Mensagem = "Problemas ao converter o pedido para Vo: " + mensagemErro;
                retornoDto.Retorno  = false;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.EditarPedido, requisicaoDto.EntidadeDto.Id, retornoDto.Mensagem);
                return(false);
            }

            if (!EditarBd(pedidoVo, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Falha ao editar os novos dados do pedido: " + mensagemErro;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.EditarPedido, requisicaoDto.EntidadeDto.Id, retornoDto.Mensagem);
                return(false);
            }

            //Editar itens
            PedidoItemBll pedidoItemBll = new PedidoItemBll(this.pizzaByteContexto, false);
            RequisicaoListaEntidadesDto <PedidoItemDto> requisicaoItensDto = new RequisicaoListaEntidadesDto <PedidoItemDto>()
            {
                IdComum           = pedidoVo.Id,
                Identificacao     = requisicaoDto.Identificacao,
                IdUsuario         = requisicaoDto.IdUsuario,
                ListaEntidadesDto = requisicaoDto.EntidadeDto.ListaItens
            };

            if (!pedidoItemBll.EditarLista(requisicaoItensDto, ref retornoDto))
            {
                return(false);
            }

            // Incluir/editar cliente, enredeço e taxas
            if (!AtualizarCadastros(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            //Editar entrega
            if (tipoAntigo == TipoPedido.Entrega && pedidoVo.Tipo != TipoPedido.Entrega)
            {
                PedidoEntregaBll   pedidoEntregaBll      = new PedidoEntregaBll(pizzaByteContexto, false);
                RequisicaoObterDto requisicaoEntidadeDto = new RequisicaoObterDto()
                {
                    Id            = pedidoVo.Id,
                    Identificacao = requisicaoDto.Identificacao,
                    IdUsuario     = requisicaoDto.IdUsuario
                };

                if (!pedidoEntregaBll.ExcluirPorIdPedido(requisicaoEntidadeDto, ref retornoDto))
                {
                    return(false);
                }
            }

            // Editar contas, se houver pagamentos alterados
            RequisicaoListaEntidadesDto <ContaReceberDto> requisicaoContasDto = new RequisicaoListaEntidadesDto <ContaReceberDto>()
            {
                IdUsuario     = requisicaoDto.IdUsuario,
                Identificacao = requisicaoDto.Identificacao,
                IdComum       = requisicaoDto.EntidadeDto.Id
            };

            requisicaoDto.EntidadeDto.DataInclusao = pedidoVo.DataInclusao;
            List <ContaReceberDto> listaContas = new List <ContaReceberDto>();

            if (!GerarListaContas(requisicaoDto.EntidadeDto, ref listaContas, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Falha ao gerar as contas: " + mensagemErro;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirPedido, Guid.Empty, retornoDto.Mensagem);
                return(false);
            }

            requisicaoContasDto.ListaEntidadesDto = listaContas;
            ContaReceberBll contaReceberBll = new ContaReceberBll(pizzaByteContexto, false);

            if (!contaReceberBll.EditarContasPedido(requisicaoContasDto, ref retornoDto))
            {
                return(false);
            }

            if (salvar)
            {
                // Salva as alterações
                if (!pizzaByteContexto.Salvar(ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = "Erro ao salvar os novos dados: " + mensagemErro;

                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.EditarPedido, requisicaoDto.EntidadeDto.Id, retornoDto.Mensagem);
                    return(false);
                }
            }

            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "OK";
            return(true);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Exclui um pedido do banco de dados a partir do ID
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public override bool Excluir(RequisicaoObterDto requisicaoDto, ref RetornoDto retornoDto)
        {
            string mensagemErro = "";

            if (!UtilitarioBll.ValidarUsuarioAdm(requisicaoDto.Identificacao, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Este usuário não é administrador. Para excluir pedidos é necessário " +
                                      $"logar com um usuário administrador. {mensagemErro}";

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ExcluirPedido, requisicaoDto.Id, retornoDto.Mensagem);
                return(false);
            }

            if (!base.Excluir(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            //Excluir itens
            PedidoItemBll pedidoItemBll = new PedidoItemBll(pizzaByteContexto, false);

            if (!pedidoItemBll.ExcluirItensPedido(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            //Excluir entregas, se houver
            PedidoEntregaBll pedidoEntregaBll = new PedidoEntregaBll(pizzaByteContexto, false);

            if (!pedidoEntregaBll.ExcluirPorIdPedido(requisicaoDto, ref retornoDto))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ExcluirPedido, requisicaoDto.Id, retornoDto.Mensagem);
                return(false);
            }

            // Excluir as contas
            ContaReceberBll contaReceberBll = new ContaReceberBll(pizzaByteContexto, false);

            if (!contaReceberBll.ExcluirContasPedido(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            if (salvar)
            {
                // Salva as alterações
                if (!pizzaByteContexto.Salvar(ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = mensagemErro;

                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.ExcluirPedido, requisicaoDto.Id, retornoDto.Mensagem);
                    return(false);
                }
            }

            logBll.ResgistrarLog(requisicaoDto, LogRecursos.ExcluirPedido, requisicaoDto.Id, "Pedido excluído.");
            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "OK";
            return(true);
        }