public static void MarkAsSent(ScheduledEmailBlock scheduledEmailBlock) { scheduledEmailBlock = scheduledEmailBlock.CreateWritableClone() as ScheduledEmailBlock; scheduledEmailBlock.DateSent = DateTime.Now; DataFactory.Instance.Save(scheduledEmailBlock as IContent, SaveAction.Publish | SaveAction.ForceCurrentVersion, EPiServer.Security.AccessLevel.NoAccess); }
protected void CreateNew_Click(object sender, EventArgs e) { ScheduledEmailBlock emailBlock = AttendScheduledEmailEngine.GenerateScheduledEmailBlock(CurrentEventPageBase.ContentLink); this.Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptid", "window.parent.location.href='" + EPiServer.Editor.PageEditing.GetEditUrl((emailBlock as IContent).ContentLink) + "'", true); }
public static ScheduledEmailBlock GenerateScheduledEmailBlock(ContentReference EventPageBase) { var contentRepository = ServiceLocator.Current.GetInstance <IContentRepository>(); ScheduledEmailBlock emailBlock = contentRepository.GetDefault <ScheduledEmailBlock>(GetOrCreateEmailFolder(EventPageBase).ContentLink, new CultureInfo(Localization.LanguageHelper.MasterLanguage(EventPageBase))); (emailBlock as IContent).Name = "New message"; emailBlock.EventPage = EventPageBase as PageReference; contentRepository.Save(emailBlock as IContent, SaveAction.Publish); return(emailBlock); }
protected string GetPageName(ScheduledEmailBlock email) { if (email.EventPage != null) { var eventPage = EPiServer.ServiceLocation.ServiceLocator.Current.GetInstance <IContentRepository>().Get <EventPageBase>(email.EventPage); if (eventPage != null) { return(eventPage.Name); } } return("Page not found"); }
public static void CreateScheduledEmail(EventPageBase EventPageBase, AttendStatus status, EmailTemplateBlock emailTemplate, ContentReference emailTemplateContentReference, string name) { ScheduledEmailBlock emailBlock = API.AttendScheduledEmailEngine.GenerateScheduledEmailBlock(EventPageBase.ContentLink).CreateWritableClone() as ScheduledEmailBlock; emailBlock.EmailSendOptions = SendOptions.Action; emailBlock.SendOnStatus = status; emailBlock.EmailTemplate.BCC = emailTemplate.BCC; emailBlock.EmailTemplate.CC = emailTemplate.CC; emailBlock.EmailTemplate.From = emailTemplate.From; emailBlock.EmailTemplate.To = emailTemplate.To; emailBlock.EmailTemplate.Subject = emailTemplate.Subject; emailBlock.EmailTemplate.MainBody = emailTemplate.MainBody; emailBlock.EmailTemplate.MainTextBody = emailTemplate.MainTextBody; emailBlock.EmailTemplateContentReference = emailTemplateContentReference; (emailBlock as IContent).Name = name; DataFactory.Instance.Save(emailBlock as IContent, SaveAction.Publish); }
public static void SendScheduledEmail(ScheduledEmailBlock scheduledEmailBlock, IParticipant participant) { EmailTemplateBlock et; EmailSender email; if (scheduledEmailBlock != null) { if (scheduledEmailBlock.EmailTemplateContentReference == null) { et = (scheduledEmailBlock.EmailTemplate); } else { et = DataFactory.Instance.Get <EmailTemplateBlock>(scheduledEmailBlock.EmailTemplateContentReference); } if (et != null) { email = new EmailSender(participant, et); email.Send(); } } }
public static string GetStatus(ScheduledEmailBlock scheduledEmailBlock) { if (scheduledEmailBlock.EmailSendOptions == SendOptions.Action) { return("<span class='label label-success'>" + EPiServer.Framework.Localization.LocalizationService.Current.GetString("/attend/attendstatus/" + scheduledEmailBlock.SendOnStatus.ToString()) + "</span>"); } if (scheduledEmailBlock.EventPage == null) { return(string.Empty); } DateTime sendDateTime = AttendScheduledEmailEngine.GetSendDate(scheduledEmailBlock, ServiceLocator.Current.GetInstance <IContentRepository>().Get <EventPageBase>(scheduledEmailBlock.EventPage)); if (sendDateTime > DateTime.Now && ((int)sendDateTime.Subtract(DateTime.Now).TotalDays > 0)) { return("<span class='label label-success'>" + EPiServer.Framework.Localization.LocalizationService.Current.GetString("/attend/admin/in") + " " + (int)sendDateTime.Subtract(DateTime.Now).TotalDays + " " + EPiServer.Framework.Localization.LocalizationService.Current.GetString("/attend/admin/days") + "</span>"); } if (sendDateTime > DateTime.Now && ((int)sendDateTime.Subtract(DateTime.Now).TotalHours > 0)) { return("<span class='label label-success'>" + EPiServer.Framework.Localization.LocalizationService.Current.GetString("/attend/admin/in") + " " + (int)sendDateTime.Subtract(DateTime.Now).TotalHours + " " + EPiServer.Framework.Localization.LocalizationService.Current.GetString("/attend/admin/hours") + "</span>"); } if (sendDateTime > DateTime.Now && ((int)sendDateTime.Subtract(DateTime.Now).TotalHours <= 0)) { return("<span class='label label-success'>" + EPiServer.Framework.Localization.LocalizationService.Current.GetString("/attend/admin/in") + " " + (int)sendDateTime.Subtract(DateTime.Now).TotalMinutes + " " + EPiServer.Framework.Localization.LocalizationService.Current.GetString("/attend/admin/minutes") + "</span>"); } if (DateTime.Now.Subtract(scheduledEmailBlock.DateSent).TotalDays > 60000) { return("<span class='label label-warning'>" + EPiServer.Framework.Localization.LocalizationService.Current.GetString("/attend/admin/sending") + "...</span>"); } else { return("<span class='label label-primary'>" + EPiServer.Framework.Localization.LocalizationService.Current.GetString("/attend/admin/sent") + " " + (int)DateTime.Now.Subtract(scheduledEmailBlock.DateSent).TotalDays + " " + EPiServer.Framework.Localization.LocalizationService.Current.GetString("/attend/admin/daysAgo") + "</span>"); } }
public static List <IParticipant> GetParticipantsForScheduledEmail(ScheduledEmailBlock scheduledEmailBlock) { List <IParticipant> participants = new List <IParticipant>(); Hashtable statuses = new Hashtable(); if (scheduledEmailBlock.AttendStatusFilter != null) { foreach (string status in scheduledEmailBlock.AttendStatusFilter.Split(',')) { statuses.Add(status, status); } } if (scheduledEmailBlock.EventPage != null) { foreach (var participant in AttendRegistrationEngine.GetParticipants(scheduledEmailBlock.EventPage)) { if (scheduledEmailBlock.AttendStatusFilter == null || statuses.Contains(participant.AttendStatus)) { participants.Add(participant); } } } return(participants); }
public static DateTime GetSendDate(ScheduledEmailBlock scheduledEmailBlock, EventPageBase EventPageBase) { DateTime dateToSend = DateTime.Now; bool subtract = false; if (scheduledEmailBlock.EmailSendOptions == SendOptions.Specific) { return(scheduledEmailBlock.SpecificDateScheduled); } if (scheduledEmailBlock.EmailSendOptions == SendOptions.Relative) { switch (scheduledEmailBlock.ScheduledRelativeTo) { case RelativeTo.AfterEventStart: subtract = false; dateToSend = EventPageBase.EventDetails.EventStart; break; case RelativeTo.BeforeEventStart: subtract = true; dateToSend = EventPageBase.EventDetails.EventStart; break; case RelativeTo.AfterStartPublish: subtract = false; dateToSend = EventPageBase.StartPublish; break; case RelativeTo.BeforeStartPublish: subtract = true; dateToSend = EventPageBase.StartPublish; break; } int amount = scheduledEmailBlock.ScheduledRelativeAmount; if (subtract) { amount = amount * -1; } switch (scheduledEmailBlock.ScheduledRelativeUnit) { case RelativeUnit.Days: dateToSend = dateToSend.AddDays(amount); break; case RelativeUnit.Hours: dateToSend = dateToSend.AddHours(amount); break; case RelativeUnit.Minutes: dateToSend = dateToSend.AddMinutes(amount); break; case RelativeUnit.Months: dateToSend = dateToSend.AddMonths(amount); break; } return(dateToSend); } return(DateTime.MaxValue); }