Inheritance: Seal.Model.ReportComponent
Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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", ";"));
        }
Exemple #3
0
        /// <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;
            }
        }
Exemple #4
0
 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));
        }
Exemple #6
0
 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;
 }
Exemple #7
0
 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);
 }
Exemple #8
0
        /// <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));
        }