예제 #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();
        }
예제 #2
0
        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();
        }
 public static DataInputAction CreateOrderWithForceNumberAction(Context ctx, OrderStorage storage)
 {
     return(DataInputAction.CreateNew("Введите новый номер заказа:", ActionsKeys.NewOrderNumber)
            .SetDescendantAction(WorkAction.CreateNew(ctx1 =>
     {
         var newOrderNumber = ctx[ActionsKeys.NewOrderNumber];
         if (int.TryParse(newOrderNumber, out var num))
         {
             var creationSuccess = storage.TryAddNewOrder(num);
             Console.WriteLine(creationSuccess
                                                 ? $"Создан новый заказ с номером '{num}'"
                                                 : $"Не удалось создать заказ с номером '{num}'");
         }
         else
         {
             Console.WriteLine($"Указаное значение не является целым числом '{newOrderNumber}'");
         }
     })));
 }