private async void OnAddToExerciseSetupsExecute()
        {
            if (Id <= 0) //if it's newly created
            {
                await MessageDialogService.ShowInfoDialogAsync("Натиснете бутона ЗАПАЗИ преди да добавите упражнение");

                return;
            }
            else
            {
                var exerciseToAdd = SelectedFilteredExercise;
                var position      = ExerciseSetups.Count + 1;
                var wrapper       = new ExerciseSetupWrapper(new ExerciseSetup {
                    WorkoutId = Id, Position = position, ExerciseId = exerciseToAdd.Id
                });

                wrapper.PropertyChanged += Wrapper_PropertyChanged;
                _exerciseSetupRepository.Add(wrapper.Model);
                ExerciseSetups.Add(wrapper);


                await _exerciseSetupRepository.SaveAsync();

                HasChanges = _exerciseSetupRepository.HasChanges();

                await _workoutRepository.SaveAsync();

                HasChanges = _workoutRepository.HasChanges();
                Id         = Workout.Id;
                RaiseDetailSavedEvent(Workout.Id, Workout.Title);

                SelectedFilteredExercise = null;
            }
        }
 private void OnRemoveExerciseSetupExecute()
 {
     SelectedExerciseSetup.PropertyChanged -= Wrapper_PropertyChanged;
     _exerciseSetupRepository.Remove(SelectedExerciseSetup.Model);
     ExerciseSetups.Remove(SelectedExerciseSetup);
     SelectedExerciseSetup = null;
     for (int i = 1; i <= ExerciseSetups.Count; i++)
     {
         ExerciseSetups[i - 1].Position = i;
     }
     HasChanges = _exerciseSetupRepository.HasChanges();
     ((DelegateCommand)SaveCommand).RaiseCanExecuteChanged();
 }
        private async void OnAddExerciseSetup()
        {
            if (Id > 0)
            {
                var position = ExerciseSetups.Count + 1;

                var wrapper = new ExerciseSetupWrapper(new ExerciseSetup {
                    WorkoutId = Id, Position = position
                });
                wrapper.PropertyChanged += Wrapper_PropertyChanged;
                _exerciseSetupRepository.Add(wrapper.Model);
                ExerciseSetups.Add(wrapper);
            }
            else
            {
                await MessageDialogService.ShowInfoDialogAsync("Моля натиснете бутона Запази преди да добавите нов ред.");
            }
        }
        private async Task InitializeExerciseSetups(int workoutId)
        {
            foreach (var wrapper in ExerciseSetups)
            {
                wrapper.PropertyChanged -= Wrapper_PropertyChanged;
            }

            ExerciseSetups.Clear();
            var exerciseSetups = await _exerciseSetupRepository.GetAllAsync(workoutId);

            foreach (var model in exerciseSetups)
            {
                var wrapper = new ExerciseSetupWrapper(model);
                wrapper.PropertyChanged += Wrapper_PropertyChanged;
                ExerciseSetups.Add(wrapper);
            }

            await LoadExerciseLookupAsync();
        }
 protected override bool OnSaveCanExecute()
 {
     return(Workout != null && !Workout.HasErrors && HasChanges && ExerciseSetups.All(ex => !ex.HasErrors));
 }