Ejemplo n.º 1
0
 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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
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 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);
        }
Ejemplo n.º 6
0
        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();
                }
            }
        }
Ejemplo n.º 7
0
        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>");
            }
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }