public async Task <IActionResult> HistoryDetails(int id)
        {
            var resourceParameters = new WorkoutHistoryOfmResourceParameters()
            {
                IncludeExerciseHistories         = "1",
                IncludePreviousExerciseHistories = "1",
                IncludeCardioSets        = "1",
                IncludeWeightLiftingSets = "1"
            };
            var workoutHistoryViewModelQueryResult =
                await _workoutHistoryViewModelRepository.GetById(id, resourceParameters);

            if (workoutHistoryViewModelQueryResult.HttpStatusCode == HttpStatusCode.Unauthorized ||
                workoutHistoryViewModelQueryResult.HttpStatusCode == HttpStatusCode.Forbidden)
            {
                return(RedirectToAction("AccessDenied", "Authorization"));
            }

            WorkoutHistoryViewModel workoutHistoryViewModel = null;

            if ((int)workoutHistoryViewModelQueryResult.HttpStatusCode == 200)
            {
                workoutHistoryViewModel = workoutHistoryViewModelQueryResult.ViewModel;
            }

            return(View("HistoryDetails", workoutHistoryViewModel));
        }
        private WorkoutHistoryViewModel GetWorkoutHistoryViewModel(WorkoutHistory before, WorkoutHistory after)
        {
            var afterVm = new WorkoutHistoryViewModel(after);


            for (int i = 0; i < afterVm.MuscleExerciseViewModels.Count; i++)
            {
                for (int j = 0; j < afterVm.MuscleExerciseViewModels[i].Exercises.Count; j++)
                {
                    var afterExercise = afterVm.MuscleExerciseViewModels[i].Exercises[j];
                    if (j == before.MuscleExercises[i].Exercises.Count)
                    {
                        afterExercise.AddedExercise = true;
                        break;
                    }

                    var beforeExercise = before.MuscleExercises[i].Exercises[j];
                    for (int k = 0; k < afterExercise.SetViewModels.Count; k++)
                    {
                        var afterSet = afterExercise.SetViewModels[k];
                        if (k == beforeExercise.Sets.Count)
                        {
                            afterSet.SetAdded = true;
                            break;
                        }

                        var beforeSet = beforeExercise.Sets[k];

                        if (afterSet.Reps != beforeSet.Reps)
                        {
                            afterSet.RepsChanged = true;
                        }

                        if (afterSet.Rest != beforeSet.Rest)
                        {
                            afterSet.RestChanged = true;
                        }
                    }
                }
            }

            return(afterVm);
        }