public static void findInTableByText(DB_impl DB, Task_manager_impl tm, ConsoleIO_impl IO)
        {
            IO.clear();
            IO.print("Для поиска по тексту введите текст\n"
                     + "[Назад - esc]");
            string         text = "";
            ConsoleKeyInfo cki  = IO.getKeyFromUser();

            while (cki.Key != ConsoleKey.Enter)
            {
                if (cki.Key == ConsoleKey.Escape)
                {
                    throw new ProcessToShowTable();
                }
                text += cki.KeyChar;
                cki   = IO.getKeyFromUser();
            }

            IO.print("Поиск по тексту - " + text);
            tm.findTasksByText(text);
            IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
            IO.print("Нажмите любую клавишу для возврата.");
            IO.getKeyFromUser();
            throw new ProcessToShowTable();
        }
예제 #2
0
 public static void deleteTable(DB_impl DB, ConsoleIO_impl IO)
 {
     IO.clear();
     IO.print("Внимание! Удаление списка задач\n"
              + "Нажмите [Enter] для подтверждения");
     if (IO.getKeyFromUser().Key == ConsoleKey.Enter)
     {
         IO.clear();
         bool v = DB.dropTable(DB.MainTable);
         if (!v)
         {
             IO.print("Ошибка работы приложения!\n"
                      + "Нажмите любую клавишу для перехода в главное меню.");
             IO.getKeyFromUser();
             throw new ReturnToMainMenu();
         }
         IO.print("Список " + DB.MainTable + " успешно удален.\n"
                  + "Нажмите любую клавишу для перехода в главное меню.");
         DB.MainTable = "";
         IO.getKeyFromUser();
         throw new ReturnToMainMenu();
     }
     else
     {
         throw new ReturnToTableMenu();
     }
 }
예제 #3
0
        public static void openTable(DB_impl DB, ConsoleIO_impl IO)
        {
            IO.clear();
            var tables = DB.getTablesDataGrid();

            IO.print("Выберите № списка:\n[Назад - esc]");
            IO.printTable(new string[] { "№", "Список" }, tables);
            int            countTables = tables.Count;
            ConsoleKeyInfo cki;
            int            answer = -1;

            do
            {
                cki = IO.getKeyFromUser();
                if (cki.Key == ConsoleKey.Escape)
                {
                    throw new ReturnToMainMenu();
                }
                bool v = int.TryParse(cki.Key.ToString().Substring(1), out answer);
                if (!v || answer < 0 || answer >= countTables)
                {
                    answer = -1; IO.clear();
                    IO.print("Ошибка! Неверное значение.\n");
                    IO.print("Выберите № списка:\n[Назад - esc]");
                    IO.printTable(new string[] { "№", "Список" }, tables);
                }
            } while (answer < 0 || answer >= countTables);
            DB.MainTable = DB.getTables()[answer];
            throw new ReturnToTableMenu();
        }
예제 #4
0
        public static void editTasksAtTableByStatus(DB_impl DB, Task_manager_impl tm, ConsoleIO_impl IO)
        {
            IO.clear();
            string menu = "Редактировать:\n"
                          + "1)Выполненные\n"
                          + "2)Не выполненные\n"
                          + "[Назад - esc]";

            IO.print(menu);
            ConsoleKeyInfo cki;
            int            answer = -1;

            do
            {
                cki = IO.getKeyFromUser();
                if (cki.Key == ConsoleKey.Escape)
                {
                    break;
                }
                bool v = int.TryParse(cki.Key.ToString().Substring(1), out answer);
                if (!v || answer < 1 || answer > 2)
                {
                    IO.clear(); IO.print("Ошибка! Неверное значение.\n" + menu);
                }
            } while (answer < 1 || answer > 2);
            IO.clear();
            switch (answer)
            {
            case 1:
                tm = DB.getAllTasks();
                tm.findTasksByCompletion(true);
                tm.getTasks().ForEach(e => editSingleTask(e, tm, IO));
                DB.updateTasks(tm);
                IO.clear();
                IO.print("Редактирование выполнено успешно. Нажмите любую клавишу для возврата.");
                IO.getKeyFromUser();
                throw new ReturnToTableMenu();
                break;

            case 2:
                tm = DB.getAllTasks();
                tm.findTasksByCompletion(false);
                tm.getTasks().ForEach(e => editSingleTask(e, tm, IO));
                DB.updateTasks(tm);
                IO.clear();
                IO.print("Редактирование выполнено успешно. Нажмите любую клавишу для возврата.");
                IO.getKeyFromUser();
                throw new ReturnToTableMenu();
                break;

            default:
                throw new ReturnToTableMenu();
                break;
            }
        }
        public static void findInTable(DB_impl DB, Task_manager_impl tm, ConsoleIO_impl IO)
        {
            IO.clear();
            string menu = "Выберите действие:\n"
                          + "1)Найти по тексту\n"
                          + "2)Найти по дате\n"
                          + "3)Найти по статусу\n"
                          + "[Назад - esc]";

            IO.print(menu);
            ConsoleKeyInfo cki;
            int            answer = -1;

            do
            {
                cki = IO.getKeyFromUser();
                if (cki.Key == ConsoleKey.Escape)
                {
                    break;
                }
                bool v = int.TryParse(cki.Key.ToString().Substring(1), out answer);
                if (!v || answer < 1 || answer > 3)
                {
                    IO.clear(); IO.print("Ошибка! Неверное значение.\n" + menu);
                }
            } while (answer < 1 || answer > 3);
            IO.clear();
            try
            {
                switch (answer)
                {
                case 1:
                    findInTableByText(DB, tm, IO);
                    break;

                case 2:
                    findInTableByDate(DB, tm, IO);
                    break;

                case 3:
                    findInTableByCompletion(DB, tm, IO);
                    break;

                default:
                    throw new ProcessToShowTable();
                    break;
                }
            }
            catch (ProcessToShowTable)
            {
                throw new ProcessToShowTable();
            }
        }
        public static void findInTableByDate(DB_impl DB, Task_manager_impl tm, ConsoleIO_impl IO)
        {
            IO.clear();
            IO.print("Для поиска по дате введите дату\n"
                     + "[Назад - esc]");
            string         date_string;
            ConsoleKeyInfo cki;
            DateTime       date = DateTime.Now;

            while (true)
            {
                date_string = "";
                cki         = IO.getKeyFromUser();
                while (cki.Key != ConsoleKey.Enter)
                {
                    if (cki.Key == ConsoleKey.Escape)
                    {
                        throw new ProcessToShowTable();
                    }
                    date_string += cki.KeyChar;
                    cki          = IO.getKeyFromUser();
                }

                date_string = date_string.Replace(".", "/").Replace(",", "/")
                              .Replace(":", "/").Replace(";", "/").Replace("-", "/");
                if (new Regex(@"\d{2,2}/\d{2,2}/\d{4,4}").IsMatch(date_string))
                {
                    date_string = date_string.Substring(6) + "/" + date_string.Substring(3, 2) + "/" + date_string.Substring(0, 2);
                }

                date = new DateTime();
                if (!(new Regex(@"\d{4,4}/\d{2,2}/\d{2,2}").IsMatch(date_string)) ||
                    !DateTime.TryParse(date_string, out date))
                {
                    IO.clear();
                    IO.print("Ошибка! Неверный формат даты\nДля поиска по дате введите дату\n"
                             + "[Назад - esc]");
                }
                else
                {
                    break;
                }
            }

            IO.print("Поиск по дате - " + date.ToString().Substring(0, 10));
            tm.findTasksByDate(date);
            IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
            IO.print("Нажмите любую клавишу для возврата.");
            IO.getKeyFromUser();
            throw new ProcessToShowTable();
        }
예제 #7
0
        public static void createNewTable(DB_impl DB, ConsoleIO_impl IO)
        {
            IO.clear();
            IO.print("Для создания нового списка введите его название:\n"
                     + "[Назад - esc]");
            string name;

            while (true)
            {
                name = "";
                ConsoleKeyInfo cki = IO.getKeyFromUser();
                while (cki.Key != ConsoleKey.Enter)
                {
                    if (cki.Key == ConsoleKey.Escape)
                    {
                        throw new ProcessToShowTable();
                    }
                    if ((cki.KeyChar > '/' && cki.KeyChar < ':') || (cki.KeyChar > '@' && cki.KeyChar < '[') ||
                        (cki.KeyChar > '`' && cki.KeyChar < '{') || cki.KeyChar == '-' || cki.KeyChar == '_')
                    {
                        name += cki.KeyChar;
                    }
                    cki = IO.getKeyFromUser();
                }
                if (DB.getTables().Contains(name))
                {
                    IO.print("Ошибка! Такой список уже существует.\n" +
                             "Введите новое название:");
                }
                else
                {
                    break;
                }
            }
            bool v = DB.addTable(name);

            if (v)
            {
                DB.MainTable = name;
                throw new ReturnToTableMenu();
            }
            else
            {
                IO.clear();
                IO.print("Ошибка в работе приложения. \n"
                         + "Нажмите любую клавишу для перехода в главное меню.");
                IO.getKeyFromUser();
                throw new ReturnToTableMenu();
            }
        }
예제 #8
0
        public static void deleteTasksFromTableByText(DB_impl DB, Task_manager_impl tm, ConsoleIO_impl IO)
        {
            IO.clear();
            IO.print("Список " + DB.MainTable);
            tm = DB.getAllTasks();
            IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
            IO.print("Для удаления по тексту введите текст\n"
                     + "[Назад - esc]");
            string         text;
            ConsoleKeyInfo cki;

            while (true)
            {
                text = "";
                cki  = IO.getKeyFromUser();
                while (cki.Key != ConsoleKey.Enter)
                {
                    if (cki.Key == ConsoleKey.Escape)
                    {
                        throw new ProcessToShowTable();
                    }
                    text += cki.KeyChar;
                    cki   = IO.getKeyFromUser();
                }
                tm.findTasksByText(text);
                if (tm.getTasks().Count == 0)
                {
                    tm = DB.getAllTasks();
                    IO.clear();
                    IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
                    IO.print("Не найдено совпадений! Введите текст еще раз!");
                }
                else
                {
                    break;
                }
            }
            IO.clear();
            IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
            IO.print("Удаление задач. Для подтверждения нажмите Enter");
            if (IO.getKeyFromUser().Key == ConsoleKey.Enter)
            {
                DB.deleteTasks(tm);
                IO.print("Удаление выполнено успешно. Нажмите любую клавишу для возврата.");
                IO.getKeyFromUser();
            }
            throw new ReturnToTableMenu();
        }
        public static void getTableMenu(DB_impl DB, ConsoleIO_impl IO)
        {
            IO.clear();
            string menu = "Список " + DB.MainTable + "\n"
                          + "Выберите действие:\n"
                          + "1)Показать список задач\n"
                          + "2)Редактировать список задач\n"
                          + "3)Удалить список задач\n"
                          + "[Выйти в главное меню - esc]";

            IO.print(menu);
            ConsoleKeyInfo cki;
            int            answer = -1;

            do
            {
                cki = IO.getKeyFromUser();
                if (cki.Key == ConsoleKey.Escape)
                {
                    break;
                }
                bool v = int.TryParse(cki.Key.ToString().Substring(1), out answer);
                if (!v || answer < 1 || answer > 3)
                {
                    IO.clear(); IO.print("Ошибка! Неверное значение.\n" + menu);
                }
            } while (answer < 1 || answer > 3);
            switch (answer)
            {
            case 1:
                throw new ProcessToShowTable();
                break;

            case 2:
                throw new ProcessToEditTable();
                break;

            case 3:
                throw new ProcessToDeleteTable();
                break;

            default:
                throw new ReturnToMainMenu();
                break;
            }
        }
        public static void editTable(DB_impl DB, ConsoleIO_impl IO)
        {
            IO.clear();
            string menu = "Редактирование списка:\n"
                          + "1)Добавить задание\n"
                          + "2)Редактировать задания\n"
                          + "3)Удалить задания\n"
                          + "[Назад - esc]";

            IO.print(menu);
            ConsoleKeyInfo cki;
            int            answer = -1;

            do
            {
                cki = IO.getKeyFromUser();
                if (cki.Key == ConsoleKey.Escape)
                {
                    break;
                }
                bool v = int.TryParse(cki.Key.ToString().Substring(1), out answer);
                if (!v || answer < 1 || answer > 3)
                {
                    IO.clear(); IO.print("Ошибка! Неверное значение.\n" + menu);
                }
            } while (answer < 1 || answer > 3);
            switch (answer)
            {
            case 1:
                throw new ProcessToAddTaskToTable();
                break;

            case 2:
                throw new ProcessToEditTasksAtTable();
                break;

            case 3:
                throw new ProcessToDeleteTasksAtTable();
                break;

            default:
                throw new ReturnToTableMenu();
                break;
            }
        }
