Ejemplo n.º 1
0
        public IHttpActionResult VerifyCodeTest([FromBody] TestCodeAnswDTO code)
        {
            int userId = TokenHelper.GetUserId(User.Identity);

            return(Ok(_quizService.VerifyCodeTest(code, userId)));
        }
Ejemplo n.º 2
0
        // ---------------------------------------------------------------------------------------------
        public CodeAttempt VerifyCodeTest(TestCodeAnswDTO code, int userId)
        {
            var  user = _userService.GetUserEntity(userId);
            bool prevResult;

            // Pobranie kodu z listy kodów, na które użytkownik już odpowiadał ...
            user_code solvedCode = user.user_code.ToList()
                                   .Where(c => c.code_id == code.codeTaskId)
                                   .FirstOrDefault();

            if (solvedCode != null)
            {
                prevResult = solvedCode.last_result;
            }


            // ... lub dodanie nowego kodu do listy kodów, na które użytkownik odpowiedział
            else
            {
                prevResult = false;

                solvedCode = new user_code()
                {
                    user_id      = userId,
                    code_id      = code.codeTaskId,
                    first_result = code.lastResult
                };
                user.user_code.Add(solvedCode);
            }

            solvedCode.last_result = code.lastResult;
            solvedCode.last_answer = code.answer;
            solvedCode.attempts    = code.lastResult ? 0 : solvedCode.attempts + 1;


            // sprawdzenie czy to trzecia próba rozwiązania kodu
            // jesli trzecia - index wyniesie 0
            var attemptIndex = solvedCode.attempts % 3;

            // przeliczenie życia, ochrony i awansu sapera
            if (!prevResult || !solvedCode.last_result)
            {
                if (solvedCode.last_result == true || attemptIndex == 0)
                {
                    CalculateGame(ref user, GameItem.CODE, code.lastResult, Lottery.NO_LOTTERY);
                }
            }


            _userService.SaveChanges();

            if (code.lastResult == true)
            {
                _logger.Debug("User: "******"|" + "User coded succesfully on " + solvedCode.attempts + " attempt for task:" + solvedCode.code_id);
                return(CodeAttempt.CORRECT);
            }
            else
            {
                return((CodeAttempt)(attemptIndex));
            }
        }