private void ProcessMailing(MailingDAO mailingDAO, Mailing mailing) { SmtpServerDAO smtpServerDAO = new SmtpServerDAO(dataAccess.GetConnection()); SmtpServer smtpServer = smtpServerDAO.GetSmtpServer(currentTenant, mailing.smtpServer); ReportFrequencyEnum reportFrequency = (ReportFrequencyEnum)mailing.frequency; ReportTypeEnum reportType = (ReportTypeEnum)mailing.reportType; String recipients = mailing.recipients; DateTime lastSend = mailing.lastSend; // Verifica se está na data de envio, aborta caso não esteja if (!ReportContext.IsScheduledTime(reportFrequency, currentPeriodEndDate)) { return; } // Verifica se o log foi importado PrintLogPersistence logPersistence = new PrintLogPersistence(currentTenant, dataAccess.GetConnection(), null, false); Boolean logImported = logPersistence.FileImported(ReportContext.GetDateRange(reportFrequency)); // Verifica se o relatório já foi enviado hoje Boolean alreadySent = lastSend.Date == DateTime.Now.Date; // Caso o log tenha sido importado e se ainda não enviou, gera o relatório e envia if ((logImported) && (!alreadySent)) { // Inicia o append no arquivo de log (acrescentando o "startingDelimiter") fileLogger.LogInfo("Envio de relatório - Iniciando execução...", true); // Informa dados do mailing fileLogger.LogInfo("Frequência de envio - reportFrequency = " + reportFrequency.ToString()); fileLogger.LogInfo("Relatório - reportType = " + reportType.ToString()); fileLogger.LogInfo("Destinatários - recipients = " + recipients); notifications.Clear(); String reportStamp = DateTime.Now.Ticks.ToString(); String reportFilename = FileResource.MapDesktopResource("Report" + reportStamp + currentFormatExtension); BuildReport(reportFilename, reportType, reportFrequency); String mailSubject = "Relatório " + ReportContext.GetFrequencyCaption(reportFrequency); List <String> attachmentFiles = new List <String>(); attachmentFiles.Add(reportFilename); MailSender mailSender = new MailSender(smtpServer.CreateSysObject(), this); mailSender.SetContents("Email gerado automaticamente, não responder.", attachmentFiles); Boolean success = mailSender.SendMail(mailSubject, currentSysSender, recipients); ProcessNotifications(); if (success) // Grava a data de envio de envio no banco { mailing.lastSend = DateTime.Now.Date; mailingDAO.SetMailing(mailing); fileLogger.LogInfo("Execução concluída."); } } // Tenta remover arquivos temporários, ignora caso os arquivos estejam em uso // tentará novamente nas próximas execuções ReportContext.TryRemoveTempFiles(); }
private void button5_Click(object sender, EventArgs e) { String filename; Boolean fileExists; for (int day = 1; day <= 31; day++) { filename = PrintLogFile.MountName(@"C:\Work\PrintLogs", day, 12, 2010); fileExists = File.Exists(filename); if (fileExists) { MessageBox.Show("Importando arquivo: " + filename); PrintLogPersistence persistence = new PrintLogPersistence(4, dataAccess.GetConnection(), this, false); persistence.ImportFile(filename); } } }