Files
cms_thermo_active/Step.Model/DTOModels/DTOAlarmsModel.cs
T
Lucio Maranta d1cc7d5b8c Revert "erge"
This reverts commit 79276ad3eb.
2018-01-25 12:54:15 +01:00

126 lines
3.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Step.Model.DTOModels
{
public class DTOAlarmsModel
{
public List<GenericAlarmModel> NcAlarms { get; set; }
public List<GenericAlarmModel> PlcAlarms { get; set; }
public List<ProcessAlarmModel> ProcessAlarms { get; set; }
public DTOAlarmsModel()
{
NcAlarms = new List<GenericAlarmModel>();
PlcAlarms = new List<GenericAlarmModel>();
ProcessAlarms = new List<ProcessAlarmModel>();
}
public void Clear()
{
NcAlarms.Clear();
PlcAlarms.Clear();
ProcessAlarms.Clear();
}
public override bool Equals(object obj)
{
var item = obj as DTOAlarmsModel;
if(item == null)
return false;
if (item.NcAlarms.Count != NcAlarms.Count || item.PlcAlarms.Count != this.PlcAlarms.Count || item.ProcessAlarms.Count != this.ProcessAlarms.Count)
return false;
bool isEqual = item.NcAlarms.All(NcAlarms.Contains);
if (!isEqual)
return false;
isEqual = item.PlcAlarms.All(PlcAlarms.Contains);
if (!isEqual)
return false;
isEqual = item.ProcessAlarms.All(ProcessAlarms.Contains);
if (!isEqual)
return false;
return true;
}
public DTOAlarmsModel IntersectModels(DTOAlarmsModel newAlarms)
{
DTOAlarmsModel result = new DTOAlarmsModel();
// Get common data from Obj1 and Obj2
result.NcAlarms = NcAlarms.Where(x => newAlarms.NcAlarms.Contains(x as GenericAlarmModel)).ToList();
// Concat common data + new data
result.NcAlarms = result.NcAlarms.Concat(
newAlarms.NcAlarms.Where(x => !NcAlarms.Contains(x as GenericAlarmModel)).ToList() // Find not contained data in the old list
).ToList();
// Get common data
result.PlcAlarms = PlcAlarms.Where(x => newAlarms.PlcAlarms.Contains(x as GenericAlarmModel)).ToList();
// Concat common data + new data
result.PlcAlarms = result.PlcAlarms.Concat(
newAlarms.PlcAlarms.Where(x => !PlcAlarms.Contains(x as GenericAlarmModel)).ToList() // Find not contained data in the old list
).ToList();
// Get common data
result.ProcessAlarms = ProcessAlarms.Where(x => newAlarms.ProcessAlarms.Contains(x as ProcessAlarmModel)).ToList();
// Concat common data + new data in the list
result.ProcessAlarms = result.ProcessAlarms.Concat(
newAlarms.ProcessAlarms.Where(x => !ProcessAlarms.Contains(x as ProcessAlarmModel)).ToList() // Find not contained data in the old list
).ToList();
return result;
}
}
public class GenericAlarmModel
{
public uint id;
public string message;
public bool isWarning;
public DateTime dateTime;
public override bool Equals(object obj)
{
var item = obj as GenericAlarmModel;
if (item == null)
return false;
if (item.id == id)
return true;
else
return false;
}
}
public class ProcessAlarmModel
{
public uint id;
public string message;
public int process;
public bool isWarning;
public DateTime dateTime;
public override bool Equals(object obj)
{
var item = obj as ProcessAlarmModel;
if (item == null)
return false;
if (item.process == process && item.id == id )
return true;
else
return false;
}
}
}