// // Copyright (c) Smart Energia. All rights reserved. // namespace Download_Faturas { using System.Data.OleDb; using System.Globalization; using System.Net.Http.Headers; using System.Text; using System.Text.Json; using System.Text.RegularExpressions; /// /// Main program class for processing invoices. /// public class Program { #if DEBUG /// /// Path to the log file for invoices. /// public const string LogFaturas = @"X:\Back\Carteira x.x\4Docs\import.txt"; /// /// Path to the secondary log file for invoices. /// public const string LogFaturas2 = @"X:\Back\Carteira x.x\4Docs\import2.txt"; #else public const String LogFaturas = "import.txt"; public const String LogFaturas2 = "import2.txt"; #endif /// /// Path to the database file. /// public const string CaminhoDB = "X:/Middle/Informativo Setorial/Modelo Word/BD1_dados cadastrais e faturas.accdb"; private static readonly HttpClient HttpClient = new (); private static readonly StreamReader Sr = new (LogFaturas); private static readonly StreamWriter Sw = new (LogFaturas2); private static string? fatura; /// /// Main entry point of the program. /// public static void Main() { // Abre a conexao com o banco de dados using (OleDbConnection conn = new (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + CaminhoDB + ";Jet OLEDB:Database Password=gds21")) { conn.Open(); // Loop entre as faturas pendentes while ((fatura = Sr.ReadLine()) != null) { string fatura_ID = fatura.Split(",")[0]; string fatura_status = fatura.Split(",")[1]; string fatura_arquivo = fatura.Split(",")[2]; // Verifica se a fatura foi processada e atualiza os valores para banco de dados if (fatura_status == "DELAYED" | fatura_status == "MULTACTIONABLE" | fatura_status == "ACTIONABLE" | fatura_status == string.Empty | fatura_status == "UNIDADE CONSUMIDORA NÃO LOCALIZADA NO BD" | fatura_status == "PREPROCESS") { if (fatura_status == "UNIDADE CONSUMIDORA NÃO LOCALIZADA NO BD" && !File.Exists(fatura_arquivo)) { Sw.WriteLine(fatura_ID + "," + "ARQUIVO NÃO LOCALIZADO" + "," + fatura_arquivo); Console.WriteLine(fatura_ID + "," + "ARQUIVO NÃO LOCALIZADO" + "," + fatura_arquivo); } else { // Verifica se a fatura foi processada e atualiza os valores para o banco de dados Fatura fatura = new (fatura_ID, fatura_arquivo, HttpClient); if (fatura.Status == "SUCCESS" & !fatura.Agrupada) { fatura.Processar(conn); try { fatura.Mover(separar: false); Sw.WriteLine(fatura_ID + "," + fatura.Status + "," + fatura.Arquivo); Console.WriteLine(fatura_ID + "," + fatura.Status + "," + fatura.Arquivo); } catch (FileNotFoundException) { Sw.WriteLine(fatura_ID + "," + "ARQUIVO NÃO LOCALIZADO" + "," + fatura.Arquivo); Console.WriteLine(fatura_ID + "," + "ARQUIVO NÃO LOCALIZADO" + "," + fatura.Arquivo); } } else if (fatura.Status == "SUCCESS" & fatura.Agrupada) { foreach (JsonElement individual_ID in fatura.Agrupada_children) { Fatura faturaIndividual = new (individual_ID.ToString(), fatura_arquivo, HttpClient); if (faturaIndividual.Status == "SUCCESS") { faturaIndividual.Processar(conn); try { faturaIndividual.Mover(separar: true); Sw.WriteLine(individual_ID.ToString() + "," + faturaIndividual.Status + "," + faturaIndividual.Arquivo); Console.WriteLine(individual_ID.ToString() + "," + faturaIndividual.Status + "," + faturaIndividual.Arquivo); } catch (FileNotFoundException) { Sw.WriteLine(individual_ID.ToString() + "," + "ARQUIVO NÃO LOCALIZADO" + "," + faturaIndividual.Arquivo); Console.WriteLine(individual_ID.ToString() + "," + "ARQUIVO NÃO LOCALIZADO" + "," + faturaIndividual.Arquivo); } } else { try { faturaIndividual.Mover(separar: true); Sw.WriteLine(individual_ID.ToString() + "," + faturaIndividual.Status + "," + faturaIndividual.Arquivo); Console.WriteLine(individual_ID.ToString() + "," + faturaIndividual.Status + "," + faturaIndividual.Arquivo); } catch (FileNotFoundException) { Sw.WriteLine(individual_ID.ToString() + "," + "ARQUIVO NÃO LOCALIZADO" + "," + faturaIndividual.Arquivo); Console.WriteLine(individual_ID.ToString() + "," + "ARQUIVO NÃO LOCALIZADO" + "," + faturaIndividual.Arquivo); } } } fatura.Arquivo!.Delete(); } else if (fatura.Status == "INVALID") { try { fatura.Mover(separar: false); } catch (FileNotFoundException) { Sw.WriteLine(fatura_ID + "," + "ARQUIVO NÃO LOCALIZADO" + "," + fatura.Arquivo); Console.WriteLine(fatura_ID + "," + "ARQUIVO NÃO LOCALIZADO" + "," + fatura.Arquivo); } } else { Sw.WriteLine(fatura_ID + "," + fatura.Status + "," + fatura_arquivo); Console.WriteLine(fatura_ID + "," + fatura.Status + "," + fatura_arquivo); } } } else { Sw.WriteLine(fatura); Console.WriteLine(fatura); } } Sr.Close(); Sw.Close(); File.Move(LogFaturas2, LogFaturas, true); } } } }