예제 #1
0
        internal static void AddNewItem(MenuDisplay menu, ListDisplay list)
        {
            string NewItemName = "";

            Item.Category NewItemCategory = new Item.Category();
            Item.Priority NewItemPriority = new Item.Priority();

            list.DisplayCurrentList(ItemsList.UserShoppingList);
            bool valid     = false;
            bool duplicate = true;

            do
            {
                duplicate = false;
                menu.ActionInstructionsClear();
                menu.ActionPrompt.Clear();
                menu.ActionPrompt.Add("Enter Item Name:");
                menu.ActionInstructions(menu.ActionPrompt);
                Console.SetCursorPosition(MenuDisplay.InstDisplay + 2, menu.ActionPromptInitLine + 1);
                NewItemName = Console.ReadLine();

                /*Duplicate Detector*/
                for (int i = 0; i < ItemsList.UserShoppingList.Count; ++i)
                {
                    if (ItemsList.UserShoppingList[i].Name.ToUpper() == NewItemName.ToUpper())
                    {
                        menu.StatusUpdate();
                        menu.StatusUpdate($"{NewItemName} is already on the list. ", MenuDisplay.ActionStatus.ActionFailure);
                        duplicate = true;
                        break;
                    }
                    if (duplicate == true)
                    {
                        break;
                    }
                }
                if (duplicate == true)
                {
                    continue;
                }

                if (NewItemName.Length > ListDisplay.CatCol - ListDisplay.itemNumCol /*Name Col*/ - 2)
                {
                    menu.StatusUpdate();
                    menu.StatusUpdate($"Your item name is too long. " +
                                      $"Max {ListDisplay.CatCol - ListDisplay.itemNumCol /*Name Col*/ - 2} only", MenuDisplay.ActionStatus.ActionFailure);
                    continue;
                }
                valid = true;
            }while (valid == false || duplicate == true);

            menu.StatusUpdate();
            menu.StatusUpdate(MenuDisplay.DefaultStatus);

            valid = false;
            while (valid == false)
            {
                menu.ActionInstructionsClear();
                menu.ActionPrompt.Clear();
                menu.ActionPrompt.Add($"Name: {NewItemName}");
                menu.ActionPrompt.Add($" ");
                for (int i = 0; i < Item.catList.Count(); ++i)
                {
                    menu.ActionPrompt.Add($"{i + 1}: {Item.catList[i]}");
                }
                menu.ActionPrompt.Add($" ");
                menu.ActionPrompt.Add("Your Choice: ");
                menu.ActionInstructions(menu.ActionPrompt);
                char charInput = Console.ReadKey().KeyChar;

                if (!int.TryParse(charInput.ToString(), out int catInput))
                {
                    menu.StatusUpdate();
                    menu.StatusUpdate($"Please enter a whole Number.", MenuDisplay.ActionStatus.ActionFailure);
                    continue;
                }

                if (catInput > 7 || catInput <= 0)
                {
                    menu.StatusUpdate();
                    menu.StatusUpdate($"Number {charInput} is out of  range.", MenuDisplay.ActionStatus.ActionFailure);
                    continue;
                }
                NewItemCategory = Item.catList[catInput - 1];
                valid           = true;
            }
            menu.StatusUpdate();
            menu.StatusUpdate(MenuDisplay.DefaultStatus);

            valid = false;
            while (valid == false)
            {
                menu.ActionInstructionsClear();
                menu.ActionPrompt.Clear();
                menu.ActionPrompt.Add($"Name: {NewItemName}");
                menu.ActionPrompt.Add($"Category: {NewItemCategory.ToString()}");
                menu.ActionPrompt.Add($" ");
                for (int i = 0; i < Item.prioList.Count(); ++i)
                {
                    menu.ActionPrompt.Add($"{menu.PriorityInitial(Item.prioList[i])}: {Item.prioList[i]}");
                }
                menu.ActionPrompt.Add($" ");
                menu.ActionPrompt.Add("Your Choice: ");
                menu.ActionInstructions(menu.ActionPrompt);
                string stringInput = Console.ReadKey().KeyChar.ToString().ToUpper();


                if (stringInput != "H" && stringInput != "M" && stringInput != "L")
                {
                    menu.StatusUpdate();
                    menu.StatusUpdate($"Please Select 'H', 'M', or 'L'", MenuDisplay.ActionStatus.ActionFailure);
                    continue;
                }

                switch (stringInput)
                {
                case "H": NewItemPriority = Item.Priority.High; break;

                case "M": NewItemPriority = Item.Priority.Medium; break;

                case "L": NewItemPriority = Item.Priority.Low; break;
                }
                valid = true;
            }

            menu.StatusUpdate();
            Item item = new Item(NewItemName, NewItemCategory, NewItemPriority);

            ItemsList.UserShoppingList.Add(item);
            list.DisplayCurrentList(ItemsList.UserShoppingList);
            menu.StatusUpdate($"Item {NewItemName} has been added to list.", MenuDisplay.ActionStatus.ActionSuccess);
            Save();
            menu.ActionInstructionsClear();
        }
