コード例 #1
0
        //public static void ConverterXmlParaCsvDespesasCamara(string tempPath)
        //{
        //	string[] ColunasXmlDespesasCamara = new string[]
        //   {
        //	"txNomeParlamentar",
        //	"ideCadastro",
        //	"nuCarteiraParlamentar",
        //	"nuLegislatura",
        //	"sgUF",
        //	"sgPartido",
        //	"codLegislatura",
        //	"numSubCota",
        //	"txtDescricao",
        //	"numEspecificacaoSubCota",
        //	"txtDescricaoEspecificacao",
        //	"txtFornecedor",
        //	"txtCNPJCPF",
        //	"txtNumero",
        //	"indTipoDocumento",
        //	"datEmissao",
        //	"vlrDocumento",
        //	"vlrGlosa",
        //	"vlrLiquido",
        //	"numMes",
        //	"numAno",
        //	"numParcela",
        //	"txtPassageiro",
        //	"txtTrecho",
        //	"numLote",
        //	"numRessarcimento",
        //	"ideDocumento",
        //	"vlrRestituicao",
        //	"nuDeputadoId"
        //   };

        //	string fullFileNameXml = tempPath + @"\AnoAtual.xml";
        //	StreamReader stream = null;

        //	try
        //	{
        //		if (fullFileNameXml.EndsWith("AnoAnterior.xml"))
        //			stream = new StreamReader(fullFileNameXml, Encoding.GetEncoding(850)); //"ISO-8859-1"
        //		else
        //			stream = new StreamReader(fullFileNameXml, Encoding.GetEncoding("ISO-8859-1"));

        //		using (XmlReader reader = XmlReader.Create(stream, new XmlReaderSettings() { IgnoreComments = true }))
        //		{
        //			reader.ReadToDescendant("DESPESAS");
        //			reader.ReadToDescendant("DESPESA");

        //			using (StreamWriter outputFile = new StreamWriter(fullFileNameXml.Replace(".xml", ".csv")))
        //			{
        //				do
        //				{
        //					var lstCsv = new List<string>();
        //					var strXmlNodeDespeza = reader.ReadOuterXml();
        //					if (string.IsNullOrEmpty(strXmlNodeDespeza))
        //						break;

        //					XmlDocument doc = new XmlDocument();
        //					doc.LoadXml(strXmlNodeDespeza);
        //					XmlNodeList files = doc.DocumentElement.SelectNodes("*");

        //					int indexXml = 0;
        //					for (int i = 0; i < 29; i++)
        //					{
        //						if (files[indexXml].Name == ColunasXmlDespesasCamara[i])
        //						{
        //							lstCsv.Add(files[indexXml++].InnerText);
        //						}
        //						else
        //						{
        //							lstCsv.Add("");
        //						}

        //					}

        //					outputFile.WriteLine(string.Join(";", lstCsv));
        //				}
        //				while (true);
        //			}

        //			reader.Close();
        //		}
        //	}
        //	catch (Exception)
        //	{
        //		throw;
        //	}
        //	finally
        //	{
        //		stream.Close();
        //		stream.Dispose();
        //	}
        //}

        public static void Main(string[] args)
        {
            Padrao.ConnectionString = ConfigurationManager.ConnectionStrings["AuditoriaContext"].ToString();

            var tempPath = @"C:\GitHub\operacao-politica-supervisionada\OPS\temp";

            //ConverterXmlParaCsvDespesasCamara(tempPath);

            #region Camara
            //Camara.AtualizaInfoDeputados();
            //Camara.AtualizaInfoDeputadosCompleto();

            //Camara.ImportarMandatos();
            //Camara.DownloadFotosDeputados(@"C:\GitHub\operacao-politica-supervisionada\OPS\Content\images\Parlamentares\DEPFEDERAL\");

            //Importação na nova estrutura
            //for (int ano = 2009; ano <= 2017; ano++)
            //{
            //	Camara.ImportarDespesas(tempPath, ano, true);
            //}
            //Camara.ImportarDespesas(tempPath, 2017, false);
            Camara.ImportarDespesasXml(tempPath);
            //Camara.AtualizaDeputadoValores();
            Camara.ImportaPresencasDeputados();

            //Camara.ValidarLinkRecibos();
            #endregion Camara

            #region Senado
            //Senado.CarregaSenadores();
            //Senado.DownloadFotosSenadores(@"C:\GitHub\operacao-politica-supervisionada\OPS\Content\images\Parlamentares\SENADOR\");

            //for (int ano = 2008; ano <= 2017; ano++)
            //{
            //   Senado.ImportarDespesas(tempPath, ano, true);
            //}
            Senado.ImportarDespesas(tempPath, 2017, false);
            #endregion Senado

            Fornecedor.ConsultarReceitaWS();

            //Fornecedor.AtualizaFornecedorDoador();
            //Fornecedor.ConsultarCNPJ();
        }
