Exemplo n.º 1
0
 public static int ToNumberOfDaysPerWeek(WeekdaySelectionEnumeration selection)
 {
     Func<WeekdaySelectionEnumeration, bool> isDaySelected =
         day => day != WeekdaySelectionEnumeration.None && (selection & day) == day;
     var days =
         ((WeekdaySelectionEnumeration[])Enum.GetValues(typeof(WeekdaySelectionEnumeration))).Where(
             isDaySelected);
     return days.Count();
 }
Exemplo n.º 2
0
        private Dictionary<DayOfWeek, bool> ResolveTrainingWeekdays(WeekdaySelectionEnumeration trainingDays)
        {
            var weekDays = WeekStartsOnMonday ? DanishWeekDays : EnglishWeekDays;

            var trainingWeekdays = new Dictionary<DayOfWeek, bool>(7);
            foreach (var day in weekDays)
            {
                var canTrainToday = (day.Value & trainingDays) == day.Value;
                trainingWeekdays.Add(day.Key, canTrainToday);
            }
            return trainingWeekdays;
        }
Exemplo n.º 3
0
 private static TrainingPlan CreatePlan(Athlete athlete, WeekdaySelectionEnumeration trainingDays)
 {
     var trainingPlan = new TrainingPlan
                            {
                                Workload = 50,
                                Goal = CreateGoal(),
                                Athlete = athlete,
                                Start = new DateTime(2009, 1, 1),
                                StartDistance = 2000,
                                PreferredWeekdays = (int) trainingDays
                            };
     return trainingPlan;
 }
Exemplo n.º 4
0
        private IEnumerable<Run> CreateRuns(WeekdaySelectionEnumeration trainingDays, IEnumerator<double> sequencer)
        {
            var isTrainingDay = ResolveTrainingWeekdays(trainingDays);

            sequencer.Reset();
            for (var currentDate = TrainingPlan.Start; ; currentDate = currentDate.AddDays(1))
            {
                if (!isTrainingDay[currentDate.DayOfWeek])
                {
                    continue;
                }
                if (!sequencer.MoveNext())
                {
                    yield break;
                }
                var distance = sequencer.Current;
                var run = CreateRun(distance, currentDate);
                yield return run;
            }
        }