Files
DP44/Common/DTS.Common.ISO/MMEPossibleChannels.cs

669 lines
32 KiB
C#
Raw Permalink Normal View History

2026-04-17 14:55:32 -04:00
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Data.SqlClient;
using System.Globalization;
using System.Xml;
using DTS.Common.Enums.DBExport;
using DTS.Common.Storage;
using DTS.Common.Utilities.Logging;
namespace DTS.Common.ISO
{
/// <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 void ClearId() { Id = -1; }
public void SetId(long id) { Id = id; }
public string Type { get; private set; }
public void SetType(string type) { Type = type; }
public string Test_Object { get; private set; }
public void Set_Test_Object(string val)
{
Test_Object = val;
}
public string Position { get; private set; }
public void Set_Position(string val)
{
Position = val;
}
public string Trans_Main_Loc { get; private set; }
public void Set_Main_Loc(string val)
{
Trans_Main_Loc = val;
}
public string Fine_Loc_1 { get; private set; }
/// <summary>
/// Sets the fine location 1
/// the property doesn't seem to have a set
/// so not sure if it was omitted or on purpose
/// See all othe "Set_*" functions
/// </summary>
/// <param name="val"></param>
public void Set_Fine_Loc_1(string val)
{
Fine_Loc_1 = val;
}
public string Fine_Loc_2 { get; private set; }
public void Set_Fine_Loc_2(string val)
{
Fine_Loc_2 = val;
}
public string Fine_Loc_3 { get; private set; }
public void Set_Fine_Loc_3(string val)
{
Fine_Loc_3 = val;
}
public string Physical_Dimension { get; private set; }
public void Set_Physical_Dimension(string val)
{
Physical_Dimension = val;
}
public string Direction { get; private set; }
public void Set_Direction(string val)
{
Direction = val;
}
public string Default_Filter_Class { get; private set; }
public void Set_Default_Filter_Class(string val)
{
Default_Filter_Class = val;
}
public string Text_L1 { get; private set; }
public void SetText1(string text1) { Text_L1 = text1; }
public string Text_L2 { get; private set; }
public void SetText2(string text2) { Text_L2 = text2; }
public long Version { get; }
public DateTime Date { get; }
public string Remarks { get; private set; }
public void SetRemarks(string remarks) { Remarks = remarks; }
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 MMEPossibleChannels[] GetPossibleChannels()
{
var possibleChannels = new List<MMEPossibleChannels>();
using (var cmd = DbOperations.GetISOCommand())
{
cmd.CommandText = "SELECT * FROM MMEPossibleChannels";
cmd.CommandType = CommandType.Text;
try
{
using (var ISOReader = cmd.ExecuteReader())
{
while (ISOReader.Read())
{
try
{
long id = GetLong(ISOReader, "ID");
string type = ISOReader["TYPE"].ToString();
string testObject = ISOReader["TEST_OBJECT"].ToString();
string position = ISOReader["POSITION"].ToString();
string transMainLoc = ISOReader["TRANS_MAIN_LOC"].ToString();
string fineLoc1 = ISOReader["FINE_LOC_1"].ToString();
string fineLoc2 = ISOReader["FINE_LOC_2"].ToString();
string fineLoc3 = ISOReader["FINE_LOC_3"].ToString();
string physicalDimension = ISOReader["PHYSICAL_DIMENSION"].ToString();
string direction = ISOReader["DIRECTION"].ToString();
string defaultFilterClass = ISOReader["DEFAULT_FILTER_CLASS"].ToString();
string textL1 = ISOReader["TEXT_L1"].ToString();
string textL2 = ISOReader["TEXT_L2"].ToString();
long version = GetLong(ISOReader, "VERSION");
DateTime date = GetDate(ISOReader, "DATE");
string remarks = ISOReader["REMARKS"].ToString();
bool expired = (bool)ISOReader["EXPIRED"];
string sortkey = ISOReader["SORTKEY"].ToString();
string pictureShortName = ISOReader["PICTURE_SHORTNAME"].ToString();
DateTime lastChange = GetDate(ISOReader, "LAST_CHANGE");
string lastChangeText = ISOReader["LAST_CHANGE_TEXT"].ToString();
string history = ISOReader["HISTORY"].ToString();
possibleChannels.Add(new MMEPossibleChannels(id, type, testObject, position,
transMainLoc, fineLoc1, fineLoc2,
fineLoc3, physicalDimension, direction, defaultFilterClass, textL1, textL2,
version, date, remarks, expired, sortkey, pictureShortName, lastChange,
lastChangeText, history, (int)MMEChannelTypes.ISO13499_106));
}
catch (Exception ex)
{
APILogger.Log("Failed to process possible channels", ex);
}
}
}
}
finally
{
cmd.Connection.Dispose();
}
}
return possibleChannels.ToArray();
}
/// <summary>
/// reads/parses out a CustomChannel from XML
/// </summary>
/// <param name="root"></param>
/// <returns></returns>
public static MMEPossibleChannels ReadXML(XmlElement root)
{
long id = -1;
var type = "";
var testobject = "";
var position = "";
var date = DateTime.Now;
var filterclass = "";
var expired = false;
var direction = "";
var fineloc1 = "";
var fineloc2 = "";
var fineloc3 = "";
var history = "";
var lastChange = DateTime.Now;
var lastChangeText = "";
var dimension = "";
var pictureShortName = "";
var remarks = "";
var sortkey = "";
var text1 = "";
var text2 = "";
var transMainLoc = "";
var version = 0;
foreach (var child in root.ChildNodes)
{
if (!(child is XmlElement)) continue;
var element = child as XmlElement;
if (Enum.TryParse(element.Name, out DbOperations.MMETables.MMEPossibleChannelsFields field))
{
switch (field)
{
case DbOperations.MMETables.MMEPossibleChannelsFields.ID:
id = long.Parse(element.InnerText, CultureInfo.InvariantCulture);
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.DATE:
date = DateTime.Parse(element.InnerText, CultureInfo.InvariantCulture);
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.DEFAULT_FILTER_CLASS:
filterclass = element.InnerText;
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.DIRECTION:
direction = element.InnerText;
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.EXPIRED:
expired = Convert.ToBoolean(element.InnerText);
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.FINE_LOC_1:
fineloc1 = element.InnerText;
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.FINE_LOC_2:
fineloc2 = element.InnerText;
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.FINE_LOC_3:
fineloc3 = element.InnerText;
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.HISTORY:
history = element.InnerText;
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.LAST_CHANGE:
lastChange = DateTime.Parse(element.InnerText, CultureInfo.InvariantCulture);
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.LAST_CHANGE_TEXT:
lastChangeText = element.InnerText;
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.TYPE:
type = element.InnerText;
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.PHYSICAL_DIMENSION:
dimension = element.InnerText;
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.PICTURE_SHORTNAME:
pictureShortName = element.InnerText;
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.POSITION:
position = element.InnerText;
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.REMARKS:
remarks = element.InnerText;
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.SORTKEY:
sortkey = element.InnerText;
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.TEST_OBJECT:
testobject = element.InnerText;
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.TEXT_L1:
text1 = element.InnerText;
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.TEXT_L2:
text2 = element.InnerText;
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.TRANS_MAIN_LOC:
transMainLoc = element.InnerText;
break;
case DbOperations.MMETables.MMEPossibleChannelsFields.VERSION:
version = Convert.ToInt32(element.InnerText, CultureInfo.InvariantCulture);
break;
default:
throw new NotSupportedException(
"CustomChannel::ProcessXMLElement field in enum not handled: " + field);
}
}
else
{
//This is a field that was exported in an earlier version of DataPRO, so stay backward compatible
switch (element.Name)
{
//These have been replaced by TYPE
case DbOperations.MMETables.MyType: //This was exported in all versions up to 1.3.496
case DbOperations.MMETables.CustomChannelType
: //This was exported in versions from 1.3.498 - 1.3.515
type = element.InnerText;
break;
//This has been replaced by ID
case DbOperations.MMETables.Id: //This was exported in all versions up to 1.3.515
id = long.Parse(element.InnerText, CultureInfo.InvariantCulture);
break;
default:
throw new NotSupportedException(
"CustomChannel::ProcessXMLElement field not in enum and unknown: " + field);
}
}
}
return new MMEPossibleChannels(id, type, testobject, position, transMainLoc, fineloc1, fineloc2,
fineloc3, dimension, direction, filterclass, text1, text2, version, date, remarks, expired, sortkey,
pictureShortName, lastChange, lastChangeText, history, (int)MMEPossibleChannels.MMEChannelTypes.SQL);
}
public void Commit()
{
if (-1 == Id) { CreateNewMMEChannel(); }
else
{
UpdateAll();
}
}
public static void Commit(MMEPossibleChannels[] channels)
{
foreach (var channel in channels)
{
using (var cmd = DbOperations.GetSQLCommand(true))
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText =
DbOperationsEnum.StoredProcedure.sp_MMEPossibleChannelsUpdateInsert.ToString();
#region params
cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.BigInt) { Value = 0 });
cmd.Parameters.Add(new SqlParameter("@TYPE", SqlDbType.NVarChar, 50) { Value = channel.Type });
cmd.Parameters.Add(
new SqlParameter("@TEST_OBJECT", SqlDbType.NVarChar, 50) { Value = channel.Test_Object });
cmd.Parameters.Add(
new SqlParameter("@POSITION", SqlDbType.NVarChar, 50) { Value = channel.Position });
cmd.Parameters.Add(
new SqlParameter("@TRANS_MAIN_LOC", SqlDbType.NVarChar, 50)
{
Value = channel.Trans_Main_Loc
});
cmd.Parameters.Add(
new SqlParameter("@FINE_LOC_1", SqlDbType.NVarChar, 50) { Value = channel.Fine_Loc_1 });
cmd.Parameters.Add(
new SqlParameter("@FINE_LOC_2", SqlDbType.NVarChar, 50) { Value = channel.Fine_Loc_2 });
cmd.Parameters.Add(
new SqlParameter("@FINE_LOC_3", SqlDbType.NVarChar, 50) { Value = channel.Fine_Loc_3 });
cmd.Parameters.Add(
new SqlParameter("@PHYSICAL_DIMENSION", SqlDbType.NVarChar, 50)
{
Value = channel.Physical_Dimension
});
cmd.Parameters.Add(
new SqlParameter("@DIRECTION", SqlDbType.NVarChar, 50) { Value = channel.Direction });
cmd.Parameters.Add(
new SqlParameter("@DEFAULT_FILTER_CLASS", SqlDbType.NVarChar, 50)
{
Value = channel.Default_Filter_Class
});
cmd.Parameters.Add(
new SqlParameter("@TEXT_L1", SqlDbType.NVarChar, 100) { Value = channel.Text_L1 });
cmd.Parameters.Add(
new SqlParameter("@TEXT_L2", SqlDbType.NVarChar, 100) { Value = channel.Text_L2 });
cmd.Parameters.Add(new SqlParameter("@VERSION", SqlDbType.Int) { Value = channel.Version });
cmd.Parameters.Add(new SqlParameter("@DATE", SqlDbType.DateTime) { Value = channel.Date });
cmd.Parameters.Add(
new SqlParameter("@REMARKS", SqlDbType.NVarChar, 50) { Value = channel.Remarks });
cmd.Parameters.Add(new SqlParameter("@EXPIRED", SqlDbType.Bit) { Value = channel.Expired });
cmd.Parameters.Add(
new SqlParameter("@SORTKEY", SqlDbType.NVarChar, 50) { Value = channel.SortKey });
cmd.Parameters.Add(
new SqlParameter("@PICTURE_SHORTNAME", SqlDbType.NVarChar, 50)
{
Value = channel.Picture_ShortName
});
cmd.Parameters.Add(new SqlParameter("@LAST_CHANGE", SqlDbType.DateTime) { Value = DateTime.Now });
cmd.Parameters.Add(
new SqlParameter("@LAST_CHANGE_TEXT", SqlDbType.NVarChar, 50) { Value = "Created" });
cmd.Parameters.Add(
new SqlParameter("@HISTORY", SqlDbType.NVarChar, 50) { Value = channel.History });
var newIdParam =
new SqlParameter("@new_id", SqlDbType.Int) { Direction = ParameterDirection.Output };
cmd.Parameters.Add(newIdParam);
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
}
var id = int.Parse(newIdParam.Value.ToString());
channel.Id = id == 0 ? channel.Id : id;
}
finally
{
cmd.Connection.Dispose();
}
}
}
}
public void Insert()
{
CreateNewMMEChannel();
}
public void Delete()
{
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.BigInt) { Value = Id });
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();
}
}
}
private void UpdateAll()
{
using (var cmd = DbOperations.GetSQLCommand(true))
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_MMEPossibleChannelsUpdate.ToString();
#region params
cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.BigInt) { Value = Id });
cmd.Parameters.Add(new SqlParameter("@TYPE", SqlDbType.NVarChar, 50) { Value = Type });
cmd.Parameters.Add(new SqlParameter("@TEST_OBJECT", SqlDbType.NVarChar, 50) { Value = Test_Object });
cmd.Parameters.Add(new SqlParameter("@POSITION", SqlDbType.NVarChar, 50) { Value = Position });
cmd.Parameters.Add(
new SqlParameter("@TRANS_MAIN_LOC", SqlDbType.NVarChar, 50) { Value = Trans_Main_Loc });
cmd.Parameters.Add(new SqlParameter("@FINE_LOC_1", SqlDbType.NVarChar, 50) { Value = Fine_Loc_1 });
cmd.Parameters.Add(new SqlParameter("@FINE_LOC_2", SqlDbType.NVarChar, 50) { Value = Fine_Loc_2 });
cmd.Parameters.Add(new SqlParameter("@FINE_LOC_3", SqlDbType.NVarChar, 50) { Value = Fine_Loc_3 });
cmd.Parameters.Add(
new SqlParameter("@PHYSICAL_DIMENSION", SqlDbType.NVarChar, 50) { Value = Physical_Dimension });
cmd.Parameters.Add(new SqlParameter("@DIRECTION", SqlDbType.NVarChar, 50) { Value = Direction });
cmd.Parameters.Add(
new SqlParameter("@DEFAULT_FILTER_CLASS", SqlDbType.NVarChar, 50)
{
Value = Default_Filter_Class
});
cmd.Parameters.Add(new SqlParameter("@TEXT_L1", SqlDbType.NVarChar, 100) { Value = Text_L1 });
cmd.Parameters.Add(new SqlParameter("@TEXT_L2", SqlDbType.NVarChar, 100) { Value = Text_L2 });
cmd.Parameters.Add(new SqlParameter("@VERSION", SqlDbType.Int) { Value = Version });
cmd.Parameters.Add(new SqlParameter("@DATE", SqlDbType.DateTime) { Value = Date });
cmd.Parameters.Add(new SqlParameter("@REMARKS", SqlDbType.NVarChar, 50) { Value = Remarks });
cmd.Parameters.Add(new SqlParameter("@EXPIRED", SqlDbType.Bit) { Value = Expired });
cmd.Parameters.Add(new SqlParameter("@SORTKEY", SqlDbType.NVarChar, 50) { Value = SortKey });
cmd.Parameters.Add(
new SqlParameter("@PICTURE_SHORTNAME", SqlDbType.NVarChar, 50) { Value = Picture_ShortName });
cmd.Parameters.Add(new SqlParameter("@LAST_CHANGE", SqlDbType.DateTime) { Value = DateTime.Now });
cmd.Parameters.Add(
new SqlParameter("@LAST_CHANGE_TEXT", SqlDbType.NVarChar, 50) { Value = "Created" });
cmd.Parameters.Add(new SqlParameter("@HISTORY", SqlDbType.NVarChar, 50) { Value = History });
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();
}
}
}
private void CreateNewMMEChannel()
{
using (var cmd = DbOperations.GetSQLCommand(true))
{
try
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_MMEPossibleChannelsUpdateInsert.ToString();
#region params
cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.BigInt) { Value = Id });
cmd.Parameters.Add(new SqlParameter("@TYPE", SqlDbType.NVarChar, 50) { Value = Type });
cmd.Parameters.Add(new SqlParameter("@TEST_OBJECT", SqlDbType.NVarChar, 50) { Value = Test_Object });
cmd.Parameters.Add(new SqlParameter("@POSITION", SqlDbType.NVarChar, 50) { Value = Position });
cmd.Parameters.Add(
new SqlParameter("@TRANS_MAIN_LOC", SqlDbType.NVarChar, 50) { Value = Trans_Main_Loc });
cmd.Parameters.Add(new SqlParameter("@FINE_LOC_1", SqlDbType.NVarChar, 50) { Value = Fine_Loc_1 });
cmd.Parameters.Add(new SqlParameter("@FINE_LOC_2", SqlDbType.NVarChar, 50) { Value = Fine_Loc_2 });
cmd.Parameters.Add(new SqlParameter("@FINE_LOC_3", SqlDbType.NVarChar, 50) { Value = Fine_Loc_3 });
cmd.Parameters.Add(
new SqlParameter("@PHYSICAL_DIMENSION", SqlDbType.NVarChar, 50) { Value = Physical_Dimension });
cmd.Parameters.Add(new SqlParameter("@DIRECTION", SqlDbType.NVarChar, 50) { Value = Direction });
cmd.Parameters.Add(
new SqlParameter("@DEFAULT_FILTER_CLASS", SqlDbType.NVarChar, 50)
{
Value = Default_Filter_Class
});
cmd.Parameters.Add(new SqlParameter("@TEXT_L1", SqlDbType.NVarChar, 100) { Value = Text_L1 });
cmd.Parameters.Add(new SqlParameter("@TEXT_L2", SqlDbType.NVarChar, 100) { Value = Text_L2 });
cmd.Parameters.Add(new SqlParameter("@VERSION", SqlDbType.Int) { Value = Version });
cmd.Parameters.Add(new SqlParameter("@DATE", SqlDbType.DateTime) { Value = Date });
cmd.Parameters.Add(new SqlParameter("@REMARKS", SqlDbType.NVarChar, 50) { Value = Remarks });
cmd.Parameters.Add(new SqlParameter("@EXPIRED", SqlDbType.Bit) { Value = Expired });
cmd.Parameters.Add(new SqlParameter("@SORTKEY", SqlDbType.NVarChar, 50) { Value = SortKey });
cmd.Parameters.Add(
new SqlParameter("@PICTURE_SHORTNAME", SqlDbType.NVarChar, 50) { Value = Picture_ShortName });
cmd.Parameters.Add(new SqlParameter("@LAST_CHANGE", SqlDbType.DateTime) { Value = DateTime.Now });
cmd.Parameters.Add(
new SqlParameter("@LAST_CHANGE_TEXT", SqlDbType.NVarChar, 50) { Value = "Created" });
cmd.Parameters.Add(new SqlParameter("@HISTORY", SqlDbType.NVarChar, 50) { Value = History });
var newIdParam = new SqlParameter("@new_id", SqlDbType.Int) { Direction = ParameterDirection.Output };
cmd.Parameters.Add(newIdParam);
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
}
var id = int.Parse(newIdParam.Value.ToString());
Id = id == 0 ? Id : id;
}
catch (Exception ex)
{
APILogger.LogException(ex);
}
finally
{
cmd.Connection.Dispose();
}
}
}
}
}