public IActionResult LevelCompleted(LevelCompletedViewModel viewModel)
        {
            if (viewModel is null)
            {
                throw new ArgumentNullException(nameof(viewModel));
            }

            return(View(viewModel));
        }
        public IActionResult LoadLevel(int levelNumber, int challengeIndex, int Points)
        {
            if (_context.Levels.Count() == 0)
            {
                var firstLevel = CreateLevelWithChallenges();
                _context.Levels.Add(firstLevel);
            }

            Level level = _context.Levels.Include(m => m.Challenges)
                          .FirstOrDefault(m => m.LevelNumber == levelNumber);

            if (level == null)
            {
                level = CreateLevelWithChallenges();
            }
            var challenges = level.Challenges;

            if (challenges.Count > challengeIndex)
            {
                Challenge currentChallenge = challenges[challengeIndex];

                var vm = new CurrentChallengeViewModel()
                {
                    ChallengeText        = currentChallenge.ChallengeText,
                    LevelNumber          = currentChallenge.LevelNumber,
                    Solution             = currentChallenge.Solution,
                    Index                = challengeIndex,
                    LevelChallengesCount = level.Challenges.Count,
                    Punkte               = Points,
                };

                return(View(vm));
            }
            else
            {
                var vm = new LevelCompletedViewModel()
                {
                    NextLevelNr    = levelNumber + 1,
                    PossiblePoints = challenges.Count,
                    ReachedPoints  = Points,
                };
                return(RedirectToAction(nameof(LevelCompleted), vm));
            }
        }