Exemplo n.º 1
0
        public void OptionsToWork(String[] keyPress)
        {
            if (keyPress == null)
            {
                throw new ArgumentNullException("Введено пустое значение команды");
            }
            string command = "";
            string option;

            if (keyPress.Length > 2)
            {
                option  = keyPress[0] + " " + keyPress[1];
                command = keyPress.Skip(2).Aggregate((x, y) => x + ' ' + y);
            }
            else
            {
                option = keyPress.Aggregate((x, y) => x + " " + y);
            }

            switch (option)
            {
            case KeyOptions.Add:
            {
                if (!_inputs.VerifyString(ref command))
                {
                    _outMess.PrintMessage("значение при добавлении не может быть пустым, ");
                }
                _outMess.PrintMessage("вызовите справку или ввидите корректное значение для добавления хоста",
                                      "\n", false);
                CommandAdd(command);
                OptionsToWork(_inputs.ValuesFromUi());
                break;
            }

            case KeyOptions.Quit:
                _outMess.PrintMessage("Приложение завершает свою работу");
                Console.CancelKeyPress -= KeyPress;
                Thread.Sleep(1000);
                Environment.Exit(0);
                break;

            case KeyOptions.Start:
                _outMess.PrintMessage(KeyOptions.HelloMessage);
                break;

            case KeyOptions.Ping:
            {
                if (!CommandPing(command))
                {
                    _outMess.PrintMessage("Неверная команда для старта пингования");
                }
                Console.CancelKeyPress += KeyPress;
                OptionsToWork(_inputs.ValuesFromUi());
                break;
            }

            case KeyOptions.Show:
            {
                try
                {
                    CommandShow();
                }
                catch (NotImplementedException e)
                {
                    _outMess.PrintMessage(e.Message);
                }
                finally
                {
                    OptionsToWork(_inputs.ValuesFromUi());
                }
                break;
            }

            case KeyOptions.Help:
            {
                _outMess.PrintMessage(KeyOptions.GetHelpOptions().Aggregate((a, b) => $"{a}\n{b}"), "\n", false);
                OptionsToWork(_inputs.ValuesFromUi());
                break;
            }

            case KeyOptions.Remove:
            {
                if (!_inputs.VerifyString(ref command, "[", "]"))
                {
                    _outMess.PrintMessage("Введенные данные не верны");
                }
                int index;
                if (Int32.TryParse(command, out index))
                {
                    _outMess.PrintMessage(_worker.RemoveFromConfig(index) ? "Протокол удалён" : "Ошибка удаления");
                }
                else
                {
                    _outMess.PrintMessage("Вы ввели неверный параметр, пожалуйста пробуйте ввести заново");
                }

                OptionsToWork(_inputs.ValuesFromUi());
                break;
            }

            case KeyOptions.Stop:
                _pinger.StopWork();
                _outMess.PrintMessage("Введите процесс опроса остановлен, введите команду:");
                OptionsToWork((_inputs.ValuesFromUi()));
                break;

            default:
                _outMess.PrintMessage(
                    "Неизвестная опция! Повторите ввод или наберите [pinger -help] для вызова справки", "\n", true);
                OptionsToWork(_inputs.ValuesFromUi());
                break;
            }
        }