Imports DigitalData.Modules.Logging Imports DigitalData.Modules.ZooFlow Public Class ProfileSearches Private _LogConfig As LogConfig Private _Logger As Logger Private _Environment As Environment Private _Params As ClipboardWatcherParams Public Class Search Public Guid As Integer Public DataTable As DataTable Public TabIndex As Integer Public TabCaption As String Public ProfileId As Integer Public SQLCommand As String End Class Public Sub New(LogConfig As LogConfig, Environment As Environment, Params As ClipboardWatcherParams) _LogConfig = LogConfig _Logger = LogConfig.GetLogger() _Environment = Environment _Params = Params End Sub Public Async Function LoadDocumentSearchesAsync() As Task(Of List(Of Search)) Return Await Task.Run(AddressOf DoLoadDocumentSearches) End Function Private Function DoLoadDocumentSearches() As List(Of Search) Dim oMatchingIds = String.Join(",", _Params.MatchingProfiles.Select(Function(p) p.Guid).ToArray()) Dim oSQL As String = $"SELECT * FROM TBCW_PROF_DOC_SEARCH WHERE ACTIVE = 1 AND PROFILE_ID in ({oMatchingIds}) ORDER BY TAB_INDEX" Dim oSearchesDataTable = _Environment.Database.GetDatatable(oSQL) Dim oDocSearches As New List(Of Search) Dim oCounter As Integer = 0 Dim oPatterns As New Patterns.ClassPatterns(_LogConfig) For Each oRow As DataRow In oSearchesDataTable.Rows Dim oProfileId As Integer = oRow.Item("PROFILE_ID") Dim oTabTitle As String = oRow.Item("TAB_TITLE") Dim oConnectionId As Integer = oRow.Item("CONN_ID") Dim oGuid As Integer = oRow.Item("GUID") oSQL = oRow.Item("SQL_COMMAND") oSQL = oPatterns.ReplaceUserValues(oSQL, _Environment.User) oSQL = oPatterns.ReplaceInternalValues(oSQL) oSQL = oPatterns.ReplaceClipboardContents(oSQL, _Params.ClipboardContents) Dim oDatatable As DataTable = _Environment.Database.GetDatatable(oSQL, oConnectionId) oDocSearches.Add(New Search() With { .Guid = oGuid, .DataTable = oDatatable, .ProfileId = oProfileId, .TabCaption = oTabTitle, .TabIndex = oCounter, .SQLCommand = oSQL }) oCounter += 1 Next Return oDocSearches End Function Public Async Function LoadDataSearchesAsync() As Task(Of List(Of Search)) Return Await Task.Run(AddressOf DoLoadDataSearches) End Function Private Function DoLoadDataSearches() As List(Of Search) Dim oMatchingIds = String.Join(",", _Params.MatchingProfiles.Select(Function(p) p.Guid).ToArray()) Dim oSQL As String = $"SELECT * FROM TBCW_PROF_DATA_SEARCH WHERE ACTIVE = 1 AND PROFILE_ID in ({oMatchingIds}) ORDER BY TAB_INDEX" Dim oSearchesDataTable = _Environment.Database.GetDatatable(oSQL) Dim oDataSearches As New List(Of Search) Dim oCounter As Integer = 0 Dim oPatterns As New Patterns.ClassPatterns(_LogConfig) For Each oRow As DataRow In oSearchesDataTable.Rows Dim oProfileId As Integer = oRow.Item("PROFILE_ID") Dim oTabTitle As String = oRow.Item("TAB_TITLE") Dim oConnectionId As Integer = oRow.Item("CONN_ID") oSQL = oRow.Item("SQL_COMMAND") oSQL = oPatterns.ReplaceUserValues(oSQL, _Environment.User) oSQL = oPatterns.ReplaceInternalValues(oSQL) Dim oDatatable As DataTable = _Environment.Database.GetDatatable(oSQL, oConnectionId) oDataSearches.Add(New Search() With { .DataTable = oDatatable, .ProfileId = oProfileId, .TabCaption = oTabTitle, .TabIndex = oCounter, .SQLCommand = oSQL }) oCounter += 1 Next Return oDataSearches End Function End Class