Task <IMessageForSend> ResolveMessageAsync(IDataModel dm) { var templateName = dm.Eval <String>("Message.Template"); var key = dm.Eval <String>("Message.Key"); var templatePath = _host.ApplicationReader.MakeFullPath(templateName, String.Empty); var fullPath = Path.ChangeExtension(templatePath, "xaml"); var env = dm.Eval <List <ExpandoObject> >("Message.Environment"); var hostObj = new ExpandoObject(); hostObj.Set("Name", "Host"); hostObj.Set("Value", _host.AppHost); env.Add(hostObj); using (var stream = _host.ApplicationReader.FileStreamFullPath(fullPath)) { var tml = XamlServices.Load(stream) as Template; TemplatedMessage tm = tml.Get(key); if (tm == null) { throw new MessagingException($"Message not found. Key = '{key}'"); } var resolver = new MessageResolver(_host, _dbContext, dm); return(tm.ResolveAndSendAsync(resolver)); } }
public async override Task <IMessageForSend> ResolveAndSendAsync(MessageResolver resolver) { return(new SmsMessageForSend( await resolver.ResolveAsync(this, Phone), await resolver.ResolveAsync(this, Message), await resolver.ResolveAsync(this, ExternalId) )); }
async Task <String> LoadBodyTemplate(EmailMessage msg, MessageResolver resolver) { if (String.IsNullOrEmpty(BodyTemplate)) { return(null); } String text = await resolver.ResolveFileAsync(msg, BodyTemplate); return(text); }
async Task LoadBodyTemplate(EmailMessage msg, MessageResolver resolver) { if (String.IsNullOrEmpty(BodyTemplate)) { return; } String text = await resolver.ResolveFileAsync(msg, BodyTemplate); if (text != null) { Body = text; } }
public async override Task <IMessageForSend> ResolveAndSendAsync(MessageResolver resolver) { var nm = new EmailMessageForSend() { Subject = await resolver.ResolveAsync(this, Subject), Body = await resolver.ResolveAsync(this, Body), }; var body = await LoadBodyTemplate(this, resolver); if (body != null) { nm.Body = body; } nm.To = await ResolveCollectionAsync(To, resolver); nm.Bcc = await ResolveCollectionAsync(Bcc, resolver); nm.CC = await ResolveCollectionAsync(CC, resolver); if (From != null) { nm.From = new MessageAddress(await resolver.ResolveAsync(this, From.Address), await resolver.ResolveAsync(this, From.DisplayName)); } if (Attachments != null && Attachments.Count != 0) { foreach (var att in Attachments) { var ratt = await ResolveAttachmentAsync(att, resolver); if (ratt.Stream != null) { nm.Attachments.Add(ratt); } } } if (Reports != null && Reports.Count != 0) { foreach (var rep in Reports) { var ratt = await ResolveReportAsync(rep, resolver); if (ratt.Stream != null) { nm.Attachments.Add(ratt); } } } return(nm); }
async Task <AttachementForSend> ResolveReportAsync(MessageReport rep, MessageResolver resolver) { var repName = await resolver.ResolveAsync(this, rep.Name); if (repName == null) { repName = "report"; } repName = Path.ChangeExtension(repName.Trim(), ".pdf"); var ma = new AttachementForSend() { Name = repName, Mime = MimeTypes.Application.Pdf, Stream = await resolver.ResolveReportAsync(this, rep) }; return(ma); }
public async override Task <IMessageForSend> ResolveAndSendAsync(MessageResolver resolver) { var nm = new EmailMessage() { Subject = await resolver.ResolveAsync(this, Subject), Body = await resolver.ResolveAsync(this, Body), BodyTemplate = await resolver.ResolveAsync(this, BodyTemplate) }; await nm.LoadBodyTemplate(this, resolver); nm.To = await ResolveCollectionAsync(To, resolver); nm.Bcc = await ResolveCollectionAsync(Bcc, resolver); if (From != null) { nm.From = new MessageAddress(await resolver.ResolveAsync(this, From.Address), await resolver.ResolveAsync(this, From.DisplayName)); } return(nm); }
public abstract Task <IMessageForSend> ResolveAndSendAsync(MessageResolver resolver);
async Task <MessageAddressCollection> ResolveCollectionAsync(MessageAddressCollection coll, MessageResolver resolver) { var newColl = new MessageAddressCollection(); foreach (var addr in coll) { var na = new MessageAddress(await resolver.ResolveAsync(this, addr.Address), await resolver.ResolveAsync(this, addr.DisplayName)); newColl.Add(na); } return(newColl); }
async Task <AttachementForSend> ResolveAttachmentAsync(MessageAttachment att, MessageResolver resolver) { var ma = new AttachementForSend() { Name = (await resolver.ResolveAsync(this, att.Name))?.Trim(), Mime = (await resolver.ResolveAsync(this, att.Mime))?.Trim(), Stream = await resolver.ResolveStreamAsync(this, att.Data) }; return(ma); }