public async Task <IActionResult> Post([FromBody][Required] NormaMessageModel normaMessageModel) { try { var resultado = await _normaRepository.PersistirNorma(normaMessageModel); if (resultado) { return(Ok()); } return(Accepted(false)); } catch (Exception ex) { _logger.LogError(ex.Message); return(BadRequest(ex.Message)); } }
public async Task <bool> PersistirNorma(NormaMessageModel normaMessageModel) { var conexao = GetConnection(); using var con = new SqlConnection(conexao); { try { con.Open(); //verifica se existe norma cadastrada var normaSegurancaQAModel = await con.QueryAsync <NormaSegurancaQAModel>( "SELECT * FROM Norma WHERE Codigo = @Codigo", new { normaMessageModel.Codigo }); var parametros = new DynamicParameters(); var cmd = string.Empty; if (normaMessageModel.Operacao == (byte)EOperacao.Inserir || normaMessageModel.Operacao == (byte)EOperacao.Alterar) { if (normaSegurancaQAModel.Any()) { var registroNormaSegurancaQAModel = normaSegurancaQAModel.FirstOrDefault(); parametros.Add("Id", registroNormaSegurancaQAModel.Id); parametros.Add("Codigo", registroNormaSegurancaQAModel.Codigo); parametros.Add("Descricao", normaMessageModel.Descricao); parametros.Add("Area", normaMessageModel.Area); parametros.Add("IntegradoEm", DateTime.Now); parametros.Add("Integracao", $"Id Origem: {normaMessageModel.Id} - Operação: alteração"); cmd = @"UPDATE Norma SET Codigo = @Codigo, Descricao = @Descricao, Area = @Area, IntegradoEm = @IntegradoEm, Integracao = @Integracao WHERE Id = @Id"; } else { parametros.Add("Codigo", normaMessageModel.Codigo); parametros.Add("Descricao", normaMessageModel.Descricao); parametros.Add("Area", normaMessageModel.Area); parametros.Add("Status", true, DbType.Boolean); parametros.Add("IntegradoEm", DateTime.Now); parametros.Add("Integracao", $"Id Origem: {normaMessageModel.Id} - Operação: inclusão"); cmd = @"INSERT INTO Norma (Codigo, Descricao, Area, Status, IntegradoEm, Integracao) VALUES (@Codigo, @Descricao, @Area, @Status, @IntegradoEm, @Integracao)"; } } else if (normaMessageModel.Operacao == (byte)EOperacao.AtivarInativar) { if (normaSegurancaQAModel.Any()) { var registroNormaSegurancaQAModel = normaSegurancaQAModel.FirstOrDefault(); parametros.Add("Id", registroNormaSegurancaQAModel.Id); parametros.Add("Status", normaMessageModel.Status, DbType.Boolean); parametros.Add("IntegradoEm", DateTime.Now); parametros.Add("Integracao", $"Id Origem: {normaMessageModel.Id} - Operação: {(normaMessageModel.Status ? "ativação" : "inativação")}"); cmd = @"UPDATE Norma SET Status = @Status, IntegradoEm = @IntegradoEm, Integracao = @Integracao WHERE Id = @Id"; } else { throw new Exception("Não foi possível ativar/inativar uma norma inexistente"); } } await con.ExecuteAsync(cmd, parametros); return(true); } catch (Exception ex) { throw ex; } finally { con.Close(); } } }