protected virtual double GetLoadVolume(SessionExercise sessionExercise, double bodyweight) { var bodyweightVolume = sessionExercise.Exercise.RelativeBodyweight / 100 * bodyweight; var dynamicSets = sessionExercise.Sets.OfType <DynamicExerciseSet>(); var exerciseVolume = dynamicSets.Aggregate( 0d, (totalVolume, set) => totalVolume + set.Reps * (set.Weight + bodyweightVolume) ); return(exerciseVolume); }
private double GetMultiplier(SessionExercise sessionExercise) { var exercisedMuscles = sessionExercise.Exercise.Muscles.Where( exercisedMuscle => _muscles.Contains(exercisedMuscle.Muscle) ); var multiplier = exercisedMuscles.Aggregate( 0d, (totalMultiplier, exercisedMuscle) => totalMultiplier + exercisedMuscle.RelativeEngagement / 100.0 ); return(multiplier); }
private async void OpenEditSessionExerciseDialogAsync(SessionExercise sessionExercise) { var sessionExerciseClone = sessionExercise.Clone(); var dialog = _dialogs.For <SessionExerciseDialogViewModel>(DialogsIdentifier); dialog.Data.DialogTitle = "Modified session exercise"; dialog.Data.SubmitButtonTitle = "Save"; dialog.Data.SessionExercise = SessionExerciseViewModel.FromModel(sessionExerciseClone); var dialogResult = await dialog.Show(); if (dialogResult != DialogResult.Ok) { return; } sessionExerciseClone = dialog.Data.SessionExercise.ToModel(); TrainingSession.Exercises.Replace(sessionExercise, sessionExerciseClone); }
private async void OpenAddSessionExerciseDialogAsync() { var exercise = new SessionExercise(); var dialog = _dialogs.For <SessionExerciseDialogViewModel>(DialogsIdentifier); dialog.Data.DialogTitle = "New session exercise"; dialog.Data.SubmitButtonTitle = "Create"; dialog.Data.SessionExercise = SessionExerciseViewModel.FromModel(exercise); var dialogResult = await dialog.Show(); if (dialogResult != DialogResult.Ok) { return; } exercise = dialog.Data.SessionExercise.ToModel(); TrainingSession.Exercises.Add(exercise); }
private void DeleteExercise(SessionExercise exercise) { TrainingSession.Exercises.RemoveByReference(exercise); }
protected virtual double GetSetCount(SessionExercise sessionExercise) => sessionExercise.Sets.Length;
protected override double GetLoadVolume(SessionExercise sessionExercise, double bodyweight) => ShouldBeCounted(sessionExercise) ? base.GetLoadVolume(sessionExercise, bodyweight) : 0;
protected override double GetSetCount(SessionExercise sessionExercise) => ShouldBeCounted(sessionExercise) ? base.GetSetCount(sessionExercise) : 0;
private bool ShouldBeCounted(SessionExercise sessionExercise) => _exercises.Contains(sessionExercise.Exercise);
protected override double GetLoadVolume(SessionExercise sessionExercise, double bodyweight) => base.GetLoadVolume(sessionExercise, bodyweight) * GetMultiplier(sessionExercise);
protected override double GetSetCount(SessionExercise sessionExercise) => base.GetSetCount(sessionExercise) * GetMultiplier(sessionExercise);
public int AddSessionExercise(SessionExercise sessionExercise) { var result = context.SessionExercises.Add(sessionExercise); return(0); }