public void UpdateScheduleTasks(NotificationsPart notification)
        {
            var schedulingPart = notification.As <SchedulingPart>();

            // TODO: this can (should) never happen, throw error?
            if (schedulingPart == null || !schedulingPart.StartDateTime.HasValue)
            {
                return;
            }

            // Remove existing schedules
            DeleteExistingScheduleTasks(schedulingPart.ContentItem);

            // Event started task
            _scheduledTaskManager.CreateTask(Constants.EventStartedName, schedulingPart.StartDateTime.Value, schedulingPart.ContentItem);

            // Event ended task
            if (schedulingPart.EndDateTime.HasValue)
            {
                _scheduledTaskManager.CreateTask(Constants.EventEndedName, schedulingPart.EndDateTime.Value, schedulingPart.ContentItem);
            }
            else if (schedulingPart.IsAllDay)
            {
                // If event is all day, end time is start time + 1 day
                var endTime = schedulingPart.StartDateTime.Value.Date.AddDays(1);
                _scheduledTaskManager.CreateTask(Constants.EventEndedName, endTime, schedulingPart.ContentItem);
            }

            // TODO: schedule upcoming and followup
        }
        public bool CanSubscribeForNotifications(NotificationsPart part)
        {
            // Not enabled for this content item
            if (!part.AllowNotifications)
            {
                return(false);
            }

            // Not authorized
            if (!_authorizer.Authorize(Permissions.NotificationsPermissions.SubscribeForNotifications, part.ContentItem))
            {
                return(false);
            }

            var contentItem    = part.ContentItem;
            var schedulingPart = contentItem.As <SchedulingPart>();

            if (schedulingPart == null)
            {
                return(false);
            }

            // Cannot subscribe to events in the past when it is not recurring
            if (schedulingPart.StartDateTime < _clock.UtcNow && !schedulingPart.IsRecurring)
            {
                return(false);
            }

            return(true);
        }
예제 #3
0
        public void UpdateScheduleTasks(NotificationsPart notification) {
            var schedulingPart = notification.As<SchedulingPart>();

            // TODO: this can (should) never happen, throw error?
            if (schedulingPart == null || !schedulingPart.StartDateTime.HasValue)
                return;

            // Remove existing schedules
            DeleteExistingScheduleTasks(schedulingPart.ContentItem);

            // Event started task
            _scheduledTaskManager.CreateTask(Constants.EventStartedName, schedulingPart.StartDateTime.Value, schedulingPart.ContentItem);

            // Event ended task
            if (schedulingPart.EndDateTime.HasValue) {
                _scheduledTaskManager.CreateTask(Constants.EventEndedName, schedulingPart.EndDateTime.Value, schedulingPart.ContentItem);
            }
            else if (schedulingPart.IsAllDay) {
                // If event is all day, end time is start time + 1 day
                var endTime = schedulingPart.StartDateTime.Value.Date.AddDays(1);
                _scheduledTaskManager.CreateTask(Constants.EventEndedName, endTime, schedulingPart.ContentItem);
            }

            // TODO: schedule upcoming and followup
        }
예제 #4
0
        public bool CanSubscribeForNotifications(NotificationsPart part) {

            // Not enabled for this content item
            if (!part.AllowNotifications)
                return false;

            // Not authorized
            if (!_authorizer.Authorize(Permissions.NotificationsPermissions.SubscribeForNotifications, part.ContentItem))
                return false;

            var contentItem = part.ContentItem;
            var schedulingPart = contentItem.As<SchedulingPart>();

            if (schedulingPart == null)
                return false;

            // Cannot subscribe to events in the past when it is not recurring
            if (schedulingPart.StartDateTime < _clock.UtcNow && !schedulingPart.IsRecurring)
                return false;

            return true;
        }
예제 #5
0
 private void LazyLoadHandlers(ActivatedContentContext context, NotificationsPart part)
 {
     part._contentItem.Loader(() => part.NotificationsPlanPartRecord == null ? null : _contentManager.Get <NotificationsPlanPart>(part.NotificationsPlanPartRecord.Id));
 }
 private void LazyLoadHandlers(ActivatedContentContext context, NotificationsPart part) {
     part._contentItem.Loader(() => part.NotificationsPlanPartRecord == null ? null : _contentManager.Get<NotificationsPlanPart>(part.NotificationsPlanPartRecord.Id));
 }