Пример #1
0
        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) }));
            }
        }
Пример #2
0
 private void OnOpenSolutionCommand(int Index)
 {
     CheckSolution?.Invoke(this, Index);
 }