예제 #11
0
        public static void deleteTasksFromTableById(DB_impl DB, Task_manager_impl tm, ConsoleIO_impl IO)
        {
            IO.clear();
            IO.print("Список " + DB.MainTable);
            tm = DB.getAllTasks();
            IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
            IO.print("Выберите № задачи для удаления:\n[Назад - esc]");
            int            countTasks = tm.getTasks().Count;
            ConsoleKeyInfo cki;
            int            id = -1;

            do
            {
                string int_ans = "";
                cki = IO.getKeyFromUser();
                while (cki.Key != ConsoleKey.Enter)
                {
                    if (cki.Key == ConsoleKey.Escape)
                    {
                        throw new ReturnToTableMenu();
                    }
                    int_ans += cki.KeyChar;
                    cki      = IO.getKeyFromUser();
                }
                bool v = int.TryParse(int_ans, out id);

                if (!v || id < 0)
                {
                    id = -1; IO.clear();
                    IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
                    IO.print("Ошибка! Неверное значение.\n");
                    IO.print("Выберите № задачи для удаления:\n[Назад - esc]");
                }

                tm.findTaskById(id);
                if (tm.getTasks().Count == 0)
                {
                    tm = DB.getAllTasks();
                    id = -1; IO.clear();
                    IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
                    IO.print("Ошибка! Такого номера задания не существует.\n");
                    IO.print("Выберите № задачи для удаления:\n[Назад - esc]");
                }
            } while (id < 0);
            IO.clear();
            IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
            IO.print("Удаление задачи. Для подтверждения нажмите Enter");
            if (IO.getKeyFromUser().Key == ConsoleKey.Enter)
            {
                DB.deleteTasks(tm);
                IO.print("Удаление выполнено успешно. Нажмите любую клавишу для возврата.");
                IO.getKeyFromUser();
            }
            throw new ReturnToTableMenu();
        }
        public static void showTable(DB_impl DB, Task_manager_impl tm, ConsoleIO_impl IO)
        {
            IO.clear();
            IO.print("Список " + DB.MainTable);
            tm = DB.getAllTasks();
            IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
            string menu = "Выберите действие:\n"
                          + "1)Отсортировать\n"
                          + "2)Найти\n"
                          + "[Назад - esc]";

            IO.print(menu);
            ConsoleKeyInfo cki;
            int            answer = -1;

            do
            {
                cki = IO.getKeyFromUser();
                if (cki.Key == ConsoleKey.Escape)
                {
                    break;
                }
                bool v = int.TryParse(cki.Key.ToString().Substring(1), out answer);
                if (!v || answer < 1 || answer > 2)
                {
                    IO.clear(); IO.print("Ошибка! Неверное значение.\n" + menu);
                }
            } while (answer < 1 || answer > 2);
            switch (answer)
            {
            case 1:
                throw new ProcessToSortTable();
                break;

            case 2:
                throw new ProcessToFindInTable();
                break;

            default:
                throw new ReturnToTableMenu();
                break;
            }
        }
예제 #13
0
        public void getMainMenu()
        {
            IO.clear();
            string menu = "Для начала работы выберите действие:\n"
                          + "1)Создать новый список задач\n"
                          + "2)Открыть список задач\n"
                          + "[Выйти - esc]";

            IO.print("Добро пожаловать!\n" + menu);
            ConsoleKeyInfo cki;
            int            answer = -1;

            do
            {
                cki = IO.getKeyFromUser();
                if (cki.Key == ConsoleKey.Escape)
                {
                    break;
                }
                bool v = int.TryParse(cki.Key.ToString().Substring(1), out answer);
                if (!v || answer < 1 || answer > 2)
                {
                    IO.clear(); IO.print("Ошибка! Неверное значение.\n" + menu);
                }
            } while (answer < 1 || answer > 2);
            switch (answer)
            {
            case 1:
                createNewTable();
                break;

            case 2:
                openTable();
                break;

            default:
                closeApp();
                break;
            }
        }
        public static void findInTableByCompletion(DB_impl DB, Task_manager_impl tm, ConsoleIO_impl IO)
        {
            IO.clear();
            string menu = "Найти:\n"
                          + "1)Выполненные\n"
                          + "2)Не выполненные\n"
                          + "[Назад - esc]";

            IO.print(menu);
            ConsoleKeyInfo cki;
            int            answer = -1;

            do
            {
                cki = IO.getKeyFromUser();
                if (cki.Key == ConsoleKey.Escape)
                {
                    break;
                }
                bool v = int.TryParse(cki.Key.ToString().Substring(1), out answer);
                if (!v || answer < 1 || answer > 2)
                {
                    IO.clear(); IO.print("Ошибка! Неверное значение.\n" + menu);
                }
            } while (answer < 1 || answer > 2);
            IO.clear();
            switch (answer)
            {
            case 1:
                IO.print("Поиск выполненных задач");
                tm.findTasksByCompletion(true);
                IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
                IO.print("Нажмите любую клавишу для возврата.");
                IO.getKeyFromUser();
                throw new ProcessToShowTable();
                break;

            case 2:
                IO.print("Поиск не выполненных задач");
                tm.findTasksByCompletion(false);
                IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
                IO.print("Нажмите любую клавишу для возврата.");
                IO.getKeyFromUser();
                throw new ProcessToShowTable();
                break;

            default:
                throw new ProcessToShowTable();
                break;
            }
        }
