Files
DP44/Common/DTS.CommonCore/.svn/pristine/e9/e9ccbb6f728fe83b09bef9af796d57392ce6dff0.svn-base
2026-04-17 14:55:32 -04:00

317 lines
12 KiB
Plaintext

using DTS.Common.Base;
using DTS.Common.Enums;
using DTS.Common.Interface.Sensors;
using DTS.Common.Utilities.Logging;
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data;
using System.Linq;
namespace DTS.Common.Classes.Sensors
{
public class SquibDbRecord : BasePropertyChanged, ISquibDbRecord
{
private string _serialNumber = "";
public string SerialNumber
{
get => _serialNumber;
set => SetProperty(ref _serialNumber, value, "SerialNumber");
}
private int _id = -1;
[Key]
public int Id
{
get => _id;
set => SetProperty(ref _id, value, "Id");
}
private bool _bypassCurrentFilter = false;
public bool BypassCurrentFilter
{
get => _bypassCurrentFilter;
set => SetProperty(ref _bypassCurrentFilter, value, "BypassCurrentFilter");
}
private bool _bypassVoltageFilter = false;
public bool BypassVoltageFilter
{
get => _bypassVoltageFilter;
set => SetProperty(ref _bypassVoltageFilter, value, "BypassVoltageFilter");
}
private double _delayMS = 0D;
[Column("DelayMS")]
public double DelayMs
{
get => _delayMS;
set => SetProperty(ref _delayMS, value, "DelayMs");
}
private double _durationMS = 10D;
[Column("DurationMS")]
public double DurationMs
{
get => _durationMS;
set => SetProperty(ref _durationMS, value, "DurationMs");
}
private SquibFireMode _fireMode = SquibFireMode.NONE;
public SquibFireMode FireMode
{
get => _fireMode;
set => SetProperty(ref _fireMode, value, "FireMode");
}
private string _isoCode = "";
[Required]
[StringLength(50)]
public string IsoCode
{
get => _isoCode;
set => SetProperty(ref _isoCode, value, "IsoCode");
}
private string _isoChannelName = "";
[Required]
[StringLength(255)]
public string IsoChannelName
{
get => _isoChannelName;
set => SetProperty(ref _isoChannelName, value, "IsoChannelName");
}
private string _userCode = "";
[Required]
[StringLength(50)]
public string UserCode
{
get => _userCode;
set => SetProperty(ref _userCode, value, "UserCode");
}
private string _userChannelName = "";
[Required]
[StringLength(255)]
public string UserChannelName
{
get => _userChannelName;
set => SetProperty(ref _userChannelName, value, "UserChannelName");
}
private SquibMeasurementType _squibMeasurementType = SquibMeasurementType.VOLTAGE;
public SquibMeasurementType MeasurementType
{
get => _squibMeasurementType;
set => SetProperty(ref _squibMeasurementType, value, "MeasurementType");
}
private double _squibOutputCurrent = 1.5D;
public double SquibOutputCurrent
{
get => _squibOutputCurrent;
set => SetProperty(ref _squibOutputCurrent, value, "SquibOutputCurrent");
}
private double _squibToleranceLow = 1D;
public double SquibToleranceLow
{
get => _squibToleranceLow;
set => SetProperty(ref _squibToleranceLow, value, "SquibToleranceLow");
}
private double _squibToleranceHigh = 8D;
public double SquibToleranceHigh
{
get => _squibToleranceHigh;
set => SetProperty(ref _squibToleranceHigh, value, "SquibToleranceHigh");
}
private bool _limitDuration = true;
public bool LimitDuration
{
get => _limitDuration;
set => SetProperty(ref _limitDuration, value, "LimitDuration");
}
private string _articleId = "";
[Required]
[StringLength(50)]
public string ArticleId
{
get => _articleId;
set => SetProperty(ref _articleId, value, "ArticleId");
}
private int _version = 1;
public int Version
{
get => _version;
set => SetProperty(ref _version, value, "Version");
}
private DateTime _lastModified = DateTime.MinValue;
[Column(TypeName = "datetime")]
public DateTime LastModified
{
get => _lastModified;
set => SetProperty(ref _lastModified, value, "LastModified");
}
private string _lastModifiedBy = "";
[Required]
[StringLength(50)]
public string LastModifiedBy
{
get => _lastModifiedBy;
set => SetProperty(ref _lastModifiedBy, value, "LastModifiedBy");
}
private string _userValue1 = "";
[StringLength(255)]
public string UserValue1
{
get => _userValue1;
set => SetProperty(ref _userValue1, value, "UserValue1");
}
private string _userValue2 = "";
[StringLength(255)]
public string UserValue2
{
get => _userValue2;
set => SetProperty(ref _userValue2, value, "UserValue2");
}
private string _userValue3 = "";
[StringLength(255)]
public string UserValue3
{
get => _userValue3;
set => SetProperty(ref _userValue3, value, "UserValue3");
}
private byte[] _userTags = new byte[0];
public byte[] UserTags
{
get => _userTags;
set => SetProperty(ref _userTags, value, "UserTags");
}
private bool _doNotUse = false;
public bool DoNotUse
{
get => _doNotUse;
set => SetProperty(ref _doNotUse, value, "DoNotUse");
}
private bool _broken = false;
public bool Broken
{
get => _broken;
set => SetProperty(ref _broken, value, "Broken");
}
private bool _defineDelayInTest = false;
public bool DefineDelayInTest
{
get => _defineDelayInTest;
set => SetProperty(ref _defineDelayInTest, value, "DefineDelayInTest");
}
public SquibDbRecord(ISensorData copy, bool defineDelayInTest, byte [] tags)
{
Id = copy.DatabaseId;
IsoChannelName = copy.ISOChannelName;
UserCode = copy.UserCode;
UserChannelName = copy.UserChannelName;
Broken = copy.Broken;
DoNotUse = copy.DoNotUse;
Version = copy.Version;
SquibToleranceLow = copy.SquibToleranceLow;
SquibToleranceHigh = copy.SquibToleranceHigh;
SquibOutputCurrent = copy.SquibOutputCurrent;
SerialNumber = copy.SerialNumber;
MeasurementType = copy.SquibMeasurementType;
LimitDuration = copy.LimitDuration;
DefineDelayInTest = defineDelayInTest;
LastModifiedBy = copy.LastUpdatedBy;
LastModified = copy.LastModified;
IsoCode = copy.ISOCode;
FireMode = copy.SquibFireMode;
DurationMs = copy.SquibFireDurationMS;
DelayMs = copy.SquibFireDelayMS;
BypassVoltageFilter = copy.BypassVoltageFilter;
BypassCurrentFilter = copy.BypassCurrentFilter;
ArticleId = copy.EID;
UserValue1 = copy.UserValue1;
UserValue2 = copy.UserValue2;
UserValue3 = copy.UserValue3;
if (null == tags) { UserTags = null; }
else if (tags.Any())
{
var userTags = new byte[tags.Length];
Array.Copy(tags, userTags, tags.Length);
UserTags = userTags;
}
else { UserTags = new byte[0]; }
}
public SquibDbRecord() { }
public SquibDbRecord(ISquibDbRecord copy)
{
Id = copy.Id;
IsoChannelName = copy.IsoChannelName;
UserCode = copy.UserCode;
UserChannelName = copy.UserChannelName;
Broken = copy.Broken;
DoNotUse = copy.DoNotUse;
Version = copy.Version;
SquibToleranceLow = copy.SquibToleranceLow;
SquibToleranceHigh = copy.SquibToleranceHigh;
SquibOutputCurrent = copy.SquibOutputCurrent;
SerialNumber = copy.SerialNumber;
MeasurementType = copy.MeasurementType;
LimitDuration = copy.LimitDuration;
DefineDelayInTest = copy.DefineDelayInTest;
LastModifiedBy = copy.LastModifiedBy;
LastModified = copy.LastModified;
IsoCode = copy.IsoCode;
FireMode = copy.FireMode;
DurationMs = copy.DurationMs;
DelayMs = copy.DelayMs;
BypassVoltageFilter = copy.BypassVoltageFilter;
BypassCurrentFilter = copy.BypassCurrentFilter;
ArticleId = copy.ArticleId;
UserValue1 = copy.UserValue1;
//Comment = UserValue1;
UserValue2 = copy.UserValue2;
UserValue3 = copy.UserValue3;
if( null == copy.UserTags) { UserTags = null; }
else if(copy.UserTags.Any())
{
var userTags = new byte[copy.UserTags.Length];
Array.Copy(copy.UserTags, userTags, copy.UserTags.Length);
UserTags = userTags;
}
else { UserTags = new byte[0]; }
}
public SquibDbRecord(IDataReader reader)
{
try
{
Id = Utility.GetInt(reader, "Id", -1);
IsoChannelName = Utility.GetString(reader, "ISOChannelName", string.Empty);
UserCode = Utility.GetString(reader, "UserCode", string.Empty);
UserChannelName = Utility.GetString(reader, "UserChannelName", string.Empty);
Broken = Utility.GetBool(reader, "Broken", false);
DoNotUse = Utility.GetBool(reader, "DoNotUse", false);
Version = Utility.GetInt(reader, "Version", -1);
SquibToleranceLow = Utility.GetDouble(reader, "SquibToleranceLow", 0D);
SquibToleranceHigh = Utility.GetDouble(reader, "SquibToleranceHigh", 8D);
SquibOutputCurrent = Utility.GetDouble(reader, "SquibOutputCurrent", 1.5D);
SerialNumber = Utility.GetString(reader, "SerialNumber", string.Empty);
MeasurementType = (SquibMeasurementType)Utility.GetShort(reader, "MeasurementType");
LimitDuration = Utility.GetBool(reader, "LimitDuration");
DefineDelayInTest = Utility.GetBool(reader, "DefineDelayInTest");
LastModifiedBy = Utility.GetString(reader, "LastModifiedBy", string.Empty);
LastModified = Utility.GetDateTime(reader, "LastModified", DateTime.MinValue);
IsoCode = Utility.GetString(reader, "ISOCode", string.Empty);
FireMode = (SquibFireMode)Utility.GetShort(reader, "FireMode");
DurationMs = Utility.GetDouble(reader, "DurationMS", 0D);
DelayMs = Utility.GetDouble(reader, "DelayMS", 0D);
BypassVoltageFilter = Utility.GetBool(reader, "BypassVoltageFilter", false);
BypassCurrentFilter = Utility.GetBool(reader, "BypassCurrentFilter", false);
ArticleId = Utility.GetString(reader, "ArticleId", string.Empty);
UserValue1 = Utility.GetString(reader, "UserValue1");
//Comment = UserValue1;
UserValue2 = Utility.GetString(reader, "UserValue2", string.Empty);
UserValue3 = Utility.GetString(reader, "UserValue3", string.Empty);
var o = reader["UserTags"];
UserTags = DBNull.Value.Equals(o)
? new byte[0]
: (byte[])o;
}
catch (Exception ex)
{
APILogger.Log("Failed to process: ", ex);
}
}
}
}