diff --git a/Webhook 4docs/Program.cs b/Webhook 4docs/Program.cs index 6033fe4..b4e704e 100644 --- a/Webhook 4docs/Program.cs +++ b/Webhook 4docs/Program.cs @@ -169,7 +169,7 @@ namespace Webhook_4docs case ("FATURA DUPLICADA NO BD"): status_id = 4; break; - case ("UNIDADE CONSUMIDORA NÃO LOCALIZADA NO BD"): + case ("UNIDADE CONSUMIDORA N�O LOCALIZADA NO BD"): status_id = 5; break; case ("FATURA INCLUIDA NO BD"): @@ -191,7 +191,7 @@ namespace Webhook_4docs if (status_id != 4) { - fatura_arquivo = IndexedFilename($@"{path}\ID {fatura_ID!} - Mês {fatura.Mes} - Empresa {fatura.Empresa} - Unidade {fatura.Unidade}", "pdf"); + fatura_arquivo = IndexedFilename($@"{path}\ID {fatura_ID!} - M�s {fatura.Mes} - Empresa {fatura.Empresa} - Unidade {fatura.Unidade}", "pdf"); CriarArquivo(fatura_arquivo, JsonBody.GetProperty("pdfFile").ToString()); var DatabaseModel = new ProcessedInvoices @@ -202,7 +202,7 @@ namespace Webhook_4docs InvoicePath = fatura_arquivo }; - logger.LogInformation("Fatura incluída no BD"); + logger.LogInformation("Fatura inclu�da no BD"); logger.LogInformation("Fatura salva na pasta " + fatura_arquivo); @@ -244,15 +244,16 @@ namespace Webhook_4docs errorID = 3; break; case (true, _): - //logger.LogInformation("Loc ID: " + JsonBody.GetProperty("locationID").ToString() + " está saudável"); + //logger.LogInformation("Loc ID: " + JsonBody.GetProperty("locationID").ToString() + " est� saud�vel"); break; } - await UpdateErrorIdStatusAsync(CaminhoDB, JsonBody.GetProperty("locationID").GetInt64(), errorID, (JsonBody.GetProperty("systemText").ToString() == "" ? JsonBody.GetProperty("websiteText").ToString() : JsonBody.GetProperty("systemText").ToString()), logger); + var errorText = GetErrorText(JsonBody); + await UpdateErrorIdStatusAsync(CaminhoDB, JsonBody.GetProperty("locationID").GetInt64(), errorID, errorText, logger); } }); - //implementação futura para receber as faturas enviadas via api de forma assíncrona - Upload4Docs (substituir parte do agendador de tarefas) + //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; @@ -260,6 +261,30 @@ namespace Webhook_4docs }); app.Run(); } + //tenta pegar o deactivationReport, se não conseguir ou for null, tenta pegar o websiteText, se não conseguir ou for null, tenta pegar o systemText. As propriedades podem não exisir + public static string GetErrorText(JsonElement root) + { + string errorText = string.Empty; + + if (root.TryGetProperty("deactivationReport", out JsonElement deactivationReportElement) && deactivationReportElement.ValueKind != JsonValueKind.Null) + { + errorText = deactivationReportElement.ToString(); + } + else if (root.TryGetProperty("websiteText", out JsonElement websiteTextElement) && websiteTextElement.ValueKind != JsonValueKind.Null) + { + errorText = websiteTextElement.ToString(); + } + else if (root.TryGetProperty("systemText", out JsonElement systemTextElement) && systemTextElement.ValueKind != JsonValueKind.Null) + { + errorText = systemTextElement.ToString(); + } + else + { + errorText = "Erro desconhecido"; + } + + return errorText; + } public static async Task UpdateErrorIdStatusAsync(string CaminhoDB, double location_id, double errorID, string systemText, ILogger logger) { int test = 0; @@ -283,7 +308,7 @@ namespace Webhook_4docs SET errorID = @errorID, status = @status WHERE location_id = @location_id", conn)) { - // Adiciona parâmetros de forma segura + // Adiciona par�metros de forma segura cmd.Parameters.AddWithValue("@errorID", errorID); cmd.Parameters.AddWithValue("@status", systemText); cmd.Parameters.AddWithValue("@location_id", location_id); @@ -307,7 +332,7 @@ namespace Webhook_4docs } else { - // Propaga a exceção na última tentativa + // Propaga a exce��o na �ltima tentativa throw; } } @@ -316,11 +341,11 @@ namespace Webhook_4docs connLease.Dispose(); } - attempt++; // Incrementa a tentativa após adquirir o lease, mesmo que falhe + 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 + // Aguarda um curto per�odo antes de tentar novamente se n�o conseguiu adquirir o lease await Task.Delay(200); } }