Exemplo n.º 1
0
        public void ParseExcludeSchedules(TaskScheduleRequestModel model, TaskScheduleDateTimeModel schedule)
        {
            var excludeSchedules = model.Schedules
                                   .Where(x => x.Type.Equals("exclude", StringComparison.OrdinalIgnoreCase))
                                   .ToArray();

            if (!excludeSchedules.Any())
            {
                return;
            }

            foreach (var excludeSchedule in excludeSchedules)
            {
                var periodType = excludeSchedule.PeriodType;
                if (string.IsNullOrWhiteSpace(periodType))
                {
                    continue;
                }

                var periods = excludeSchedule.Periods.ToArray();
                if (!periods.Any())
                {
                    continue;
                }

                switch (periodType.Trim().ToUpper())
                {
                case "HOURLY":
                    if (schedule.MinutesConsidered.Length == 0)
                    {
                        schedule.MinutesConsidered = Enumerable.Range(0, 60).ToArray();
                    }
                    schedule.MinutesConsidered = schedule.MinutesConsidered
                                                 .Except(periods)
                                                 .ToArray();
                    break;

                case "DAILY":
                    if (schedule.HoursConsidered.Length == 0)
                    {
                        schedule.HoursConsidered = Enumerable.Range(0, 24).ToArray();
                    }
                    schedule.HoursConsidered = schedule.HoursConsidered
                                               .Except(periods)
                                               .ToArray();
                    break;

                case "WEEKLY":
                    if (schedule.DaysConsidered.Length == 0)
                    {
                        schedule.DaysConsidered = Enumerable.Range(0, 7).ToArray();
                    }
                    schedule.DaysConsidered = schedule.DaysConsidered
                                              .Except(periods)
                                              .ToArray();
                    break;
                }
            }
        }
Exemplo n.º 2
0
        public void ParseIncludeSchedules(TaskScheduleRequestModel model, TaskScheduleDateTimeModel schedule)
        {
            var includeSchedules = model.Schedules
                                   .Where(x => x.Type.Equals("include", StringComparison.OrdinalIgnoreCase))
                                   .ToArray();

            if (!includeSchedules.Any())
            {
                return;
            }

            foreach (var includeSchedule in includeSchedules)
            {
                var periodType = includeSchedule.PeriodType;
                if (string.IsNullOrWhiteSpace(periodType))
                {
                    continue;
                }

                var periods = includeSchedule.Periods.ToArray();
                if (!periods.Any())
                {
                    continue;
                }

                switch (periodType.Trim().ToUpper())
                {
                case "HOURLY":
                    schedule.MinutesConsidered = periods;
                    break;

                case "DAILY":
                    schedule.HoursConsidered = periods;
                    break;

                case "WEEKLY":
                    schedule.DaysConsidered = periods;
                    break;
                }
            }
        }
Exemplo n.º 3
0
        public void ParseIntervalSchedule(TaskScheduleRequestModel model, TaskScheduleDateTimeModel schedule)
        {
            var intervalSchedule = model.Schedules
                                   .FirstOrDefault(x => x.Type.Equals("interval", StringComparison.OrdinalIgnoreCase));

            if (intervalSchedule == null)
            {
                return;
            }

            var periods = intervalSchedule.Periods.ToArray();

            if (!periods.Any())
            {
                return;
            }

            var periodType = intervalSchedule.PeriodType;

            if (string.IsNullOrWhiteSpace(periodType))
            {
                return;
            }

            var period = periods.First();

            switch (periodType)
            {
            case "minutes":
                schedule.MinutesConsidered = Enumerable.Range(0, 60)
                                             .Where(x => (x % period) == 0)
                                             .ToArray();
                break;

            case "hours":
                schedule.HoursConsidered = Enumerable.Range(0, 24)
                                           .Where(x => (x % period) == 0)
                                           .ToArray();
                break;
            }
        }
Exemplo n.º 4
0
        public TaskScheduleModel CreateDateTimeSchedule(TaskScheduleRequestModel model)
        {
            var schedule = new TaskScheduleDateTimeModel
            {
                TaskId            = model.TaskId,
                DaysConsidered    = Enumerable.Range(0, 7).ToArray(),
                HoursConsidered   = Enumerable.Range(0, 24).ToArray(),
                MinutesConsidered = new[] { 0 },
            };

            if (model.Schedules == null || model.Schedules.Count == 0)
            {
                return(schedule);
            }

            ParseIntervalSchedule(model, schedule);
            ParseIncludeSchedules(model, schedule);
            ParseExcludeSchedules(model, schedule);

            return(schedule);
        }
Exemplo n.º 5
0
        public TaskScheduleModel CreateScheduleModel(ScheduledElement element)
        {
            var model = new TaskScheduleDateTimeModel
            {
                TaskId            = element.Id,
                MinutesConsidered = element.MinutesConsidered,
                HoursConsidered   = element.HoursConsidered,
                DaysConsidered    = element.DaysConsidered,
            };

            foreach (var subModel in element.ExecutionList)
            {
                model.AddScheduleItem(new TaskScheduleItemModel
                {
                    TaskId = subModel.Id,
                    Order  = subModel.Order,
                });
            }

            return(model);
        }