public IHttpActionResult VerifyCodeTest([FromBody] TestCodeAnswDTO code) { int userId = TokenHelper.GetUserId(User.Identity); return(Ok(_quizService.VerifyCodeTest(code, userId))); }
// --------------------------------------------------------------------------------------------- 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)); } }