public string ObterPorCep(string cep) { RequisicaoObterCepPorCepDto requisicaoDto = new RequisicaoObterCepPorCepDto() { Cep = cep, IdUsuario = SessaoUsuario.SessaoLogin.IdUsuario, Identificacao = SessaoUsuario.SessaoLogin.Identificacao }; CepBll cepBll = new CepBll(true); RetornoObterDto <CepDto> retornoDto = new RetornoObterDto <CepDto>(); cepBll.ObterPorCep(requisicaoDto, ref retornoDto); // Se não encontrar nada no banco, pesquisar online if (retornoDto.Entidade == null) { HttpClient client = new HttpClient() { BaseAddress = new Uri("https://viacep.com.br/ws/") }; client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = client.GetAsync($"{cep}/json").Result; if (response.IsSuccessStatusCode) { try { retornoDto.Entidade = response.Content.ReadAsAsync <CepDto>().Result; if (string.IsNullOrWhiteSpace(retornoDto.Entidade.Logradouro)) { retornoDto.Entidade = null; } else { // Compatibilizar os campos retornoDto.Entidade.Cidade = retornoDto.Entidade.Localidade; } } catch (Exception) { retornoDto.Entidade = null; } } } string retorno = new JavaScriptSerializer().Serialize(retornoDto); return(retorno); }
/// <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); } }