Monitor/GUIs.Monitor/SearchLoader.vb

164 lines
4.9 KiB
VB.net

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