using DigitalData.Modules.Database; using DigitalData.Modules.Interfaces; using DigitalData.Modules.Config; using Microsoft.Extensions.Configuration; using System.Collections.Generic; using System.Data; using DigitalData.Modules.Logging; using System; namespace ZUGFeRDRESTService { public class Database: IDatabase { private DigitalData.Modules.Logging.Logger _Logger = null; private string _gdPictureKey = null; private List _propertyMapList = null; private List _RejectionStringList = null; private LogConfig _logConfig = null; private string _connString; private string _GDPictureVersion; private const string QUERY_GET_GDPICTURE_KEY = "SELECT LICENSE FROM TBDD_3RD_PARTY_MODULES WHERE NAME = 'GDPICTURE'"; private const string QUERY_GET_PROPERTY_MAP = "SELECT * FROM TBDD_ZUGFERD_XML_ITEMS WHERE ACTIVE = 1 ORDER BY XML_PATH"; private const string QUERY_GET_REJECTION_MESSAGES = "SELECT * FROM TBDD_GUI_LANGUAGE_PHRASE WHERE CAPT_TYPE = 'RejectionCodeWeb'"; public MSSQLServer MSSQL { get; set; } public Database(ILogging Logging, IConfiguration Config) { _logConfig = Logging.LogConfig; var oLogger = Logging.LogConfig.GetLogger(); var oAppConfig = Config.GetSection("Config"); _connString = oAppConfig["MSSQLConnectionString"]; _GDPictureVersion = oAppConfig["GDPictureVersion"]; oLogger.Debug("Establishing MSSQL Database connection.."); MSSQL = new MSSQLServer(_logConfig, _connString); oLogger.Debug("MSSQL Connection: [{0}]", MSSQL.CurrentConnectionString); _Logger = oLogger; } public string GetGDPictureKey() { _gdPictureKey = ConfigDbFunct.GetProductLicense("GDPICTURE", _GDPictureVersion, _logConfig, _connString); return _gdPictureKey; } public List GetPropertyMapList() { if (_propertyMapList == null) { _Logger.Debug("Property map list does not exist, creating."); _propertyMapList = new List(); var oDatatable = MSSQL.GetDatatable(QUERY_GET_PROPERTY_MAP); _Logger.Debug("Datatable Rows: [{0}]", oDatatable.Rows.Count); foreach (DataRow oRow in oDatatable.Rows) { _propertyMapList.Add(new XmlItemProperty() { XMLPath = oRow["XML_PATH"].ToString(), Description = oRow["DESCRIPTION"].ToString(), TableName = oRow["TABLE_NAME"].ToString(), TableColumn = oRow["TABLE_COLUMN"].ToString(), GroupScope = oRow["GROUP_SCOPE"].ToString(), IsRequired = (bool)oRow["IS_REQUIRED"], IsGrouped = (bool)oRow["IS_GROUPED"], Specification = oRow["SPECIFICATION"].ToString(), ItemType = oRow["ITEM_TYPE"] != null ? Convert.ToInt32(oRow["ITEM_TYPE"]) : 0, EN16931_ID = oRow["EN16931_ID"] != null ? oRow["EN16931_ID"].ToString() : "-" }); } } else { _Logger.Debug("Property map list already exists, returning."); } _Logger.Debug("Returning Property Map list with [{0}] entries.", _propertyMapList.Count); return _propertyMapList; } public List GetRejectionMessageList() { try { if (_RejectionStringList == null) { var oDatatable = MSSQL.GetDatatable(QUERY_GET_REJECTION_MESSAGES); _Logger.Debug("Datatable Rows: [{0}]", oDatatable.Rows.Count); if (oDatatable != null && oDatatable.Rows.Count > 0) { _RejectionStringList = new List(); foreach (DataRow oRow in oDatatable.Rows) { var newRejectionItem = new RejectionStringRow { Title = oRow["Title"].ToString(), ModuleName = oRow["Module"].ToString(), Caption = oRow["CAPT_TYPE"].ToString(), Language = oRow["Language"].ToString(), String1 = oRow["String1"].ToString() }; _RejectionStringList.Add(newRejectionItem); } _Logger.Debug("Returning Rejections messages list with [{0}] entries.", _RejectionStringList.Count); } else { _RejectionStringList = null; _Logger.Warn("No Rejections messages found in Table TBDD_GUI_LANGUAGE_PHRASE with CAPT_TYPE = 'RejectionCodeWeb'!!!"); } } else { _Logger.Debug("Rejections messages list already exists, returning list with [{0}] entries.", _RejectionStringList.Count); } } catch (Exception ex) { _RejectionStringList = null; _Logger.Error("Database Error: [{0}]", ex); } return _RejectionStringList; } } }