using MainShell.Hardware; using System; using System.Collections.Generic; using System.Linq; namespace MainShell.EventArgsFolder { public class DeviceIoChangedEventArgs : EventArgs { public DeviceIoChangedEventArgs(IReadOnlyList changedPoints, IReadOnlyDictionary allPoints) { ChangedPoints = changedPoints ?? new List(); AllPoints = allPoints ?? new Dictionary(); } public IReadOnlyList ChangedPoints { get; private set; } public IReadOnlyDictionary AllPoints { get; private set; } public bool TryGetById(int id, out DeviceIoPointState point) { point = AllPoints.Values.FirstOrDefault(x => x.Id == id); return point != null; } public bool TryGetByPointKey(string pointKey, out DeviceIoPointState point) { return AllPoints.TryGetValue(pointKey, out point); } public DeviceIoPointState FindByName(string name) { return AllPoints.Values.FirstOrDefault(x => string.Equals(x.Name, name, StringComparison.OrdinalIgnoreCase)); } public IReadOnlyList FindByModule(string module) { if (string.IsNullOrWhiteSpace(module)) { return new List(); } return AllPoints.Values .Where(x => string.Equals(x.Module, module, StringComparison.OrdinalIgnoreCase)) .ToList(); } } }