예제 #15
0
        public static void editSingleTask(Task_impl task, Task_manager_impl tm, ConsoleIO_impl IO)
        {
            IO.clear();
            IO.print("Задание: " + task.Task_text);
            IO.print("Введите новое: ");
            string text = IO.getStringFromUser();

            IO.print("Дата задания: " + task.Task_date.ToString().Substring(0, 10));
            IO.print("Введите новую дату: ");
            DateTime time = IO.getDateFromUser();

            IO.print("Статус задания: " + (task.Task_completion ? "[X]" : "[ ]"));
            string phrase = "Введите новый статус:\n"
                            + "1)Выполнено\n"
                            + "2)Не выполнено";

            IO.print(phrase);
            ConsoleKeyInfo cki;
            int            status = -1;

            do
            {
                cki = IO.getKeyFromUser();
                if (cki.Key == ConsoleKey.Escape)
                {
                    break;
                }
                bool v = int.TryParse(cki.Key.ToString().Substring(1), out status);
                if (!v || status < 1 || status > 2)
                {
                    IO.clear(); IO.print("Ошибка! Неверное значение.\n" + phrase);
                }
            } while (status < 1 || status > 2);

            tm.changeTask(task, text, time, status == 1 ? true : false);
        }
        public static void addTaskToTable(DB_impl DB, Task_manager_impl tm, ConsoleIO_impl IO)
        {
            IO.clear();
            IO.print("Добавление новой задачи\n[Назад - esc]\nВведите задание:");
            string         text = "";
            ConsoleKeyInfo cki  = IO.getKeyFromUser();

            while (cki.Key != ConsoleKey.Enter)
            {
                if (cki.Key == ConsoleKey.Escape)
                {
                    throw new ProcessToShowTable();
                }
                text += cki.KeyChar;
                cki   = IO.getKeyFromUser();
            }
            IO.print(text + "\nВведите дату:");
            string   date_string;
            DateTime date = DateTime.Now;

            while (true)
            {
                date_string = "";
                cki         = IO.getKeyFromUser();
                while (cki.Key != ConsoleKey.Enter)
                {
                    if (cki.Key == ConsoleKey.Escape)
                    {
                        throw new ProcessToShowTable();
                    }
                    date_string += cki.KeyChar;
                    cki          = IO.getKeyFromUser();
                }

                date_string = date_string.Replace(".", "/").Replace(",", "/")
                              .Replace(":", "/").Replace(";", "/").Replace("-", "/");
                if (new Regex(@"\d{2,2}/\d{2,2}/\d{4,4}").IsMatch(date_string))
                {
                    date_string = date_string.Substring(6) + "/" + date_string.Substring(3, 2) + "/" + date_string.Substring(0, 2);
                }

                date = new DateTime();
                if (!(new Regex(@"\d{4,4}/\d{2,2}/\d{2,2}").IsMatch(date_string)) ||
                    !DateTime.TryParse(date_string, out date))
                {
                    IO.clear();
                    IO.print("Ошибка! Неверный формат даты\nВведите дату");
                }
                else
                {
                    break;
                }
            }
            tm = new Task_manager_impl();
            tm.addTask(text, date);
            IO.getKeyFromUser();
            DB.updateTasks(tm);
            IO.clear();
            IO.print("Успешно добавлено");
            IO.getKeyFromUser();
            throw new ProcessToAddTaskToTable();
        }