예제 #2
0
        internal static void EditItem(MenuDisplay menu, ListDisplay list)
        {
            string NewItemName = "";

            Item.Category NewItemCategory = new Item.Category();
            Item.Priority NewItemPriority = new Item.Priority();

            list.DisplayCurrentList(ItemsList.UserShoppingList);
            IndexFilter(menu, "Which Item # do you want to edit?", out int itemNumIndex, out bool exit);
            if (exit == true)
            {
                return;
            }
            menu.StatusUpdate();
            Item selectedItem = ItemsList.UserShoppingList[itemNumIndex];

            ItemSpecs(selectedItem, menu, list);
            /*Do not reset yet*/

            /*Name*/
            bool valid     = false;
            bool duplicate = true;

            do
            {
                duplicate = false;
                menu.ActionInstructionsClear();
                menu.ActionPrompt.Clear();
                ItemSpecs(selectedItem, menu, list);
                menu.ActionPrompt.Add($" ");
                menu.ActionPrompt.Add($"New Name: ");
                menu.ActionInstructions(menu.ActionPrompt);
                string input = Console.ReadLine();

                for (int i = 0; i < ItemsList.UserShoppingList.Count; ++i)
                {
                    if (ItemsList.UserShoppingList[i].Name == NewItemName)
                    {
                        menu.StatusUpdate();
                        menu.StatusUpdate($"{NewItemName} is already on the list. ", MenuDisplay.ActionStatus.ActionFailure);
                        duplicate = true;
                        break;
                    }
                    if (duplicate == true)
                    {
                        break;
                    }
                }
                if (duplicate == true)
                {
                    continue;
                }

                if (NewItemName.Length > ListDisplay.CatCol - ListDisplay.itemNumCol /*Name Col*/ - 2)
                {
                    menu.StatusUpdate();
                    menu.StatusUpdate($"Your item name is too long. " +
                                      $"Max {ListDisplay.CatCol - ListDisplay.itemNumCol /*Name Col*/ - 2} only", MenuDisplay.ActionStatus.ActionFailure);
                    continue;
                }
                NewItemName = input;
                valid       = true;
            }while (valid == false || duplicate == true);
            int inputSpaces = NewItemName.Count(char.IsWhiteSpace);

            if (NewItemName.Length == inputSpaces || NewItemName == string.Empty)
            {
                NewItemName = selectedItem.Name;
            }
            selectedItem.Name = NewItemName;

            menu.StatusUpdate();
            menu.StatusUpdate(MenuDisplay.DefaultStatus);

            /*Category*/
            valid = false;
            while (valid == false)
            {
                menu.ActionInstructionsClear();
                menu.ActionPrompt.Clear();
                ItemSpecs(selectedItem, menu, list);
                menu.ActionPrompt.Add($" ");
                menu.ActionPrompt.Add($"New Name: {selectedItem.Name}");
                menu.ActionPrompt.Add($" ");
                for (int i = 0; i < Item.catList.Count(); ++i)
                {
                    menu.ActionPrompt.Add($"{i + 1}: {Item.catList[i]}");
                }
                menu.ActionPrompt.Add($" ");
                menu.ActionPrompt.Add("New Category: ");
                menu.ActionInstructions(menu.ActionPrompt);
                char charInput = Console.ReadKey().KeyChar;

                if (charInput == ' ' || charInput == '\r')
                {
                    NewItemCategory = selectedItem.category;
                    valid           = true;
                    break;
                }

                if (!int.TryParse(charInput.ToString(), out int catInput))
                {
                    menu.StatusUpdate();
                    menu.StatusUpdate($"Please enter a whole Number.", MenuDisplay.ActionStatus.ActionFailure);
                    continue;
                }

                if (catInput > 7 || catInput <= 0)
                {
                    menu.StatusUpdate();
                    menu.StatusUpdate($"Number {charInput} is out of  range.", MenuDisplay.ActionStatus.ActionFailure);
                    continue;
                }

                NewItemCategory = Item.catList[catInput - 1];
                valid           = true;
            }
            selectedItem.category = NewItemCategory;
            menu.StatusUpdate();
            menu.StatusUpdate(MenuDisplay.DefaultStatus);

            //Priority
            valid = false;
            while (valid == false)
            {
                menu.ActionInstructionsClear();
                menu.ActionPrompt.Clear();
                ItemSpecs(selectedItem, menu, list);
                menu.ActionPrompt.Add($" ");
                menu.ActionPrompt.Add($"New Name: {selectedItem.Name}");
                menu.ActionPrompt.Add($"New Category: {selectedItem.category}");
                menu.ActionPrompt.Add($" ");

                for (int i = 0; i < Item.prioList.Count(); ++i)
                {
                    menu.ActionPrompt.Add($"{menu.PriorityInitial(Item.prioList[i])}: {Item.prioList[i]}");
                }
                menu.ActionPrompt.Add($" ");
                menu.ActionPrompt.Add("Your Choice: ");
                menu.ActionInstructions(menu.ActionPrompt);
                string stringInput = Console.ReadKey().KeyChar.ToString().ToUpper();

                if (stringInput == " " || stringInput == "\r")
                {
                    NewItemPriority = selectedItem.priority;
                    valid           = true;
                    break;
                }

                if (stringInput != "H" && stringInput != "M" && stringInput != "L")
                {
                    menu.StatusUpdate();
                    menu.StatusUpdate($"Please Select 'H', 'M', or 'L'", MenuDisplay.ActionStatus.ActionFailure);
                    continue;
                }

                switch (stringInput)
                {
                case "H": NewItemPriority = Item.Priority.High; break;

                case "M": NewItemPriority = Item.Priority.Medium; break;

                case "L": NewItemPriority = Item.Priority.Low; break;
                }
                valid = true;
            }
            selectedItem.priority = NewItemPriority;

            //ifPurchased
            if (ItemsList.UserShoppingList[itemNumIndex].IsPurchased == true)
            {
                int indexAtPurchList = ItemsList.UserPurchasedList.IndexOf(ItemsList.UserShoppingList[itemNumIndex]);
                ItemsList.UserPurchasedList[indexAtPurchList].Name     = NewItemName;
                ItemsList.UserPurchasedList[indexAtPurchList].category = NewItemCategory;
                ItemsList.UserPurchasedList[indexAtPurchList].priority = NewItemPriority;
            }

            //Finalize
            menu.ActionInstructionsClear();
            menu.ActionPrompt.Clear();
            menu.StatusUpdate();
            list.DisplayCurrentList(ItemsList.UserShoppingList);
            menu.StatusUpdate($"Item {selectedItem.Name} has been successfully edited.", MenuDisplay.ActionStatus.ActionSuccess);
            Save();
        }