public IEnumerable <FillLevelReading> GenerateFillLevelReadings(TaskGeneratorConfig taskGeneratorConfig) { if (!taskGeneratorConfig.Repeat) { return(new[] { CreateFillLevelReading(taskGeneratorConfig.Begin, taskGeneratorConfig.End, taskGeneratorConfig.IsAllDay, taskGeneratorConfig.Container, taskGeneratorConfig.ResponsibleSubject, taskGeneratorConfig.Series) }); } IEnumerable <DateTime> dates; switch (taskGeneratorConfig.Cycle) { case 0: { dates = GenerateDailyRecurrence(taskGeneratorConfig.Begin, taskGeneratorConfig.RecurrenceInterval, taskGeneratorConfig.EndsWithDate, taskGeneratorConfig.RepeatUntilDate, taskGeneratorConfig.NumberOfRecurrences); break; } case 1: { dates = GenerateWeeklyRecurrence(taskGeneratorConfig.Begin, taskGeneratorConfig.RecurrenceInterval, taskGeneratorConfig.EndsWithDate, taskGeneratorConfig.RepeatUntilDate, taskGeneratorConfig.NumberOfRecurrences, taskGeneratorConfig.WeekDays); break; } case 2: { dates = GenerateMonthlyRecurrence(taskGeneratorConfig.Begin, taskGeneratorConfig.RecurrenceInterval, taskGeneratorConfig.EndsWithDate, taskGeneratorConfig.RepeatUntilDate, taskGeneratorConfig.NumberOfRecurrences, taskGeneratorConfig.IsWeekdayRecurrence); break; } case 3: { dates = GenerateYearlyRecurrence(taskGeneratorConfig.Begin, taskGeneratorConfig.RecurrenceInterval, taskGeneratorConfig.EndsWithDate, taskGeneratorConfig.RepeatUntilDate, taskGeneratorConfig.NumberOfRecurrences); break; } default: throw new InvalidOperationException(); } var range = taskGeneratorConfig.End.Subtract(taskGeneratorConfig.Begin); return (dates.Select( date => CreateFillLevelReading(date, date.Add(range), taskGeneratorConfig.IsAllDay, taskGeneratorConfig.Container, taskGeneratorConfig.ResponsibleSubject, taskGeneratorConfig.Series))); }
public IEnumerable <FillLevelReading> GenerateFillLevelReadings(WasteContainer container, ResponsibleSubject responsibleSubject, Series series, DayOfWeek[] weekDays) { var taskGeneratorConfig = new TaskGeneratorConfig(); taskGeneratorConfig.Container = container; taskGeneratorConfig.Series = series; taskGeneratorConfig.ResponsibleSubject = responsibleSubject; taskGeneratorConfig.WeekDays = weekDays; taskGeneratorConfig.Begin = series.Begin; taskGeneratorConfig.End = series.End; taskGeneratorConfig.Repeat = series.Repeat; taskGeneratorConfig.RecurrenceInterval = series.RecurrenceInterval; taskGeneratorConfig.EndsWithDate = series.EndsWithDate; taskGeneratorConfig.RepeatUntilDate = series.RepeatUntilDate; taskGeneratorConfig.NumberOfRecurrences = series.NumberOfRecurrences; taskGeneratorConfig.IsWeekdayRecurrence = series.IsWeekdayRecurrence; taskGeneratorConfig.IsAllDay = series.IsAllDay; taskGeneratorConfig.Cycle = series.Cycle; return(GenerateFillLevelReadings(taskGeneratorConfig)); }