using System; using System.Collections.Generic; using System.Data; using System.Data.OleDb; using System.Data.SqlClient; using System.Linq; using System.Xml; using DTS.Common.Enums.DBExport; using DTS.Common.Storage; using DTS.Common.Utilities.Logging; namespace DTS.Common.ISO { public class MMEDirections : AbstractOLEDbWrapper { public string S_GUID { get; } public string Direction { get; } public string Text_L1 { get; } public string Text_L2 { get; } public DateTime Date { get; } public long Version { get; } public bool Expired { get; } public string Remarks { get; } public DateTime Last_Change { get; } public string Last_Change_Text { get; } public string History { get; } public string SortKey { get; } public MMEPossibleChannels.MMEChannelTypes RecordType { get; } /// /// imports a singular custom direction /// /// /// public static MMEDirections ReadXML(XmlElement node) { var fields = Enum.GetValues(typeof(CustomDirectionFields)).Cast().ToArray(); string sGuid = "", direction = "", textL1 = "", textL2 = "", remarks = "", lastChangeText = "", history = "", sortkey = ""; var date = DateTime.Now; long version = 0; var bExpired = false; var lastChange = DateTime.Now; foreach (var field in fields) { switch (field) { case CustomDirectionFields.Direction: direction = node.GetAttribute(field.ToString()); break; case CustomDirectionFields.Expired: bExpired = Convert.ToBoolean(node.GetAttribute(field.ToString())); break; case CustomDirectionFields.GUID: sGuid = node.GetAttribute(field.ToString()); break; case CustomDirectionFields.History: history = node.GetAttribute(field.ToString()); break; case CustomDirectionFields.Last_Change: lastChange = DateTime.Parse(node.GetAttribute(field.ToString()), System.Globalization.CultureInfo.InvariantCulture); break; case CustomDirectionFields.Last_Change_Text: lastChangeText = node.GetAttribute(field.ToString()); break; case CustomDirectionFields.Remarks: remarks = node.GetAttribute(field.ToString()); break; case CustomDirectionFields.SortKey: sortkey = node.GetAttribute(field.ToString()); break; case CustomDirectionFields.Text_L1: textL1 = node.GetAttribute(field.ToString()); break; case CustomDirectionFields.Text_L2: textL2 = node.GetAttribute(field.ToString()); break; case CustomDirectionFields.Version: version = long.Parse(node.GetAttribute(field.ToString()), System.Globalization.CultureInfo.InvariantCulture); break; default: throw new NotSupportedException("ImportTestSetup::ImportCustomDirection unsupported field: " + field.ToString()); } } return new MMEDirections(sGuid, direction, textL1, textL2, date, version, bExpired, remarks, lastChange, lastChangeText, history, sortkey, MMEPossibleChannels.MMEChannelTypes.SQL); } public MMEDirections(string sGuid, string direction, string textL1, string textL2, DateTime date, long version, bool bExpired, string remarks, DateTime lastChange, string lastChangeText, string history, string sortkey, MMEPossibleChannels.MMEChannelTypes type) { RecordType = type; S_GUID = sGuid; Direction = direction; Text_L1 = textL1; Text_L2 = textL2; Date = date; Version = version; Expired = bExpired; Remarks = remarks; Last_Change = lastChange; Last_Change_Text = lastChangeText; History = history; SortKey = sortkey; } public static MMEDirections[] GetDirections() { var directions = new List(); using (var cmd = DbOperations.GetISOCommand()) { cmd.CommandText = "SELECT * FROM MMEDirections"; cmd.CommandType = CommandType.Text; try { using (var ISOReader = cmd.ExecuteReader()) { while (ISOReader.Read()) { try { var version = Convert.ToInt32( ISOReader[DbOperations.MMETables.MMEDirectionsFields.VERSION.ToString()]); var text2 = Convert.ToString( ISOReader[DbOperations.MMETables.MMEDirectionsFields.TEXT_L2.ToString()]); var text1 = Convert.ToString( ISOReader[DbOperations.MMETables.MMEDirectionsFields.TEXT_L1.ToString()]); var sortKey = Convert.ToString( ISOReader[DbOperations.MMETables.MMEDirectionsFields.SORTKEY.ToString()]); var sGuid = Convert.ToString( ISOReader[DbOperations.MMETables.MMEDirectionsFields.s_GUID.ToString()]); var remarks = Convert.ToString( ISOReader[DbOperations.MMETables.MMEDirectionsFields.REMARKS.ToString()]); var lastChangeText = Convert.ToString( ISOReader[ DbOperations.MMETables.MMEDirectionsFields.LAST_CHANGE_TEXT.ToString()]); var lastChange = GetDate(ISOReader, DbOperations.MMETables.MMEDirectionsFields.LAST_CHANGE.ToString()); var history = Convert.ToString( ISOReader[DbOperations.MMETables.MMEDirectionsFields.HISTORY.ToString()]); var expired = Convert.ToBoolean( ISOReader[DbOperations.MMETables.MMEDirectionsFields.EXPIRED.ToString()]); var direction = Convert.ToString( ISOReader[DbOperations.MMETables.MMEDirectionsFields.DIRECTION.ToString()]); var date = Convert.ToDateTime( ISOReader[DbOperations.MMETables.MMEDirectionsFields.DATE.ToString()]); var mmedirection = new MMEDirections(sGuid, direction, text1, text2, date, Convert.ToInt64(version), expired, remarks, lastChange, lastChangeText, history, sortKey, MMEPossibleChannels.MMEChannelTypes.ISO13499_106); directions.Add(mmedirection); } catch (Exception ex) { APILogger.Log("failed to load direction", ex); } } ISOReader.Close(); } } finally { cmd.Connection.Dispose(); } } return directions.ToArray(); } public void Commit() { using (var cmd = DbOperations.GetSQLCommand(true)) { try { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_MMEDirectionsUpdateInsert.ToString(); #region params cmd.Parameters.Add( new SqlParameter("@s_GUID", SqlDbType.UniqueIdentifier) { Value = Guid.Parse(S_GUID) }); cmd.Parameters.Add(new SqlParameter("@DIRECTION", SqlDbType.NVarChar, 50) { Value = Direction }); cmd.Parameters.Add(new SqlParameter("@TEXT_L1", SqlDbType.NVarChar, 255) { Value = Text_L1 }); cmd.Parameters.Add(new SqlParameter("@TEXT_L2", SqlDbType.NVarChar, 255) { Value = Text_L2 }); cmd.Parameters.Add(new SqlParameter("@DATE", SqlDbType.DateTime) { Value = Date }); cmd.Parameters.Add(new SqlParameter("@VERSION", SqlDbType.Int) { Value = Version }); cmd.Parameters.Add(new SqlParameter("@EXPIRED", SqlDbType.Bit) { Value = Expired }); cmd.Parameters.Add(new SqlParameter("@REMARKS", SqlDbType.NVarChar) { Value = Remarks }); cmd.Parameters.Add(new SqlParameter("@LAST_CHANGE", SqlDbType.DateTime) { Value = Last_Change }); cmd.Parameters.Add( new SqlParameter("@LAST_CHANGE_TEXT", SqlDbType.NVarChar, 255) { Value = Last_Change_Text }); cmd.Parameters.Add(new SqlParameter("@HISTORY", SqlDbType.NVarChar) { Value = History }); cmd.Parameters.Add(new SqlParameter("@SORTKEY", SqlDbType.NVarChar, 50) { Value = SortKey }); 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 } } finally { cmd.Connection.Dispose(); } } } } }