Modules/GUIs.ZooFlow/Search/SearchRunner.vb

192 lines
6.4 KiB
VB.net

Imports DigitalData.GUIs.Common
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.ZooFlow
Public Class SearchRunner
Inherits BaseClass
Private Const SEARCH_FACT_DATE_DEFAULT As String = "ADDED_WHEN"
Private Environment As Environment
Private Const CREATED_TOMORROW As String = "TOMORROW"
Private Const CREATED_TODAY As String = "ECM_CREATED_TODAY"
Private Const CREATED_YESTERDAY As String = "ECM_CREATED_YESTERDAY"
Private Const CREATED_LAST_7_DAYS As String = "ECM_CREATED_LAST7DAYS"
Private Const CREATED_YEAR_CURRENT As String = "ECM_CREATED_YEAR_CURRENT"
Private Const CREATED_YEAR_LAST As String = "ECM_CREATED_YEAR_LAST"
Private Const CREATED_MONTH_CURR As String = "ECM_CREATED_MONTH_CURRENT"
Private Const CREATED_MONTH_LAST As String = "ECM_CREATED_MONTH_LAST"
Public Enum DateConstraint
Today
Tomorrow
Yesterday
Last7Days
CurrentMonth
LastMonth
CurrentYear
LastYear
End Enum
Public Event NeedsRefresh As EventHandler(Of Integer)
Private _ActiveDateConstraint As String = String.Empty
Public ReadOnly Property ActiveDateConstraint As String
Get
Return _ActiveDateConstraint
End Get
End Property
Private _ActiveDateAttribute As String = SEARCH_FACT_DATE_DEFAULT
Public ReadOnly Property ActiveDateAttribute As String
Get
Return _ActiveDateAttribute
End Get
End Property
Public Property BaseSearchSQL As String
Public Property ExplicitDate As Boolean = False
Public Sub New(pLogConfig As LogConfig, pEnvironment As Environment)
MyBase.New(pLogConfig)
Environment = pEnvironment
End Sub
Public Async Function Run(pSearchTerm As String, pDateFrom As Date, pDateTo As Date) As Threading.Tasks.Task(Of SearchResult)
Dim oSearchTerm = pSearchTerm
Dim oParams = New DocumentResultList.Params() With {
.WindowGuid = "FlowSearch",
.WindowTitle = GetResultWindowString(oSearchTerm),
.OperationModeOverride = Modules.ZooFlow.Constants.OperationMode.ZooFlow,
.ProfileGuid = 354522,
.ColumnNames = New DocumentResultList.ColumnNames With {
.ObjectIdColumn = "DocID"
},
.ShowBackNavigation = False
}
Dim oP3 = $"{_ActiveDateAttribute}~{_ActiveDateConstraint}"
If ExplicitDate Then
Dim oDate2 As Date
If pDateTo.Equals(Date.MinValue) Then
oDate2 = pDateTo
Else
oDate2 = pDateFrom
End If
Dim oProc = $"EXEC PRIDB_SEARCH_ADD_USR_DATE {My.Application.User.UserId},'{pDateFrom}','{oDate2}'"
If Await My.Database.ExecuteNonQueryIDBAsync(oProc) = True Then
oP3 = $"{_ActiveDateAttribute}~DATEPART"
End If
End If
Dim oSQL = $"EXEC PRIDB_SEARCH_TEXT_GET_RESULTS {My.Application.User.UserId},'{oSearchTerm}','{oP3}'"
If Await My.Database.ExecuteNonQueryIDBAsync(oSQL) = True Then
Dim oDTDocResult = Await My.Database.GetDatatableIDBAsync(BaseSearchSQL)
If oDTDocResult.Rows.Count > 0 Then
oParams.Results.Add(New DocumentResultList.DocumentResult() With {
.Title = "FlowSearchXYZ",
.Datatable = oDTDocResult
})
Dim oForm As New frmDocumentResultList(My.LogConfig, Environment, oParams)
' TODO: Implement, not needed right now
'AddHandler oForm.NeedsRefresh, AddressOf Form_NeedsRefresh
oForm.Show()
Return New SearchResult With {
.OK = True
}
Else
'bsiStatus.Caption = "No Results"
Return New SearchResult With {
.OK = False,
.ErrorMessage = "No Results"
}
End If
Else
'bsiStatus.Caption = "Error in FlowSearch - Check Your log"
Return New SearchResult With {
.OK = False,
.ErrorMessage = "Error in FlowSearch - Check Your log"
}
End If
End Function
Private Function GetResultWindowString(SearchContent As String) As String
If SearchContent <> String.Empty Then
If My.Application.User.Language = State.UserState.LANG_DE_DE Then
Return $"Suche Nach '{SearchContent}'"
Else
Return $"Search For '{SearchContent}'"
End If
Else
If My.Application.User.Language = State.UserState.LANG_DE_DE Then
Return $"Suche Datumsbegrenzt"
Else
Return $"Search via date"
End If
End If
End Function
Public Sub SetDateConstraint()
_ActiveDateConstraint = String.Empty
End Sub
Public Sub SetDateConstraint(pConstraintName As String)
_ActiveDateConstraint = pConstraintName
End Sub
Public Sub SetDateConstraint(pConstraint As DateConstraint)
Select Case pConstraint
Case DateConstraint.Today
_ActiveDateConstraint = CREATED_TODAY
Case DateConstraint.Yesterday
_ActiveDateConstraint = CREATED_YESTERDAY
Case DateConstraint.Tomorrow
_ActiveDateConstraint = CREATED_TOMORROW
Case DateConstraint.Last7Days
_ActiveDateConstraint = CREATED_LAST_7_DAYS
Case DateConstraint.CurrentMonth
_ActiveDateConstraint = CREATED_MONTH_CURR
Case DateConstraint.LastMonth
_ActiveDateConstraint = CREATED_MONTH_LAST
Case DateConstraint.CurrentYear
_ActiveDateConstraint = CREATED_YEAR_CURRENT
Case DateConstraint.LastYear
_ActiveDateConstraint = CREATED_YEAR_LAST
Case Else
_ActiveDateAttribute = String.Empty
End Select
End Sub
Public Sub SetDateAttribute(pAttributeName As String)
_ActiveDateAttribute = pAttributeName
End Sub
Public Sub SetDateAttribute()
_ActiveDateAttribute = SEARCH_FACT_DATE_DEFAULT
End Sub
Public Class SearchResult
Public OK As Boolean
Public ErrorMessage As String
End Class
End Class