예제 #1
0
        /// <summary>
        /// Exclui os itens de um pedido
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        internal bool ExcluirItensPedido(RequisicaoObterDto 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.ExcluirListaItensPedido, Guid.Empty, mensagemErro);
                return(false);
            }

            List <PedidoItemVo>       listaExclusao;
            IQueryable <PedidoItemVo> query;

            // Obter a query primária
            if (!this.ObterQueryBd(out query, ref mensagemErro))
            {
                retornoDto.Mensagem = $"Houve um problema ao listar os itens: {mensagemErro}";
                retornoDto.Retorno  = false;

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

            // Obter os itens do pedido
            query         = query.Where(p => p.IdPedido == requisicaoDto.Id);
            listaExclusao = query.ToList();

            // Se algum item não veioda requisição
            foreach (var item in listaExclusao)
            {
                // Prepara a exclusão no banco de dados
                if (!ExcluirBd(item.Id, ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = "Falha ao excluir o item do pedido: " + mensagemErro;

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

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

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

            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "OK";
            return(true);
        }
예제 #2
0
        /// <summary>
        /// Edita as contas vindas de pedidos
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        internal bool EstornarContasPedido(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.EstornarContasReceberPedido, Guid.Empty, mensagemErro);
                return(false);
            }

            List <ContaReceberVo>       listaContas;
            IQueryable <ContaReceberVo> query;

            // Obter a query primária
            if (!this.ObterQueryBd(out query, ref mensagemErro))
            {
                retornoDto.Mensagem = $"Houve um problema ao listar as contas: {mensagemErro}";
                retornoDto.Retorno  = false;

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

            listaContas = query.Where(p => p.IdPedido == requisicaoDto.Id).ToList();
            foreach (var conta in listaContas)
            {
                conta.Status = StatusConta.Estornada;
                if (!EditarBd(conta, ref mensagemErro))
                {
                    retornoDto.Mensagem = $"Houve um problema ao editar as contas: {mensagemErro}";
                    retornoDto.Retorno  = false;

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

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

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

            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "OK";
            return(true);
        }
예제 #3
0
        /// <summary>
        /// Obtém uma taxa de entrega pelo bairro, se não existir, retorna nulo
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public bool ObterTaxaPorBairro(RequisicaoObterTaxaPorBairroDto requisicaoDto, ref RetornoObterDto <TaxaEntregaDto> retornoDto)
        {
            string mensagemErro = "";

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

            // Obter a query primária
            IQueryable <TaxaEntregaVo> query;

            if (!this.ObterQueryBd(out query, ref mensagemErro))
            {
                retornoDto.Mensagem = $"Houve um problema ao listar as taxas de entrega: {mensagemErro}";
                retornoDto.Retorno  = false;

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

            string bairro = string.IsNullOrWhiteSpace(requisicaoDto.BairroCidade) ? "" : requisicaoDto.BairroCidade.Trim();

            query = query.Where(p => p.BairroCidade == bairro);

            TaxaEntregaVo taxaEntregaVo = query.FirstOrDefault();

            if (taxaEntregaVo != null)
            {
                TaxaEntregaDto taxaEntregaDto = new TaxaEntregaDto();
                if (!ConverterVoParaDto(taxaEntregaVo, ref taxaEntregaDto, ref mensagemErro))
                {
                    retornoDto.Mensagem = mensagemErro;
                    retornoDto.Retorno  = false;

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

                retornoDto.Entidade = taxaEntregaDto;
            }
            else
            {
                retornoDto.Entidade = null;
            }

            retornoDto.Retorno = true;
            return(true);
        }
예제 #4
0
        /// <summary>
        /// Obtem o total de entrega por profissional
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public bool ObterTotalEntregaPorProfissional(RequisicaoDataDto requisicaoDto, ref RetornoObterTotalEntregaPorProfissionalDto retornoDto)
        {
            string mensagemErro = "";

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

            List <SqlParameter> listaFiltros = new List <SqlParameter>();

            listaFiltros.Add(new SqlParameter("dataCaixa", requisicaoDto.Data.Date));

            string query = "SELECT CAST(ISNULL(SUM(TaxaEntrega), 0) AS float) AS TotalEntregas," +
                           " f.Nome AS NomeProfissional" +
                           " FROM PizzaByte.PedidosEntregas AS e" +
                           " INNER JOIN PizzaByte.Pedidos AS p ON e.IdPedido = p.Id" +
                           " INNER JOIN PizzaByte.Funcionarios AS f ON e.IdFuncionario = f.Id AND f.Inativo = 0" +
                           " AND f.Excluido = 0" +
                           " WHERE CAST(e.DataInclusao AS Date) = @dataCaixa AND e.Inativo = 0 AND e.Excluido = 0" +
                           " AND e.IdFuncionario IS NOT NULL" +
                           " GROUP BY f.Nome" +
                           " ORDER BY f.Nome";

            try
            {
                PizzaByteContexto contexto = new PizzaByteContexto();
                retornoDto.ListaTotais = contexto.Database.SqlQuery <TotalPorProfissional>(query, listaFiltros.ToArray()).ToList();

                retornoDto.Retorno  = true;
                retornoDto.Mensagem = "Ok";
                return(true);
            }
            catch (Exception ex)
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Falha ao obter os dados: " + ex.Message;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterTotalEntregaPorProfissional, Guid.Empty, mensagemErro);
                return(false);
            }
        }
예제 #5
0
        /// <summary>
        /// Obtem os dados necessários para popular a tela de caixa
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public bool ObterFormasPagamentoDia(RequisicaoDataDto requisicaoDto, ref RetornoObterResumoCaixaDto retornoDto)
        {
            string mensagemErro = "";

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

            List <SqlParameter> listaFiltros = new List <SqlParameter>();
            string query = "SELECT CAST(ISNULL(SUM(RecebidoDinheiro), 0) AS float) AS RecebidoDinheiro," +
                           " CAST(ISNULL(SUM(RecebidoCredito), 0) AS float) AS RecebidoCredito," +
                           " CAST(ISNULL(SUM(RecebidoDebito), 0) AS float) AS RecebidoDebito," +
                           " CAST(ISNULL(SUM(Troco), 0) AS float) AS Troco," +
                           " CAST(ISNULL(SUM(TaxaEntrega), 0) AS float) AS TaxaEntrega" +
                           " FROM PizzaByte.Pedidos" +
                           " WHERE CAST(DataInclusao AS Date) = @dataCaixa AND Inativo = 0 AND Excluido = 0";

            listaFiltros.Add(new SqlParameter("dataCaixa", requisicaoDto.Data.Date));

            try
            {
                PizzaByteContexto contexto = new PizzaByteContexto();
                retornoDto             = contexto.Database.SqlQuery <RetornoObterResumoCaixaDto>(query, listaFiltros.ToArray()).FirstOrDefault();
                retornoDto.TotalVendas = (retornoDto.RecebidoDinheiro - retornoDto.Troco) + retornoDto.RecebidoCredito + retornoDto.RecebidoDebito;

                retornoDto.Retorno  = true;
                retornoDto.Mensagem = "Ok";
                return(true);
            }
            catch (Exception ex)
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Falha ao obter os dados: " + ex.Message;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterInformacoesDashboard, Guid.Empty, mensagemErro);
                return(false);
            }
        }
예제 #6
0
        /// <summary>
        /// Obtém os detalhes do pedido de uma entrega
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public bool ObterPedidoResumido(RequisicaoObterDto requisicaoDto, ref RetornoObterDto <PedidoResumidoDto> retornoDto)
        {
            string mensagemErro = "";

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

            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);
            }

            retornoDto.Entidade = new PedidoResumidoDto()
            {
                PedidoIfood      = pedidoVo.PedidoIfood,
                RecebidoCredito  = pedidoVo.RecebidoCredito,
                RecebidoDebito   = pedidoVo.RecebidoDebito,
                RecebidoDinheiro = pedidoVo.RecebidoDinheiro,
                TaxaEntrega      = pedidoVo.TaxaEntrega,
                Troco            = pedidoVo.Troco,
                Total            = pedidoVo.Total,
                Tipo             = pedidoVo.Tipo,
                Id = pedidoVo.Id
            };

            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "OK";
            return(true);
        }
예제 #7
0
        /// <summary>
        /// Traz uma lista ID, Nome dos usuários para popular combos
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="listaUsuarios"></param>
        /// <param name="mensagemErro"></param>
        /// <returns></returns>
        public bool ObterListaParaSelecao(BaseRequisicaoDto requisicaoDto, ref RetornoObterDicionarioDto <Guid, string> retornoDto)
        {
            string mensagemErro = "";

            if (!UtilitarioBll.ValidarIdentificacao(requisicaoDto.Identificacao, requisicaoDto.IdUsuario, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;

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

            // Obter a query primária
            IQueryable <UsuarioVo> query;

            if (!this.ObterQueryBd(out query, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = $"Erro ao obter a query: {mensagemErro}";

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

            try
            {
                retornoDto.ListaEntidades = query.Where(p => p.Excluido == false).OrderBy(p => p.Nome).Select(p => new { p.Id, p.Nome }).AsEnumerable().ToDictionary(p => p.Id, p => p.Nome);
                return(true);
            }
            catch (Exception ex)
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = $"Erro ao obter a query: {ex.Message}";

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterListaUsuario, Guid.Empty, retornoDto.Mensagem);
                return(false);
            }
        }
예제 #8
0
        /// <summary>
        /// Exclui os endereços de um cliente pelo seu ID
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public bool ExcluirPorIdCliente(RequisicaoObterDto requisicaoDto, ref RetornoDto retornoDto)
        {
            if (requisicaoDto.Id == Guid.Empty)
            {
                retornoDto.Mensagem = "Informe o ID do cliente para excluir seus endereços.";
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ExcluirEnderecosPorIdCliente, requisicaoDto.Id, retornoDto.Mensagem);
                return(false);
            }

            string mensagemErro = "";

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

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

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

            // Obter a query primária
            IQueryable <ClienteEnderecoVo> query;

            if (!this.ObterQueryBd(out query, ref mensagemErro))
            {
                retornoDto.Mensagem = $"Houve um problema ao listar os endereços de clientes: {mensagemErro}";
                retornoDto.Retorno  = false;

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

            query = query.Where(p => p.IdCliente == requisicaoDto.Id);
            List <ClienteEnderecoVo> enderecosEncontrados = query.ToList();

            // Excluir os endereços encontrados
            foreach (var enderecoVo in enderecosEncontrados)
            {
                if (!ExcluirBd(enderecoVo.Id, ref mensagemErro))
                {
                    retornoDto.Mensagem = $"Houve um problema ao excluir o endereço do cliente: {mensagemErro}";
                    retornoDto.Retorno  = false;

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

                if (salvar)
                {
                    // Salva as alterações
                    if (!pizzaByteContexto.Salvar(ref mensagemErro))
                    {
                        retornoDto.Retorno  = false;
                        retornoDto.Mensagem = "Houve um problema ao excluir o endereço do cliente: " + mensagemErro;
                        logBll.ResgistrarLog(requisicaoDto, LogRecursos.ExcluirEnderecosPorIdCliente, requisicaoDto.Id, mensagemErro);
                        return(false);
                    }
                }

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ExcluirEnderecosPorIdCliente, requisicaoDto.Id, "endereço excluído.");
            }

            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "OK";
            return(true);
        }
예제 #9
0
        /// <summary>
        /// Obtem o endereço pelo CEP
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public bool ObterPorCep(RequisicaoObterCepPorCepDto requisicaoDto, ref RetornoObterDto <CepDto> retornoDto)
        {
            string mensagemErro = "";

            if (!UtilitarioBll.ValidarIdentificacao(requisicaoDto.Identificacao, requisicaoDto.IdUsuario, ref mensagemErro))
            {
                retornoDto.Mensagem = mensagemErro;
                return(false);
            }

            if (string.IsNullOrWhiteSpace(requisicaoDto.Cep))
            {
                retornoDto.Mensagem = $"Informe um CEP para obter o endereço";
                retornoDto.Retorno  = false;

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

            // Obter a query primária
            IQueryable <CepVo> query;

            if (!this.ObterQueryBd(out query, ref mensagemErro))
            {
                retornoDto.Mensagem = $"Houve um problema ao listar os CEPs: {mensagemErro}";
                retornoDto.Retorno  = false;

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

            requisicaoDto.Cep = requisicaoDto.Cep.Replace("-", "");
            query             = query.Where(p => p.Cep == requisicaoDto.Cep.Trim());
            CepVo cepVo = query.FirstOrDefault();

            if (cepVo == null)
            {
                retornoDto.Retorno  = true;
                retornoDto.Mensagem = "CEP não encontrado";
                retornoDto.Entidade = null;

                return(true);
            }
            else
            {
                CepDto cepDto = new CepDto();
                if (!ConverterVoParaDto(cepVo, ref cepDto, ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = $"Erro ao converter o CEP para DTO: {mensagemErro}";

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

                retornoDto.Retorno  = true;
                retornoDto.Mensagem = "Ok";
                retornoDto.Entidade = cepDto;

                return(true);
            }
        }
예제 #10
0
        /// <summary>
        /// Inclui/edita as contas vindas de pedidos
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        internal bool IncluirContasPedido(RequisicaoListaEntidadesDto <ContaReceberDto> 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.IncluirListaContasReceberPedido, Guid.Empty, mensagemErro);
                return(false);
            }

            if (requisicaoDto.ListaEntidadesDto.Count <= 0)
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Informe as contas que deseja incluir.";
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirListaContasReceberPedido, Guid.Empty, retornoDto.Mensagem);
                return(false);
            }

            //Confirmar o id do pedido e um novo id para cada item
            requisicaoDto.ListaEntidadesDto.ForEach(p => p.IdPedido = requisicaoDto.IdComum);
            requisicaoDto.ListaEntidadesDto.ForEach(p => p.Id       = (p.Id == null || p.Id == Guid.Empty) ? Guid.NewGuid() : p.Id);

            // Para cada item
            foreach (var item in requisicaoDto.ListaEntidadesDto)
            {
                if (!item.ValidarEntidade(ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = mensagemErro;
                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirListaContasReceberPedido, Guid.Empty, mensagemErro);
                    return(false);
                }

                ContaReceberVo itemVo = new ContaReceberVo();
                if (!ConverterDtoParaVo(item, ref itemVo, ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = "Falha ao converter a conta do pedido para VO: " + mensagemErro;

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

                // Prepara a inclusão no banco de dados
                if (!IncluirBd(itemVo, ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = "Falha ao salvar a conta do pedido: " + mensagemErro;

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

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

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

            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "OK";
            return(true);
        }
예제 #11
0
        /// <summary>
        /// Edita as contas vindas de pedidos
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        internal bool EditarContasPedido(RequisicaoListaEntidadesDto <ContaReceberDto> 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.EditarListaContasReceberPedido, Guid.Empty, mensagemErro);
                return(false);
            }

            List <ContaReceberVo>       listaContas;
            IQueryable <ContaReceberVo> query;

            // Obter a query primária
            if (!this.ObterQueryBd(out query, ref mensagemErro))
            {
                retornoDto.Mensagem = $"Houve um problema ao listar as contas: {mensagemErro}";
                retornoDto.Retorno  = false;

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

            listaContas = query.Where(p => p.IdPedido == requisicaoDto.IdComum).ToList();
            foreach (var conta in listaContas)
            {
                if (!ExcluirDefinitivoBd(conta.Id, ref mensagemErro))
                {
                    retornoDto.Mensagem = $"Houve um problema ao excluir as contas: {mensagemErro}";
                    retornoDto.Retorno  = false;

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

            //Confirmar o id do pedido e um novo id para cada item
            requisicaoDto.ListaEntidadesDto.ForEach(p => p.IdPedido = requisicaoDto.IdComum);
            requisicaoDto.ListaEntidadesDto.ForEach(p => p.Id       = (p.Id == null || p.Id == Guid.Empty) ? Guid.NewGuid() : p.Id);

            // Para cada item
            foreach (var item in requisicaoDto.ListaEntidadesDto)
            {
                if (!item.ValidarEntidade(ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = mensagemErro;
                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.EditarListaContasReceberPedido, Guid.Empty, mensagemErro);
                    return(false);
                }

                ContaReceberVo itemVo = new ContaReceberVo();
                if (!ConverterDtoParaVo(item, ref itemVo, ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = "Falha ao converter a conta do pedido para VO: " + mensagemErro;

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

                // Prepara a inclusão no banco de dados
                if (!IncluirBd(itemVo, ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = "Falha ao salvar a conta do pedido: " + mensagemErro;

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

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

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

            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "OK";
            return(true);
        }
예제 #12
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);
        }
예제 #13
0
        /// <summary>
        /// Altera o funcionário responsável pela entrega
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public bool AlterarFuncionarioEntrega(RequisicaoAlterarFuncionarioEntregaDto 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.AlterarFuncionarioEntrega, requisicaoDto.Id, mensagemErro);
                return(false);
            }

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

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.AlterarFuncionarioEntrega, requisicaoDto.Id, retornoDto.Mensagem);
            }

            // Validar o id da entrega
            if (requisicaoDto.Id == Guid.Empty || requisicaoDto.Id == null)
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "O id da entrega não foi preenchido.";
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.AlterarFuncionarioEntrega, requisicaoDto.Id, mensagemErro);
                return(false);
            }

            // Validar o id do funcionário
            if (requisicaoDto.IdFuncionario == Guid.Empty || requisicaoDto.IdFuncionario == null)
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "O funcionário não foi informado.";
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.AlterarFuncionarioEntrega, requisicaoDto.Id, mensagemErro);
                return(false);
            }

            PedidoEntregaVo entregaVo;

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

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

            // Preencher os dados da conferência
            entregaVo.IdFuncionario = requisicaoDto.IdFuncionario;

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

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.AlterarFuncionarioEntrega, requisicaoDto.Id, retornoDto.Mensagem);
                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.AlterarFuncionarioEntrega, requisicaoDto.Id, retornoDto.Mensagem);
                    return(false);
                }
            }

            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "OK";
            return(true);
        }
예제 #14
0
        /// <summary>
        /// Edita uma lista de itens de um pedido no banco de dados
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        internal bool EditarLista(RequisicaoListaEntidadesDto <PedidoItemDto> 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.EditarPedidoItem, Guid.Empty, mensagemErro);
                return(false);
            }

            if (requisicaoDto.ListaEntidadesDto.Count <= 0)
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Informe ao menos um item para editar.";
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.EditarPedidoItem, Guid.Empty, retornoDto.Mensagem);
                return(false);
            }

            List <PedidoItemVo>       listaExclusao;
            IQueryable <PedidoItemVo> query;

            // Obter a query primária
            if (!this.ObterQueryBd(out query, ref mensagemErro))
            {
                retornoDto.Mensagem = $"Houve um problema ao listar os itens: {mensagemErro}";
                retornoDto.Retorno  = false;

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

            // Obter os itens do pedido
            query         = query.Where(p => p.IdPedido == requisicaoDto.IdComum);
            listaExclusao = query.ToList();

            //Confirmar o id do pedido e um novo id para cada item
            requisicaoDto.ListaEntidadesDto.ForEach(p => p.IdPedido = requisicaoDto.IdComum);
            requisicaoDto.ListaEntidadesDto.ForEach(p => p.Id       = (p.Id == null || p.Id == Guid.Empty) ? Guid.NewGuid() : p.Id);

            // Para cada item
            foreach (var item in requisicaoDto.ListaEntidadesDto)
            {
                if (!item.ValidarEntidade(ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = mensagemErro;
                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.EditarListaPedidoItem, Guid.Empty, mensagemErro);
                    return(false);
                }

                PedidoItemVo itemVo = listaExclusao.Where(p => p.Id == item.Id).FirstOrDefault();
                if (itemVo == null)
                {
                    // Se não existir, incluir
                    itemVo = new PedidoItemVo();
                    if (!ConverterDtoParaVo(item, ref itemVo, ref mensagemErro))
                    {
                        retornoDto.Retorno  = false;
                        retornoDto.Mensagem = "Falha ao converter o item do pedido para VO: " + mensagemErro;

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

                    // Prepara a inclusão no banco de dados
                    if (!IncluirBd(itemVo, ref mensagemErro))
                    {
                        retornoDto.Retorno  = false;
                        retornoDto.Mensagem = "Falha ao salvar o item do pedido: " + mensagemErro;

                        logBll.ResgistrarLog(requisicaoDto, LogRecursos.EditarListaPedidoItem, Guid.Empty, retornoDto.Mensagem);
                        return(false);
                    }
                }
                else
                {
                    listaExclusao.Remove(itemVo);

                    // Se existir e mudar algum dado, editar
                    if (item.PrecoProduto != itemVo.PrecoProduto || item.Quantidade != itemVo.Quantidade)
                    {
                        itemVo.Quantidade   = item.Quantidade;
                        itemVo.PrecoProduto = item.PrecoProduto;

                        // Prepara a edição no banco de dados
                        if (!EditarBd(itemVo, ref mensagemErro))
                        {
                            retornoDto.Retorno  = false;
                            retornoDto.Mensagem = "Falha ao salvar o item do pedido: " + mensagemErro;

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

            // Se algum item não veioda requisição
            foreach (var item in listaExclusao)
            {
                // Prepara a exclusão no banco de dados
                if (!ExcluirBd(item.Id, ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = "Falha ao excluir o item do pedido: " + mensagemErro;

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

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

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

            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "OK";
            return(true);
        }
예제 #15
0
        /// <summary>
        /// Processa uma lista de taxas, editando as existentes e incluindo as novas
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public bool IncluirEditarLista(RequisicaoListaEntidadesDto <TaxaEntregaDto> requisicaoDto, ref RetornoDto retornoDto)
        {
            if (requisicaoDto.ListaEntidadesDto.Count <= 0)
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "É necessário ter ao menos uma taxa de entrega para incluir a lista de taxas.";

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

            string mensagemErro = "";

            if (!UtilitarioBll.ValidarIdentificacao(requisicaoDto.Identificacao, requisicaoDto.IdUsuario, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirAlterarListaTaxaEntrega, Guid.Empty, mensagemErro);
                return(false);
            }

            // Para cada taxa
            foreach (var taxa in requisicaoDto.ListaEntidadesDto)
            {
                // Se existir, editar os dados
                if (taxa.Id != Guid.Empty)
                {
                    TaxaEntregaVo taxaEntregaVo;
                    if (!ObterPorIdBd(taxa.Id, out taxaEntregaVo, ref mensagemErro, true))
                    {
                        retornoDto.Mensagem = "Erro ao obter a taxa de entrega: " + mensagemErro;
                        retornoDto.Retorno  = false;

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

                    if (!taxa.ValidarEntidade(ref mensagemErro))
                    {
                        retornoDto.Retorno  = false;
                        retornoDto.Mensagem = mensagemErro;

                        logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirAlterarListaTaxaEntrega, Guid.Empty, mensagemErro);
                        return(false);
                    }

                    // Converte para VO a ser alterado no banco de dados
                    if (!ConverterDtoParaVo(taxa, ref taxaEntregaVo, ref mensagemErro))
                    {
                        retornoDto.Retorno  = false;
                        retornoDto.Mensagem = "Falha ao converter a taxa de entrega para VO: " + mensagemErro;

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

                    if (!EditarBd(taxaEntregaVo, ref mensagemErro))
                    {
                        retornoDto.Retorno  = false;
                        retornoDto.Mensagem = "Falha ao salvar os novos dados da taxa de entrega: " + mensagemErro;

                        logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirAlterarListaTaxaEntrega, taxaEntregaVo.Id, retornoDto.Mensagem);
                        return(false);
                    }
                }
                else // Se não existir, incluir
                {
                    taxa.Id = Guid.NewGuid();
                    if (!taxa.ValidarEntidade(ref mensagemErro))
                    {
                        retornoDto.Retorno  = false;
                        retornoDto.Mensagem = mensagemErro;

                        logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirAlterarListaTaxaEntrega, Guid.Empty, mensagemErro);
                        return(false);
                    }

                    // Converte para VO a ser incluída no banco de dados
                    TaxaEntregaVo taxaEntregaVo = new TaxaEntregaVo();
                    if (!ConverterDtoParaVo(taxa, ref taxaEntregaVo, ref mensagemErro))
                    {
                        retornoDto.Retorno  = false;
                        retornoDto.Mensagem = "Falha ao converter a taxa de entrega para VO: " + mensagemErro;

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

                    // Prepara a inclusão no banco de dados
                    if (!IncluirBd(taxaEntregaVo, ref mensagemErro))
                    {
                        retornoDto.Retorno  = false;
                        retornoDto.Mensagem = $"Falha ao incluir a taxa de entrega ({taxaEntregaVo.BairroCidade}) para VO: " + mensagemErro;

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

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

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

            retornoDto.Mensagem = "OK";
            retornoDto.Retorno  = true;
            return(true);
        }
예제 #16
0
        /// <summary>
        /// Obtém uma lista com todos os bairros e suas respectivas taxas
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public bool ObterListaBairrosComTaxa(BaseRequisicaoDto requisicaoDto, ref RetornoObterListaDto <TaxaEntregaDto> retornoDto)
        {
            string mensagemErro = "";

            if (!UtilitarioBll.ValidarIdentificacao(requisicaoDto.Identificacao, requisicaoDto.IdUsuario, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterListaBairrosComTaxas, Guid.Empty, mensagemErro);
                return(false);
            }

            CepBll cepBll = new CepBll(false);
            List <BairroCidadeDto> listaBairros = new List <BairroCidadeDto>();

            // Obter os bairros cadastrados
            if (!cepBll.ObterListaBairros(requisicaoDto, ref listaBairros, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;
                return(false);
            }

            // Obter a query primária
            IQueryable <TaxaEntregaVo> query;
            List <TaxaEntregaVo>       listaTaxasCadastradas;

            if (!this.ObterQueryBd(out query, ref mensagemErro, true))
            {
                retornoDto.Mensagem = $"Houve um problema ao listar as taxas de entrega: {mensagemErro}";
                retornoDto.Retorno  = false;

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

            try
            {
                query = query.OrderBy(p => p.BairroCidade);
                listaTaxasCadastradas = query.ToList();
            }
            catch (Exception)
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = $"Houve um problema ao listar os bairros: {mensagemErro}";

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterListaBairrosComTaxas, Guid.Empty, mensagemErro);
                return(false);
            }

            // Para cada bairro
            foreach (var bairro in listaBairros)
            {
                // Iniciar taxa
                TaxaEntregaDto taxaDto = new TaxaEntregaDto()
                {
                    BairroCidade = bairro.Bairro + "_" + bairro.Cidade.Trim(),
                    Cidade       = bairro.Cidade,
                    Id           = Guid.Empty,
                    ValorTaxa    = 0
                };

                TaxaEntregaVo taxaVo = listaTaxasCadastradas.Where(p => p.BairroCidade.Trim() == (bairro.Bairro.Trim() + "_" + bairro.Cidade.Trim())).FirstOrDefault();
                if (taxaVo != null)
                {
                    if (!ConverterVoParaDto(taxaVo, ref taxaDto, ref mensagemErro))
                    {
                        retornoDto.Retorno  = false;
                        retornoDto.Mensagem = $"Falha ao converter a taxa para DTO: {mensagemErro}";

                        logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterListaBairrosComTaxas, Guid.Empty, mensagemErro);
                        return(false);
                    }

                    if (taxaVo.Excluido)
                    {
                        taxaDto.ValorTaxa = 0;
                    }
                }

                retornoDto.ListaEntidades.Add(taxaDto);
            }

            retornoDto.ListaEntidades = retornoDto.ListaEntidades.OrderBy(p => p.Cidade).ThenBy(p => p.BairroCidade).ToList();
            retornoDto.Retorno        = true;
            retornoDto.Mensagem       = "OK";
            return(true);
        }