Esempio n. 1
0
        public ActionResult <Ceps> CreateOrUpdate([FromQuery(Name = "cep")] string cep)
        {
            var tokenApi = _config["APICEP:Token"];

            cep = cep.Replace("-", "").Replace(".", "");
            var client  = new RestClient("https://www.cepaberto.com/api/v3/");
            var request = new RestRequest($"cep?cep={cep}");

            request.AddHeader("Authorization", $"Token token={tokenApi}");

            var     response = client.Get(request).Content;
            JObject json     = JObject.Parse(response);

            if (response == "{}")
            {
                return(NotFound("CEP inexistente."));
            }

            var cidadeApi     = json["cidade"]["nome"].ToString();
            var cepApi        = Convert.ToInt64(json["cep"].ToString());
            var logadrouroApi = json["logradouro"].ToString();
            var bairroApi     = json["bairro"].ToString();
            var estadoApi     = json["estado"]["sigla"].ToString();

            var cepFind = Get(cep).Value;

            if (cepFind == null)
            {
                var cepCreated = new Ceps()
                {
                    Bairro     = bairroApi,
                    Cep        = cepApi,
                    Cidade     = cidadeApi,
                    Logradouro = logadrouroApi,
                    Estado     = estadoApi,
                };
                var created = _cepService.Create(cepCreated);
                return(created);
            }
            else
            {
                if (cepFind.Bairro != bairroApi || cepFind.Logradouro != logadrouroApi || cepFind.Cidade != cidadeApi || cepFind.Estado != estadoApi)
                {
                    cepFind.Bairro     = bairroApi;
                    cepFind.Logradouro = logadrouroApi;
                    cepFind.Cidade     = cidadeApi;
                    cepFind.Estado     = estadoApi;
                    Update(cep, cepFind);
                }
            }

            return(cepFind);
        }
Esempio n. 2
0
        public ActionResult <Cep> Create(string numeroCep)
        {
            try
            {
                var cep = _cepService.Get(long.Parse(numeroCep));

                if (cep == null)
                {
                    if (_cepAbertoService == null)
                    {
                        _cepAbertoService = new();
                    }

                    var jDadosCep = _cepAbertoService.ObterCep(numeroCep);

                    if (!jDadosCep.HasValues)
                    {
                        return(BadRequest(new { StatusCode = "400 Bad Request", Error = $"Não foi possível criar o cep {numeroCep}. Erro: Cep não existe na base da API CepAberto." }));
                    }

                    cep = new Cep()
                    {
                        Numero     = jDadosCep["cep"].Value <long>(),
                        Logradouro = jDadosCep["logradouro"].Value <string>(),
                        Bairro     = jDadosCep["bairro"].Value <string>(),
                        Cidade     = jDadosCep["cidade"]["nome"].Value <string>(),
                        Estado     = jDadosCep["estado"]["sigla"].Value <string>()
                    };

                    _cepService.Create(cep);

                    return(Created(string.Empty, cep));
                }
                else
                {
                    return(Accepted(new { StatusCode = "202 Accepted", Message = $"O cep {numeroCep} já existe na base." }));
                }
            }
            catch (Exception e)
            {
                return(UnprocessableEntity(new { StatusCode = "422 Unprocessable Entity", Error = e.Message }));
            }
        }