示例#1
0
        public static void Main(string[] args)
        {
            var action = DynamicSelectionActionWithCondition.CreateNew(ctx =>
            {
                if (Station.CheckFreeSlots(out var countFreeSlots))
                {
                    return(SelectionAction
                           .CreateNew($"Количество свободных мест для стоянки - {countFreeSlots}")
                           .AddAction("1", "Принять самолёт", DataInputAction.CreateNew("Укажите номер борта самолёта", "airNum")
                                      .SetDescendantAction(WorkAction.CreateNew(ctx1 =>
                    {
                        var id = ctx1["airNum"];
                        Console.WriteLine(Station.TryTakeAircraft(id)
                                                                        ? $"Самолёт с номером борта '{id}' принят"
                                                                        : $"Самолёт с номером борта '{id}' не удалось принять");
                    })))
                           .AddAction("2", "Отправить самолёт", SendAircraftAction()));
                }

                return(SelectionAction
                       .CreateNew("Свободных мест для самолётов нет")
                       .AddAction("1", "Отправить самолёт", SendAircraftAction()));
            });

            var worker = new ConsoleActionsWorker(action, new WorkerSettings
            {
                SelectDescription = "Введите номер действия",
                ReselectDescriptionIfUnknownAction = "Указанное действие не найдено. Повторите выбор"
            });

            worker.Start();
        }
        public static void Main(string[] args)
        {
            var enterAction = DataInputAction.CreateNew($"Введите логин:", "login")
                              .SetDescendantAction(DynamicSelectionActionWithCondition.CreateNew(ctx =>
            {
                var login = ctx["login"];
                if (RegistrationStorage.ContainsKey(login))
                {
                    Console.WriteLine($"Здравствуйте, {RegistrationStorage[login]}");
                    return(new WorkAction(ctx1 => { }));
                }

                Console.WriteLine("Пользователь не найден. Зарегистрируйтесь...");
                return(DataInputAction.CreateNew("Введите логин:", "newLogin")
                       .SetDescendantAction(DataInputAction.CreateNew("Введите имя:", "newName")
                                            .SetDescendantAction(new WorkAction(ctx1 =>
                {
                    var newLogin = ctx1["newLogin"];
                    if (RegistrationStorage.ContainsKey(newLogin))
                    {
                        Console.WriteLine($"Логин {newLogin} занят");
                        return;
                    }
                    var newName = ctx1["newName"];
                    RegistrationStorage.Add(newLogin, newName);
                    Console.WriteLine($"Прошла регистрация логин - {newLogin}, имя - {newName}");
                }))));
            }));

            var action = SelectionAction.CreateNew()
                         .AddAction("1", "Ввести учетную запись", enterAction)
                         .AddAction("2", "Показать имена всех пользователей", WorkAction.CreateNew(ctx =>
            {
                foreach (var name in RegistrationStorage.Values)
                {
                    Console.WriteLine(name);
                }
            }));

            var worker = new ConsoleActionsWorker(action, new WorkerSettings
            {
                SelectDescription = "Введите номер действия",
                ReselectDescriptionIfUnknownAction = "Указанное действие не найдено. Повторите выбор"
            });

            worker.Start();
        }