/// <summary> /// Check that the report result has been saved and set information /// </summary> public override void Process(Report report) { ReportOutput output = report.OutputToExecute; if (string.IsNullOrEmpty(output.FolderPath)) { throw new Exception("The output folder path is not specified in the report output."); } if (string.IsNullOrEmpty(output.FileName)) { throw new Exception("The file name is not specified in the report output."); } string finalPath; if (output.ZipResult) { finalPath = Path.Combine(report.OutputFolderDeviceResultFolder, Path.GetFileNameWithoutExtension(report.ResultFileName) + ".zip"); FileHelper.CreateZIP(report.ResultFilePath, Path.GetFileNameWithoutExtension(report.ResultFileName) + Path.GetExtension(report.ResultFilePath), finalPath, output.ZipPassword); } else { finalPath = Path.Combine(report.OutputFolderDeviceResultFolder, Path.GetFileNameWithoutExtension(report.ResultFileName) + Path.GetExtension(report.ResultFilePath)); File.Copy(report.ResultFilePath, finalPath, true); } File.Delete(report.ResultFilePath); report.ResultFilePath = finalPath; output.Information = report.Translate("Report result generated in '{0}'", report.DisplayResultFilePath); report.LogMessage("Report result generated in '{0}'", report.DisplayResultFilePath); }
/// <summary> /// Send the report result by email using the device configuration /// </summary> public override void Process(Report report) { ReportOutput output = report.OutputToExecute; if (string.IsNullOrEmpty(output.EmailTo)) { throw new Exception("No email address has been specified in the report output."); } MailMessage message = new MailMessage(); var email = SenderEmail; if (ChangeSender && !string.IsNullOrEmpty(output.EmailFrom)) { email = output.EmailFrom; } message.From = new MailAddress(email); Helper.AddEmailAddresses(message.To, output.EmailTo); Helper.AddEmailAddresses(message.CC, output.EmailCC); Helper.AddEmailAddresses(message.Bcc, output.EmailBCC); email = ReplyTo; if (ChangeSender && !string.IsNullOrEmpty(output.EmailReplyTo)) { email = output.EmailReplyTo; } Helper.AddEmailAddresses(message.ReplyToList, email); message.Subject = Helper.IfNullOrEmpty(output.EmailSubject, report.ExecutionName); //Body if (output.EmailHtmlBody && (output.Format == ReportFormat.html || output.Format == ReportFormat.print)) { message.Body = File.ReadAllText(report.ResultFilePath); message.IsBodyHtml = true; } else if (output.EmailMessagesInBody || output.EmailSkipAttachments) { message.Body = string.Format("Execution messages for report '{0}':\r\n\r\n{1}", report.FilePath, report.ExecutionMessages); } else { message.Body = Helper.IfNullOrEmpty(output.EmailBody, report.Translate("Please find the report '{0}' in attachment.", report.ExecutionName)); } //Attachment if (!message.IsBodyHtml && !output.EmailSkipAttachments) { HandleZipOptions(report); var attachment = new Attachment(report.ResultFilePath); attachment.Name = Path.GetFileNameWithoutExtension(report.ResultFileName) + Path.GetExtension(report.ResultFilePath); message.Attachments.Add(attachment); } SmtpClient client = SmtpClient; client.Send(message); output.Information = report.Translate("Email sent to '{0}'", output.EmailTo.Replace("\r\n", ";")); report.LogMessage("Email sent to '{0}'", output.EmailTo.Replace("\r\n", ";")); }
/// <summary> /// Handle the Output ZIP Options: Create a zip file if necessary /// </summary> /// <param name="report"></param> public void HandleZipOptions(Report report) { ReportOutput output = report.OutputToExecute; if (output.ZipResult) { var zipPath = FileHelper.GetUniqueFileName(Path.Combine(Path.GetDirectoryName(report.ResultFilePath), Path.GetFileNameWithoutExtension(report.ResultFilePath) + ".zip")); FileHelper.CreateZIP(report.ResultFilePath, Path.GetFileNameWithoutExtension(report.ResultFileName) + Path.GetExtension(report.ResultFilePath), zipPath, output.ZipPassword); report.ResultFilePath = zipPath; } }
void setContext(ITypeDescriptorContext context) { _metaConnection = context.Instance as MetaConnection; _metaEnum = context.Instance as MetaEnum; _metaTable = context.Instance as MetaTable; _metaColumn = context.Instance as MetaColumn; _metaJoin = context.Instance as MetaJoin; _reportView = context.Instance as ReportView; _reportOutput = context.Instance as ReportOutput; _reportSchedule = context.Instance as ReportSchedule; _parameter = context.Instance as Parameter; _security = context.Instance as SealSecurity; _emailDevice = context.Instance as OutputEmailDevice; }
/// <summary> /// Check that the report result has been saved and set information /// </summary> public override string Process(Report report) { ReportOutput output = report.OutputToExecute; if (string.IsNullOrEmpty(output.FolderPath)) { throw new Exception("The output folder path is not specified in the report output."); } if (string.IsNullOrEmpty(output.FileName)) { throw new Exception("The file name is not specified in the report output."); } output.Information = report.Translate("Report result generated in '{0}'", report.DisplayResultFilePath); return(string.Format("Report result generated in '{0}'", report.DisplayResultFilePath)); }
public ReportSchedule AddSchedule(ReportOutput output) { ReportSchedule result = ReportSchedule.Create(); string name = output != null ? string.Format("Schedule ({0})", output.Name) : "schedule for Tasks"; result.Name = Helper.GetUniqueName(name, (from i in Schedules select i.Name).ToList()); result.Report = this; if (output != null) result.OutputGUID = output.GUID; Schedules.Add(result); SchedulesModified = true; return result; }
public void RemoveOutput(ReportOutput output) { var schedules = Schedules.Where(i => i.OutputGUID == output.GUID).ToList(); int j = schedules.Count; while (--j >= 0) { RemoveSchedule(schedules[j]); } Outputs.Remove(output); }
/// <summary> /// Send the report result by email using the device configuration /// </summary> public override string Process(Report report) { ReportOutput output = report.OutputToExecute; if (string.IsNullOrEmpty(output.EmailTo)) { throw new Exception("No email address has been specified in the report output."); } MailMessage message = new MailMessage(); var email = SenderEmail; if (ChangeSender && !string.IsNullOrEmpty(output.EmailFrom)) { email = output.EmailFrom; } message.From = new MailAddress(email); Helper.AddEmailAddresses(message.To, output.EmailTo); Helper.AddEmailAddresses(message.CC, output.EmailCC); Helper.AddEmailAddresses(message.Bcc, output.EmailBCC); email = ReplyTo; if (ChangeSender && !string.IsNullOrEmpty(output.EmailReplyTo)) { email = output.EmailReplyTo; } Helper.AddEmailAddresses(message.ReplyToList, email); message.Subject = Helper.IfNullOrEmpty(output.EmailSubject, report.ExecutionName); if (output.EmailHtmlBody && (output.Format == ReportFormat.html || output.Format == ReportFormat.print)) { message.Body = File.ReadAllText(report.ResultFilePath); message.IsBodyHtml = true; } else if (output.EmailMessagesInBody) { message.Body = string.Format("Execution messages for report '{0}':\r\n\r\n{1}", report.FilePath, report.ExecutionMessages); } else { if (output.EmailMessagesInBody) { message.Body = string.Format("Execution messages for report '{0}':\r\n\r\n{1}", report.FilePath, report.ExecutionMessages); } else { message.Body = Helper.IfNullOrEmpty(output.EmailBody, report.Translate("Please find the report '{0}' in attachment.", report.ExecutionView.Name)); } message.Attachments.Add(new Attachment(report.ResultFilePath)); } //Attachments options if (output.EmailSkipAttachments) { message.Attachments.Clear(); } else if (output.EmailZipAttachments) { #if !NETCOREAPP using (ZipFile zip = new ZipFile()) { if (!string.IsNullOrEmpty(output.EmailZipPassword)) { zip.Password = output.EmailZipPassword; } foreach (var attachement in message.Attachments) { zip.AddFile(Path.Combine(Path.GetDirectoryName(report.ResultFilePath), attachement.Name), "."); } string zipName = Path.Combine(Path.GetDirectoryName(report.ResultFilePath), Path.GetFileNameWithoutExtension(report.ResultFilePath) + ".zip"); zip.Save(zipName); message.Attachments.Clear(); message.Attachments.Add(new Attachment(zipName)); message.Attachments[0].Name = report.ExecutionName + ".zip"; } #endif } SmtpClient client = SmtpClient; client.Send(message); output.Information = report.Translate("Email sent to '{0}'", output.EmailTo); return(string.Format("Email sent to '{0}'", output.EmailTo)); }
public override string Process(Report report) { ReportOutput output = report.OutputToExecute; if (string.IsNullOrEmpty(output.EmailTo)) { throw new Exception("No email address has been specified in the report output."); } MailMessage message = new MailMessage(); message.From = new MailAddress(Helper.IfNullOrEmpty(output.EmailFrom, SenderEmail)); AddEmailAddresses(message.To, output.EmailTo); AddEmailAddresses(message.CC, output.EmailCC); AddEmailAddresses(message.Bcc, output.EmailBCC); AddEmailAddresses(message.ReplyToList, Helper.IfNullOrEmpty(output.EmailReplyTo, ReplyTo)); message.Subject = Helper.IfNullOrEmpty(output.EmailSubject, report.ExecutionName); if (output.EmailHtmlBody) { message.Body = File.ReadAllText(report.ResultFilePath); message.IsBodyHtml = true; } else if (output.EmailMessagesInBody) { message.Body = string.Format("Execution messages for report '{0}':\r\n\r\n{1}", report.FilePath, report.ExecutionMessages); } else { if (output.EmailMessagesInBody) { message.Body = string.Format("Execution messages for report '{0}':\r\n\r\n{1}", report.FilePath, report.ExecutionMessages); } else { message.Body = Helper.IfNullOrEmpty(output.EmailBody, report.Translate("Please find the report '{0}' in attachment.", report.ExecutionView.Name)); } message.Attachments.Add(new Attachment(report.ResultFilePath)); } //Attach image files foreach (string path in report.ExecutionAttachedFiles) { message.Attachments.Add(new Attachment(path)); } foreach (ReportModel model in report.Models) { foreach (ResultPage page in model.Pages) { if (model.HasSerie && File.Exists(page.ChartPath)) { message.Attachments.Add(new Attachment(page.ChartPath)); } } } //Attachments options if (output.EmailSkipAttachments) { message.Attachments.Clear(); } else if (output.EmailZipAttachments) { using (ZipFile zip = new ZipFile()) { if (!string.IsNullOrEmpty(output.EmailZipPassword)) { zip.Password = output.EmailZipPassword; } foreach (var attachement in message.Attachments) { zip.AddFile(Path.Combine(Path.GetDirectoryName(report.ResultFilePath), attachement.Name), "."); } string zipName = Path.Combine(Path.GetDirectoryName(report.ResultFilePath), Path.GetFileNameWithoutExtension(report.ResultFilePath) + ".zip"); zip.Save(zipName); message.Attachments.Clear(); message.Attachments.Add(new Attachment(zipName)); message.Attachments[0].Name = report.ExecutionName + ".zip"; } } SmtpClient client = SmtpClient; client.Send(message); output.Information = report.Translate("Email sent to '{0}'", output.EmailTo); return(string.Format("Email sent to '{0}'", output.EmailTo)); }