コード例 #1
0
        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));
            }
        }