init
This commit is contained in:
@@ -0,0 +1,216 @@
|
||||
using DTS.Common.Base;
|
||||
using DTS.Common.Enums.Sensors;
|
||||
using DTS.Common.Interface.Sensors;
|
||||
using DTS.Common.Utilities.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Data;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
|
||||
namespace DTS.Common.Classes.Sensors
|
||||
{
|
||||
public class SensorCalDbRecord : BasePropertyChanged, ISensorCalDbRecord
|
||||
{
|
||||
public bool LinearAdded
|
||||
{
|
||||
get => NonLinear && Records.Records[0].Poly.NonLinearStyle == NonLinearStyles.Polynomial &&
|
||||
Records.Records.Length > 1 && ZeroMethods.Methods.Length > 1;
|
||||
}
|
||||
|
||||
private int? _calibrationId = null;
|
||||
/// <summary>
|
||||
/// database id, if known, for calibration, null indicates not known
|
||||
/// 13065 Sensor "First Use" Date
|
||||
/// </summary>
|
||||
[Key]
|
||||
public int? CalibrationId
|
||||
{
|
||||
get => _calibrationId;
|
||||
set => SetProperty(ref _calibrationId, value, "CalibrationId");
|
||||
}
|
||||
protected string _serialNumber;
|
||||
public string SerialNumber
|
||||
{
|
||||
get => _serialNumber;
|
||||
set => SetProperty(ref _serialNumber, value, "SerialNumber");
|
||||
}
|
||||
|
||||
protected DateTime _calibrationDate;
|
||||
[Column(TypeName = "datetime")]
|
||||
public DateTime CalibrationDate
|
||||
{
|
||||
get => _calibrationDate;
|
||||
set => SetProperty(ref _calibrationDate, value, "CalibrationDate");
|
||||
}
|
||||
protected string _userName = "";
|
||||
[Required]
|
||||
[StringLength(50)]
|
||||
public string Username
|
||||
{
|
||||
get => _userName;
|
||||
set => SetProperty(ref _userName, value, "Username");
|
||||
}
|
||||
private bool _localOnly;
|
||||
public bool LocalOnly
|
||||
{
|
||||
get => _localOnly;
|
||||
set => SetProperty(ref _localOnly, value, "LocalOnly");
|
||||
}
|
||||
private bool _nonLinear;
|
||||
public bool NonLinear
|
||||
{
|
||||
get => _nonLinear;
|
||||
set
|
||||
{
|
||||
SetProperty(ref _nonLinear, value, "NonLinear");
|
||||
if (!value) return;
|
||||
Records.Records[0].Sensitivity = 1D;
|
||||
//FB 29728 don't make IsProportinal false
|
||||
//IsProportional = false;
|
||||
RemoveOffset = false;
|
||||
}
|
||||
}
|
||||
|
||||
private ICalibrationRecords _records = new CalibrationRecords();
|
||||
[Required]
|
||||
[StringLength(255)]
|
||||
public ICalibrationRecords Records
|
||||
{
|
||||
get => _records;
|
||||
set => SetProperty(ref _records, value, "Records");
|
||||
}
|
||||
private DateTime _modifyDate;
|
||||
[Column(TypeName = "datetime")]
|
||||
public DateTime ModifyDate
|
||||
{
|
||||
get => _modifyDate;
|
||||
set => SetProperty(ref _modifyDate, value, "ModifyDate");
|
||||
}
|
||||
private bool _isProportional;
|
||||
public bool IsProportional
|
||||
{
|
||||
get => _isProportional;
|
||||
set => SetProperty(ref _isProportional, value, "IsProportional");
|
||||
}
|
||||
private bool _removeOffset;
|
||||
public bool RemoveOffset
|
||||
{
|
||||
get => _removeOffset;
|
||||
set => SetProperty(ref _removeOffset, value, "RemoveOffset");
|
||||
}
|
||||
|
||||
//FB 43152
|
||||
private SensitivityInspectionType _sensitivityInspection;
|
||||
public SensitivityInspectionType SensitivityInspection
|
||||
{
|
||||
get => _sensitivityInspection;
|
||||
set => SetProperty(ref _sensitivityInspection, value, "SensitivityInspection");
|
||||
}
|
||||
|
||||
//FB 43141
|
||||
private string _calibrationNote = string.Empty;
|
||||
[StringLength(2048)]
|
||||
public string CalibrationNote
|
||||
{
|
||||
get => _calibrationNote;
|
||||
set => SetProperty(ref _calibrationNote, value, "CalibrationNote");
|
||||
}
|
||||
|
||||
//FB 43265
|
||||
private int _usageCount;
|
||||
public int UsageCount
|
||||
{
|
||||
get => _usageCount;
|
||||
set => SetProperty(ref _usageCount, value, "UsageCount");
|
||||
}
|
||||
|
||||
private ZeroMethods _zeroMethods = new ZeroMethods();
|
||||
[Required]
|
||||
[StringLength(255)]
|
||||
public ZeroMethods ZeroMethods
|
||||
{
|
||||
get => _zeroMethods;
|
||||
set => SetProperty(ref _zeroMethods, value, "ZeroMethods");
|
||||
}
|
||||
private string[] _certificationDocuments = new string[0];
|
||||
[Required]
|
||||
[StringLength(2048)]
|
||||
public string[] CertificationDocuments
|
||||
{
|
||||
get => _certificationDocuments;
|
||||
set => SetProperty(ref _certificationDocuments, value, "CertificationDocuments");
|
||||
}
|
||||
//FB18158 It's None the default now not EU
|
||||
private InitialOffsets _initialOffsets = new InitialOffsets(new InitialOffset());
|
||||
public InitialOffsets InitialOffsets
|
||||
{
|
||||
get => _initialOffsets;
|
||||
set => SetProperty(ref _initialOffsets, value, "InitialOffsets");
|
||||
}
|
||||
public SensorCalDbRecord() { }
|
||||
public SensorCalDbRecord(ISensorCalDbRecord copy)
|
||||
{
|
||||
CalibrationDate = copy.CalibrationDate;
|
||||
LocalOnly = copy.LocalOnly;
|
||||
SerialNumber = copy.SerialNumber;
|
||||
Username = copy.Username;
|
||||
Records = new CalibrationRecords(copy.Records);
|
||||
NonLinear = copy.NonLinear;
|
||||
IsProportional = copy.IsProportional;
|
||||
ModifyDate = copy.ModifyDate;
|
||||
var list = new List<string>(copy.CertificationDocuments);
|
||||
CertificationDocuments = list.ToArray();
|
||||
RemoveOffset = copy.RemoveOffset;
|
||||
ZeroMethods = new ZeroMethods(copy.ZeroMethods);
|
||||
InitialOffsets = new InitialOffsets(copy.InitialOffsets);
|
||||
|
||||
CalibrationId = copy.CalibrationId;
|
||||
|
||||
//43152
|
||||
SensitivityInspection = copy.SensitivityInspection;
|
||||
//43265
|
||||
UsageCount = copy.UsageCount;
|
||||
|
||||
//43141
|
||||
CalibrationNote = copy.CalibrationNote;
|
||||
|
||||
//this is downright silly, but because the linearization formula marks itself valid when it deserializes with data in it, we go and correct it here.
|
||||
Records.Records[0].Poly.MarkValid(NonLinear);
|
||||
}
|
||||
public SensorCalDbRecord(IDataReader reader, int actualDbVersion)
|
||||
{
|
||||
try
|
||||
{
|
||||
CalibrationDate = Utility.GetDateTime(reader, "CalibrationDate", DateTime.MinValue);
|
||||
LocalOnly = Utility.GetBool(reader, "LocalOnly", false);
|
||||
SerialNumber = Utility.GetString(reader, "SerialNumber");
|
||||
Username = Utility.GetString(reader, "Username");
|
||||
Records = new CalibrationRecords(Utility.GetString(reader, "CalibrationRecords"));
|
||||
NonLinear = Utility.GetBool(reader, "NonLinear");
|
||||
IsProportional = Utility.GetBool(reader, "IsProportional");
|
||||
ModifyDate = Utility.GetDateTime(reader, "ModifyDate", DateTime.MinValue);
|
||||
CertificationDocuments = Utility.GetString(reader, "CertificationDocuments").Split(new[] { CultureInfo.InvariantCulture.TextInfo.ListSeparator }, StringSplitOptions.None).ToArray();
|
||||
RemoveOffset = Utility.GetBool(reader, "RemoveOffset");
|
||||
ZeroMethods = new ZeroMethods(Utility.GetString(reader, "ZeroMethod"));
|
||||
InitialOffsets = new InitialOffsets(Utility.GetString(reader, "InitialOffset"));
|
||||
if (actualDbVersion >= Constants.SENSOR_ASSEMBLY_DB_VERSION)
|
||||
{
|
||||
SensitivityInspection = (SensitivityInspectionType)Utility.GetInt(reader, "SensitivityInspection", 0);
|
||||
CalibrationNote = Utility.GetString(reader, "CalibrationNote");
|
||||
UsageCount = Utility.GetInt(reader, "UsageCount", 0);
|
||||
}
|
||||
CalibrationId = Utility.GetNullableInt(reader, "SensorCalibrationId");
|
||||
|
||||
//this is downright silly, but because the linearization formula marks itself valid when it deserializes with data in it, we go and correct it here.
|
||||
Records.Records[0].Poly.MarkValid(NonLinear);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
APILogger.Log("Failed to process Sensor Calibration record", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user