using System.Collections.Generic; using System.Linq; using static CMS_CORE_Library.DataStructures; namespace Step.Model.DTOModels { public class DTOProcessesDataModel { public bool isRunning; public ushort selectedProcess; public byte selectedAxis; public List processes; public DTOProcessesDataModel() { isRunning = false; processes = new List(); } public override bool Equals(object obj) { var item = obj as DTOProcessesDataModel; // Object is not a DTOProcessDataModel instance if (item == null) return false; if (isRunning != item.isRunning) return false; if (selectedProcess != item.selectedProcess) return false; if (selectedAxis != item.selectedAxis) return false; // If the numbers of the list's elemets are different, lists are different if (item.processes.Count != processes.Count) return false; // Check list's elements bool listAreEquals = item.processes.All(processes.Contains); if (!listAreEquals) return false; return true; } public override int GetHashCode() { return base.GetHashCode(); } } public class ProcessModel : ProcessDataModel { public override bool Equals(object obj) { var item = obj as ProcessModel; if (item == null) return false; if (Id != item.Id) return false; if (Type != item.Type || IsInAlarm != item.IsInAlarm || PartProgramName != item.PartProgramName || Status != item.Status || Visible != item.Visible || Reps != item.Reps) return false; return true; } public override int GetHashCode() { return base.GetHashCode(); } } }