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 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 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 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 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; }