This commit is contained in:
2026-04-17 14:55:32 -04:00
commit bc3ac1d4c9
18017 changed files with 4371742 additions and 0 deletions

View File

@@ -0,0 +1,267 @@
using System;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
namespace DatabaseImport
{
public class SensorsCollection : INotifyPropertyChanged
{
private readonly SensorData[] _cachedSensors = new SensorData[0];
public event PropertyChangedEventHandler PropertyChanged;
protected bool SetProperty<T>(ref T storage, T value, string propertyName = null)
{
if (Equals(storage, value)) return false;
storage = value;
OnPropertyChanged(propertyName);
return true;
}
private volatile bool _hookedup = true;
public bool HookedUp
{
get => _hookedup;
set
{
_hookedup = value;
OnPropertyChanged("AllSensors");
}
}
protected void OnPropertyChanged(string propertyName = null)
{
if (!HookedUp)
{
return;
}
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
private static readonly object Lock = new object();
public void Reload()
{
}
private static SensorsCollection _sensorCollection;
public static SensorsCollection SensorsList
{
get
{
lock (Lock)
{
return _sensorCollection ?? (_sensorCollection = new SensorsCollection());
}
}
}
/// <summary>
/// deletes all sensors
/// originally created so TDM imports could clear all tables except DAS tables.
/// </summary>
public void DeleteAll()
{
lock (Lock)
{
using (var cmd = DbOperations.GetSQLCommand(true))
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_SensorDeleteAll.ToString(); //Only used in DataPROPre20.mdf, not DataPRO.mdf
#region params
var errorNumberParam =
new SqlParameter("@errorNumber", SqlDbType.Int) { Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumberParam);
var errorMessageParam =
new SqlParameter("@errorMessage", SqlDbType.NVarChar, 250)
{
Direction = ParameterDirection.Output
};
cmd.Parameters.Add(errorMessageParam);
#endregion params
cmd.ExecuteNonQuery();
if (int.Parse(errorNumberParam.Value.ToString()) != 0)
{
//errorMessageParam.Value
}
}
finally
{
cmd.Connection.Dispose();
}
}
//OnSensorsChanged?.Invoke(_sensorCollection.AllSensors.ToArray(), true);
SensorCalibrationList.DeleteAll();
OnPropertyChanged("AllSensors");
}
}
public SensorData GetSensorBySerialNumber(string serialNumber, bool excludeBroken = true, bool bUseCache = true)
{
if (string.IsNullOrWhiteSpace(serialNumber))
{
return null;
}
try
{
if (bUseCache)
{
var matches = from s in _cachedSensors where s.SerialNumber == serialNumber select s;
if (matches.Any())
{
return matches.First();
}
}
using (var cmd = DbOperations.GetSQLCommand(true))
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_SensorsAnalogGet.ToString();
#region params
cmd.Parameters.Add(new SqlParameter("@sensorID", SqlDbType.Int) { Value = null });
cmd.Parameters.Add(
new SqlParameter("@SerialNumber", SqlDbType.NVarChar) { Value = serialNumber });
#endregion
var reader = cmd.ExecuteReader();
while (reader.Read())
{
var sd = new SensorData(reader);
reader.Close();
cmd.Connection.Dispose();
return sd;
}
reader.Close();
}
finally { cmd.Connection.Dispose(); }
}
}
catch (Exception)
{
//APILogger.Log("Failed to load Sensor: ", ex);
}
try
{
using (var cmd = DbOperations.GetSQLCommand(true))
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_SensorsDigitalInGet.ToString();
cmd.Parameters.Add(
new SqlParameter("@SerialNumber", SqlDbType.NVarChar, 50) { Value = serialNumber });
cmd.Parameters.Add(new SqlParameter("@Id", SqlDbType.NVarChar, 50) { Value = null });
var reader = cmd.ExecuteReader();
while (reader.Read())
{
try
{
var di = new DigitalInputSetting(reader);
reader.Close();
return di;
}
catch (Exception)
{
//APILogger.Log(ex);
}
}
reader.Close();
}
finally { cmd.Connection.Dispose(); }
}
}
catch (Exception)
{
//APILogger.Log(ex);
}
try
{
using (var cmd = DbOperations.GetSQLCommand(true))
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_SensorsSquibGet.ToString();
cmd.Parameters.Add(
new SqlParameter("@SerialNumber", SqlDbType.NVarChar, 50) { Value = serialNumber });
cmd.Parameters.Add(new SqlParameter("@Id", SqlDbType.NVarChar, 50) { Value = null });
var reader = cmd.ExecuteReader();
while (reader.Read())
{
try
{
var squib = new SquibSetting(reader);
reader.Close();
return squib;
}
catch (Exception)
{
//APILogger.Log(ex);
}
}
reader.Close();
}
finally { cmd.Connection.Dispose(); }
}
}
catch (Exception)
{
//APILogger.Log(ex);
}
try
{
using (var cmd = DbOperations.GetSQLCommand(true))
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_SensorsDigitalOutGet.ToString();
cmd.Parameters.Add(
new SqlParameter("@SerialNumber", SqlDbType.NVarChar) { Value = serialNumber });
var reader = cmd.ExecuteReader();
while (reader.Read())
{
try
{
var dout = new DigitalOutputSetting(reader);
reader.Close();
return dout;
}
catch (Exception)
{
//APILogger.Log(ex);
}
}
reader.Close();
}
finally { cmd.Connection.Dispose(); }
}
}
catch (Exception)
{
//APILogger.Log(ex);
}
if (SensorData.IsTestSpecificDigitalOutSN(serialNumber))
{
return new DigitalOutputSetting { SerialNumber = serialNumber };
}
return null;
}
}
}