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);
 }
Example #2
0
 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;
        }