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); } }
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"); } }
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); } }