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);
        }
        public bool GameModes(IUser user)
        {
            var option     = MenuUtilities.receiveMenuOptionOneThroughFive();
            var menuRecall = true;

            switch (option)
            {
            case 1:
                while (user.Wins < 1 && user.Losses < 1)
                {
                    MenuUtilities.GameMenu(out menuRecall, user);
                }

                if (user.Wins == 1)
                {
                    MessageDisplayUtilities.PositiveMessageDisplay("Player Won The Suddent Death!");
                    SessionControl.Session.UpdateDataBaseAndClearSessionScores(user);
                }
                else if (user.Losses == 1)
                {
                    MessageDisplayUtilities.NegativeMessageDisplay("AI Won The Sudden Death");
                    SessionControl.Session.UpdateDataBaseAndClearSessionScores(user);
                }

                break;

            case 2:
                while (user.Wins < 2 && user.Losses < 2)
                {
                    MenuUtilities.GameMenu(out menuRecall, user);
                }

                if (user.Wins == 2)
                {
                    MessageDisplayUtilities.PositiveMessageDisplay("Player Won The Triple Threat!");
                    SessionControl.Session.UpdateDataBaseAndClearSessionScores(user);
                }
                else if (user.Losses == 2)
                {
                    MessageDisplayUtilities.NegativeMessageDisplay("AI Won The Triple Threat");
                    SessionControl.Session.UpdateDataBaseAndClearSessionScores(user);
                }

                break;

            case 3:
                while (user.Wins < 3 && user.Losses < 3)
                {
                    MenuUtilities.GameMenu(out menuRecall, user);
                }

                if (user.Wins == 3)
                {
                    MessageDisplayUtilities.PositiveMessageDisplay("Player Won The Drive For Five!");
                    SessionControl.Session.UpdateDataBaseAndClearSessionScores(user);
                }
                else if (user.Losses == 3)
                {
                    MessageDisplayUtilities.NegativeMessageDisplay("AI Won The Drive For Five");
                    SessionControl.Session.UpdateDataBaseAndClearSessionScores(user);
                }

                break;

            case 4:
                while ((user.Wins < 6 && user.Losses < 6) || (user.Wins == 5 && user.Losses == 5))
                {
                    MenuUtilities.GameMenu(out menuRecall, user);
                }

                if (user.Wins == 5 && user.Losses == 5)
                {
                    MessageDisplayUtilities.MenuMessageDisplay("You and the AI have tied for The Ten Tour");
                    SessionControl.Session.UpdateDataBaseAndClearSessionScores(user);
                }
                else if (user.Wins == 6)
                {
                    MessageDisplayUtilities.PositiveMessageDisplay("Player Won The Ten Tour!");
                    SessionControl.Session.UpdateDataBaseAndClearSessionScores(user);
                }
                else if (user.Losses == 6)
                {
                    MessageDisplayUtilities.NegativeMessageDisplay("AI Won The Ten Tour");
                    SessionControl.Session.UpdateDataBaseAndClearSessionScores(user);
                }


                break;

            case 5:
                return(false);

            default:
                Console.WriteLine("You did not enter a valid entry, please try again using options 1-5.");
                break;
            }
            return(true);
        }