private static void LevelUpDifficulty(DiscreteExercisePlanOptions options, ref int currentLeadReps, ref int iteration) { if (iteration++ % options.LevelUpFrequency == 0) { currentLeadReps += options.LevelUpIntensity; } }
private static void SetupSetGeneration(DiscreteExercisePlanOptions options, out List <ExerciseSet> Sets, out int currentLeadReps, out DateTime currentDay, out int iteration) { Sets = new List <ExerciseSet>(); currentLeadReps = options.MaxReps / 2; currentDay = options.StartDate; iteration = 0; }
public static DiscreteExercisePlan Generate(DiscreteExercisePlanOptions options) { var plan = new DiscreteExercisePlan(); List <ExerciseSet> exerciseSets = GenerateSets(options); plan.SetsOfExercise = exerciseSets; plan.Name = options.Name; plan.Profile = options.Profile; return(plan); }
public async Task <IActionResult> PostExercise([FromForm] DiscreteExercisePlanOptions options, [FromForm] ExerciseDays days) { var body = this.HttpContext.Request.Form; options.Days = days; if (options == null) { return(this.StatusCode(500)); } var userEmail = User.FindFirst(ClaimTypes.Name).Value; var thisUser = this.profileData.GetByEmailAddress(userEmail); options.Profile = thisUser; var exercisePlan = DiscretePlanGenerator.Generate(options); profileData.Update(userEmail, exercisePlan); profileData.Commit(); return(LocalRedirect("~/index")); }
private static List <ExerciseSet> GenerateSets(DiscreteExercisePlanOptions options) { List <ExerciseSet> Sets; int currentLeadReps, iteration; DateTime currentDay; SetupSetGeneration(options, out Sets, out currentLeadReps, out currentDay, out iteration); while (currentLeadReps < options.MaxReps) { if (DayOfWorkOut(currentDay, options.Days)) { for (int i = 0; i < options.Sets; i++) { Sets.Add(CreateSet(currentLeadReps, currentDay, i)); } } LevelUpDifficulty(options, ref currentLeadReps, ref iteration); currentDay = currentDay.AddDays(1); } return(Sets); }