Files
DP44/DataPRO/Modules/DatabaseImporter/DatabaseImport/ISO/MMEPossibleChannels.cs

248 lines
14 KiB
C#
Raw Normal View History

2026-04-17 14:55:32 -04:00
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Data.SqlClient;
namespace DatabaseImport
{
/// <summary>
/// this is a "possible" channel, once we know what iso object we are dealing with there can be a number of channels
/// defined for the object. We might not care about all of them ...
/// this is also a template channel, in that some fields will not be known yet (direction, dimension maybe, position, etc)
/// TestObjectChannel will consume this channel and then allow setting the locations as needed
/// </summary>
public class MMEPossibleChannels //: AbstractOLEDbWrapper
{
public long Id { get; set; }
public string Type { get; private set; }
public string Test_Object { get; private set; }
public string Position { get; private set; }
public string Trans_Main_Loc { get; private set; }
public string Fine_Loc_1 { get; private set; }
public string Fine_Loc_2 { get; private set; }
public string Fine_Loc_3 { get; private set; }
public string Physical_Dimension { get; private set; }
public string Direction { get; private set; }
public string Default_Filter_Class { get; private set; }
public string Text_L1 { get; private set; }
public void SetText1(string text1) { Text_L1 = text1; }
public string Text_L2 { get; private set; }
public long Version { get; }
public DateTime Date { get; }
public string Remarks { get; private set; }
public bool Expired { get; }
public string SortKey { get; }
public string Picture_ShortName { get; }
public DateTime Last_Change { get; }
public string Last_Change_Text { get; }
public string History { get; }
public int MMEChannelType { get; }
public MMEPossibleChannels(MMEPossibleChannels copy)
{
Id = copy.Id;
Type = copy.Type;
Test_Object = copy.Test_Object;
Position = copy.Position;
Trans_Main_Loc = copy.Trans_Main_Loc;
Fine_Loc_1 = copy.Fine_Loc_1;
Fine_Loc_2 = copy.Fine_Loc_2;
Fine_Loc_3 = copy.Fine_Loc_3;
Physical_Dimension = copy.Physical_Dimension;
Direction = copy.Direction; ;
Default_Filter_Class = copy.Default_Filter_Class;
Text_L1 = copy.Text_L1;
Text_L2 = copy.Text_L2;
Version = copy.Version;
Date = copy.Date;
Remarks = copy.Remarks;
Expired = copy.Expired;
SortKey = copy.SortKey;
Picture_ShortName = copy.Picture_ShortName;
Last_Change = copy.Last_Change;
Last_Change_Text = copy.Last_Change_Text;
History = copy.History;
MMEChannelType = copy.MMEChannelType;
}
public MMEPossibleChannels(long id, string type, string textObject, string position, string transMainLoc,
string fineLoc1, string fineLoc2, string fineLoc3, string physicalDimension, string direction, string defaultFilterClass,
string textL1, string textL2, long version, DateTime date, string remarks, bool expired, string sortkey,
string pictureShortName, DateTime lastChange, string lastChangeText, string history, int mmeChannelType)
{
Id = id;
Type = type;
Test_Object = textObject;
Position = position;
Trans_Main_Loc = transMainLoc;
Fine_Loc_1 = fineLoc1;
Fine_Loc_2 = fineLoc2;
Fine_Loc_3 = fineLoc3;
Physical_Dimension = physicalDimension;
Direction = direction;
Default_Filter_Class = defaultFilterClass;
Text_L1 = textL1;
Text_L2 = textL2;
Version = version;
Date = date;
Remarks = remarks;
Expired = expired;
SortKey = sortkey;
Picture_ShortName = pictureShortName;
Last_Change = lastChange;
Last_Change_Text = lastChangeText;
History = history;
MMEChannelType = mmeChannelType;
}
public enum MMEChannelTypes
{
ISO13499_106,
SQL
}
public static void DeletePossibleChannels()
{
try
{
using (var cmd = DbOperations.GetSQLCommand(true))
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_MMEPossibleChannelsDelete.ToString();
cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.UniqueIdentifier) { Value = null });
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);
cmd.ExecuteNonQuery();
if (int.Parse(errorNumberParam.Value.ToString()) != 0)
{
//errorMessageParam.Value
}
}
finally
{
cmd.Connection.Dispose();
}
}
}
catch (Exception) {/* APILogger.Log("failed to delete possible channels, ", ex);*/ }
}
public static MMEPossibleChannels[] GetPossibleChannels()
{
var possibleChannels = new List<MMEPossibleChannels>();
try
{
using (var cmd = DbOperations.GetSQLCommand(true))
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_MMEPossibleChannelsGet.ToString();
cmd.Parameters.Add(new SqlParameter("@Id", SqlDbType.NVarChar) { Value = null });
using (var ds = DbOperations.Connection.QueryDataSet(cmd))
{
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
possibleChannels.AddRange(from DataRow dr in ds.Tables[0].Rows
let id = Convert.ToInt64(dr["ID"])
let type = Convert.ToString(dr["TYPE"])
let testobject = Convert.ToString(dr["TEST_OBJECT"])
let position = Convert.ToString(dr["POSITION"])
let mainloc = Convert.ToString(dr["TRANS_MAIN_LOC"])
let fineloc1 = Convert.ToString(dr["FINE_LOC_1"])
let fineloc2 = Convert.ToString(dr["FINE_LOC_2"])
let fineloc3 = Convert.ToString(dr["FINE_LOC_3"])
let dimension = Convert.ToString(dr["PHYSICAL_DIMENSION"])
let direction = Convert.ToString(dr["DIRECTION"])
let filter = Convert.ToString(dr["DEFAULT_FILTER_CLASS"])
let textL1 = Convert.ToString(dr["TEXT_L1"])
let textL2 = Convert.ToString(dr["TEXT_L2"])
let version = Convert.ToInt32(dr["VERSION"])
let date = Convert.ToDateTime(dr["DATE"])
let remarks = Convert.ToString(dr["REMARKS"])
let expired = Convert.ToBoolean(dr["EXPIRED"])
let sortkey = Convert.ToString(dr["SORTKEY"])
let pictureShortName = Convert.ToString(dr["PICTURE_SHORTNAME"])
let lastChange = Convert.ToDateTime(dr["LAST_CHANGE"])
let lastChangeText = Convert.ToString(dr["LAST_CHANGE_TEXT"])
let history = Convert.ToString(dr["HISTORY"])
let isoFlag = Convert.ToString(dr["ISOFlag"])
select new MMEPossibleChannels(id, type, testobject, position, mainloc, fineloc1,
fineloc2, fineloc3, dimension, direction, filter, textL1, textL2,
Convert.ToInt64(version), date, remarks, expired, sortkey, pictureShortName,
lastChange, lastChangeText, history, Convert.ToInt16(isoFlag)));
}
}
}
finally
{
cmd.Connection.Dispose();
}
}
}
catch (Exception) { /*APILogger.Log("failed to get possible channels, ", ex);*/}
try
{
using (var cmd = DbOperations.GetSQLCommand(true))
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_MMEPossibleChannelsGetCustom.ToString();
cmd.Parameters.Add(new SqlParameter("@Id", SqlDbType.NVarChar) { Value = null });
using (var ds = DbOperations.Connection.QueryDataSet(cmd))
{
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
possibleChannels.AddRange(from DataRow dr in ds.Tables[0].Rows
let id = Convert.ToInt64(dr["ID"])
let type = Convert.ToString(dr["TYPE"])
let testobject = Convert.ToString(dr["TEST_OBJECT"])
let position = Convert.ToString(dr["POSITION"])
let mainloc = Convert.ToString(dr["TRANS_MAIN_LOC"])
let fineloc1 = Convert.ToString(dr["FINE_LOC_1"])
let fineloc2 = Convert.ToString(dr["FINE_LOC_2"])
let fineloc3 = Convert.ToString(dr["FINE_LOC_3"])
let dimension = Convert.ToString(dr["PHYSICAL_DIMENSION"])
let direction = Convert.ToString(dr["DIRECTION"])
let filter = Convert.ToString(dr["DEFAULT_FILTER_CLASS"])
let textL1 = Convert.ToString(dr["TEXT_L1"])
let textL2 = Convert.ToString(dr["TEXT_L2"])
let version = Convert.ToInt32(dr["VERSION"])
let date = Convert.ToDateTime(dr["DATE"])
let remarks = Convert.ToString(dr["REMARKS"])
let expired = Convert.ToBoolean(dr["EXPIRED"])
let sortkey = Convert.ToString(dr["SORTKEY"])
let pictureShortName = Convert.ToString(dr["PICTURE_SHORTNAME"])
let lastChange = Convert.ToDateTime(dr["LAST_CHANGE"])
let lastChangeText = Convert.ToString(dr["LAST_CHANGE_TEXT"])
let history = Convert.ToString(dr["HISTORY"])
let isoFlag = MMEChannelTypes.SQL
select new MMEPossibleChannels(id, type, testobject, position, mainloc, fineloc1,
fineloc2, fineloc3, dimension, direction, filter, textL1, textL2,
Convert.ToInt64(version), date, remarks, expired, sortkey, pictureShortName,
lastChange, lastChangeText, history, Convert.ToInt16(isoFlag)));
}
}
}
finally
{
cmd.Connection.Dispose();
}
}
}
catch (Exception) { /*APILogger.Log("failed to get possible custom channels, ", ex); */}
return possibleChannels.ToArray();
}
}
}