using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Data.SqlClient; namespace DatabaseImport { /// /// a test object is a top level object in the ISO database /// given a test object, it is possible to find all possible channels as defined in ISO /// note there is a ? test object ... /// I'll use these to build templates /// public class MMETestObjects //: AbstractOLEDbWrapper { public string S_GUID { get; } public string Test_Object { get; } public string Text_L1 { get; } public string Text_L2 { get; } public long Version { get; } public DateTime Date { get; } public string Remarks { get; } public bool Expired { get; } public string SortKey { get; } public DateTime Last_Change { get; } public string Last_Change_Text { get; } public string History { get; } public MMEPossibleChannels.MMEChannelTypes RecordType { get; } = MMEPossibleChannels.MMEChannelTypes.ISO13499_106; public MMETestObjects(string sGuid, string testObject, string textL1, string textL2, long version, DateTime date, string remarks, bool expired, string sortkey, DateTime lastChange, string lastChangeText, string history, MMEPossibleChannels.MMEChannelTypes type) { RecordType = type; S_GUID = sGuid; Test_Object = testObject; Text_L1 = textL1; Text_L2 = textL2; Version = version; Date = date; Remarks = remarks; Expired = expired; SortKey = sortkey; Last_Change = lastChange; Last_Change_Text = lastChangeText; History = history; } public static void DeleteTestObjects() { try { using (var cmd = DbOperations.GetSQLCommand(true)) { try { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_MMETestObjectsDelete.ToString(); cmd.Parameters.Add(new SqlParameter("@s_GUID", 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 test objects, ", ex);*/ } } public void Commit() { using (var cmd = DbOperations.GetSQLCommand(true)) { try { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_MMETestObjectsUpdateInsert.ToString(); #region params cmd.Parameters.Add( new SqlParameter("@s_GUID", SqlDbType.UniqueIdentifier) { Value = Guid.Parse(S_GUID) }); cmd.Parameters.Add(new SqlParameter("@TEST_OBJECT", SqlDbType.NVarChar, 50) { Value = Test_Object }); cmd.Parameters.Add(new SqlParameter("@TEXT_L1", SqlDbType.NVarChar, 50) { Value = Text_L1 }); cmd.Parameters.Add(new SqlParameter("@TEXT_L2", SqlDbType.NVarChar, 50) { 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("@LAST_CHANGE", SqlDbType.DateTime) { Value = Last_Change }); cmd.Parameters.Add( new SqlParameter("@LAST_CHANGE_TEXT", SqlDbType.NVarChar, 50) { Value = Last_Change_Text }); 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(); } } } public static MMETestObjects[] GetTestObjects() { var testObjects = new List(); try { using (var cmd = DbOperations.GetSQLCommand(true)) { try { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_MMETestObjectsGet.ToString(); cmd.Parameters.Add(new SqlParameter("@s_GUID", SqlDbType.NVarChar) { Value = null }); using (var ds = DbOperations.Connection.QueryDataSet(cmd)) { if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { try { testObjects.AddRange(from DataRow dr in ds.Tables[0].Rows let date = Convert.ToDateTime( dr[DbOperations.MMETables.MMETestObjectsFields.DATE.ToString()]) let expired = Convert.ToBoolean( dr[DbOperations.MMETables.MMETestObjectsFields.EXPIRED.ToString()]) let history = Convert.ToString( dr[DbOperations.MMETables.MMETestObjectsFields.HISTORY.ToString()]) let lastChange = Convert.ToDateTime(dr[ DbOperations.MMETables.MMETestObjectsFields.LAST_CHANGE.ToString()]) let lastChangeText = Convert.ToString(dr[ DbOperations.MMETables.MMETestObjectsFields.LAST_CHANGE_TEXT.ToString()]) let remarks = Convert.ToString( dr[DbOperations.MMETables.MMETestObjectsFields.REMARKS.ToString()]) let sGuid = Convert.ToString( dr[DbOperations.MMETables.MMETestObjectsFields.s_GUID.ToString()]) let sortKey = Convert.ToString( dr[DbOperations.MMETables.MMETestObjectsFields.SORTKEY.ToString()]) let textObject = Convert.ToString(dr[ DbOperations.MMETables.MMETestObjectsFields.TEST_OBJECT.ToString()]) let text1 = Convert.ToString( dr[DbOperations.MMETables.MMETestObjectsFields.TEXT_L1.ToString()]) let text2 = Convert.ToString( dr[DbOperations.MMETables.MMETestObjectsFields.TEXT_L2.ToString()]) let version = Convert.ToInt32( dr[DbOperations.MMETables.MMETestObjectsFields.VERSION.ToString()]) select new MMETestObjects(sGuid, textObject, text1, text2, Convert.ToInt64(version), date, remarks, expired, sortKey, lastChange, lastChangeText, history, MMEPossibleChannels.MMEChannelTypes.ISO13499_106)); } catch (Exception) { //APILogger.Log("Failed to process test objects: ", ex); } } } } finally { cmd.Connection.Dispose(); } } } catch (Exception) { /*APILogger.Log("failed to retrieve test objects, ", ex);*/ } try { using (var cmd = DbOperations.GetSQLCommand(true)) { try { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = DbOperationsEnum.StoredProcedure.sp_MMETestObjectsGetCustom.ToString(); cmd.Parameters.Add(new SqlParameter("@s_GUID", SqlDbType.NVarChar) { Value = null }); using (var ds = DbOperations.Connection.QueryDataSet(cmd)) { if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { try { testObjects.AddRange(from DataRow dr in ds.Tables[0].Rows let date = Convert.ToDateTime( dr[DbOperations.MMETables.MMETestObjectsFields.DATE.ToString()]) let expired = Convert.ToBoolean( dr[DbOperations.MMETables.MMETestObjectsFields.EXPIRED.ToString()]) let history = Convert.ToString( dr[DbOperations.MMETables.MMETestObjectsFields.HISTORY.ToString()]) let lastChange = Convert.ToDateTime(dr[ DbOperations.MMETables.MMETestObjectsFields.LAST_CHANGE.ToString()]) let lastChangeText = Convert.ToString(dr[ DbOperations.MMETables.MMETestObjectsFields.LAST_CHANGE_TEXT.ToString()]) let remarks = Convert.ToString( dr[DbOperations.MMETables.MMETestObjectsFields.REMARKS.ToString()]) let sGuid = Convert.ToString( dr[DbOperations.MMETables.MMETestObjectsFields.s_GUID.ToString()]) let sortKey = Convert.ToString( dr[DbOperations.MMETables.MMETestObjectsFields.SORTKEY.ToString()]) let textObject = Convert.ToString(dr[ DbOperations.MMETables.MMETestObjectsFields.TEST_OBJECT.ToString()]) let text1 = Convert.ToString( dr[DbOperations.MMETables.MMETestObjectsFields.TEXT_L1.ToString()]) let text2 = Convert.ToString( dr[DbOperations.MMETables.MMETestObjectsFields.TEXT_L2.ToString()]) let version = Convert.ToInt32( dr[DbOperations.MMETables.MMETestObjectsFields.VERSION.ToString()]) select new MMETestObjects(sGuid, textObject, text1, text2, Convert.ToInt64(version), date, remarks, expired, sortKey, lastChange, lastChangeText, history, MMEPossibleChannels.MMEChannelTypes.SQL)); } catch (Exception) { //APILogger.Log("Failed to process custom test objects: ", ex); } } } } finally { cmd.Connection.Dispose(); } } } catch (Exception) { /*APILogger.Log("failed to retrieve custom test objects, ", ex); */} return testObjects.ToArray(); } } }