Imports DigitalData.Modules.Base Imports DigitalData.Modules.Database Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Language Public Class SearchLoader Inherits BaseClass Private Config As Config Private Database As MSSQLServer Public Searches As New List(Of Search) Public Parameters As New List(Of SearchParameter) Public Enum ReturnTypeEnum Undefined Table TreeView End Enum Public Enum DataTypeEnum Undefined [Boolean] [String] [Integer] [Date] End Enum Public Enum ItemTypeEnum Undefined List SQL End Enum Public Sub New(pLogConfig As LogConfig, pConfig As Config, pDatabase As MSSQLServer) MyBase.New(pLogConfig) Config = pConfig Database = pDatabase End Sub Public Sub LoadSearches() Try Dim oSQL = Config.SearchSQL Dim oTable = Database.GetDatatable(oSQL) For Each oRow As DataRow In oTable.Rows Dim oSearchId = oRow.ItemEx("GUID", 0) Dim oParams = Parameters. Where(Function(param) param.SearchId = oSearchId). ToList() Searches.Add(New Search With { .Id = oSearchId, .Title = oRow.ItemEx("TITLE", String.Empty), .Description = oRow.ItemEx("CAPTION", String.Empty), .ReturnType = GetReturnType(oRow.ItemEx("RETURN_TYPE", String.Empty)), .SQLCommand = oRow.ItemEx("EXEC_SQL", String.Empty), .Parameters = oParams }) Next Catch ex As Exception Logger.Error(ex) Throw ex End Try End Sub Public Function GetItemType(pTypeString As String) As ItemTypeEnum Select Case pTypeString Case "LIST" Return ItemTypeEnum.List Case "SQL" Return ItemTypeEnum.SQL Case Else Return ItemTypeEnum.Undefined End Select End Function Public Function GetReturnType(pTypeString As String) As ReturnTypeEnum Select Case pTypeString Case "Table" Return ReturnTypeEnum.Table Case "TreeView" Return ReturnTypeEnum.TreeView Case Else Return ReturnTypeEnum.Undefined End Select End Function Public Function GetDataType(pTypeString As String) As DataTypeEnum Select Case pTypeString Case "BIT" Return DataTypeEnum.Boolean Case "VARCHAR" Return DataTypeEnum.String Case "INT" Return DataTypeEnum.Integer Case "DATE" Return DataTypeEnum.Date Case Else Return DataTypeEnum.Undefined End Select End Function Public Sub LoadSearchParameters() Dim oSQL As String = $"SELECT * FROM TBMON_PROFILE_PARAM WHERE ACTIVE = 1 ORDER BY SEQUENCE" Dim oTable As DataTable = Database.GetDatatable(oSQL) Dim oParameters As New List(Of SearchParameter) For Each oRow As DataRow In oTable.Rows oParameters.Add(New SearchParameter With { .Id = oRow.ItemEx("GUID", 0), .Title = oRow.ItemEx("CAPTION", String.Empty), .Description = oRow.ItemEx("DESCRIPTION", String.Empty), .DataType = GetDataType(oRow.ItemEx("DATA_TYPE", "VARCHAR")), .ItemString = oRow.ItemEx("ITEMS", String.Empty), .ItemType = GetItemType(oRow.ItemEx("ITEM_TYPE", String.Empty)), .Required = oRow.ItemEx("REQUIRED", True), .PatternTitle = oRow.ItemEx("PATTERN", String.Empty), .SearchId = oRow.ItemEx("PROFILE_ID", 0) }) Next Parameters = oParameters End Sub Public Class Search Public Id As Integer Public Title As String Public Description As String Public SQLCommand As String Public ReturnType As ReturnTypeEnum Public Parameters As List(Of SearchParameter) Public Overrides Function ToString() As String Return Title End Function End Class Public Class SearchParameter Public Id As Integer Public Title As String Public PatternTitle As String Public Description As String Public DataType As DataTypeEnum Public ItemString As String Public ItemType As ItemTypeEnum Public Required As Boolean Public SearchId As Integer Public ReadOnly Property HasItems As Boolean Get Return ItemType <> ItemTypeEnum.Undefined End Get End Property Public Overrides Function ToString() As String Return Title End Function End Class End Class