Example #1
0
        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);
        }
Example #2
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);
            }
        }