Example #1
0
        private static IEnumerable <CRSMEmail> Send(int?accountId, Message message, string format,
                                                    IEnumerable <NotificationRecipient> additionalRecipients, Int32?TemplateID)
        {
            var graph = new PXGraph();

            var  activitySource = message.Relationship.ActivitySource;
            Guid?refNoteID      = GetEntityNoteID(graph, activitySource);

            var bacc       = message.Relationship.ParentSource as BAccount;
            int?bAccountID = bacc != null ? bacc.BAccountID : null;

            NotificationGenerator sender = null;

            if (TemplateID != null)
            {
                sender = TemplateNotificationGenerator.Create(activitySource, (int)TemplateID);
            }
            else if (!string.IsNullOrEmpty(message.TemplateID))
            {
                sender = TemplateNotificationGenerator.Create(activitySource, message.TemplateID);
            }
            if (sender == null)
            {
                sender = new NotificationGenerator(graph);
            }

            sender.Body          = string.IsNullOrEmpty(sender.Body) ? message.Content.Body : sender.Body;
            sender.Subject       = string.IsNullOrEmpty(sender.Subject) ? message.Content.Subject : sender.Subject;
            sender.MailAccountId = accountId;
            sender.Reply         = accountId.
                                   With(_ => (EMailAccount)PXSelect <EMailAccount,
                                                                     Where <EMailAccount.emailAccountID, Equal <Required <EMailAccount.emailAccountID> > > > .
                                        Select(graph, _.Value)).
                                   With(_ => _.Address);
            sender.To         = message.Addressee.To;
            sender.Cc         = message.Addressee.Cc;
            sender.Bcc        = message.Addressee.Bcc;
            sender.RefNoteID  = refNoteID;
            sender.BAccountID = bAccountID;
            sender.BodyFormat = PXNotificationFormatAttribute.ValidBodyFormat(format);

            List <NotificationRecipient> watchers = new List <NotificationRecipient>();

            if (sender.Watchers != null)
            {
                watchers.AddRange(sender.Watchers);
            }
            if (additionalRecipients != null)
            {
                watchers.AddRange(additionalRecipients);
            }
            sender.Watchers = watchers;

            foreach (ReportStream attachment in message.Attachments)
            {
                sender.AddAttachment(attachment.Name, attachment.GetBytes());
            }

            return(sender.Send());
        }
Example #2
0
		private IDictionary<string, byte[]> GenerateFile(ReportNode report, string name, string format)
		{
			var source = new GroupMessage(null, 
				null, 
				PX.Common.Mail.MailSender.MessageAddressee.Empty,
				PX.Common.Mail.MailSender.MessageContent.Empty, 
				null, 
				format,
				MessageRelationship.Empty, ReportAttachment.Empty);
			var message = new PX.Reports.Mail.Message(source, report, null);
			var attachments = message.Attachments;
			if (attachments == null) return null;

			var result = new Dictionary<string, byte[]>(attachments.Count);
			var index = 0;
			foreach (var item in attachments)
			{
				var filename = item.Name;
				if (!string.IsNullOrEmpty(name))
				{
					filename = name;
					if (index++ > 0) filename += " (" + index.ToString() + ")";
				}
				if (!System.IO.Path.HasExtension(item.Name))
				{
					var ext = MimeTypes.GetExtension(item.MimeType);
					if (ext != null)
						filename = System.IO.Path.GetFileNameWithoutExtension(filename) + ext;
				}
				result.Add(filename, item.ToArray());
			}
			return result;
		}
Example #3
0
        private IDictionary <string, byte[]> GenerateFile(ReportNode report, string name, string format)
        {
            var source = new GroupMessage(null,
                                          null,
                                          PX.Common.Mail.MailSender.MessageAddressee.Empty,
                                          PX.Common.Mail.MailSender.MessageContent.Empty,
                                          null,
                                          format,
                                          MessageRelationship.Empty, ReportAttachment.Empty);
            var message     = new PX.Reports.Mail.Message(source, report, null);
            var attachments = message.Attachments;

            if (attachments == null)
            {
                return(null);
            }

            var result = new Dictionary <string, byte[]>(attachments.Count);
            var index  = 0;

            foreach (var item in attachments)
            {
                var filename = item.Name;
                if (!string.IsNullOrEmpty(name))
                {
                    filename = name;
                    if (index++ > 0)
                    {
                        filename += " (" + index.ToString() + ")";
                    }
                }
                if (!System.IO.Path.HasExtension(item.Name))
                {
                    var ext = MimeTypes.GetExtension(item.MimeType);
                    if (ext != null)
                    {
                        filename = System.IO.Path.GetFileNameWithoutExtension(filename) + ext;
                    }
                }
                result.Add(filename, item.ToArray());
            }
            return(result);
        }