示例#1
0
文件: Program.cs 项目: bekahh/tealog
        static void Main(string[] args)
        {
            //Get file path to teas.json.
            string        myDirectory = Directory.GetCurrentDirectory();
            DirectoryInfo directory   = new DirectoryInfo(myDirectory);
            string        filePath    = Path.Combine(directory.FullName, "tea.json");

            TeaManager teaManager = new TeaManager(filePath);
            List <Tea> teaList    = teaManager.ReadTeas();

            int result = 0;

            while (result != 5)
            {
                //Provide options and ask for user input.
                Console.WriteLine("What would you like to do? Type one of the below numbers to choose.");
                Console.WriteLine("(1) Show a list of teas.");
                Console.WriteLine("(2) Add a new tea to the list.");
                Console.WriteLine("(3) Edit an existing tea.");
                Console.WriteLine("(4) Delete a tea.");
                Console.WriteLine("(5) Exit this application.");
                bool success = Int32.TryParse(Console.ReadLine(), out result);
                if (!success || result > 5)
                {
                    Console.WriteLine("Invalid input. Please try again.");
                    continue;
                }
                //If the user types 1, deserialize and display tea names.
                else if (result == 1)
                {
                    teaList = teaManager.ReadTeas();
                    foreach (var tea in teaList)
                    {
                        Console.WriteLine(tea.TeaName);
                    }
                    Console.Write("Would you like to see more details about one of these teas? " +
                                  "If so, type Yes. If not, type No. ");
                    //If the user types Yes, ask for the name of the tea they wish to view
                    //then show all fields for that tea.
                    string answer = Console.ReadLine();
                    if (StringExtensions.FirstCharToUpper(answer) == "Yes")
                    {
                        teaList = teaManager.ReadTeas();
                        Console.Write("Type the name of the tea whose details you would like to view: ");
                        string teaAnswer = Console.ReadLine();
                        if (teaList.Exists(t => t.TeaName == teaAnswer))
                        {
                            var selectedTea = teaList.Find(s => s.TeaName == teaAnswer);
                            Console.WriteLine("Tea Name: " + selectedTea.TeaName + "\nTea Type: " +
                                              selectedTea.TeaType + "\nCompany name:  " + selectedTea.CompanyName +
                                              "\nCaffeinated: " + selectedTea.ContainsCaffeine + "\nRating(1-5, 5 being best): " + selectedTea.Rating +
                                              "\nNotes: " + selectedTea.Notes);
                        }
                        else
                        {
                            Console.WriteLine("That tea does not exist. Please try again.");
                            continue;
                        }
                    }
                    //If the user types no, go back to the main menu.
                    else if (StringExtensions.FirstCharToUpper(answer) == "No")
                    {
                        continue;
                    }
                }
                //If the user types 2, ask for each field then add the tea to the main list.
                else if (result == 2)
                {
                    string additionalTea = "";
                    do
                    {
                        Console.Write("Type the name of the tea to add: ");
                        string newTeaName = Console.ReadLine();
                        Console.Write("Enter the tea type(ex. \"green\"):  ");
                        string newTeaType = Console.ReadLine();
                        Console.Write("Type the name of the company the tea came from: ");
                        string newCompanyName = Console.ReadLine();
                        Console.Write("Does the tea contain caffeine? Type Yes or No: ");
                        string newContainsCaffeine = Console.ReadLine();
                        Console.Write("Give this tea a rating on a scale of 1 to 5 (5 being the best): ");
                        string newRating = Console.ReadLine();
                        Console.Write("Type any notes you have about the tea: ");
                        string newNotes = Console.ReadLine();
                        Tea    newTea   = new Tea
                        {
                            TeaName          = newTeaName,
                            TeaType          = newTeaType,
                            CompanyName      = newCompanyName,
                            ContainsCaffeine = newContainsCaffeine,
                            Rating           = Int32.Parse(newRating),
                            Notes            = newNotes
                        };
                        teaManager.AddTea(newTea);
                        Console.WriteLine("Your tea has been successfully added!");
                        //Allow adding an additional tea if desired.
                        Console.WriteLine("Would you like to add another tea? Type Yes or No: ");
                        additionalTea = Console.ReadLine();
                        if (additionalTea != "Yes" && additionalTea != "No")
                        {
                            Console.WriteLine("Invalid input. Please try again.");
                            break;
                        }
                    } while (StringExtensions.FirstCharToUpper(additionalTea) == "Yes");
                }
                //If the user types 3, ask for name of tea to edit.
                //Ask for field to edit then get new field value.
                else if (result == 3)
                {
                    Tea teaToEdit = new Tea();
                    teaList = teaManager.ReadTeas();
                    Console.Write("Type the name of the tea that you would like to edit: ");
                    string editTeaName = Console.ReadLine();
                    if (teaList.Exists(t => t.TeaName == editTeaName))
                    {
                        string editOptions = "Tea Name, Tea Type, Company Name, Caffeine, Rating, or Notes";
                        teaToEdit = teaList.Find(t => t.TeaName == editTeaName);
                        Console.Write("Which field would you like to edit? Type one of the following: " +
                                      "{0}. ", editOptions);
                        string editFieldName = Console.ReadLine();
                        if (editOptions.Contains(editFieldName))
                        {
                            Console.Write("Type the new value of the chosen field: ");
                            string editFieldValue = Console.ReadLine();
                            teaManager.EditTea(teaToEdit, editFieldName, editFieldValue);
                            Console.WriteLine("{0} was successfully changed to {1}!", editFieldName, editFieldValue);
                        }
                        else
                        {
                            Console.WriteLine("That field does not exist. Please try again.");
                            continue;
                        }
                    }
                    else
                    {
                        Console.WriteLine("That tea does not exist. Please try again.");
                        continue;
                    }
                }
                //If the user types 4, ask for name of tea then delete it from file.
                else if (result == 4)
                {
                    teaList = teaManager.ReadTeas();
                    Console.Write("Please type the name of the tea that you would like to delete: ");
                    string removeTea = Console.ReadLine();
                    if (teaList.Exists(t => t.TeaName == removeTea))
                    {
                        teaManager.DeleteTea(removeTea);
                        Console.WriteLine("{0} was successfully deleted!", removeTea);
                    }
                    else
                    {
                        Console.WriteLine("That tea does not exist. Please try again.");
                        continue;
                    }
                }
                //If user types 5, exit program.
                else if (result == 5)
                {
                    return;
                }
            }
        }