Files
DP44/DataPRO/DASFactoryDb/Download/Download.cs

580 lines
25 KiB
C#
Raw Normal View History

2026-04-17 14:55:32 -04:00
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.IO;
using System.Text;
using System.Xml;
namespace DASFactoryDb.Download
{
public static class Download
{
/// <summary>
/// clears all existing download status for given das
/// </summary>
/// <param name="idasRecordId"></param>
public static void ClearExistingEventDownloadStatus(int idasRecordId)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_EventDownloadStatusClear";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = idasRecordId });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
/// <summary>
/// clears all arm attempts for a given data recorder
/// </summary>
/// <param name="idasRecordId"></param>
public static void ClearExistingEventArmAttempts(int idasRecordId)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_EventArmAttemptsClear";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = idasRecordId });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
/// <summary>
/// clears any existing event fault flags for given das
/// </summary>
/// <param name="idasRecordId"></param>
public static void ClearExistingFaultFlags(int idasRecordId)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_EventFaultFlagsClear";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = idasRecordId });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
/// <summary>
/// clears any existing event info for a given das
/// </summary>
/// <param name="idasRecordId"></param>
public static void ClearExistingDownloadReports(int idasRecordId)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_DownloadReportClear";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = idasRecordId });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
/// <summary>
/// clears any existing event guids for given das
/// </summary>
/// <param name="idasRecordId"></param>
public static void ClearExistingEventGuids(int idasRecordId)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_EventGuidsClear";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = idasRecordId });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
/// <summary>
/// clears any existing download requests in the db for given das
/// </summary>
/// <param name="idasRecordId"></param>
public static void ClearExistingDownloadRequests(int idasRecordId)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_DownloadRequestsClear";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = idasRecordId });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void InsertEventFaultFlags(int iDASRecordId, ushort faultFlag)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_EventFaultFlagsInsert";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@FaultFlag", SqlDbType.SmallInt)
{ Value = faultFlag });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_Id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void InsertEventArmAttempts(int iDASRecordId, int armAttempts)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_EventArmAttemptsInsert";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@ArmAttempts", SqlDbType.SmallInt)
{ Value = armAttempts });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void InsertEventInfo(int iDASRecordId,
int eventNumber,
Guid testGUID,
ushort faultFlags,
int armAttempts,
DateTime testTime,
string testID,
string description,
bool hasBeenDownloaded,
bool wasTriggered,
string xml)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_EventInfoInsert";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@EventNumber", SqlDbType.Int) { Value = eventNumber });
cmd.Parameters.Add(new SqlParameter("@TestGuid", SqlDbType.NVarChar, 50)
{ Value = testGUID.ToString().ToUpper() });
cmd.Parameters.Add(new SqlParameter("@FaultFlags", SqlDbType.SmallInt)
{ Value = faultFlags });
cmd.Parameters.Add(new SqlParameter("@ArmAttempts", SqlDbType.Int)
{ Value = armAttempts });
if (DateTime.MinValue.Equals(testTime))
{
testTime = (DateTime)SqlDateTime.MinValue;
}
cmd.Parameters.Add(new SqlParameter("@TestTime", SqlDbType.DateTime)
{ Value = testTime });
cmd.Parameters.Add(new SqlParameter("@TestId", SqlDbType.NVarChar)
{ Value = testID });
cmd.Parameters.Add(new SqlParameter("@Description", SqlDbType.NVarChar)
{ Value = description });
cmd.Parameters.Add(new SqlParameter("@HasBeenDownloaded", SqlDbType.Bit)
{ Value = hasBeenDownloaded });
cmd.Parameters.Add(new SqlParameter("WasTriggered", SqlDbType.Bit)
{ Value = wasTriggered });
cmd.Parameters.Add(new SqlParameter("@Modules", SqlDbType.VarBinary)
{
Value = Encoding.UTF8.GetBytes(xml)
});
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void InsertEventDownloadStatus(int iDASRecordId, bool downloadStatus)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_EventDownloadStatusInsert";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@Downloaded", SqlDbType.Bit)
{ Value = downloadStatus });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void DownloadRequestInsert(int iDASRecordId,
ushort eventNumber,
int dasChannelNumber,
ulong startSample,
ulong endSample,
ulong samplesToSkip,
double startRecordTimeStampSec,
double triggerTimeStampSec,
double startRecordTimeStampNanoSec,
double triggerTimestampNanoSec,
bool PTPMasterSync)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_DownloadRequestsInsert";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@EventNumber", SqlDbType.SmallInt)
{ Value = eventNumber });
cmd.Parameters.Add(new SqlParameter("@DASChannelNumber", SqlDbType.Int)
{ Value = dasChannelNumber });
cmd.Parameters.Add(new SqlParameter("@StartSample", SqlDbType.Int)
{ Value = startSample });
cmd.Parameters.Add(new SqlParameter("@EndSample", SqlDbType.Int)
{ Value = endSample });
cmd.Parameters.Add(new SqlParameter("@SamplesToSkip", SqlDbType.Int)
{ Value = samplesToSkip });
cmd.Parameters.Add(
new SqlParameter("@StartRecordTimeStampSec", SqlDbType.Decimal)
{ Value = startRecordTimeStampSec });
cmd.Parameters.Add(new SqlParameter("@TriggerTimestampSec", SqlDbType.Decimal)
{ Value = triggerTimeStampSec });
cmd.Parameters.Add(
new SqlParameter("@StartRecordTimestampNanoSec", SqlDbType.Decimal)
{ Value = startRecordTimeStampSec });
cmd.Parameters.Add(
new SqlParameter("@TriggerTimestampNanoSec", SqlDbType.Decimal)
{ Value = triggerTimestampNanoSec });
cmd.Parameters.Add(new SqlParameter("@PTPMasterSync", SqlDbType.Bit)
{ Value = PTPMasterSync });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void UARTDownloadRequestInsert(
int iDASRecordId,
ushort eventNumber,
ulong totalByteCount,
ulong triggerByteCount,
ulong faultByteCount,
ulong startTimestamp,
ulong endTimestamp,
int baudRate)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_UARTDownloadRequestsInsert";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@EventNumber", SqlDbType.SmallInt)
{ Value = eventNumber });
cmd.Parameters.Add(
new SqlParameter("@TotalByteCount", SqlDbType.Decimal)
{ Value = totalByteCount });
cmd.Parameters.Add(new SqlParameter("@TriggerByteCount", SqlDbType.Decimal)
{ Value = triggerByteCount });
cmd.Parameters.Add(new SqlParameter("@FaultByteCount", SqlDbType.Decimal)
{ Value = faultByteCount });
cmd.Parameters.Add(
new SqlParameter("@StartTimestamp", SqlDbType.Decimal)
{ Value = startTimestamp });
cmd.Parameters.Add(
new SqlParameter("@EndTimestamp", SqlDbType.Decimal) { Value = endTimestamp });
cmd.Parameters.Add(new SqlParameter("@BaudRate", SqlDbType.Int) { Value = baudRate });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
/// <summary>
/// clears any existing download requests in the db for given das
/// </summary>
/// <param name="idasRecordId"></param>
public static void ClearExistingUARTDownloadRequests(int idasRecordId)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_UARTDownloadRequestsClear";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = idasRecordId });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
public static void EventGuidInsert(int iDASRecordId, Guid guid)
{
if (!DbWrapper.Connected) { return; }
using (var cmd = DbWrapper.GetDASFactoryCommand())
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_EventGuidsInsert";
cmd.Parameters.Add(new SqlParameter("@IDASCommunicationRecordId", SqlDbType.Int)
{ Value = iDASRecordId });
cmd.Parameters.Add(new SqlParameter("@Guid", SqlDbType.NVarChar, 50)
{ Value = guid.ToString().ToUpper() });
var errorNumber = new SqlParameter("@errorNumber", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorNumber);
var errorMessage = new SqlParameter("@errorMessage", SqlDbType.NVarChar, 255)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(errorMessage);
var newId = new SqlParameter("@new_Id", SqlDbType.Int)
{ Direction = ParameterDirection.Output };
cmd.Parameters.Add(newId);
cmd.ExecuteNonQuery();
DbWrapper.ProcessReturn(errorNumber, errorMessage);
}
finally
{
cmd.Connection.Dispose();
}
}
}
}
}