public JsonResult CheckMove(string move, int moveNumber, int id) { var position = positionRepository.FindPositionById(id); if (position == null) { return(Json(new { result = false, message = Resources.DefaultErrorMessage })); } var userSolution = userSolutionRepository.FindUserSolutionByIdentifiers(WebSecurity.CurrentUserId, id); if (userSolution.IsSolved) { return(Json(new { result = false, message = Resources.SolvedProblemMessage, attempt = string.Format(Resources.NumberOfAttemptsMessage, userSolution.NumberOfAttempts) })); } if (CheckSolution.CheckMove(move, moveNumber, position.Solution)) { userSolution.CurrentMove = moveNumber; userSolution.DateUpdated = DateTime.Now; userSolution.IsSolved = (moveNumber + 1) == position.Solution.Count; if (userSolution.IsSolved) { userSolution.NumberOfAttempts++; userSolution.User.ProblemRating = RatingCalculation.CalculateRatingProblem(userSolution.User.ProblemRating, (int)position.Difficulty - userSolution.NumberOfAttempts / 10); } userSolutionRepository.UpdateUserSolution(userSolution); return(Json(new { result = true, message = userSolution.IsSolved ? Resources.SolvedProblemMessage : Resources.CorrectMoveMessage, attempt = string.Format(Resources.NumberOfAttemptsMessage, userSolution.NumberOfAttempts) })); } else { userSolution.DateUpdated = DateTime.Now; userSolution.NumberOfAttempts++; userSolutionRepository.UpdateUserSolution(userSolution); return(Json(new { result = false, message = Resources.IncorrectMoveMessage, attempt = string.Format(Resources.NumberOfAttemptsMessage, userSolution.NumberOfAttempts) })); } }
private void OnOpenSolutionCommand(int Index) { CheckSolution?.Invoke(this, Index); }