public IActionResult GetOneRandomly(string variant, string trainingSessionId = null) { variant = Utilities.NormalizeVariantNameCapitalization(variant); List <int> toBeExcluded; double nearRating = randomProvider.RandomRating(); int? userId = loginHandler.LoggedInUserId(HttpContext); if (userId.HasValue) { User u = userRepository.FindById(userId.Value); toBeExcluded = u.SolvedPuzzles; if (variant != "Mixed") { nearRating = u.Ratings[variant].Value; } else { nearRating = u.Ratings.Average(x => x.Value.Value); } } else if (trainingSessionId != null) { toBeExcluded = puzzleTrainingSessionRepository.Get(trainingSessionId)?.PastPuzzleIds ?? new List <int>(); } else { toBeExcluded = new List <int>(); } Puzzle puzzle = puzzleRepository.GetOneRandomly(toBeExcluded, variant, loginHandler.LoggedInUserId(HttpContext), nearRating); if (puzzle != null) { return(Json(new { success = true, id = puzzle.ID })); } else { return(Json(new { success = true, allDone = true })); } }
public IActionResult GetOneRandomly(string variant, string trainingSessionId = null) { variant = Utilities.NormalizeVariantNameCapitalization(variant); if (variant == "Mixed") { variant = supportedVariants[new Random().Next(0, supportedVariants.Length)]; } List <int> toBeExcluded; double nearRating = 1500; int? userId = loginHandler.LoggedInUserId(HttpContext); if (userId.HasValue) { User u = userRepository.FindById(userId.Value); toBeExcluded = u.SolvedPuzzles; nearRating = u.Ratings[variant].Value; } else if (trainingSessionId != null) { toBeExcluded = puzzleTrainingSessionRepository.Get(trainingSessionId)?.PastPuzzleIds ?? new List <int>(); } else { toBeExcluded = new List <int>(); } Puzzle puzzle = puzzleRepository.GetOneRandomly(toBeExcluded, variant, loginHandler.LoggedInUserId(HttpContext)); if (puzzle != null) { return(Json(new { success = true, id = puzzle.ID })); } else { return(Json(new { success = true, allDone = true })); } }