private static bool checkValidity(string str, COMMAND_CHECK_TYPES type, Logger logger) { if (str == "") { return(false); } bool valid = true; str = str.ToLower(); //legal chars for any type of input, first is for g_id, 2nd is for nickname and 3rd is for message string[] validChars = { "0123456789", "0123456789abcdefghijklmnopqrstuvwxyz", "0123456789abcdefghijklmnopqrstuvwxyz@^$.?,!#$%&/()=?»«@£§€{}.-;:'<@>_,]+ " }; switch (type.ToString()) { case "gID": { int i = 0; while (valid && i < str.Length) // chars in validChars which are numbers only { string a = "" + str[i]; if (!(validChars[0].Contains(a))) { goto default; } i++; } if (Double.Parse(str) < 1 || Double.Parse(str) > 99) { goto default; } return(true); } case "nickname": { int i = 0; while (valid && i < str.Length) // chars in validChars which are numbers and letters { string a = "" + str[i]; if (!(validChars[1].Contains(a))) { goto default; } i++; } return(true); } case "message": { int i = 0; while (valid && i < str.Length) // chars in validChars which are numbers, letters and signs { string a = "" + str[i]; if (!(validChars[2].Contains(a))) { goto default; } i++; } return(true); } default: { logger.logWarnMessage("The inserted input is ilegal for: " + type.ToString() + " parameter"); return(false); } } }
/// <summary> /// deals with inputs from user /// </summary> /// <param name="type"></param> /// <param name="logger"></param> /// <returns></returns> private static string receiveCMD(COMMAND_CHECK_TYPES type, Logger logger) { int counter = 0; //attemps counter. 3 is max attempts allowed string str = ""; switch (type.ToString()) { case "gID": //gID check { alerts(ALERTS_TYPE.menu, logger); do { if (counter == 3) { goto default; } alerts(ALERTS_TYPE.g_ID, logger); str = Console.ReadLine(); if (Equals(str, "menu") || counter == 3) { goto default; } counter++; }while (!(checkValidity(str, COMMAND_CHECK_TYPES.gID, logger))); //g_ID valid numbers and range check return(str); } case "nickname": //nickname check { do { if (counter == 3) { goto default; } alerts(ALERTS_TYPE.nickname, logger); str = Console.ReadLine(); if (Equals(str, "menu") || counter == 3) { goto default; } counter++; }while (!(checkValidity(str, COMMAND_CHECK_TYPES.nickname, logger))); //nickname valid chars check return(str); } case "message": //message check { do { if (counter == 3) { goto default; } alerts(ALERTS_TYPE.message, logger); str = Console.ReadLine(); if (Equals(str, "menu") || counter == 3) { goto default; } counter++; }while (!(checkValidity(str, COMMAND_CHECK_TYPES.message, logger))); //message valid chars check return(str); } default: { Console.Clear(); if (counter == 3) //max attempts { alerts(ALERTS_TYPE.attemps, logger); } alerts(ALERTS_TYPE.menuSwitch, logger); return(null); } } }