예제 #17
0
        public static void editTasksAtTable(DB_impl DB, Task_manager_impl tm, ConsoleIO_impl IO)
        {
            IO.clear();
            string menu = "Выберите действие:\n"
                          + "1)Редактировать по номеру\n"
                          + "2)Редактировать по тексту\n"
                          + "3)Редактировать по дате\n"
                          + "4)Редактировать по статусу\n"
                          + "[Назад - esc]";

            IO.print(menu);
            ConsoleKeyInfo cki;
            int            answer = -1;

            do
            {
                cki = IO.getKeyFromUser();
                if (cki.Key == ConsoleKey.Escape)
                {
                    break;
                }
                bool v = int.TryParse(cki.Key.ToString().Substring(1), out answer);
                if (!v || answer < 1 || answer > 4)
                {
                    IO.clear(); IO.print("Ошибка! Неверное значение.\n" + menu);
                }
            } while (answer < 1 || answer > 4);
            IO.clear();
            switch (answer)
            {
            case 1:
                try
                {
                    editTasksAtTableById(DB, tm, IO);
                }
                catch (ProcessToShowTable)
                {
                    throw new ProcessToShowTable();
                }
                catch (ReturnToTableMenu)
                {
                    throw new ReturnToTableMenu();
                }

                break;

            case 2:
                try
                {
                    editTasksAtTableByText(DB, tm, IO);
                }
                catch (ProcessToShowTable)
                {
                    throw new ProcessToShowTable();
                }
                catch (ReturnToTableMenu)
                {
                    throw new ReturnToTableMenu();
                }
                break;

            case 3:
                try
                {
                    editTasksAtTableByDate(DB, tm, IO);
                }
                catch (ProcessToShowTable)
                {
                    throw new ProcessToShowTable();
                }
                catch (ReturnToTableMenu)
                {
                    throw new ReturnToTableMenu();
                }
                break;

            case 4:
                try
                {
                    editTasksAtTableByStatus(DB, tm, IO);
                }
                catch (ProcessToShowTable)
                {
                    throw new ProcessToShowTable();
                }
                catch (ReturnToTableMenu)
                {
                    throw new ReturnToTableMenu();
                }
                break;

            default:
                throw new ProcessToEditTable();
                break;
            }
        }
예제 #18
0
        public static void editTasksAtTableByDate(DB_impl DB, Task_manager_impl tm, ConsoleIO_impl IO)
        {
            IO.clear();
            IO.print("Список " + DB.MainTable);
            tm = DB.getAllTasks();
            IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
            IO.print("Для редактирования по дате введите дату\n"
                     + "[Назад - esc]");
            string         date_string;
            ConsoleKeyInfo cki;
            DateTime       date = DateTime.Now;

            while (true)
            {
                while (true)
                {
                    date_string = "";
                    cki         = IO.getKeyFromUser();
                    while (cki.Key != ConsoleKey.Enter)
                    {
                        if (cki.Key == ConsoleKey.Escape)
                        {
                            throw new ProcessToShowTable();
                        }
                        date_string += cki.KeyChar;
                        cki          = IO.getKeyFromUser();
                    }

                    date_string = date_string.Replace(".", "/").Replace(",", "/")
                                  .Replace(":", "/").Replace(";", "/").Replace("-", "/");
                    if (new Regex(@"\d{2,2}/\d{2,2}/\d{4,4}").IsMatch(date_string))
                    {
                        date_string = date_string.Substring(6) + "/" + date_string.Substring(3, 2) + "/" + date_string.Substring(0, 2);
                    }

                    date = new DateTime();
                    if (!(new Regex(@"\d{4,4}/\d{2,2}/\d{2,2}").IsMatch(date_string)) ||
                        !DateTime.TryParse(date_string, out date))
                    {
                        IO.clear();
                        IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
                        IO.print("Ошибка! Неверный формат даты\nДля редактирования по дате введите дату\n"
                                 + "[Назад - esc]");
                    }
                    else
                    {
                        break;
                    }
                }
                tm.findTasksByDate(date);
                if (tm.getTasks().Count == 0)
                {
                    tm = DB.getAllTasks();
                    IO.clear();
                    IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
                    IO.print("Не найдено совпадений! Введите дату еще раз!");
                }
                else
                {
                    break;
                }
            }

            IO.clear();
            tm.getTasks().ForEach(e => editSingleTask(e, tm, IO));
            DB.updateTasks(tm);
            IO.print("Редактирование выполнено успешно. Нажмите любую клавишу для возврата.");
            IO.getKeyFromUser();
            throw new ReturnToTableMenu();
        }
