using System; using DTS.Common.Interface.Channels; using DTS.Common.Storage; using DTS.Common.Utilities.Logging; namespace DTS.Common.ISO { /// /// 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 /// 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; } } } }