public void VisitIntervalSchedule(ScheduledElement parent, XElement element) { var period = (int)element.Attribute("period"); var periodType = (string)element.Attribute("periodType"); switch (periodType) { case "seconds": parent.SecondsConsidered = Enumerable.Range(0, 60) .Where(x => (x % period) == 0) .ToArray(); break; case "minutes": parent.MinutesConsidered = Enumerable.Range(0, 60) .Where(x => (x % period) == 0) .ToArray(); break; case "hours": parent.HoursConsidered = Enumerable.Range(0, 24) .Where(x => (x % period) == 0) .ToArray(); break; } }
public void VisitScheduled(ScheduledElement item, XContainer container) { foreach (var element in container.Elements()) { var name = element.Name.LocalName; ElementTypes type; if (!Enum.TryParse(name, out type)) { continue; } switch (type) { case ElementTypes.IntervalSchedule: VisitIntervalSchedule(item, element); break; case ElementTypes.WeeklySchedule: VisitWeeklySchedule(item, element); break; case ElementTypes.HourlySchedule: VisitHourlySchedule(item, element); break; case ElementTypes.DailySchedule: VisitDailySchedule(item, element); break; } } }
public void VisitHourlySchedule(ScheduledElement parent, XElement element) { if (element.Attribute("includeMinutes") != null) { var include = new List <int>(); var includeAttribute = (string)element.Attribute("includeMinutes"); includeAttribute.Split(',') .Where(x => !string.IsNullOrWhiteSpace(x)) .ToList() .ForEach(x => { int value; if (int.TryParse(x, out value) && value >= 0 && value <= 59) { include.Add(value); } }); parent.MinutesConsidered = include.ToArray(); } if (parent.MinutesConsidered.Length == 0) { parent.MinutesConsidered = Enumerable.Range(0, 60).ToArray(); } if (element.Attribute("excludeMinutes") == null) { return; } if (parent.MinutesConsidered.Length == 1 && parent.MinutesConsidered[0] == 0) { parent.MinutesConsidered = Enumerable.Range(0, 60).ToArray(); } var exclude = new List <int>(); var excludeAttribute = (string)element.Attribute("excludeMinutes"); excludeAttribute.Split(',') .Where(x => !string.IsNullOrWhiteSpace(x)) .ToList() .ForEach(x => { int value; if (int.TryParse(x, out value) && value >= 0 && value <= 59) { exclude.Add(value); } }); parent.MinutesConsidered = parent.MinutesConsidered .Except(exclude) .ToArray(); }
public void VisitScheduled(ExecutionElement parent, XElement element) { var item = new ScheduledElement { Id = (string)element.Attribute("taskId"), ClientId = (int?)element.Attribute("clientId"), DaysConsidered = Enumerable.Range(0, 7).ToArray(), HoursConsidered = Enumerable.Range(0, 24).ToArray(), MinutesConsidered = new[] { 0 }, }; parent.AddExecutionType(item); if (item.ClientId.HasValue) { item.Id = string.Format("client.{0}.{1}", item.ClientId, item.Id); } else { if (!item.ClientId.HasValue && metaData.HasEntries) { string metaClientId; if (!metaData.TryGetEntry("ClientId", out metaClientId)) { int clientId; if (int.TryParse(metaClientId, out clientId)) { item.ClientId = clientId; } } } } if (!element.HasElements) { return; } VisitScheduled(item, element); VisitExecutionOrder(item, element); }
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); }