예제 #19
0
        public static void deleteTasksFromTableByStatus(DB_impl DB, Task_manager_impl tm, ConsoleIO_impl IO)
        {
            IO.clear();
            string menu = "Удалить:\n"
                          + "1)Выполненные\n"
                          + "2)Не выполненные\n"
                          + "[Назад - esc]";

            IO.print(menu);
            ConsoleKeyInfo cki;
            int            answer = -1;

            do
            {
                cki = IO.getKeyFromUser();
                if (cki.Key == ConsoleKey.Escape)
                {
                    break;
                }
                bool v = int.TryParse(cki.Key.ToString().Substring(1), out answer);
                if (!v || answer < 1 || answer > 2)
                {
                    IO.clear(); IO.print("Ошибка! Неверное значение.\n" + menu);
                }
            } while (answer < 1 || answer > 2);
            IO.clear();
            switch (answer)
            {
            case 1:
                tm = DB.getAllTasks();
                tm.findTasksByCompletion(true);
                IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
                IO.print("Удаление выполненных задач. Для подтверждения нажмите Enter");
                if (IO.getKeyFromUser().Key == ConsoleKey.Enter)
                {
                    DB.deleteTasks(tm);
                    IO.print("Удаление выполнено успешно. Нажмите любую клавишу для возврата.");
                    IO.getKeyFromUser();
                }
                throw new ReturnToTableMenu();
                break;

            case 2:
                tm = DB.getAllTasks();
                tm.findTasksByCompletion(false);
                IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
                IO.print("Удаление не выполненных задач. Для подтверждения нажмите Enter");
                if (IO.getKeyFromUser().Key == ConsoleKey.Enter)
                {
                    DB.deleteTasks(tm);
                    IO.print("Удаление выполнено успешно. Нажмите любую клавишу для возврата.");
                    IO.getKeyFromUser();
                }
                throw new ReturnToTableMenu();
                break;

            default:
                throw new ReturnToTableMenu();
                break;
            }
        }
        public static void sortTable(DB_impl DB, Task_manager_impl tm, ConsoleIO_impl IO)
        {
            IO.clear();
            string menu = "Выберите действие:\n"
                          + "1)Отсортировать по тексту\n"
                          + "2)Отсортировать по дате\n"
                          + "3)Отсортировать по статусу\n"
                          + "[Назад - esc]";

            IO.print(menu);
            ConsoleKeyInfo cki;
            int            answer = -1;

            do
            {
                cki = IO.getKeyFromUser();
                if (cki.Key == ConsoleKey.Escape)
                {
                    break;
                }
                bool v = int.TryParse(cki.Key.ToString().Substring(1), out answer);
                if (!v || answer < 1 || answer > 3)
                {
                    IO.clear(); IO.print("Ошибка! Неверное значение.\n" + menu);
                }
            } while (answer < 1 || answer > 3);
            IO.clear();
            switch (answer)
            {
            case 1:
                IO.print("Сортировка по тексту");
                tm.sortByText();
                IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
                IO.print("Нажмите любую клавишу для возврата.");
                IO.getKeyFromUser();
                throw new ProcessToShowTable();
                break;

            case 2:
                IO.print("Сортировка по дате");
                tm.sortByDate();
                IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
                IO.print("Нажмите любую клавишу для возврата.");
                IO.getKeyFromUser();
                throw new ProcessToShowTable();
                break;

            case 3:
                IO.print("Сортировка по статусу");
                tm.sortByCompletion();
                IO.printTable(new string[] { "id", "[X]/[ ]", "Дата", "Задание" }, tm.getTaskManagerDataGrid());
                IO.print("Нажмите любую клавишу для возврата.");
                IO.getKeyFromUser();
                throw new ProcessToShowTable();
                break;

            default:
                throw new ProcessToShowTable();
                break;
            }
        }