コード例 #2
0
        private static async Task ImportacaoDadosCompleto(IConfiguration configuration)
        {
            var rootPath              = configuration["AppSettings:SiteRootFolder"];
            var tempPath              = System.IO.Path.Combine(rootPath, "static/temp");
            var sDeputadosImagesPath  = System.IO.Path.Combine(rootPath, "static/img/depfederal/");
            var sSenadoressImagesPath = System.IO.Path.Combine(rootPath, "static/img/senador/");

            try
            {
                var       sb = new StringBuilder();
                TimeSpan  t;
                Stopwatch sw      = Stopwatch.StartNew();
                Stopwatch swGeral = Stopwatch.StartNew();
                new Core.DAO.ParametrosDao().CarregarPadroes();
                var inicioImportacao = DateTime.UtcNow.AddHours(-3).ToString("dd/MM/yyyy HH:mm");

                sb.Append("<strong>-- Importar Deputados :: @duracao --</strong>");
                sw.Restart();
                try
                {
                    sb.Append(Camara.ImportarDeputados());
                }
                catch (Exception ex)
                {
                    sb.Append(ex.ToFullDescriptionString());
                }
                t  = sw.Elapsed;
                sb = sb.Replace("@duracao", string.Format("{0:D2}h:{1:D2}m:{2:D2}s", t.Hours, t.Minutes, t.Seconds));

                sb.Append("<strong>-- Importar Fotos Deputados :: @duracao --</strong>");
                sw.Restart();
                try
                {
                    sb.Append(Camara.DownloadFotosDeputados(sDeputadosImagesPath));
                }
                catch (Exception ex)
                {
                    sb.Append(ex.ToFullDescriptionString());
                }
                t  = sw.Elapsed;
                sb = sb.Replace("@duracao", string.Format("{0:D2}h:{1:D2}m:{2:D2}s", t.Hours, t.Minutes, t.Seconds));

                sb.AppendFormat("<strong>-- Importar Despesas Deputados {0} :: @duracao --</strong>", DateTime.Now.Year - 1);
                //sb.AppendFormat("<p>" + DateTime.UtcNow.ToString("dd/MM/yyyy HH:mm") + "</p>");
                sw.Restart();
                try
                {
                    sb.Append(Camara.ImportarDespesasXml(tempPath, DateTime.Now.Year - 1));
                }
                catch (Exception ex)
                {
                    sb.Append(ex.ToFullDescriptionString() + ex.GetBaseException().StackTrace);
                }
                t  = sw.Elapsed;
                sb = sb.Replace("@duracao", string.Format("{0:D2}h:{1:D2}m:{2:D2}s", t.Hours, t.Minutes, t.Seconds));

                sb.AppendFormat("<strong>-- Importar Despesas Deputados {0} :: @duracao --</strong>", DateTime.Now.Year);
                //sb.AppendFormat("<p>" + DateTime.UtcNow.ToString("dd/MM/yyyy HH:mm") + "</p>");
                sw.Restart();
                try
                {
                    sb.Append(Camara.ImportarDespesasXml(tempPath, DateTime.Now.Year));
                }
                catch (Exception ex)
                {
                    sb.Append(ex.ToFullDescriptionString());
                }
                t  = sw.Elapsed;
                sb = sb.Replace("@duracao", string.Format("{0:D2}h:{1:D2}m:{2:D2}s", t.Hours, t.Minutes, t.Seconds));

                sb.Append("<strong>-- Importar Presenças Deputados :: @duracao --</strong>");
                //sw.Restart();
                //try
                //{
                //    sb.Append(Camara.ImportaPresencasDeputados());
                //}
                //catch (Exception ex)
                //{
                //    sb.Append(ex.ToFullDescriptionString());
                //}
                //t = sw.Elapsed;
                //sb = sb.Replace("@duracao", string.Format("{0:D2}h:{1:D2}m:{2:D2}s", t.Hours, t.Minutes, t.Seconds));



                sb.AppendFormat("<strong>-- Importar Secretários parlamentares {0} :: @duracao --</strong>", DateTime.Now.Year);
                sw.Restart();

                ////Instantiate DI container for the application
                //var serviceCollection = new ServiceCollection();

                ////Register NodeServices
                //serviceCollection.AddNodeServices();

                ////Request the DI container to supply the shared INodeServices instance
                //var nodeService = serviceCollection.BuildServiceProvider().GetRequiredService<INodeServices>();

                ////Invoke the javascript module with parameters to execute in Node environment.
                //var taskResult = await nodeService.InvokeAsync<string>(@"D:\GitHub\operacao-politica-supervisionada\OPS.ImportacaoNodejs\app.js");

                //sb.AppendFormat(taskResult);
                //t = sw.Elapsed;
                //sb = sb.Replace("@duracao", string.Format("{0:D2}h:{1:D2}m:{2:D2}s", t.Hours, t.Minutes, t.Seconds));

                sb.AppendLine();
                sb.AppendFormat("<strong>-- Importar Senadores {0} :: @duracao --</strong>", DateTime.Now.Year);
                sw.Restart();
                try
                {
                    sb.Append(Senado.AtualizaCadastroSenadores());
                }
                catch (Exception ex)
                {
                    sb.Append(ex.ToFullDescriptionString());
                }
                t  = sw.Elapsed;
                sb = sb.Replace("@duracao", string.Format("{0:D2}h:{1:D2}m:{2:D2}s", t.Hours, t.Minutes, t.Seconds));

                sb.AppendLine();
                sb.AppendFormat("<strong>-- Importar Imagens Senadores {0} :: @duracao --</strong>", DateTime.Now.Year);
                sw.Restart();
                try
                {
                    sb.Append(Senado.DownloadFotosSenadores(sSenadoressImagesPath));
                }
                catch (Exception ex)
                {
                    sb.Append(ex.ToFullDescriptionString());
                }
                t  = sw.Elapsed;
                sb = sb.Replace("@duracao", string.Format("{0:D2}h:{1:D2}m:{2:D2}s", t.Hours, t.Minutes, t.Seconds));

                sb.AppendLine();
                sb.AppendFormat("<strong>-- Importar Despesas Senado {0} :: @duracao --</strong>", DateTime.Now.Year - 1);
                sw.Restart();
                try
                {
                    sb.Append(Senado.ImportarDespesas(tempPath, DateTime.Now.Year - 1, false));
                }
                catch (Exception ex)
                {
                    sb.Append(ex.ToFullDescriptionString());
                }
                t  = sw.Elapsed;
                sb = sb.Replace("@duracao", string.Format("{0:D2}h:{1:D2}m:{2:D2}s", t.Hours, t.Minutes, t.Seconds));

                sb.AppendFormat("<strong>-- Importar Despesas Senado {0} :: @duracao --</strong>", DateTime.Now.Year);
                sw.Restart();
                try
                {
                    sb.Append(Senado.ImportarDespesas(tempPath, DateTime.Now.Year, false));
                }
                catch (Exception ex)
                {
                    sb.Append(ex.ToFullDescriptionString());
                }
                t  = sw.Elapsed;
                sb = sb.Replace("@duracao", string.Format("{0:D2}h:{1:D2}m:{2:D2}s", t.Hours, t.Minutes, t.Seconds));

                //try
                //{
                //    var data = new DateTime(DateTime.Now.Year, DateTime.Now.Month - (DateTime.Now.Day < 10 ? 1 : 0), 01);
                //    sb.Append(Senado.ImportarRemuneracao(tempPath, Convert.ToInt32(data.ToString("yyyyMM"))));
                //}
                //catch (Exception ex)
                //{
                //    sb.Append(ex.ToFullDescriptionString());
                //}
                //t = sw.Elapsed;
                //sb = sb.Replace("@duracao", string.Format("{0:D2}h:{1:D2}m:{2:D2}s", t.Hours, t.Minutes, t.Seconds));

                sb.Append("<strong>-- Consultar Receita WS :: @duracao --</strong>");
                sw.Restart();
                try
                {
                    sb.Append(Fornecedor.ConsultarReceitaWS());
                }
                catch (Exception ex)
                {
                    sb.Append(ex.ToFullDescriptionString());
                }
                t  = sw.Elapsed;
                sb = sb.Replace("@duracao", string.Format("{0:D2}h:{1:D2}m:{2:D2}s", t.Hours, t.Minutes, t.Seconds));

                t = swGeral.Elapsed;
                sb.AppendFormat("<strong>Inicio da importação: {0} - Duração Total: {1:D2}h:{2:D2}m:{3:D2}s</strong>", inicioImportacao, t.Hours, t.Minutes, t.Seconds);

                using (WebClient client = new WebClient())
                {
                    await client.DownloadDataTaskAsync("http://127.0.0.1:5200/tarefa/limparcache");
                }

                var lstEmails  = Padrao.EmailEnvioResumoImportacao.Split(';');
                var lstEmailTo = new MailAddressCollection();
                foreach (string email in lstEmails)
                {
                    lstEmailTo.Add(email);
                }

                Console.WriteLine(sb.ToString());
                await Utils.SendMailAsync(configuration["AppSettings:SendGridAPIKey"], lstEmailTo, "OPS :: Resumo da Importação - " + DateTime.UtcNow.ToString("dd/MM/yyyy HH:mm"), sb.ToString());
            }
            catch (Exception ex)
            {
                var ex1     = ex.GetBaseException();
                var message = ex1.Message;
                if (ex1.StackTrace != null)
                {
                    message += ex1.StackTrace;
                }

                await Utils.SendMailAsync(configuration["AppSettings:SendGridAPIKey"], new MailAddress(Padrao.EmailEnvioErros), "OPS :: Informe de erro na Importação", message);
            }
        }
