192 lines
6.4 KiB
VB.net
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
|