using System; using System.Collections.Generic; using System.Data; using System.Data.OleDb; 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 MMEFilterClasses : AbstractOLEDbWrapper { public string S_GUID { get; } public string Filter_Class { 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 static MMEFilterClasses ReadXML(XmlElement node) { string sGuid = "", filterClass = "", textL1 = "", textL2 = "", remarks = "", sortKey = "", lastChangeText = "", history = ""; long version = 0; DateTime date = DateTime.Now, lastChange = DateTime.Now; var bExpired = false; var fields = Enum.GetValues(typeof(CustomFilterFields)).Cast().ToArray(); foreach (var field in fields) { switch (field) { case CustomFilterFields.Date: date = DateTime.Parse(node.GetAttribute(field.ToString()), System.Globalization.CultureInfo.InvariantCulture); break; case CustomFilterFields.Expired: bExpired = Convert.ToBoolean(node.GetAttribute(field.ToString())); break; case CustomFilterFields.Filter_Class: filterClass = node.GetAttribute(field.ToString()); break; case CustomFilterFields.History: history = node.GetAttribute(field.ToString()); break; case CustomFilterFields.Last_Change: lastChange = DateTime.Parse(node.GetAttribute(field.ToString()), System.Globalization.CultureInfo.InvariantCulture); break; case CustomFilterFields.Last_Change_Text: lastChangeText = node.GetAttribute(field.ToString()); break; case CustomFilterFields.Remarks: remarks = node.GetAttribute(field.ToString()); break; case CustomFilterFields.S_GUID: sGuid = node.GetAttribute(field.ToString()); break; case CustomFilterFields.SortKey: sortKey = node.GetAttribute(field.ToString()); break; case CustomFilterFields.Text_L1: textL1 = node.GetAttribute(field.ToString()); break; case CustomFilterFields.Text_L2: textL2 = node.GetAttribute(field.ToString()); break; case CustomFilterFields.Version: version = long.Parse(node.GetAttribute(field.ToString()), System.Globalization.CultureInfo.InvariantCulture); break; default: throw new NotSupportedException("ImportTestSetup::ImportCustomFilterClasses unknown field: " + field); } } return new MMEFilterClasses(sGuid, filterClass, textL1, textL2, version, date, remarks, bExpired, sortKey, lastChange, lastChangeText, history, MMEPossibleChannels.MMEChannelTypes.SQL); } public MMEFilterClasses(string sGuid, string filterClass, string textL1, string textL2, long version, DateTime date, string remarks, bool bExpired, string sortKey, DateTime lastChange, string lastChangeText, string history, MMEPossibleChannels.MMEChannelTypes type) { RecordType = type; S_GUID = sGuid; Filter_Class = filterClass; Text_L1 = textL1; Text_L2 = textL2; Version = version; Date = date; Remarks = remarks; Expired = bExpired; SortKey = sortKey; Last_Change = lastChange; Last_Change_Text = lastChangeText; History = history; } public static MMEFilterClasses[] GetFilterClasses() { var filterClasses = new List(); using (var cmd = DbOperations.GetISOCommand()) { cmd.CommandType = CommandType.Text; cmd.CommandText = "SELECT * FROM MMEFilterClasses"; try { using (var ISOReader = cmd.ExecuteReader()) { while (ISOReader.Read()) { try { string sGuid = ISOReader["s_GUID"].ToString(); string filterClass = ISOReader["FILTER_CLASS"].ToString(); string textL1 = ISOReader["TEXT_L1"].ToString(); string textL2 = ISOReader["TEXT_L2"].ToString(); long version = Convert.ToInt64(ISOReader["VERSION"]); DateTime date = (DateTime)ISOReader["DATE"]; string remarks = ISOReader["REMARKS"].ToString(); bool expired = (bool)ISOReader["EXPIRED"]; string sortkey = ISOReader["SORTKEY"].ToString(); DateTime lastChange = GetDate(ISOReader, "LAST_CHANGE"); string lastChangeText = ISOReader["LAST_CHANGE_TEXT"].ToString(); string history = ISOReader["HISTORY"].ToString(); filterClasses.Add(new MMEFilterClasses(sGuid, filterClass, textL1, textL2, version, date, remarks, expired, sortkey, lastChange, lastChangeText, history, MMEPossibleChannels.MMEChannelTypes.ISO13499_106)); } catch (Exception ex) { APILogger.Log("Failed to process filter classes ", ex); } } } } finally { cmd.Connection.Dispose(); } } return filterClasses.ToArray(); } public override string ToString() { return Text_L1; } } }