static string DifficultyMenu(ChallengeDataHelper challenges) { var domainOptions = new List <string> { " 1. Easy (" + challenges.Easy.Count + ")", " 2. Medium (" + challenges.Medium.Count + ")", " 3. Hard (" + challenges.Hard.Count + ")", }; List <string> footerOptions = new List <string> { "e", "b", "m" }; string menuChoice; do { menuChoice = DisplayMenu(domainOptions, footerOptions, new string(' ', numberColumnSize) + "Difficulty"); switch (menuChoice) { case "1": menuChoice = ChallengesMenu(challenges.Easy).Replace("b", " "); break; case "2": menuChoice = ChallengesMenu(challenges.Medium).Replace("b", " "); break; case "3": menuChoice = ChallengesMenu(challenges.Hard).Replace("b", " "); break; } }while (!footerOptions.Contains(menuChoice)); return(menuChoice); }
static string DomainMenu(ChallengeDataHelper challenges) { var domainOptions = new List <string> { " 1. Algorithms (" + challenges.Algorithms.Count + ")", " 2. Data Structures (" + challenges.DataStructures.Count + ")", " 3. Mathematics (" + challenges.Mathematics.Count + ")", " 4. Artificial Intelligence (" + challenges.ArtificialIntelligence.Count + ")", " 5. Functional Programming (" + challenges.FunctionalProgramming.Count + ")", }; List <string> footerOptions = new List <string> { "e", "b", "m" }; string menuChoice; do { menuChoice = DisplayMenu(domainOptions, footerOptions, new string(' ', numberColumnSize) + "Domains"); switch (menuChoice) { case "1": menuChoice = ChallengesMenu(challenges.Algorithms).Replace("b", " "); break; case "2": menuChoice = ChallengesMenu(challenges.DataStructures).Replace("b", " "); break; case "3": menuChoice = ChallengesMenu(challenges.Mathematics).Replace("b", " "); break; case "4": menuChoice = ChallengesMenu(challenges.ArtificialIntelligence).Replace("b", " "); break; case "5": menuChoice = ChallengesMenu(challenges.FunctionalProgramming).Replace("b", " "); break; } }while (!footerOptions.Contains(menuChoice)); return(menuChoice); }
static void MainMenu(ChallengeDataHelper challenges) { List <string> mainMenuOptions = new List <string> { " 1. List all challenges (" + challenges.AllChallenges.Count + ")", " 2. List challenges by HackerRank domain", " 3. List challenges by difficulty", " 4. Search challenges", //" 5. Keypress search" }; List <string> footerOptions = new List <string> { "e" }; string menuChoice; do { menuChoice = DisplayMenu(mainMenuOptions, footerOptions, new string(' ', numberColumnSize) + "Main Menu"); switch (menuChoice) { case "1": menuChoice = ChallengesMenu(challenges.AllChallenges); break; case "2": menuChoice = DomainMenu(challenges); break; case "3": menuChoice = DifficultyMenu(challenges); break; case "4": menuChoice = SearchMenu(challenges); break; //case "5": // menuChoice = KeypressSearchMenu(challenges); // break; } }while (!footerOptions.Contains(menuChoice)); }
static string SearchMenu(ChallengeDataHelper challenges) { var footerOptions = new List <string> { "e", "b", "m" }; string menuChoice; do { string searchString; do { Console.Clear(); //Header PrintHeader(BuildChallengeLine("", "Challenge", "Domain", "Subdomain", "Difficulty")); //Nothing listed at this point for (int i = 0; i < screenSizeY - headerFooterSize; i++) { Console.WriteLine(); } //Footer string prompt = " Search for: "; Console.WriteLine(new string('-', screenSizeX)); Console.WriteLine(); Console.WriteLine(new string('-', screenSizeX)); Console.Write(prompt); //Input searchString = Console.ReadLine().ToLower().Trim(); }while (string.IsNullOrEmpty(searchString)); menuChoice = ChallengesMenu(challenges.Search(searchString)).Replace("b", ""); }while (!footerOptions.Contains(menuChoice)); return(menuChoice); }