/// <summary> /// Pulls the list of users from the database, sorts them by their win percentages, and returns only the top 5 results. /// </summary> /// <returns>Returns the top 5 score results</returns> public List <IUser> TopFiveLeaderBoard() { var leaderboardCount = 0; var leaderboardList = DataAccess.Instance.GetUsers(); var topFiveResult = new List <IUser>(); SortAndOrganizeScores(leaderboardList); MessageDisplayUtilities.ScoreboardMessageDisplay("LEADERBOARD:\n"); foreach (var rankedUsers in leaderboardList) { if (leaderboardCount < 5) { MessageDisplayUtilities.ScoreboardMessageDisplay(rankedUsers.Username + " - Win Rate: " + rankedUsers.WinPercentage + "%, Player Score: " + rankedUsers.Wins + ", AI Score: " + rankedUsers.Losses + ", Tied Games: " + rankedUsers.Draws); topFiveResult.Add(rankedUsers); leaderboardCount++; } } return(topFiveResult); }
public bool LoginMenuLogic(out IUser user) { var option = MenuUtilities.receiveMenuOptionOneThroughFive(); var currentSessionUser = SessionControl.Session.user; switch (option) { case 1: Console.Write("Please enter a new username: "******"This name has already been selected, please select a new name, or login as an existing user."); return(LoginMenuLogic(out user)); } } currentSessionUser.Username = username; MessageDisplayUtilities.CurrentStatsMessageDisplay("\nYour username '" + currentSessionUser.Username + "', has been created!!"); user = currentSessionUser; return(false); case 2: Console.WriteLine("Please enter your existing username."); username = Console.ReadLine().ToUpper(); var countEntries = 0; foreach (var item in DataAccess.Instance.GetUsers()) { if (item.Username == username) { countEntries++; } } if (countEntries == 0) { MessageDisplayUtilities.NegativeMessageDisplay("This username can not be found, please try again, or enter it as a new user."); return(LoginMenuLogic(out user)); } var existingUser = DataAccess.Instance.GetSingleUser(username); currentSessionUser.Username = existingUser.Username; user = currentSessionUser; return(false); case 3: TopFiveLeaderBoard(); return(LoginMenuLogic(out user)); case 4: var allScoresList = DataAccess.Instance.GetUsers(); SortAndOrganizeScores(allScoresList); MessageDisplayUtilities.ScoreboardMessageDisplay("ALL USER SCOREBOARD:\n"); foreach (var rankedUsers in allScoresList) { MessageDisplayUtilities.ScoreboardMessageDisplay(rankedUsers.Username + " - Win Rate: " + rankedUsers.WinPercentage + "%, Player Score: " + rankedUsers.Wins + ", AI Score: " + rankedUsers.Losses + ", Tied Games: " + rankedUsers.Draws); } MessageDisplayUtilities.MenuMessageDisplay("Would you like to clear all scores from the database?"); MessageDisplayUtilities.MenuMessageDisplay("1) Yes"); MessageDisplayUtilities.MenuMessageDisplay("2) No"); var clearScoreResponse = MenuUtilities.receiveMenuOptionOneOrTwo(); if (clearScoreResponse == 1) { DataAccess.Instance.EraseAllUserData(); MessageDisplayUtilities.NegativeMessageDisplay("All User data has been deleted, I hope you are happy with yourself!"); } else if (clearScoreResponse == 2) { MessageDisplayUtilities.PositiveMessageDisplay("No user data was harmed in the making of this decision."); } return(LoginMenuLogic(out user)); case 5: user = null; currentSessionUser = SessionControl.Session.user; Console.WriteLine("Your current session win/loss/draw streak was: Wins: " + currentSessionUser.Wins + ", Losses: " + currentSessionUser.Losses + ", Draws: " + currentSessionUser.Draws); Console.WriteLine("Goodbye!"); Environment.Exit(0); return(false); } user = null; return(true); }