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