コード例 #3
0
        public async Task <IActionResult> ImportarDados(string value)
        {
            var cultureInfo = CultureInfo.CreateSpecificCulture("pt-BR");

            if ((DateTime.UtcNow.Hour != 3 || value != Configuration["AppSettings:TaskKey"]) &&
                value != "m" + Configuration["AppSettings:TaskKey"])
            {
                return(BadRequest("NOPS - " + DateTime.UtcNow.ToString("dd/MM/yyyy HH:mm", cultureInfo)));
            }

            var tempPath             = System.IO.Path.Combine(Environment.WebRootPath, "temp");
            var sDeputadosImagesPath = System.IO.Path.Combine(Environment.WebRootPath, "images/Parlamentares/DEPFEDERAL/");

            try
            {
                var       sb = new StringBuilder();
                TimeSpan  t;
                Stopwatch sw      = Stopwatch.StartNew();
                Stopwatch swGeral = Stopwatch.StartNew();

                sb.AppendFormat(cultureInfo, "<p>Iniciando Importação: {0:dd/MM/yyyy HH:mm}</p>", DateTime.UtcNow);

                sb.Append("<br/><h3>-- Importar Deputados --</h3>");
                sw.Restart();
                try
                {
                    sb.Append(Camara.ImportarDeputados());
                }
                catch (Exception ex)
                {
                    sb.Append(ex.GetBaseException().Message);
                }
                t = sw.Elapsed;
                sb.AppendFormat(cultureInfo, "<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);

                sb.Append("<br/><h3>-- Importar Fotos Deputados --</h3>");
                sw.Restart();
                try
                {
                    sb.Append(Camara.DownloadFotosDeputados(sDeputadosImagesPath));
                }
                catch (Exception ex)
                {
                    sb.Append(ex.GetBaseException().Message);
                }
                t = sw.Elapsed;
                sb.AppendFormat(cultureInfo, "<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);

                sb.AppendFormat(cultureInfo, "<br/><h3>-- Importar Despesas Deputados {0} --</h3>", DateTime.Now.Year - 1);

                sw.Restart();
                try
                {
                    sb.Append(Camara.ImportarDespesasXml(tempPath, DateTime.Now.Year - 1));
                }
                catch (Exception ex)
                {
                    sb.Append(ex.GetBaseException().Message + ex.GetBaseException().StackTrace);
                }
                t = sw.Elapsed;
                sb.AppendFormat(cultureInfo, "<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);

                sb.AppendFormat(cultureInfo, "<br/><h3>-- Importar Despesas Deputados {0} --</h3>", DateTime.Now.Year);
                sw.Restart();
                try
                {
                    sb.Append(Camara.ImportarDespesasXml(tempPath, DateTime.Now.Year));
                }
                catch (Exception ex)
                {
                    sb.Append(ex.GetBaseException().Message);
                }
                t = sw.Elapsed;
                sb.AppendFormat(cultureInfo, "<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);

                sb.Append("<br/><h3>-- Importar Presenças Deputados --</h3>");
                sw.Restart();
                try
                {
                    sb.Append(Camara.ImportaPresencasDeputados());
                }
                catch (Exception ex)
                {
                    sb.Append(ex.GetBaseException().Message);
                }
                t = sw.Elapsed;
                sb.AppendFormat(cultureInfo, "<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);


                sb.AppendFormat(cultureInfo, "<br/><h3>-- Importar Senadores {0} --</h3>", DateTime.Now.Year);
                sw.Restart();
                try
                {
                    sb.Append(Senado.CarregaSenadoresAtuais());
                }
                catch (Exception ex)
                {
                    sb.Append(ex.GetBaseException().Message);
                }
                t = sw.Elapsed;
                sb.AppendFormat(cultureInfo, "<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);

                sb.AppendFormat(cultureInfo, "<br/><h3>-- Importar Despesas Senado {0} --</h3>", DateTime.Now.Year - 1);
                sw.Restart();
                try
                {
                    sb.Append(Senado.ImportarDespesas(tempPath, DateTime.Now.Year - 1, false));
                }
                catch (Exception ex)
                {
                    sb.Append(ex.GetBaseException().Message);
                }
                t = sw.Elapsed;
                sb.AppendFormat(cultureInfo, "<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);

                sb.AppendFormat(cultureInfo, "<br/><h3>-- Importar Despesas Senado {0} --</h3>", DateTime.Now.Year);
                sw.Restart();
                try
                {
                    sb.Append(Senado.ImportarDespesas(tempPath, DateTime.Now.Year, false));
                }
                catch (Exception ex)
                {
                    sb.Append(ex.GetBaseException().Message);
                }
                t = sw.Elapsed;
                sb.AppendFormat(cultureInfo, "<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);

                sb.Append("<br/><h3>-- Consultar Receita WS --</h3>");
                sw.Restart();
                try
                {
                    sb.Append(Fornecedor.ConsultarReceitaWS());
                }
                catch (Exception ex)
                {
                    sb.Append(ex.GetBaseException().Message);
                }
                t = sw.Elapsed;
                sb.AppendFormat(cultureInfo, "<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);

                t = swGeral.Elapsed;
                sb.AppendFormat(cultureInfo, "<br/><h3>Duração Total: {0:D2}h:{1:D2}m:{2:D2}s</h3>", t.Hours, t.Minutes, t.Seconds);

                new ParametrosDao().CarregarPadroes();

                //var cache = Configuration.CacheOutputConfiguration().GetCacheOutputProvider(Request);
                //var allKeys = cache.AllKeys;
                //foreach (var cacheKey in allKeys)
                //{
                //    cache.Remove(cacheKey);
                //}
                await Cache.RemoveStartsWithAsync("*");

                var lstEmails  = Padrao.EmailEnvioResumoImportacao.Split(';');
                var lstEmailTo = new MailAddressCollection();
                foreach (string email in lstEmails)
                {
                    lstEmailTo.Add(email);
                }

                Console.WriteLine(sb.ToString());
                await Utils.SendMailAsync(Configuration, lstEmailTo, "OPS :: Resumo da Importação", sb.ToString());
            }
            catch (Exception ex)
            {
                var ex1     = ex.GetBaseException();
                var message = ex1.Message;
                if (ex1.StackTrace != null)
                {
                    message += ex1.StackTrace;
                }

                await Utils.SendMailAsync(Configuration, new MailAddress(Padrao.EmailEnvioErros), "OPS :: Informe de erro na Importação", message);
            }

            return(Ok(DateTime.UtcNow.ToString("dd/MM/yyyy HH:mm", cultureInfo)));
        }
コード例 #4
0
        private static async Task ImportacaoDadosCompleto(IConfiguration configuration)
        {
            var rootPath              = configuration["AppSettings:SiteRootFolder"];
            var tempPath              = System.IO.Path.Combine(rootPath, "wwwroot/temp");
            var sDeputadosImagesPath  = System.IO.Path.Combine(rootPath, "wwwroot/images/Parlamentares/DEPFEDERAL/");
            var sSenadoressImagesPath = System.IO.Path.Combine(rootPath, "wwwroot/images/Parlamentares/SENADOR/");

            try
            {
                var       sb = new StringBuilder();
                TimeSpan  t;
                Stopwatch sw      = Stopwatch.StartNew();
                Stopwatch swGeral = Stopwatch.StartNew();

                sb.AppendFormat("<p> Iniciando importação: " + DateTime.UtcNow.ToString("dd/MM/yyyy HH:mm") + "</p>");

                sb.AppendFormat("<h3>-- Importar Deputados --</h3>");
                sw.Restart();
                try
                {
                    sb.Append(Camara.ImportarDeputados());
                }
                catch (Exception ex)
                {
                    sb.Append(ex.ToFullDescriptionString());
                }
                t = sw.Elapsed;
                sb.AppendFormat("<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);

                sb.AppendFormat("<h3>-- Importar Fotos Deputados --</h3>");
                sw.Restart();
                try
                {
                    sb.Append(Camara.DownloadFotosDeputados(sDeputadosImagesPath));
                }
                catch (Exception ex)
                {
                    sb.Append(ex.ToFullDescriptionString());
                }
                t = sw.Elapsed;
                sb.AppendFormat("<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);

                sb.AppendFormat("<h3>-- Importar Despesas Deputados {0} --</h3>", DateTime.Now.Year - 1);
                //sb.AppendFormat("<p>" + DateTime.UtcNow.ToString("dd/MM/yyyy HH:mm") + "</p>");
                sw.Restart();
                try
                {
                    sb.Append(Camara.ImportarDespesasXml(tempPath, DateTime.Now.Year - 1));
                }
                catch (Exception ex)
                {
                    sb.Append(ex.ToFullDescriptionString() + ex.GetBaseException().StackTrace);
                }
                t = sw.Elapsed;
                sb.AppendFormat("<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);

                sb.AppendFormat("<h3>-- Importar Despesas Deputados {0} --</h3>", DateTime.Now.Year);
                //sb.AppendFormat("<p>" + DateTime.UtcNow.ToString("dd/MM/yyyy HH:mm") + "</p>");
                sw.Restart();
                try
                {
                    sb.Append(Camara.ImportarDespesasXml(tempPath, DateTime.Now.Year));
                }
                catch (Exception ex)
                {
                    sb.Append(ex.ToFullDescriptionString());
                }
                t = sw.Elapsed;
                sb.AppendFormat("<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);

                sb.AppendFormat("<h3>-- Importar Presenças Deputados --</h3>");
                sw.Restart();
                try
                {
                    sb.Append(Camara.ImportaPresencasDeputados());
                }
                catch (Exception ex)
                {
                    sb.Append(ex.ToFullDescriptionString());
                }
                t = sw.Elapsed;
                sb.AppendFormat("<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);



                sb.AppendFormat("<h3>-- Importar Secretários parlamentares {0} --</h3>", DateTime.Now.Year);
                sw.Restart();

                ////Instantiate DI container for the application
                //var serviceCollection = new ServiceCollection();

                ////Register NodeServices
                //serviceCollection.AddNodeServices();

                ////Request the DI container to supply the shared INodeServices instance
                //var nodeService = serviceCollection.BuildServiceProvider().GetRequiredService<INodeServices>();

                ////Invoke the javascript module with parameters to execute in Node environment.
                //var taskResult = await nodeService.InvokeAsync<string>(@"D:\GitHub\operacao-politica-supervisionada\OPS.ImportacaoNodejs\app.js");

                //sb.AppendFormat(taskResult);
                //t = sw.Elapsed;
                //sb.AppendFormat("<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);


                sb.AppendFormat("<h3>-- Importar Senadores {0} --</h3>", DateTime.Now.Year);
                sw.Restart();
                try
                {
                    sb.Append(Senado.CarregaSenadoresAtuais());
                }
                catch (Exception ex)
                {
                    sb.Append(ex.ToFullDescriptionString());
                }
                t = sw.Elapsed;
                sb.AppendFormat("<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);

                sb.AppendFormat("<h3>-- Importar Imagens Senadores {0} --</h3>", DateTime.Now.Year);
                sw.Restart();
                try
                {
                    sb.Append(Senado.DownloadFotosSenadores(sSenadoressImagesPath));
                }
                catch (Exception ex)
                {
                    sb.Append(ex.ToFullDescriptionString());
                }
                t = sw.Elapsed;
                sb.AppendFormat("<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);

                sb.AppendFormat("<h3>-- Importar Despesas Senado {0} --</h3>", DateTime.Now.Year - 1);
                sw.Restart();
                try
                {
                    sb.Append(Senado.ImportarDespesas(tempPath, DateTime.Now.Year - 1, false));
                }
                catch (Exception ex)
                {
                    sb.Append(ex.ToFullDescriptionString());
                }
                t = sw.Elapsed;
                sb.AppendFormat("<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);

                sb.AppendFormat("<h3>-- Importar Despesas Senado {0} --</h3>", DateTime.Now.Year);
                sw.Restart();
                try
                {
                    sb.Append(Senado.ImportarDespesas(tempPath, DateTime.Now.Year, false));
                }
                catch (Exception ex)
                {
                    sb.Append(ex.ToFullDescriptionString());
                }
                t = sw.Elapsed;
                sb.AppendFormat("<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);

                sb.AppendFormat("<h3>-- Consultar Receita WS --</h3>");
                sw.Restart();
                try
                {
                    sb.Append(Fornecedor.ConsultarReceitaWS());
                }
                catch (Exception ex)
                {
                    sb.Append(ex.ToFullDescriptionString());
                }
                t = sw.Elapsed;
                sb.AppendFormat("<p>Duração: {0:D2}h:{1:D2}m:{2:D2}s</p>", t.Hours, t.Minutes, t.Seconds);

                t = swGeral.Elapsed;
                sb.AppendFormat("<h3>Duração Total: {0:D2}h:{1:D2}m:{2:D2}s</h3>", t.Hours, t.Minutes, t.Seconds);

                using (WebClient client = new WebClient())
                {
                    await client.DownloadDataTaskAsync("http://127.0.0.1:5000/api/tarefa/limparcache");
                }

                var lstEmails  = Padrao.EmailEnvioResumoImportacao.Split(';');
                var lstEmailTo = new MailAddressCollection();
                foreach (string email in lstEmails)
                {
                    lstEmailTo.Add(email);
                }

                Console.WriteLine(sb.ToString());
                await Utils.SendMailAsync(configuration, lstEmailTo, "OPS :: Resumo da Importação - " + DateTime.UtcNow.ToString("dd/MM/yyyy HH:mm"), sb.ToString());
            }
            catch (Exception ex)
            {
                var ex1     = ex.GetBaseException();
                var message = ex1.Message;
                if (ex1.StackTrace != null)
                {
                    message += ex1.StackTrace;
                }

                await Utils.SendMailAsync(configuration, new MailAddress(Padrao.EmailEnvioErros), "OPS :: Informe de erro na Importação", message);
            }
        }