public TrainingCycle GenerateNewCycleForFiveThreeOneRoutine(App.DTO.WorkoutRoutine baseRoutine, NewFiveThreeOneCycleInfo cycleInfo) { // TODO: Fix this entire ugly workaround of a method var oldRoutineMaxCycleNumber = baseRoutine.TrainingCycles.Max(cycle => cycle.CycleNumber); var oldCycle = baseRoutine.TrainingCycles.FirstOrDefault(cycle => cycle.CycleNumber == oldRoutineMaxCycleNumber); var oldCycleEndingDate = oldCycle.EndingDate; if (oldCycleEndingDate == null) { throw new ApplicationException("Cannot generate a new training cycle: old cycle's ending date is null"); } var newCycleStartingDate = ((DateTime)oldCycleEndingDate).AddDays(1); var routineInfo = new NewFiveThreeOneRoutineInfo { BaseRoutine = baseRoutine, CycleInfo = cycleInfo, StartingDate = newCycleStartingDate }; var generator = new FiveThreeOneRoutineGenerator(routineInfo); var generatedCycle = generator.GenerateNewTrainingCycle(baseRoutine); return(generatedCycle); }
public App.DTO.WorkoutRoutine GenerateNewFiveThreeOneRoutine(NewFiveThreeOneRoutineInfo routineInfo) { var generator = new FiveThreeOneRoutineGenerator(routineInfo); var generatedRoutine = generator.GenerateNewRoutine(); return(generatedRoutine); }