public ActionResult Editar([FromHeader] string ibge, [FromBody] Ciclo model, [FromRoute] int?id) { try { ibge = _config.GetConnectionString(Connection.GetConnection(ibge)); //valida se existe ciclo com o mesmo período var itens = _repository.ValidaExistenciaCicloPeriodo(ibge, model.data_inicial, model.data_final); if (itens.Count > 0) { return(BadRequest(TrataErro.GetResponse("Já existe um ciclo vigente no período informado.", true))); } var countvisitas = _repository.CountVisitasCiclo(ibge, (int)id, model.data_inicial, model.data_inicial); if (countvisitas > 0) { var datainicial = _repository.GetDataMaximaCiclo(ibge, (int)id); var datafinal = _repository.GetDataMinimaCiclo(ibge, (int)id); return(BadRequest(TrataErro.GetResponseCicloEdit($"As datas possíveis para o ciclo são entre {datainicial?.ToString("dd/MM/yyyy")} e {datafinal?.ToString("dd/MM/yyyy")}, pois já existem visitas entre essas datas.", true, datainicial, datafinal))); } model.id = id; _repository.Update(ibge, model); var principal = HttpContext.User; int?id_usuario = null; if (principal?.Identities?.FirstOrDefault().Claims != null) { id_usuario = Convert.ToInt32(principal?.Identities?.FirstOrDefault().Claims.FirstOrDefault()?.Value); } //insere log var ciclolog = new CicloLog { id_ciclo = model.id, situacao = model.situacao, id_usuario = id_usuario }; _repository.InserirLogCiclo(ibge, ciclolog); return(Ok(model)); } catch (Exception ex) { var response = TrataErro.GetResponse(ex.Message, true); return(StatusCode((int)HttpStatusCode.InternalServerError, response)); } }