예제 #1
0
        //methods
        public static void UserInput()
        {
            //variable to determine when the user is done interacting with the To Do List
            bool   done                = false;
            string filterType          = "";
            bool   filterTypeValid     = false;
            string filterCriteria      = "";
            bool   filterCriteriaValid = false;
            bool   verifyValid         = false;
            string desc                = "";
            string dueDate             = "";
            string status              = "";
            string priority            = "";
            int    todoIDint           = 0;
            string todoIDstring        = "CANCEL";

            while (!done)
            {
                string          action         = "";
                List <ToDoItem> ReviewToDoList = ItemRepository.ReviewToDoList(filterType, filterCriteria);
                //ask the user what they want to do
                ConsoleUtils.ReviewItems(ReviewToDoList);
                bool actionValid = false;
                while (!actionValid)
                {
                    action      = ConsoleUtils.GetUserInput();
                    actionValid = ActionValidate(action);
                    if (actionValid == false)
                    {
                        ConsoleUtils.BadAction();
                    }
                }
                if (action == "Filter")
                {
                    while (!filterTypeValid)
                    {
                        filterType      = ConsoleUtils.GetFilterType();   //Get user input for filter type
                        filterTypeValid = FilterTypeValidate(filterType); //Validate user input for filter type
                        if (filterTypeValid == false)
                        {
                            ConsoleUtils.BadFilterType();
                        }
                    }
                    while (!filterCriteriaValid)
                    {
                        filterCriteria      = ConsoleUtils.GetFilterCriteria(filterType);         //Get user input for filter criteria
                        filterCriteriaValid = FilterCriteriaValidate(filterType, filterCriteria); //Validate user input for filter criteria
                        if (filterCriteriaValid == false)
                        {
                            ConsoleUtils.BadFilterCriteria();
                        }
                    }
                    ItemRepository.ReviewToDoList(filterType, filterCriteria);
                }
                else if (action == "Reset")
                {
                    filterType     = "";
                    filterCriteria = "";
                    ItemRepository.ReviewToDoList(filterType, filterCriteria);
                }
                else if (action == "Add")
                {
                    bool goodStatus   = false;
                    bool goodPriority = false;
                    desc    = ConsoleUtils.GetDescription(false);
                    dueDate = ConsoleUtils.GetDueDate(false);
                    while (!goodStatus)
                    {
                        status     = ConsoleUtils.GetStatus(false);
                        goodStatus = StatusValidate(status);
                        if (goodStatus == false)
                        {
                            ConsoleUtils.BadStatus();
                        }
                    }
                    while (!goodPriority)
                    {
                        priority     = ConsoleUtils.GetPriority(false);
                        goodPriority = PriorityValidate(priority);
                        if (goodPriority == false)
                        {
                            ConsoleUtils.BadPriority();
                        }
                    }
                    ItemRepository.AddItem(desc, dueDate, status, priority);
                }
                else if (action == "Update")
                {
                    bool goodToDoID   = false;
                    bool goodStatus   = false;
                    bool goodPriority = false;
                    while (!goodToDoID)
                    {
                        todoIDint = int.Parse(ConsoleUtils.GetToDoID(action));
                        bool goodID = ItemRepository.ToDoIDVerify(todoIDint);
                        if (goodID == true)
                        {
                            goodToDoID = true;
                        }
                        else
                        {
                            ConsoleUtils.BadID();
                        }
                    }
                    string input = "";
                    while (input != "done")
                    {
                        input = ConsoleUtils.GetUpdateAction();
                        if (input == "desc")
                        {
                            desc = ConsoleUtils.GetDescription(true);
                        }
                        else if (input == "duedate")
                        {
                            dueDate = ConsoleUtils.GetDueDate(true);
                        }
                        else if (input == "status")
                        {
                            while (!goodStatus)
                            {
                                status     = ConsoleUtils.GetStatus(true);
                                goodStatus = StatusValidate(status);
                                if (goodStatus == false)
                                {
                                    ConsoleUtils.BadStatus();
                                }
                            }
                        }
                        else if (input == "priority")
                        {
                            while (!goodPriority)
                            {
                                priority     = ConsoleUtils.GetPriority(true);
                                goodPriority = PriorityValidate(priority);
                                if (goodPriority == false)
                                {
                                    ConsoleUtils.BadPriority();
                                }
                            }
                        }
                    }
                    ItemRepository.UpdateItem(todoIDint, desc, dueDate, status, priority);
                }
                else if (action == "Delete")
                {
                    bool   goodToDoID = false;
                    string verify     = "no";
                    while (!goodToDoID)
                    {
                        //Get ID of item to delete
                        todoIDstring = ConsoleUtils.GetToDoID(action);

                        //Verify ID is valid
                        bool goodID = false;
                        if (todoIDstring != "CANCEL")
                        {
                            goodID = ItemRepository.ToDoIDVerify(int.Parse(todoIDstring));
                            if (goodID == false)
                            {
                                ConsoleUtils.BadID();
                            }
                        }
                        else if (todoIDstring == "")
                        {
                            ConsoleUtils.BadID();
                        }
                        else
                        {
                            break;
                        }
                        //Verify ID is the one the user actually wants to delete
                        if (goodID == true && todoIDstring != "CANCEL")
                        {
                            verify      = ConsoleUtils.DeleteVerifySelection(todoIDstring);
                            verifyValid = VerifyValidate(verify);
                            if (verifyValid == true)
                            {
                                if (verify.ToLower() == "yes")
                                {
                                    goodToDoID = true;
                                }
                            }
                            else
                            {
                                ConsoleUtils.BadVerify();
                            }
                        }
                    }

                    //Delete the item
                    if (verify.ToLower() == "yes")
                    {
                        ItemRepository.DeleteItem(todoIDstring);
                    }
                }
                else if (action == "Done")
                {
                    done = true;
                }
            }
        }