/// <summary> /// Obtem uma lista de endereços de cliente pelos IDs /// </summary> /// <param name="requisicaoDto"></param> /// <param name="retornoDto"></param> /// <returns></returns> internal bool ObterListaPorId(RequisicaoListaGuidsDto requisicaoDto, ref RetornoObterListaDto <ClienteEnderecoDto> retornoDto) { // Obter a query primária string mensagemErro = ""; 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.ObterListaEnderecosClientePorId, Guid.Empty, retornoDto.Mensagem); return(false); } List <ClienteEnderecoVo> listaVo = query.Where(p => requisicaoDto.ListaGuids.Contains(p.Id)).ToList(); List <CepVo> listaCepsVo = new List <CepVo>(); // Obter CEPs CepBll cepBll = new CepBll(false); if (!cepBll.ObterListaEnderecosPorId(listaVo.Select(p => p.IdCep).ToList(), ref listaCepsVo, ref mensagemErro)) { retornoDto.Mensagem = mensagemErro; retornoDto.Retorno = false; logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterListaEnderecosClientePorId, Guid.Empty, retornoDto.Mensagem); return(false); } // Converter foreach (var clienteEndereco in listaVo) { CepVo cepDto = listaCepsVo.Where(p => p.Id == clienteEndereco.IdCep).FirstOrDefault(); ClienteEnderecoDto clienteEnderecoDto = new ClienteEnderecoDto(); if (!ConverterVoParaDto(clienteEndereco, ref clienteEnderecoDto, ref mensagemErro)) { retornoDto.Mensagem = "Erro ao converter para DTO: " + mensagemErro; retornoDto.Retorno = false; logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterListaEnderecosClientePorId, clienteEndereco.Id, retornoDto.Mensagem); return(false); } //Preencher dados do endereço clienteEnderecoDto.Endereco = new CepDto() { Bairro = cepDto == null ? "" : cepDto.Bairro, Cep = cepDto == null ? "" : cepDto.Cep, Cidade = cepDto == null ? "" : cepDto.Cidade, Logradouro = cepDto == null ? "" : cepDto.Logradouro, Id = cepDto == null ? Guid.Empty : cepDto.Id }; retornoDto.ListaEntidades.Add(clienteEnderecoDto); } return(true); }
/// <summary> /// Obtém um fornecedor pelo ID /// </summary> /// <param name="requisicaoDto"></param> /// <param name="retornoDto"></param> /// <returns></returns> public override bool Obter(RequisicaoObterDto requisicaoDto, ref RetornoObterDto <FornecedorDto> retornoDto) { if (!base.Obter(requisicaoDto, ref retornoDto)) { return(false); } string mensagemErro = ""; FornecedorVo fornecedorVo; if (!ObterPorIdBd(requisicaoDto.Id, out fornecedorVo, ref mensagemErro)) { retornoDto.Mensagem = "Erro ao obter o fornecedor: " + mensagemErro; retornoDto.Retorno = false; logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterFornecedor, requisicaoDto.Id, retornoDto.Mensagem); return(false); } FornecedorDto fornecedorDto = new FornecedorDto(); if (!ConverterVoParaDto(fornecedorVo, ref fornecedorDto, ref mensagemErro)) { retornoDto.Mensagem = "Erro ao converter o fornecedor: " + mensagemErro; retornoDto.Retorno = false; logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterFornecedor, requisicaoDto.Id, retornoDto.Mensagem); return(false); } if (fornecedorDto.Endereco.Id != Guid.Empty) { RequisicaoObterDto requisicaoObterCep = new RequisicaoObterDto() { Id = fornecedorDto.Endereco.Id, IdUsuario = requisicaoDto.IdUsuario, Identificacao = requisicaoDto.Identificacao }; RetornoObterDto <CepDto> retornoCepDto = new RetornoObterDto <CepDto>(); CepBll cepBll = new CepBll(true); if (!cepBll.Obter(requisicaoObterCep, ref retornoCepDto)) { retornoDto.Mensagem = "Erro ao obter o endereço: " + mensagemErro; retornoDto.Retorno = false; return(false); } fornecedorDto.Endereco = (retornoCepDto.Entidade == null ? new CepDto() : retornoCepDto.Entidade); } retornoDto.Entidade = fornecedorDto; retornoDto.Retorno = true; retornoDto.Mensagem = "Ok"; return(true); }
/// <summary> /// Obtém um endereço de cliente pelo ID /// </summary> /// <param name="requisicaoDto"></param> /// <param name="retornoDto"></param> /// <returns></returns> public override bool Obter(RequisicaoObterDto requisicaoDto, ref RetornoObterDto <ClienteEnderecoDto> retornoDto) { if (!base.Obter(requisicaoDto, ref retornoDto)) { return(false); } string mensagemErro = ""; ClienteEnderecoVo clienteEnderecoVo; if (!ObterPorIdBd(requisicaoDto.Id, out clienteEnderecoVo, ref mensagemErro)) { retornoDto.Mensagem = "Erro ao obter o endereço do cliente: " + mensagemErro; retornoDto.Retorno = false; logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterClienteEndereco, requisicaoDto.Id, retornoDto.Mensagem); return(false); } ClienteEnderecoDto clienteEnderecoDto = new ClienteEnderecoDto(); if (!ConverterVoParaDto(clienteEnderecoVo, ref clienteEnderecoDto, ref mensagemErro)) { retornoDto.Mensagem = "Erro ao converter o endereço do cliente: " + mensagemErro; retornoDto.Retorno = false; logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterClienteEndereco, requisicaoDto.Id, retornoDto.Mensagem); return(false); } if (clienteEnderecoDto.IdCep != Guid.Empty) { RequisicaoObterDto requisicaoObterCep = new RequisicaoObterDto() { Id = clienteEnderecoDto.IdCep, IdUsuario = requisicaoDto.IdUsuario, Identificacao = requisicaoDto.Identificacao }; RetornoObterDto <CepDto> retornoCepDto = new RetornoObterDto <CepDto>(); CepBll cepBll = new CepBll(true); if (!cepBll.Obter(requisicaoObterCep, ref retornoCepDto)) { retornoDto.Mensagem = $"Erro ao obter o endereço: {retornoCepDto.Mensagem}"; retornoDto.Retorno = false; return(false); } clienteEnderecoDto.Endereco = (retornoCepDto.Entidade == null ? new CepDto() : retornoCepDto.Entidade); } retornoDto.Entidade = clienteEnderecoDto; retornoDto.Mensagem = "Ok"; retornoDto.Retorno = true; return(true); }
/// <summary> /// Obtém um taxaEntrega pelo ID /// </summary> /// <param name="requisicaoDto"></param> /// <param name="retornoDto"></param> /// <returns></returns> public override bool Obter(RequisicaoObterDto requisicaoDto, ref RetornoObterDto <TaxaEntregaDto> retornoDto) { if (!base.Obter(requisicaoDto, ref retornoDto)) { return(false); } string mensagemErro = ""; TaxaEntregaVo taxaEntregaVo; if (!ObterPorIdBd(requisicaoDto.Id, out taxaEntregaVo, ref mensagemErro)) { retornoDto.Mensagem = "Erro ao obter a taxa de entrega: " + mensagemErro; retornoDto.Retorno = false; logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterTaxaEntrega, requisicaoDto.Id, retornoDto.Mensagem); return(false); } TaxaEntregaDto taxaEntregaDto = new TaxaEntregaDto(); if (!ConverterVoParaDto(taxaEntregaVo, ref taxaEntregaDto, ref mensagemErro)) { retornoDto.Mensagem = "Erro ao converter a taxa de entrega: " + mensagemErro; retornoDto.Retorno = false; logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterTaxaEntrega, requisicaoDto.Id, retornoDto.Mensagem); return(false); } CepBll cepBll = new CepBll(false); string cidade = ""; if (!cepBll.ObterCidadePorBairro(requisicaoDto, taxaEntregaDto.BairroCidade, ref cidade, ref mensagemErro)) { retornoDto.Mensagem = "Erro ao obter a cidade que a taxa se refere: " + mensagemErro; retornoDto.Retorno = false; } taxaEntregaDto.Cidade = cidade; retornoDto.Entidade = taxaEntregaDto; retornoDto.Mensagem = "Ok"; retornoDto.Retorno = true; return(true); }
/// <summary> /// Inclui um endereço de cliente no banco de dados /// </summary> /// <param name="requisicaoDto"></param> /// <param name="retornoDto"></param> /// <returns></returns> public override bool Incluir(RequisicaoEntidadeDto <ClienteEnderecoDto> requisicaoDto, ref RetornoDto retornoDto) { // Valida a requisição if (!base.Incluir(requisicaoDto, ref retornoDto)) { return(false); } // Se houver endereço preenchido e ele não existir ainda if (requisicaoDto.EntidadeDto.Endereco.Id == Guid.Empty && !string.IsNullOrWhiteSpace(requisicaoDto.EntidadeDto.Endereco.Cep)) { CepBll cepBll = new CepBll(this.pizzaByteContexto, false); RequisicaoEntidadeDto <CepDto> requisicaoCepDto = new RequisicaoEntidadeDto <CepDto>() { IdUsuario = requisicaoDto.IdUsuario, Identificacao = requisicaoDto.Identificacao, EntidadeDto = requisicaoDto.EntidadeDto.Endereco }; requisicaoCepDto.EntidadeDto.Id = Guid.NewGuid(); // Incluir o endereço if (!cepBll.Incluir(requisicaoCepDto, ref retornoDto)) { // Logado na classe de CEP return(false); } } ClienteEnderecoVo clienteEnderecoVo = new ClienteEnderecoVo(); string mensagemErro = ""; // Converte para VO a ser incluída no banco de dados if (!ConverterDtoParaVo(requisicaoDto.EntidadeDto, ref clienteEnderecoVo, ref mensagemErro)) { retornoDto.Retorno = false; retornoDto.Mensagem = "Falha ao converter o endereço do cliente para VO: " + mensagemErro; logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirClienteEndereco, Guid.Empty, retornoDto.Mensagem); return(false); } // Prepara a inclusão no banco de dados if (!IncluirBd(clienteEnderecoVo, ref mensagemErro)) { retornoDto.Retorno = false; retornoDto.Mensagem = "Falha ao incluir o endereço do cliente no banco de dados: " + mensagemErro; logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirClienteEndereco, Guid.Empty, retornoDto.Mensagem); return(false); } if (salvar) { // Salva as alterações if (!pizzaByteContexto.Salvar(ref mensagemErro)) { retornoDto.Retorno = false; retornoDto.Mensagem = "Erro ao salvar o endereço do cliente: " + mensagemErro; logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirClienteEndereco, Guid.Empty, mensagemErro); return(false); } } retornoDto.Retorno = true; retornoDto.Mensagem = "OK"; return(true); }
/// <summary> /// Obtém uma lista de clienteEnderecoes com filtros aplicados, podendo ser paginada /// </summary> /// <param name="requisicaoDto"></param> /// <param name="retornoDto"></param> /// <returns></returns> public override bool ObterListaFiltrada(RequisicaoObterListaDto requisicaoDto, ref RetornoObterListaDto <ClienteEnderecoDto> retornoDto) { if (!base.ObterListaFiltrada(requisicaoDto, ref retornoDto)) { return(false); } // Obter a query primária string mensagemErro = ""; 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.ObterListaClienteEndereco, Guid.Empty, retornoDto.Mensagem); return(false); } // Aplicar os filtros foreach (var filtro in requisicaoDto.ListaFiltros) { switch (filtro.Key) { case "IDCLIENTE": Guid id; if (!Guid.TryParse(filtro.Value, out id)) { retornoDto.Mensagem = $"Falha ao converter o filtro de 'IdCliente'."; retornoDto.Retorno = false; return(false); } query = query.Where(p => p.IdCliente == id); break; case "IDCEP": Guid idCep; if (!Guid.TryParse(filtro.Value, out idCep)) { retornoDto.Mensagem = $"Falha ao converter o filtro de 'IdCep'."; retornoDto.Retorno = false; return(false); } query = query.Where(p => p.IdCep == idCep); break; case "INATIVO": bool filtroInativo; if (!bool.TryParse(filtro.Value, out filtroInativo)) { retornoDto.Mensagem = $"Fala ao converter o filtro de 'inativo'."; retornoDto.Retorno = false; return(false); } query = query.Where(p => p.Inativo == filtroInativo); break; default: retornoDto.Mensagem = $"O filtro {filtro.Key} não está definido para esta pesquisa."; retornoDto.Retorno = false; logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterListaClienteEndereco, Guid.Empty, retornoDto.Mensagem); return(false); } } requisicaoDto.CampoOrdem = string.IsNullOrWhiteSpace(requisicaoDto.CampoOrdem) ? "" : requisicaoDto.CampoOrdem.ToUpper().Trim(); switch (requisicaoDto.CampoOrdem) { case "IDCLIENTE": query = query.OrderBy(p => p.IdCliente).ThenBy(p => p.IdCep); break; case "IDCEP": query = query.OrderBy(p => p.IdCep).ThenBy(p => p.IdCliente); break; default: query = query.OrderBy(p => p.IdCliente).ThenBy(p => p.IdCep); break; } double totalItens = query.Count(); if (totalItens == 0) { retornoDto.NumeroPaginas = 0; retornoDto.Mensagem = "Nenhum resultado encontrado."; retornoDto.Retorno = true; return(true); } double paginas = totalItens <= requisicaoDto.NumeroItensPorPagina ? 1 : totalItens / requisicaoDto.NumeroItensPorPagina; retornoDto.NumeroPaginas = (int)Math.Ceiling(paginas); int pular = (requisicaoDto.Pagina - 1) * requisicaoDto.NumeroItensPorPagina; query = query.Skip(pular).Take(requisicaoDto.NumeroItensPorPagina); List <ClienteEnderecoVo> listaVo = query.ToList(); List <CepVo> listaCepsVo = new List <CepVo>(); CepBll cepBll = new CepBll(false); if (!cepBll.ObterListaEnderecosPorId(listaVo.Select(p => p.IdCep).ToList(), ref listaCepsVo, ref mensagemErro)) { retornoDto.Mensagem = mensagemErro; retornoDto.Retorno = false; logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterListaClienteEndereco, Guid.Empty, retornoDto.Mensagem); return(false); } foreach (var clienteEndereco in listaVo) { CepVo cepDto = listaCepsVo.Where(p => p.Id == clienteEndereco.IdCep).FirstOrDefault(); ClienteEnderecoDto clienteEnderecoDto = new ClienteEnderecoDto(); if (!ConverterVoParaDto(clienteEndereco, ref clienteEnderecoDto, ref mensagemErro)) { retornoDto.Mensagem = "Erro ao converter para DTO: " + mensagemErro; retornoDto.Retorno = false; logBll.ResgistrarLog(requisicaoDto, LogRecursos.ObterListaClienteEndereco, clienteEndereco.Id, retornoDto.Mensagem); return(false); } //Preencher dados do endereço clienteEnderecoDto.Endereco = new CepDto() { Bairro = cepDto == null ? "" : cepDto.Bairro, Cep = cepDto == null ? "" : cepDto.Cep, Cidade = cepDto == null ? "" : cepDto.Cidade, Logradouro = cepDto == null ? "" : cepDto.Logradouro, Id = cepDto == null ? Guid.Empty : cepDto.Id }; retornoDto.ListaEntidades.Add(clienteEnderecoDto); } retornoDto.Mensagem = "Ok"; retornoDto.Retorno = true; return(true); }
/// <summary> /// Edita um endereço de cliente /// </summary> /// <param name="requisicaoDto"></param> /// <param name="retornoDto"></param> /// <returns></returns> public override bool Editar(RequisicaoEntidadeDto <ClienteEnderecoDto> requisicaoDto, ref RetornoDto retornoDto) { if (!base.Editar(requisicaoDto, ref retornoDto)) { return(false); } ClienteEnderecoVo clienteEnderecoVo = new ClienteEnderecoVo(); string mensagemErro = ""; // Obtém o endereço if (!ObterPorIdBd(requisicaoDto.EntidadeDto.Id, out clienteEnderecoVo, ref mensagemErro)) { retornoDto.Mensagem = "Problemas para encontrar o endereço do cliente: " + mensagemErro; retornoDto.Retorno = false; logBll.ResgistrarLog(requisicaoDto, LogRecursos.EditarClienteEndereco, requisicaoDto.EntidadeDto.Id, retornoDto.Mensagem); return(false); } // Se houver endereço preenchido e ele não existir ainda if (requisicaoDto.EntidadeDto.Endereco.Id == Guid.Empty && !string.IsNullOrWhiteSpace(requisicaoDto.EntidadeDto.Endereco.Cep)) { requisicaoDto.EntidadeDto.Endereco.Id = Guid.NewGuid(); CepBll cepBll = new CepBll(this.pizzaByteContexto, false); RequisicaoEntidadeDto <CepDto> requisicaoCepDto = new RequisicaoEntidadeDto <CepDto>() { IdUsuario = requisicaoDto.IdUsuario, Identificacao = requisicaoDto.Identificacao, EntidadeDto = requisicaoDto.EntidadeDto.Endereco }; // Incluir o endereço if (!cepBll.Incluir(requisicaoCepDto, ref retornoDto)) { // Logado na BLL de CEP return(false); } } if (!ConverterDtoParaVo(requisicaoDto.EntidadeDto, ref clienteEnderecoVo, ref mensagemErro)) { retornoDto.Mensagem = "Problemas ao converter o endereço do cliente para Vo: " + mensagemErro; retornoDto.Retorno = false; logBll.ResgistrarLog(requisicaoDto, LogRecursos.EditarClienteEndereco, requisicaoDto.EntidadeDto.Id, retornoDto.Mensagem); return(false); } if (!EditarBd(clienteEnderecoVo, ref mensagemErro)) { retornoDto.Retorno = false; retornoDto.Mensagem = "Falha ao editar os novos dados do clienteEndereco: " + mensagemErro; logBll.ResgistrarLog(requisicaoDto, LogRecursos.EditarClienteEndereco, requisicaoDto.EntidadeDto.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.EditarClienteEndereco, requisicaoDto.EntidadeDto.Id, retornoDto.Mensagem); return(false); } } retornoDto.Retorno = true; retornoDto.Mensagem = "OK"; return(true); }
/// <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); }
/// <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); }