From a870debbc334a430ff8d5b5e21668d3e70f11e5b Mon Sep 17 00:00:00 2001 From: Giuliano Paschoalino Date: Fri, 22 Aug 2025 15:15:02 -0300 Subject: [PATCH] =?UTF-8?q?Simplifica=C3=A7=C3=A3o=20de=20l=C3=B3gica=20e?= =?UTF-8?q?=20remo=C3=A7=C3=A3o=20de=20tratamento=20de=20erros?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Ajustada a obtenção de `documentType` para evitar null reference. - Removida a variável `test` e simplificado o fluxo de controle. - Eliminado o método `InsertErrorIdStatusAsync` e sua lógica. - Mantido o método `UpdateErrorIdStatusAsync` com chamada direta. - Adicionado comentário sobre futura implementação de faturas via API. - Melhorada a clareza do código, mas com impacto no tratamento de erros. --- Webhook 4docs/Program.cs | 104 ++------------------------------------- 1 file changed, 3 insertions(+), 101 deletions(-) diff --git a/Webhook 4docs/Program.cs b/Webhook 4docs/Program.cs index 607e44b..6033fe4 100644 --- a/Webhook 4docs/Program.cs +++ b/Webhook 4docs/Program.cs @@ -118,7 +118,7 @@ namespace Webhook_4docs JsonElement DadosJson = JsonDocument.Parse(root.ToString()).RootElement; - string tipoDocumento = root.Get("documentType").ToString().ToLower(); + string tipoDocumento = root.Get("documentType").ToString() ?? string.Empty.ToLower(); if (tipoDocumento != string.Empty && tipoDocumento != "nota_fiscal") { @@ -248,14 +248,11 @@ namespace Webhook_4docs break; } - int test = await UpdateErrorIdStatusAsync(CaminhoDB, JsonBody.GetProperty("locationID").GetInt64(), errorID, (JsonBody.GetProperty("systemText").ToString() == "" ? JsonBody.GetProperty("websiteText").ToString() : JsonBody.GetProperty("systemText").ToString()), logger); + await UpdateErrorIdStatusAsync(CaminhoDB, JsonBody.GetProperty("locationID").GetInt64(), errorID, (JsonBody.GetProperty("systemText").ToString() == "" ? JsonBody.GetProperty("websiteText").ToString() : JsonBody.GetProperty("systemText").ToString()), logger); - if (test == 0) - { - await InsertErrorIdStatusAsync(CaminhoDB, errorID, requestBody, logger); - } } }); + //implementação futura para receber as faturas enviadas via api de forma assíncrona - Upload4Docs (substituir parte do agendador de tarefas) endpoints.MapPut("/api", async context => { var a = 10; @@ -263,101 +260,6 @@ namespace Webhook_4docs }); app.Run(); } - public static async Task InsertErrorIdStatusAsync(string CaminhoDB, double errorID, string requestBody, ILogger logger) - { - var JsonBody = JsonDocument.Parse(requestBody).RootElement; - - // Extração dos valores do JSON - double locationID = JsonBody.GetProperty("locationID").GetInt64(); - string accountID = JsonBody.GetProperty("accountID").ToString(); - string deliveryTimeStamp = JsonBody.GetProperty("deliveryTimestamp").ToString(); - string provider = JsonBody.GetProperty("provider").ToString(); - string accessPoint = JsonBody.GetProperty("accessPoint").ToString(); - string slaStatus = JsonBody.GetProperty("slaStatus").ToString(); - string healthy = JsonBody.GetProperty("healthy").ToString(); - string blame = JsonBody.GetProperty("blame").ToString(); - string lastSuccess = JsonBody.GetProperty("lastSuccess").ToString(); - string active = JsonBody.GetProperty("active").ToString(); - string blacklistStatus = JsonBody.GetProperty("blacklistStatus").ToString(); - string lastActivated = JsonBody.GetProperty("lastActivated").ToString(); - string lastDeactivated = JsonBody.GetProperty("lastDeactivated").ToString(); - string lastDeactivatedBy = JsonBody.GetProperty("lastDeactivatedBy").ToString(); - - int maxRetries = 3; - int attempt = 0; - - while (attempt < maxRetries) - { - var connLease = await connRateLimiter.AcquireAsync(); - - if (connLease.IsAcquired) - { - try - { - using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + CaminhoDB + ";Jet OLEDB:Database Password=gds21")) - { - await conn.OpenAsync(); - - using (OleDbCommand cmd = new OleDbCommand( - @"INSERT INTO AgVirtual4DocsErros ( - locationID, accountID, errorID, deliveryTimeStamp, provider, accessPoint, slaStatus, - healthy, blame, lastSuccess, active, blacklistStatus, lastActivated, lastDeactivated, lastDeactivatedBy - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", conn)) - { - // Adiciona parâmetros de forma segura - cmd.Parameters.AddWithValue("@locationID", locationID); - cmd.Parameters.AddWithValue("@accountID", accountID); - cmd.Parameters.AddWithValue("@errorID", errorID); - cmd.Parameters.AddWithValue("@deliveryTimeStamp", deliveryTimeStamp); - cmd.Parameters.AddWithValue("@provider", provider); - cmd.Parameters.AddWithValue("@accessPoint", accessPoint); - cmd.Parameters.AddWithValue("@slaStatus", slaStatus); - cmd.Parameters.AddWithValue("@healthy", healthy); - cmd.Parameters.AddWithValue("@blame", blame); - cmd.Parameters.AddWithValue("@lastSuccess", lastSuccess); - cmd.Parameters.AddWithValue("@active", active); - cmd.Parameters.AddWithValue("@blacklistStatus", blacklistStatus); - cmd.Parameters.AddWithValue("@lastActivated", lastActivated); - cmd.Parameters.AddWithValue("@lastDeactivated", lastDeactivated); - cmd.Parameters.AddWithValue("@lastDeactivatedBy", lastDeactivatedBy); - - // Executa o comando - await cmd.ExecuteNonQueryAsync(); - } - } - - break; // Sai do loop em caso de sucesso - } - catch (OleDbException ex) - { - // Registra o erro - logger.LogInformation($"Erro no OleDb insert: {ex.Message} (Tentativa {attempt + 1} de {maxRetries})"); - - if (attempt < maxRetries - 1) - { - // Aguarda antes de tentar novamente - await Task.Delay(1000 * (int)Math.Pow(2, attempt)); // Retry com Backoff Exponencial - } - else - { - // Propaga a exceção na última tentativa - throw; - } - } - finally - { - connLease.Dispose(); - } - - attempt++; // Incrementa a tentativa após adquirir o lease, mesmo que falhe - } - else - { - // Aguarda um curto período antes de tentar novamente se não conseguiu adquirir o lease - await Task.Delay(200); - } - } - } public static async Task UpdateErrorIdStatusAsync(string CaminhoDB, double location_id, double errorID, string systemText, ILogger logger) { int test = 0;