Beispiel #1
0
        static void Main(string[] args)
        {
            var menu = new Menu()
            {
                Items = new List <MenuItem>()
                {
                    //Elevators
                    new MenuItem()
                    {
                        Name  = "Select elevator:",
                        Items = new List <MenuItem>()
                        {
                            new MenuItem()
                            {
                                Name       = "GetInfo",
                                Items      = new List <MenuItem>(),
                                MenuObject = null,
                                Action     = delegate(Menu @this, object obj, Type type)
                                {
                                    if (type.Name != typeof(Elevator).Name)
                                    {
                                        Console.WriteLine("It is not elevator type!");
                                    }

                                    var elevator = (Elevator)Convert.ChangeType(obj, type);
                                    Console.WriteLine(elevator);
                                }
                            },
                            new MenuItem()
                            {
                                Name       = "SetController",
                                Items      = new List <MenuItem>(),
                                MenuObject = null,
                                Action     = delegate(Menu @this, object obj, Type type)
                                {
                                    if (type.Name != typeof(Elevator).Name)
                                    {
                                        Console.WriteLine("It is not elevator type!");
                                    }
                                    var             elevator = (Elevator)Convert.ChangeType(obj, type);
                                    ElevatorControl elevatorControl;
                                    var             elevatorControls = (List <ElevatorControl>)@this.Items[2].MenuObject.Object;
                                    var             input            = "";

selectControlLabel:
                                    Console.Clear();
                                    Console.WriteLine($"What control you want to set into {elevator.Name} eleavtor?");
                                    for (var i = 0; i < elevatorControls.Count; i++)
                                    {
                                        Console.WriteLine($"  {i} - {elevatorControls[i].ModelName}");
                                    }
                                    Console.WriteLine("  b - Back");
                                    input = Console.ReadLine();
                                    if (input == "b")
                                    {
                                        return;
                                    }
                                    try
                                    {
                                        elevatorControl = elevatorControls[Convert.ToInt32(input)];
                                    }
                                    catch (Exception ex)
                                    {
                                        Console.WriteLine($" *** Select right variant!");
                                        Console.WriteLine($" * Press any key to continue...");
                                        Console.ReadKey();
                                        goto selectControlLabel;
                                    }

                                    Console.WriteLine(elevator.SetController(elevatorControl));
                                }
                            },
                            new MenuItem()
                            {
                                Name       = "OpenDoor",
                                Items      = new List <MenuItem>(),
                                MenuObject = null,
                                Action     = delegate(Menu @this, object obj, Type type)
                                {
                                    if (type.Name != typeof(Elevator).Name)
                                    {
                                        Console.WriteLine("It is not elevator type!");
                                    }

                                    var elevator = (Elevator)Convert.ChangeType(obj, type);
                                    Console.WriteLine(elevator.OpenDoor());
                                }
                            },
                            new MenuItem()
                            {
                                Name       = "CloseDoor",
                                Items      = new List <MenuItem>(),
                                MenuObject = null,
                                Action     = delegate(Menu @this, object obj, Type type)
                                {
                                    if (type.Name != typeof(Elevator).Name)
                                    {
                                        Console.WriteLine("It is not elevator type!");
                                    }

                                    var elevator = (Elevator)Convert.ChangeType(obj, type);
                                    Console.WriteLine(elevator.CloseDoor());
                                }
                            },
                            new MenuItem()
                            {
                                Name       = "MoveUp",
                                Items      = new List <MenuItem>(),
                                MenuObject = null,
                                Action     = delegate(Menu @this, object obj, Type type)
                                {
                                    if (type.Name != typeof(Elevator).Name)
                                    {
                                        Console.WriteLine("It is not elevator type!");
                                    }

                                    var elevator = (Elevator)Convert.ChangeType(obj, type);
                                    Console.WriteLine(elevator.MoveUp());
                                }
                            },
                            new MenuItem()
                            {
                                Name       = "MoveDown",
                                Items      = new List <MenuItem>(),
                                MenuObject = null,
                                Action     = delegate(Menu @this, object obj, Type type)
                                {
                                    if (type.Name != typeof(Elevator).Name)
                                    {
                                        Console.WriteLine("It is not elevator type!");
                                    }

                                    var elevator = (Elevator)Convert.ChangeType(obj, type);
                                    Console.WriteLine(elevator.MoveDown());
                                }
                            },
                            new MenuItem()
                            {
                                Name       = "Stop",
                                Items      = new List <MenuItem>(),
                                MenuObject = null,
                                Action     = delegate(Menu @this, object obj, Type type)
                                {
                                    if (type.Name != typeof(Elevator).Name)
                                    {
                                        Console.WriteLine("It is not elevator type!");
                                    }

                                    var elevator = (Elevator)Convert.ChangeType(obj, type);
                                    Console.WriteLine(elevator.Stop());
                                }
                            },
                            new MenuItem()
                            {
                                Name       = "CallHelper",
                                Items      = new List <MenuItem>(),
                                MenuObject = null,
                                Action     = delegate(Menu @this, object obj, Type type)
                                {
                                    if (type.Name != typeof(Elevator).Name)
                                    {
                                        Console.WriteLine("It is not elevator type!");
                                    }

                                    var elevator = (Elevator)Convert.ChangeType(obj, type);
                                    Console.WriteLine(elevator.CallHelper());
                                }
                            }
                        },
                        Action = delegate(Menu @this, object obj, Type type)
                        {
                            var      menuItem = (MenuItem)Convert.ChangeType(obj, type);
                            var      input    = "";
                            Elevator elevator;
                            var      listElevators = (List <Elevator>)Convert.ChangeType(menuItem.MenuObject.Object, menuItem.MenuObject.Type);

startShowElevatorsLabel:
                            Console.Clear();
                            Console.WriteLine("Select elevator:");
                            for (var i = 0; i < listElevators.Count; i++)
                            {
                                Console.WriteLine($"  {i} - {listElevators[i].Name}");
                            }

                            Console.WriteLine("  b - Back");
                            input = Console.ReadLine();
                            if (input == "b")
                            {
                                return;
                            }
                            try
                            {
                                elevator = listElevators[Convert.ToInt32(input)];

startElevatorOperationsLabel:
                                Console.Clear();
                                Console.WriteLine($"{elevator.Name} is selected. Choose the operation:");
                                for (var i = 0; i < menuItem.Items.Count; i++)
                                {
                                    Console.WriteLine($"  {i} - {menuItem.Items[i].Name}");
                                }
                                Console.WriteLine("  b - Back");
                                input = Console.ReadLine();
                                if (input == "b")
                                {
                                    return;
                                }

                                try
                                {
                                    menuItem.Items[Convert.ToInt32(input)].Action.Invoke(@this, elevator, typeof(Elevator));
                                    Console.WriteLine($" * Press any key to continue...");
                                    Console.ReadKey();
                                }
                                catch (Exception ex)
                                {
                                    Console.WriteLine($" *** Can not execute {input} operation id.");
                                    Console.WriteLine($" * Press any key to continue...");
                                    Console.ReadKey();
                                }
                                goto startElevatorOperationsLabel;
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine($" *** Can not execute {input} operation id.");
                                Console.WriteLine($" * Press any key to continue...");
                                Console.ReadKey();
                            }
                            goto startShowElevatorsLabel;
                        },
                        MenuObject = new MenuObject()
                        {
                            Description = "Elevators",
                            Type        = typeof(List <Elevator>),
                            Object      = new List <Elevator>()
                        }
                    },
                    //Create elevator
                    new MenuItem()
                    {
                        Name   = "Create elevator:",
                        Items  = new List <MenuItem>(),
                        Action = delegate(Menu @this, object obj, Type type)
                        {
                            var     menuItem         = (MenuItem)Convert.ChangeType(obj, type);
                            var     input            = "";
                            var     elevatorName     = "";
                            var     elevatorMaxFloor = 1;
                            Version elevatorMechanicVersion;
                            var     elevatorPassword = "";


inputElevatorNameLabel:
                            Console.Clear();
                            Console.WriteLine("  b - Back\r\nInput elevator name:");
                            input = Console.ReadLine();
                            if (input == "b")
                            {
                                return;
                            }
                            elevatorName = input;

inputElevatorMaxFloorLabel:
                            Console.Clear();
                            Console.WriteLine("  b - Back\r\nInput elevator max floor:");
                            input = Console.ReadLine();
                            if (input == "b")
                            {
                                return;
                            }
                            try
                            {
                                elevatorMaxFloor = Convert.ToInt32(input);
                                if (elevatorMaxFloor < 1 || elevatorMaxFloor > 100)
                                {
                                    Console.WriteLine($" *** Write correct floor. (1-100)");
                                    Console.WriteLine($" * Press any key to continue...");
                                    Console.ReadKey();
                                    goto inputElevatorMaxFloorLabel;
                                }
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine($" *** Write correct floor. (1-100)");
                                Console.WriteLine($" * Press any key to continue...");
                                Console.ReadKey();
                                goto inputElevatorMaxFloorLabel;
                            }

inputElevatorVersionLabel:
                            Console.Clear();
                            Console.WriteLine("  b - Back\r\nInput elevator mechanic version 1.1.0.0 as standard:");
                            input = Console.ReadLine();
                            if (input == "b")
                            {
                                return;
                            }
                            try
                            {
                                elevatorMechanicVersion = new Version(input);
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine($" *** Write correct version. Example: 1.1.0.0");
                                Console.WriteLine($" * Press any key to continue...");
                                Console.ReadKey();
                                goto inputElevatorVersionLabel;
                            }

inputElevatorPasswordLabel:
                            Console.Clear();
                            Console.WriteLine("  b - Back\r\nInput elevator password:"******"b")
                            {
                                return;
                            }
                            elevatorPassword = input;

                            var elevator = new Elevator(elevatorName, elevatorMaxFloor, elevatorMechanicVersion, elevatorPassword);

                            ((List <Elevator>)@this.Items[0].MenuObject.Object).Add(elevator);

                            Console.WriteLine($"Created {elevator}");
                        },
                        MenuObject = new MenuObject()
                    },
                    //Controls
                    new MenuItem()
                    {
                        Name  = "Select control:",
                        Items = new List <MenuItem>()
                        {
                            new MenuItem()
                            {
                                Name       = "GetInfo",
                                Items      = new List <MenuItem>(),
                                MenuObject = null,
                                Action     = delegate(Menu @this, object obj, Type type)
                                {
                                    if (type.Name != typeof(ElevatorControl).Name)
                                    {
                                        Console.WriteLine("It is not elevatorControl type!");
                                    }

                                    var elevatorControl = (ElevatorControl)obj;
                                    Console.WriteLine(elevatorControl);
                                    switch (elevatorControl)
                                    {
                                    case RemoteElevatorControl _:
                                        Console.WriteLine($"Control type {typeof(RemoteElevatorControl).Name}");
                                        break;

                                    case KeypadElevatorControl _:
                                        Console.WriteLine($"Control type {typeof(KeypadElevatorControl).Name}");
                                        break;
                                    }
                                }
                            },
Beispiel #2
0
 public RemoteElevatorControl(string modelName, DateTime releaseDate, Elevator elevator = null, string masterPassword = "******")
     : base(modelName, releaseDate, elevator)
 {
     MasterPassword = masterPassword.GetHashCode();
 }
Beispiel #3
0
 public KeypadElevatorControl(string modelName, DateTime releaseDate, Elevator elevator = null)
     : base(modelName, releaseDate, elevator)
 {
 }