Files
DP44/Common/DTS.Common.ISO/LevelTriggerChannel.cs
2026-04-17 14:55:32 -04:00

139 lines
6.4 KiB
C#

using System;
using DTS.Common.Interface.Channels;
using DTS.Common.Storage;
using DTS.Common.Utilities.Logging;
namespace DTS.Common.ISO
{
/// <summary>
/// this is a class for storing directly in and out of the db
/// it's simplified and doesn't know about sensors and is just a wrapper for a row in the db
/// </summary>
public class LevelTriggerChannel
{
public IGroupChannel GroupChannel { get; set; } = null;
public string GroupChannelId { get; set; } = "-1";
public string HardwareChannelId { get; set; } = "";
public string SensorSerialNumber { get; set; } = "";
public bool GreaterThanEnabled { get; set; } = true;
public double GreaterThanThresholdEU { get; set; }
public bool LessThanEnabled { get; set; }
public bool TriggerBetweenBounds { get; set; }
public bool TriggerOutsideBounds { get; set; }
public double InsideUpperLevelEU { get; set; }
public double InsideLowerLevelEU { get; set; }
public double OutsideUpperLevelEU { get; set; }
public double OutsideLowerLevelEU { get; set; }
public double LessThanThresholdEU { get; set; }
public LevelTriggerChannel(LevelTriggerChannel copy)
{
GroupChannel = copy.GroupChannel;
GroupChannelId = copy.GroupChannelId;
HardwareChannelId = copy.HardwareChannelId;
SensorSerialNumber = copy.SensorSerialNumber;
GreaterThanEnabled = copy.GreaterThanEnabled;
GreaterThanThresholdEU = copy.GreaterThanThresholdEU;
LessThanEnabled = copy.LessThanEnabled;
LessThanThresholdEU = copy.LessThanThresholdEU;
InsideUpperLevelEU = copy.InsideUpperLevelEU;
InsideLowerLevelEU = copy.InsideLowerLevelEU;
OutsideUpperLevelEU = copy.OutsideUpperLevelEU;
OutsideLowerLevelEU = copy.OutsideLowerLevelEU;
TriggerBetweenBounds = copy.TriggerBetweenBounds;
TriggerOutsideBounds = copy.TriggerOutsideBounds;
}
public LevelTriggerChannel(
string groupChannelId,
string hardwareChannelId,
string sensorSerialNumber,
bool greaterThanEnabled,
double greaterThanEU,
bool lessThanEnabled,
double lessThanEU,
double insideLowerLevelEU,
double insideUpperLevelEU,
double outsideLowerLevelEU,
double outsideUpperLevelEU,
bool triggerOutsideBounds,
bool triggerInsideBounds)
{
GroupChannelId = groupChannelId;
HardwareChannelId = hardwareChannelId;
SensorSerialNumber = sensorSerialNumber;
GreaterThanEnabled = greaterThanEnabled;
GreaterThanThresholdEU = greaterThanEU;
LessThanEnabled = lessThanEnabled;
LessThanThresholdEU = lessThanEU;
InsideLowerLevelEU = insideLowerLevelEU;
InsideUpperLevelEU = insideUpperLevelEU;
OutsideLowerLevelEU = outsideLowerLevelEU;
OutsideUpperLevelEU = outsideUpperLevelEU;
TriggerOutsideBounds = triggerOutsideBounds;
TriggerBetweenBounds = triggerInsideBounds;
}
public LevelTriggerChannel(System.Data.DataRow dr)
{
try
{
GreaterThanEnabled = Convert.ToBoolean(dr[DbOperations.LevelTriggers.Fields.GreaterThanEnabled.ToString()]);
GreaterThanThresholdEU = Convert.ToDouble(dr[DbOperations.LevelTriggers.Fields.GreaterThanEU.ToString()]);
HardwareChannelId = Convert.ToString(dr[DbOperations.LevelTriggers.Fields.HardwareChannelId.ToString()]);
LessThanEnabled = Convert.ToBoolean(dr[DbOperations.LevelTriggers.Fields.LessThanEnabled.ToString()]);
LessThanThresholdEU = Convert.ToDouble(dr[DbOperations.LevelTriggers.Fields.LessThanEU.ToString()]);
SensorSerialNumber = Convert.ToString(dr[DbOperations.LevelTriggers.Fields.SensorSerialNumber.ToString()]);
GroupChannelId = Convert.ToInt64(dr[DbOperations.LevelTriggers.Fields.ChannelId.ToString()]).ToString();
TriggerBetweenBounds = Convert.ToBoolean(dr[DbOperations.LevelTriggers.Fields.InsideEnabled.ToString()]);
TriggerOutsideBounds = Convert.ToBoolean(dr[DbOperations.LevelTriggers.Fields.OutsideEnabled.ToString()]);
OutsideUpperLevelEU = Convert.ToDouble(dr[DbOperations.LevelTriggers.Fields.OutsideUpperEU.ToString()]);
OutsideLowerLevelEU = Convert.ToDouble(dr[DbOperations.LevelTriggers.Fields.OutsideLowerEU.ToString()]);
InsideUpperLevelEU = Convert.ToDouble(dr[DbOperations.LevelTriggers.Fields.InsideUpperEU.ToString()]);
InsideLowerLevelEU = Convert.ToDouble(dr[DbOperations.LevelTriggers.Fields.InsideLowerEU.ToString()]);
}
catch (Exception ex) { APILogger.Log(ex); }
}
public override string ToString()
{
return $"{GroupChannel.HardwareChannel} - {LevelTriggerText}";
}
public string LevelTriggerText
{
get
{
if (LessThanEnabled && GreaterThanEnabled)
{
return $"{Strings.Strings.LevelTrigger_LessThan} {LessThanThresholdEU:N2} or {Strings.Strings.LevelTrigger_GreaterThan} {GreaterThanThresholdEU:N2} ({GroupChannel.Units})";
}
if (LessThanEnabled)
{
return $"{Strings.Strings.LevelTrigger_LessThan} {LessThanThresholdEU:N2}({GroupChannel.Units})";
}
if (GreaterThanEnabled)
{
return $"{Strings.Strings.LevelTrigger_GreaterThan} {GreaterThanThresholdEU:N2}({GroupChannel.Units})";
}
if (TriggerBetweenBounds)
{
return string.Format(Strings.Strings.LevelTrigger_TriggerInside, $"{InsideLowerLevelEU:N2}", $"{InsideUpperLevelEU:N2}", GroupChannel.Units);
}
return TriggerOutsideBounds ? string.Format(Strings.Strings.LevelTrigger_TriggerOutside, $"{OutsideLowerLevelEU:N2}", $"{OutsideUpperLevelEU:N2}", GroupChannel.Units) : Strings.Strings.Table_NA;
}
}
}
}