public IActionResult CheckAntwort([FromForm] CurrentChallengeViewModel currentChallenge)
        {
            if (currentChallenge is null)
            {
                throw new ArgumentNullException(nameof(currentChallenge));
            }

            if (currentChallenge.Solution == currentChallenge.UserAntwort)
            {
                return(RedirectToAction(nameof(LoadLevel), new { levelNumber = currentChallenge.LevelNumber, challengeIndex = ++currentChallenge.Index, Points = ++currentChallenge.Punkte }));
            }

            return(RedirectToAction(nameof(WrongAnswer), currentChallenge));
        }
        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));
            }
        }
 public IActionResult WrongAnswer(CurrentChallengeViewModel currentChallenge)
 {
     return(View(currentChallenge));
 }