private void MoveToGroup(Equipment equipment, GroupEquipment destinationGroup)
        {
            var equipmentGroup = Groups.FirstOrDefault(x => x.Devices.Contains(equipment));

            equipmentGroup.RemoveEquipment(equipment);
            destinationGroup.AddEquipment(equipment);
        }
        public void AddGroup(GroupEquipment groupEquipment)
        {
            if (groupEquipment == null)
            {
                throw new ArgumentNullException(nameof(groupEquipment));
            }

            this.Groups.Add(groupEquipment);
        }
        /// <summary>
        /// Initialize root random values
        /// </summary>
        /// <returns></returns>
        public void Initialize()
        {
            //Random groups (1-5)
            for (int i = 0; i < new Random().Next(1, 5); i++)
            {
                var group = new GroupEquipment(name: $"Group{i}");

                for (int k = 0; k < new Random().Next(1, 4); k++)
                {
                    Equipment equipment = Equipment.CreateRandomEquipment();
                    equipment.Name = $"Device_{i}_{k}";

                    group.AddEquipment(equipment);
                }

                AddGroup(group);
            }
        }
Beispiel #4
0
        private static void GetGroupInfo(GroupEquipment group)
        {
            Console.WriteLine($"Group: Name='{group.Name}':");

            if (group.Devices.Any())
            {
                foreach (var device in group.Devices)
                {
                    if (device != null)
                    {
                        Console.WriteLine(device.GetCurrentState());
                        Console.WriteLine();
                    }
                }
            }
            else
            {
                Console.WriteLine($"There are no devices");
            }
        }
Beispiel #5
0
        private static bool MainMenu(RootEquipment root)
        {
            string inputString = Console.ReadLine();

            string[] splittedString = inputString.Split(' ');

            var command    = splittedString[0].Trim();
            var parameters = splittedString.Skip(1).ToArray();

            //TODO: Баг. Убрать этот метод, т.к. при добавлении новой группы, его имя с маленькой буквы...
            LowerParameters(parameters);

            //TODO: Обработать отсутствие параметров
            switch (command)
            {
            case "help":
                Console.WriteLine(GetInstrustion());
                return(true);

            case "show":
                if (parameters.Length == 1)
                {
                    //show all
                    if (parameters[0] == "all")
                    {
                        GetAllEquipment(root);
                    }
                    else if (parameters[0] == "group")
                    {
                        var group = ChooseGroup(root);
                        GetGroupInfo(group);
                    }
                }
                else if (parameters.Length == 2)
                {
                    if (parameters[0] == "device")
                    {
                        //show device <id>
                        var equipmentId = parameters[1];
                        var equipment   = root.GetEquipmentById(equipmentId);

                        Console.WriteLine(equipment.GetCurrentState());
                    }
                    else
                    {
                        throw new Exception($"For 'show' second parameter expected: 'group' or 'device'");
                    }
                }
                else if (parameters.Length > 2)
                {
                    Console.WriteLine(ShowFormatError());
                }
                else
                {
                    GetAllEquipment(root);
                }
                return(true);

            case "add":
                if (parameters.Length >= 1)
                {
                    if (parameters[0] == "group")
                    {
                        if (parameters.Length > 1)
                        {
                            //add group [groupName]
                            var newGroupName = parameters[1];
                            if (!string.IsNullOrEmpty(newGroupName))
                            {
                                var newGroup = new GroupEquipment(newGroupName);
                                root.AddGroup(newGroup);
                                GetAllEquipment(root);
                            }
                            else
                            {
                                throw new Exception($"Cant find parameter 'group name'");
                            }
                        }
                        else
                        {
                            throw new Exception($"Cant find parameter 'group name'");
                        }
                    }
                    else if (parameters[0] == "device")
                    {
                        //add device
                        Equipment      newDevice = ChooseType();
                        GroupEquipment group     = ChooseGroup(root);

                        group.AddEquipment(newDevice);

                        GetAllEquipment(root);
                    }
                    else
                    {
                        throw new Exception($"Expected first command parameter 'device' or 'group'.");
                    }
                }
                else
                {
                    throw new Exception($"Expected one command parameter. You can add 'group' or 'device'.");
                }
                return(true);

            case "edit":
                if (parameters.Length == 2)
                {
                    if (parameters[0] == "device")
                    {
                        //edit device [deviceId]
                        var equipmentId = parameters[1];
                        var equipment   = root.GetEquipmentById(equipmentId);

                        EditDeviceProperty(equipment);
                    }
                    else
                    {
                        throw new Exception($"Expected two command parameter 'device' and '<deviceId>'.");
                    }
                }
                else
                {
                    throw new Exception($"Expected two command parameter 'device' and '<deviceId>.");
                }
                return(true);

            case "delete":
                if (parameters[0] == "group")
                {
                    //delete group
                    GroupEquipment group = ChooseGroup(root);
                    root.Groups.Remove(group);
                    GetAllEquipment(root);
                }
                else if (parameters[0] == "device")
                {
                    //delete device [deviceId]
                    if (parameters.Length == 2)
                    {
                        var equipmentId = parameters[1];
                        var equipment   = root.GetEquipmentById(equipmentId);

                        root.RemoveEquipment(equipment);

                        GetAllEquipment(root);
                    }
                    else
                    {
                        throw new Exception($"Expected two command parameter 'groupNumber' and 'equipmentNumber'.");
                    }
                }
                return(true);

            case "cls":
                Console.Clear();
                return(true);

            case "exit":
                return(false);

            default:
                return(true);
            }
        }