private void SetExerciseButtonEnabledOrDisabled(Button exerciseButton) { if (_isOpenedFromModuleWindow) { exerciseButton.IsEnabled = true; exerciseButton.CustomizeForNotDone(); } else if (_lesson != null) { int.TryParse(exerciseButton.Content.ToString().Replace(GlobalVariables.exerciseNumberPartialText, ""), out int buttonExerciseNumber); var exercisesDoneFromLesson = _exerciseService.GetDoneExercisesNumbersByLesson(_lesson); if (buttonExerciseNumber != 0 && exercisesDoneFromLesson != null && exercisesDoneFromLesson.Count > 0 && (exercisesDoneFromLesson.Contains(buttonExerciseNumber) || exercisesDoneFromLesson.Max() + 1 == buttonExerciseNumber)) { exerciseButton.IsEnabled = true; } else if (buttonExerciseNumber != 0) { int firstExerciseNumberFromLesson = _exerciseService.GetFirstExerciseNumberFromLesson(_lesson); if (firstExerciseNumberFromLesson != 0 && firstExerciseNumberFromLesson == buttonExerciseNumber) { exerciseButton.IsEnabled = true; } else { exerciseButton.IsEnabled = false; } } else { exerciseButton.IsEnabled = false; } CustomizeExerciseButtonAsDoneOrNot(exerciseButton); } else if (_exerciseNumber != 0) { int.TryParse(exerciseButton.Content.ToString().Replace(GlobalVariables.exerciseNumberPartialText, ""), out int buttonExerciseNumber); var listOfExercisesNumbersAlreadyDone = _exerciseService.GetDoneExercisesNumbersByUserAndExerciseNumber(_user, _exerciseNumber); if (buttonExerciseNumber <= _exerciseNumber || (listOfExercisesNumbersAlreadyDone != null && listOfExercisesNumbersAlreadyDone.Count > 0 && (listOfExercisesNumbersAlreadyDone.Contains(buttonExerciseNumber) || buttonExerciseNumber <= listOfExercisesNumbersAlreadyDone.Max() + 1))) { exerciseButton.IsEnabled = true; } else { exerciseButton.IsEnabled = false; } CustomizeExerciseButtonAsDoneOrNot(exerciseButton); } }