void ObjectsReposidory_ExercisesLoaded(object sender, EventArgs e)
        {
            ApplicationState.Current.Cache.Exercises.Loaded -= new EventHandler(ObjectsReposidory_ExercisesLoaded);
            if (ApplicationState.Current.Cache.Exercises == null || !ApplicationState.Current.Cache.Exercises.IsLoaded)
            {
                onExercisesLoaded();
                BAMessageBox.ShowError(ApplicationStrings.ExerciseTypeViewModel_ErrRetrieveExercises);
                return;
            }

            if (GroupedExercises == null)
            {
                GroupedExercises = new ObservableCollection <GroupingLayer <string, ExerciseViewModel> >();
            }
            else
            {
                GroupedExercises.Clear();
            }


            var res = ApplicationState.Current.Cache.Exercises.Items.Values.Where(x => ExerciseType == null || x.ExerciseType == ExerciseType.Value).OrderBy(x => EnumLocalizer.Default.Translate(x.ExerciseType)).ThenBy(x => Settings.ExercisesSortBy == ExerciseSortBy.Name ? x.Name : x.Shortcut).Select(x => new ExerciseViewModel(x)
            {
                IsAddMode = SelectionMode
            }).GroupBy(
                x => EnumLocalizer.Default.Translate(x.Exercise.ExerciseType)).Select(n => new GroupingLayer <string, ExerciseViewModel>(n));

            foreach (var exercise in res)
            {
                GroupedExercises.Add(exercise);
            }

            onExercisesLoaded();
        }
 public ExerciseViewModel GetExerciseView(Guid globalId)
 {
     return(GroupedExercises.SelectMany(groupedExercise => groupedExercise).FirstOrDefault(exerciseViewModel => exerciseViewModel.Exercise.GlobalId == globalId));
 }