diff --git a/UI.cs b/UI.cs new file mode 100644 index 0000000..7abd907 --- /dev/null +++ b/UI.cs @@ -0,0 +1,64 @@ +using System; + +namespace productlist +{ + public static class UI + { + private enum inputType { + create, + delete, + list, + help + } + private static inputType decodeInputType(string input) { + string command = input.Split (null, 1)[0]; + switch (command.ToLower()) { + case "create": + return inputType.create; + case "delete": + return inputType.delete; + case "list": + return inputType.list; + default: + case "help": + return inputType.help; + } + } + + public static bool validateInt(string input) { + int result; + return Int32.TryParse (input, out result); + } + + public static bool validateString (object input) { + return input is string; + } + + public static string getAnswer(string prompt, Func validator) { + string input; + do { + Console.Write(prompt + ": "); + input = Console.ReadLine(); + } while (!validator (input)); + return input; + } + + public static void promptForCommand() { + while (true) { + Console.Write ("Enter command: "); + string command = Console.ReadLine (); + inputType type = decodeInputType (command); + switch (type) { + case inputType.create: + Product p = Product.fromPrompt (); + Storage.Add (p); + break; + case inputType.list: + Storage.List (); + break; + } + } + } + } +} + diff --git a/product-list.csproj b/product-list.csproj index aa1823e..1070eec 100644 --- a/product-list.csproj +++ b/product-list.csproj @@ -38,6 +38,7 @@ +