Zooflow: Improve Search Form code

This commit is contained in:
Jonathan Jenne 2022-04-11 15:25:32 +02:00
parent f0594c928c
commit 7b9f679664
5 changed files with 584 additions and 324 deletions

View File

@ -146,7 +146,7 @@ Public Class ClassInit
My.Database = New DatabaseWithFallback(LogConfig, My.Application.Service.Client, My.DatabaseECM, My.DatabaseIDB)
Catch ex As Exception
Logger.Error(ex)
Throw New InitException("Error InitializeDatabaseWithFallback!", ex)
Throw New InitException("Error in InitializeDatabaseWithFallback!", ex)
End Try
End Sub
Private Sub InitializeUser(MyApplication As My.MyApplication)

View File

@ -0,0 +1,190 @@
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 = CREATED_TODAY
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"
}
}
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

View File

@ -25,8 +25,8 @@ Partial Class frmFlowSearch1
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmFlowSearch1))
Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl()
Me.BarButtonItem1 = New DevExpress.XtraBars.BarButtonItem()
Me.BarButtonItem2 = New DevExpress.XtraBars.BarButtonItem()
Me.BarButtonStartSearch = New DevExpress.XtraBars.BarButtonItem()
Me.BarButtonReset = New DevExpress.XtraBars.BarButtonItem()
Me.bsiStatus = New DevExpress.XtraBars.BarStaticItem()
Me.BarSubItem1 = New DevExpress.XtraBars.BarSubItem()
Me.BarListItem1 = New DevExpress.XtraBars.BarListItem()
@ -87,7 +87,7 @@ Partial Class frmFlowSearch1
'RibbonControl1
'
Me.RibbonControl1.ExpandCollapseItem.Id = 0
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.BarButtonItem1, Me.BarButtonItem2, Me.bsiStatus, Me.BarSubItem1, Me.BarListItem1, Me.BarToggleSwitchItemTerm, Me.BarToggleSwitchItemFulltext})
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.BarButtonStartSearch, Me.BarButtonReset, Me.bsiStatus, Me.BarSubItem1, Me.BarListItem1, Me.BarToggleSwitchItemTerm, Me.BarToggleSwitchItemFulltext})
Me.RibbonControl1.Location = New System.Drawing.Point(0, 0)
Me.RibbonControl1.MaxItemId = 8
Me.RibbonControl1.Name = "RibbonControl1"
@ -96,19 +96,19 @@ Partial Class frmFlowSearch1
Me.RibbonControl1.Size = New System.Drawing.Size(936, 158)
Me.RibbonControl1.StatusBar = Me.RibbonStatusBar1
'
'BarButtonItem1
'BarButtonStartSearch
'
Me.BarButtonItem1.Caption = "Suche starten"
Me.BarButtonItem1.Id = 1
Me.BarButtonItem1.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem1.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.BarButtonItem1.Name = "BarButtonItem1"
Me.BarButtonStartSearch.Caption = "Suche starten"
Me.BarButtonStartSearch.Id = 1
Me.BarButtonStartSearch.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem1.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.BarButtonStartSearch.Name = "BarButtonStartSearch"
'
'BarButtonItem2
'BarButtonReset
'
Me.BarButtonItem2.Caption = "Suche zurücksetzen"
Me.BarButtonItem2.Id = 2
Me.BarButtonItem2.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem2.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.BarButtonItem2.Name = "BarButtonItem2"
Me.BarButtonReset.Caption = "Suche zurücksetzen"
Me.BarButtonReset.Id = 2
Me.BarButtonReset.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem2.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.BarButtonReset.Name = "BarButtonReset"
'
'bsiStatus
'
@ -152,8 +152,8 @@ Partial Class frmFlowSearch1
'
'RibbonPageGroup2
'
Me.RibbonPageGroup2.ItemLinks.Add(Me.BarButtonItem1)
Me.RibbonPageGroup2.ItemLinks.Add(Me.BarButtonItem2)
Me.RibbonPageGroup2.ItemLinks.Add(Me.BarButtonStartSearch)
Me.RibbonPageGroup2.ItemLinks.Add(Me.BarButtonReset)
Me.RibbonPageGroup2.Name = "RibbonPageGroup2"
Me.RibbonPageGroup2.Text = "Suchfunktionen"
'
@ -493,8 +493,8 @@ Partial Class frmFlowSearch1
Friend WithEvents ToggleSwitchTomorrow As DevExpress.XtraEditors.ToggleSwitch
Friend WithEvents ToggleSwitchMonth_Last As DevExpress.XtraEditors.ToggleSwitch
Friend WithEvents ToggleSwitchMonth As DevExpress.XtraEditors.ToggleSwitch
Friend WithEvents BarButtonItem1 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents BarButtonItem2 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents BarButtonStartSearch As DevExpress.XtraBars.BarButtonItem
Friend WithEvents BarButtonReset As DevExpress.XtraBars.BarButtonItem
Friend WithEvents LabelControl1 As DevExpress.XtraEditors.LabelControl
Friend WithEvents bsiStatus As DevExpress.XtraBars.BarStaticItem
Friend WithEvents ToggleSwitchYear As DevExpress.XtraEditors.ToggleSwitch

View File

@ -6,53 +6,55 @@ Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.ZooFlow
Public Class frmFlowSearch1
Private _Environment As Environment
Private Environment As Environment
Private Logger As Logger
Private SearchRunner As SearchRunner
Private TOGGLE_Change As Boolean = False
Private AttributeSearch As String = "ADDED_WHEN"
Private DateConstraint As String = ""
Private BaseSearchSQL As String
'Private Property AttributeSearch As String = "ADDED_WHEN"
'Private Property DateConstraint As String = ""
'Private LIMITATION_DATE As Boolean = False
'Private SEARCH_FACT_DATE As String = "MONTH(OBJ.ADDED_WHEN) <> 13"
'Private Const SEARCH_FACT_DATE_DEFAULT As String = "ADDED_WHEN"
'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"
'Private Property ExplizitDate As Boolean = False
Private Const SEARCH_FACT_DATE_DEFAULT As String = "ADDED_WHEN"
Private Property BaseSearchSQL As String
Private Property TogglesDate As List(Of ToggleSwitch)
Private Property TogglesDateChanging As Boolean = False
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"
Private Sub ResetTogglesDate()
ResetTogglesDate(Nothing)
End Sub
Private Sub ResetTogglesDate(pExcludeToggle As ToggleSwitch)
TogglesDateChanging = True
Private ExplizitDate As Boolean = False
For Each oToggle As ToggleSwitch In TogglesDate
If pExcludeToggle IsNot Nothing Then
If oToggle.Name = pExcludeToggle.Name Then
Continue For
End If
End If
oToggle.IsOn = False
Next
'Private Enum DateConstraintEnum
' Today
' Yesterday
' Last7Days
' CurrentYear
' LastYear
' CurrentMonth
' LastMonth
'End Enum
Sub ResetTogglesDate()
TOGGLE_Change = True
ToggleSwitchToday.IsOn = False
ToggleSwitchYesterday.IsOn = False
ToggleSwitchTomorrow.IsOn = False
ToggleSwitchLastWeek.IsOn = False
ToggleSwitchYear_Last.IsOn = False
ToggleSwitchYear.IsOn = False
ToggleSwitchMonth.IsOn = False
ToggleSwitchMonth_Last.IsOn = False
TOGGLE_Change = False
'ToggleSwitchToday.IsOn = False
'ToggleSwitchYesterday.IsOn = False
'ToggleSwitchTomorrow.IsOn = False
'ToggleSwitchLastWeek.IsOn = False
'ToggleSwitchYear_Last.IsOn = False
'ToggleSwitchYear.IsOn = False
'ToggleSwitchMonth.IsOn = False
'ToggleSwitchMonth_Last.IsOn = False
TogglesDateChanging = False
End Sub
Private Sub ToggleSwitchToday_Toggled(sender As Object, e As EventArgs) Handles _
@ -65,124 +67,382 @@ Public Class frmFlowSearch1
ToggleSwitchLastWeek.Toggled,
ToggleSwitchTomorrow.Toggled
If TOGGLE_Change = True Then
If TogglesDateChanging = True Then
Exit Sub
End If
Dim oToggle As ToggleSwitch = TryCast(sender, ToggleSwitch)
If oToggle.IsOn Then
TOGGLE_Change = True
TogglesDateChanging = True
'Dim oWHENDATE As String
Select Case oToggle.Name
Case "ToggleSwitchTomorrow"
ToggleSwitchToday.IsOn = False
ToggleSwitchYesterday.IsOn = False
ToggleSwitchTomorrow.IsOn = False
ToggleSwitchLastWeek.IsOn = False
ToggleSwitchYear_Last.IsOn = False
ToggleSwitchYear.IsOn = False
ToggleSwitchMonth.IsOn = False
ToggleSwitchMonth_Last.IsOn = False
'ToggleSwitchToday.IsOn = False
'ToggleSwitchYesterday.IsOn = False
'ToggleSwitchTomorrow.IsOn = False
'ToggleSwitchLastWeek.IsOn = False
'ToggleSwitchYear_Last.IsOn = False
'ToggleSwitchYear.IsOn = False
'ToggleSwitchMonth.IsOn = False
'ToggleSwitchMonth_Last.IsOn = False
'oWHENDATE = GET_DATE_LIMITATION("YEAR(@ATTRIBUTE) = YEAR(GETDATE())", CREATED_TOMORROW)
DateConstraint = CREATED_TOMORROW
'DateConstraint = CREATED_TOMORROW
ResetTogglesDate(ToggleSwitchTomorrow)
SearchRunner.SetDateConstraint(SearchRunner.DateConstraint.Tomorrow)
Case "ToggleSwitchYear"
ToggleSwitchToday.IsOn = False
ToggleSwitchYesterday.IsOn = False
ToggleSwitchTomorrow.IsOn = False
ToggleSwitchLastWeek.IsOn = False
ToggleSwitchYear_Last.IsOn = False
ToggleSwitchMonth.IsOn = False
ToggleSwitchMonth_Last.IsOn = False
'ToggleSwitchToday.IsOn = False
'ToggleSwitchYesterday.IsOn = False
'ToggleSwitchTomorrow.IsOn = False
'ToggleSwitchLastWeek.IsOn = False
'ToggleSwitchYear_Last.IsOn = False
'ToggleSwitchMonth.IsOn = False
'ToggleSwitchMonth_Last.IsOn = False
'oWHENDATE = GET_DATE_LIMITATION("YEAR(@ATTRIBUTE) = YEAR(GETDATE())", CREATED_YEAR_CURRENT)
'DateConstraint = CREATED_YEAR_CURRENT
ResetTogglesDate(ToggleSwitchYear)
SearchRunner.SetDateConstraint(SearchRunner.DateConstraint.CurrentYear)
DateConstraint = CREATED_YEAR_CURRENT
Case "ToggleSwitchYear_Last"
ToggleSwitchToday.IsOn = False
ToggleSwitchYesterday.IsOn = False
ToggleSwitchTomorrow.IsOn = False
ToggleSwitchLastWeek.IsOn = False
ToggleSwitchYear.IsOn = False
ToggleSwitchMonth.IsOn = False
ToggleSwitchMonth_Last.IsOn = False
'ToggleSwitchToday.IsOn = False
'ToggleSwitchYesterday.IsOn = False
'ToggleSwitchTomorrow.IsOn = False
'ToggleSwitchLastWeek.IsOn = False
'ToggleSwitchYear.IsOn = False
'ToggleSwitchMonth.IsOn = False
'ToggleSwitchMonth_Last.IsOn = False
'oWHENDATE = GET_DATE_LIMITATION("YEAR(@ATTRIBUTE) = YEAR(GETDATE())", CREATED_YEAR_LAST)
DateConstraint = CREATED_TODAY
'DateConstraint = CREATED_TODAY
ResetTogglesDate(ToggleSwitchYear_Last)
SearchRunner.SetDateConstraint(SearchRunner.DateConstraint.Today)
Case "ToggleSwitchMonth"
ToggleSwitchToday.IsOn = False
ToggleSwitchYesterday.IsOn = False
ToggleSwitchTomorrow.IsOn = False
ToggleSwitchLastWeek.IsOn = False
ToggleSwitchYear.IsOn = False
ToggleSwitchYear_Last.IsOn = False
ToggleSwitchMonth_Last.IsOn = False
'ToggleSwitchToday.IsOn = False
'ToggleSwitchYesterday.IsOn = False
'ToggleSwitchTomorrow.IsOn = False
'ToggleSwitchLastWeek.IsOn = False
'ToggleSwitchYear.IsOn = False
'ToggleSwitchYear_Last.IsOn = False
'ToggleSwitchMonth_Last.IsOn = False
'oWHENDATE = GET_DATE_LIMITATION("MONTH(@ATTRIBUTE) = MONTH(GETDATE())", CREATED_MONTH_CURR)
DateConstraint = CREATED_MONTH_CURR
'DateConstraint = CREATED_MONTH_CURR
ResetTogglesDate(ToggleSwitchMonth)
SearchRunner.SetDateConstraint(SearchRunner.DateConstraint.CurrentMonth)
Case "ToggleSwitchMonth_Last"
ToggleSwitchToday.IsOn = False
ToggleSwitchYesterday.IsOn = False
ToggleSwitchTomorrow.IsOn = False
ToggleSwitchLastWeek.IsOn = False
ToggleSwitchYear.IsOn = False
ToggleSwitchYear_Last.IsOn = False
ToggleSwitchMonth.IsOn = False
'ToggleSwitchToday.IsOn = False
'ToggleSwitchYesterday.IsOn = False
'ToggleSwitchTomorrow.IsOn = False
'ToggleSwitchLastWeek.IsOn = False
'ToggleSwitchYear.IsOn = False
'ToggleSwitchYear_Last.IsOn = False
'ToggleSwitchMonth.IsOn = False
'Dim currentDate As DateTime = DateTime.Now
'If currentDate.Month = 1 Then
' oWHENDATE = GET_DATE_LIMITATION($"MONTH(@ATTRIBUTE) = 12 {vbNewLine}AND YEAR(@ATTRIBUTE) = (YEAR(GETDATE()) -1)", CREATED_MONTH_LAST)
'Else
' oWHENDATE = GET_DATE_LIMITATION("MONTH(@ATTRIBUTE) = (MONTH(GETDATE()) -1)", CREATED_MONTH_LAST)
'End If
DateConstraint = CREATED_MONTH_LAST
'DateConstraint = CREATED_MONTH_LAST
ResetTogglesDate(ToggleSwitchMonth_Last)
SearchRunner.SetDateConstraint(SearchRunner.DateConstraint.LastMonth)
Case "ToggleSwitchToday"
ToggleSwitchYesterday.IsOn = False
ToggleSwitchTomorrow.IsOn = False
ToggleSwitchLastWeek.IsOn = False
ToggleSwitchYear.IsOn = False
ToggleSwitchYear_Last.IsOn = False
ToggleSwitchMonth.IsOn = False
ToggleSwitchMonth_Last.IsOn = False
'ToggleSwitchYesterday.IsOn = False
'ToggleSwitchTomorrow.IsOn = False
'ToggleSwitchLastWeek.IsOn = False
'ToggleSwitchYear.IsOn = False
'ToggleSwitchYear_Last.IsOn = False
'ToggleSwitchMonth.IsOn = False
'ToggleSwitchMonth_Last.IsOn = False
'oWHENDATE = GET_DATE_LIMITATION("convert(DATE,@ATTRIBUTE) = convert(DATE,GETDATE())", CREATED_TODAY)
DateConstraint = CREATED_TODAY
'DateConstraint = CREATED_TODAY
ResetTogglesDate(ToggleSwitchToday)
SearchRunner.SetDateConstraint(SearchRunner.DateConstraint.Today)
Case "ToggleSwitchYesterday"
ToggleSwitchToday.IsOn = False
ToggleSwitchTomorrow.IsOn = False
ToggleSwitchLastWeek.IsOn = False
ToggleSwitchYear.IsOn = False
ToggleSwitchYear_Last.IsOn = False
ToggleSwitchMonth.IsOn = False
ToggleSwitchMonth_Last.IsOn = False
'ToggleSwitchToday.IsOn = False
'ToggleSwitchTomorrow.IsOn = False
'ToggleSwitchLastWeek.IsOn = False
'ToggleSwitchYear.IsOn = False
'ToggleSwitchYear_Last.IsOn = False
'ToggleSwitchMonth.IsOn = False
'ToggleSwitchMonth_Last.IsOn = False
'oWHENDATE = GET_DATE_LIMITATION("convert(DATE,@ATTRIBUTE) = convert(DATE,GETDATE()-1)", CREATED_YESTERDAY)
DateConstraint = CREATED_YESTERDAY
'DateConstraint = CREATED_YESTERDAY
ResetTogglesDate(ToggleSwitchYesterday)
SearchRunner.SetDateConstraint(SearchRunner.DateConstraint.Yesterday)
Case "ToggleSwitchLastWeek"
ToggleSwitchToday.IsOn = False
ToggleSwitchTomorrow.IsOn = False
ToggleSwitchYesterday.IsOn = False
ToggleSwitchYear.IsOn = False
ToggleSwitchYear_Last.IsOn = False
ToggleSwitchMonth.IsOn = False
ToggleSwitchMonth_Last.IsOn = False
'ToggleSwitchToday.IsOn = False
'ToggleSwitchTomorrow.IsOn = False
'ToggleSwitchYesterday.IsOn = False
'ToggleSwitchYear.IsOn = False
'ToggleSwitchYear_Last.IsOn = False
'ToggleSwitchMonth.IsOn = False
'ToggleSwitchMonth_Last.IsOn = False
'oWHENDATE = GET_DATE_LIMITATION("convert(DATE,@ATTRIBUTE) = convert(DATE,GETDATE()-1)", CREATED_LAST_7_DAYS)
DateConstraint = CREATED_LAST_7_DAYS
'DateConstraint = CREATED_LAST_7_DAYS
ResetTogglesDate(ToggleSwitchLastWeek)
SearchRunner.SetDateConstraint(SearchRunner.DateConstraint.Last7Days)
End Select
'SEARCH_FACT_DATE = oWHENDATE
TOGGLE_Change = False
TogglesDateChanging = False
'LIMITATION_DATE = True
Else
If ToggleSwitchToday.IsOn = False And ToggleSwitchYesterday.IsOn = False And ToggleSwitchYear.IsOn = False And ToggleSwitchYear_Last.IsOn = False And
ToggleSwitchMonth_Last.IsOn = False And ToggleSwitchMonth.IsOn = False And ToggleSwitchLastWeek.IsOn = False And ToggleSwitchTomorrow.IsOn = False Then
'LIMITATION_DATE = False
DateConstraint = ""
'DateConstraint = ""
SearchRunner.SetDateConstraint()
End If
End If
End Sub
Private Sub cmbLimitationDateAttr_SelectedValueChanged(sender As Object, e As EventArgs) Handles cmbLimitationDateAttr.SelectedValueChanged
If cmbLimitationDateAttr.SelectedIndex <> -1 Then
Try
Dim oEditValue As String = cmbLimitationDateAttr.SelectedItem.ToString
If oEditValue = IDB_ADDED_WHEN_String_German Or oEditValue = IDB_ADDED_WHEN_String_Englisch Then
'AttributeSearch = SEARCH_FACT_DATE_DEFAULT
SearchRunner.SetDateAttribute()
Else
'AttributeSearch = oEditValue
SearchRunner.SetDateAttribute(oEditValue)
'SEARCH_FACT_DATE = $"MONTH(GRPDATE.[{SEARCH_FACT_DATE_ATTRIBUTE}]) <> 13"
End If
'SearchContent()
Catch ex As Exception
Logger.Error(ex)
End Try
End If
End Sub
Private Sub frmFlowSearch1_Load(sender As Object, e As EventArgs) Handles Me.Load
Logger = My.LogConfig.GetLogger()
SearchRunner = New SearchRunner(My.LogConfig, My.Application.GetEnvironment)
Try
If My.Application.User.Language = "de-DE" Then
cmbLimitationDateAttr.Items.Add(IDB_ADDED_WHEN_String_German)
Else
cmbLimitationDateAttr.Items.Add(IDB_ADDED_WHEN_String_Englisch)
End If
'Dim oDT As DataTable = My.DatabaseIDB.GetDatatable($"SELECT * FROM VWIDB_BE_ATTRIBUTE WHERE TYPE_ID IN (5,6) AND LANG_ID = {My.Application.User.LanguageId}")
For Each oRow As DataRow In My.Tables.DTIDB_ATTRIBUTE.Rows
If CBool(oRow.Item("SYS_ATTRIBUTE")) = False And (oRow.Item("TYP_ID") = 5 Or oRow.Item("TYP_ID") = 6) Then
cmbLimitationDateAttr.Items.Add(oRow.Item("ATTR_TITLE"))
End If
Next
Environment = My.Application.GetEnvironment
'Dim editor As BarEditItem = BarEditItemDate
' editor = TryCast(BarEditItemDate, ComboBoxEdit)
If My.Application.User.Language = "de-DE" Then
cmbLimitationDateAttr.SelectedIndex = 0
' BarEditItemDate.EditValue = "Erstellt Wann"
Else
cmbLimitationDateAttr.SelectedIndex = 1
' BarEditItemDate.EditValue = "Added When"
End If
For Each oRow As DataRow In My.Tables.DTIDB_COMMON_SQL.Rows
If oRow.Item("TITLE") = SQLCMD_FLOW_SEARCH_BASE Then
BaseSearchSQL = oRow.Item("SQL_COMMAND")
BaseSearchSQL = BaseSearchSQL.Replace("@USER_ID", My.Application.User.UserId)
BaseSearchSQL = BaseSearchSQL.Replace("@LANG_CODE", My.Application.User.Language)
End If
Next
SearchRunner.BaseSearchSQL = BaseSearchSQL
Dim osql = $"EXEC PRIDB_SEARCH_AUTOSUGGEST '{My.Application.User.Language}',{My.Application.User.UserId}"
Dim oDTSuggest As DataTable
oDTSuggest = My.Database.GetDatatableIDB(osql)
Dim collection As AutoCompleteStringCollection = New AutoCompleteStringCollection
For Each orow As DataRow In oDTSuggest.Rows
collection.Add(orow.Item("TERM"))
Next
txtSearchInput.MaskBox.AutoCompleteSource = AutoCompleteSource.CustomSource
txtSearchInput.MaskBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend
txtSearchInput.MaskBox.AutoCompleteCustomSource = collection
TogglesDate = New List(Of ToggleSwitch) From {
ToggleSwitchTomorrow,
ToggleSwitchToday,
ToggleSwitchYesterday,
ToggleSwitchYear,
ToggleSwitchYear_Last,
ToggleSwitchMonth,
ToggleSwitchMonth_Last,
ToggleSwitchLastWeek
}
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
Logger.Error(ex)
End Try
BringToFront()
End Sub
Private Async Function BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) As Threading.Tasks.Task Handles BarButtonStartSearch.ItemClick
Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
Try
'Await ExecuteSearch()
Dim oResult = Await SearchRunner.Run(txtSearchInput.Text, DateEditFrom.EditValue, DateEditTill.EditValue)
If oResult.OK = False Then
bsiStatus.Caption = oResult.ErrorMessage
End If
Catch ex As Exception
Logger.Error(ex)
Finally
SplashScreenManager.CloseOverlayForm(oHandle)
End Try
End Function
Private Sub Form_NeedsRefresh(sender As Object, e As Integer)
End Sub
Private Async Function txtSearchInput_KeyUp(sender As Object, e As KeyEventArgs) As Threading.Tasks.Task Handles txtSearchInput.KeyUp
If e.KeyCode = Keys.Return Then
If txtSearchInput.Text = String.Empty Then
Return
End If
Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
Try
'Await ExecuteSearch()
Dim oResult = Await SearchRunner.Run(txtSearchInput.Text, DateEditFrom.EditValue, DateEditTill.EditValue)
If oResult.OK = False Then
bsiStatus.Caption = oResult.ErrorMessage
End If
Catch ex As Exception
Logger.Error(ex)
Finally
SplashScreenManager.CloseOverlayForm(oHandle)
End Try
End If
End Function
Private Sub BarButtonReset_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonReset.ItemClick
txtSearchInput.Text = ""
ResetTogglesDate()
ToggleSwitchDateto.IsOn = False
'ExplizitDate = False
SearchRunner.ExplicitDate = False
End Sub
Private Sub ToggleSwitch1_Toggled(sender As Object, e As EventArgs) Handles ToggleSwitchDateto.Toggled
Dim oToggle As ToggleSwitch = TryCast(sender, ToggleSwitch)
If oToggle.IsOn Then
DateEditTill.Enabled = True
lblDatefrom.Text = "Datum von"
Else
DateEditTill.Enabled = False
lblDatefrom.Text = "Datum"
End If
End Sub
Private Sub DateEdit1_EditValueChanged(sender As Object, e As EventArgs) Handles DateEditFrom.EditValueChanged
Dim oDateFrom = DateEditFrom.EditValue
If Not IsNothing(oDateFrom) Then
ResetTogglesDate()
'ExplizitDate = True
SearchRunner.ExplicitDate = True
End If
End Sub
'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 '{txtSearchInput.Text}'"
' Else
' Return $"Search For '{txtSearchInput.Text}'"
' 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
'Private Async Function ExecuteSearch() As Threading.Tasks.Task
' Dim oSearchTerm = txtSearchInput.Text
' 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"
' }
' }
' Dim oP3 = $"{AttributeSearch}~{DateConstraint}"
' If ExplizitDate Then
' Dim oDate2 As Date
' If Not IsNothing(DateEditTill.EditValue) Then
' oDate2 = CDate(DateEditTill.EditValue)
' Else
' oDate2 = CDate(DateEditFrom.EditValue)
' End If
' Dim oProc = $"EXEC PRIDB_SEARCH_ADD_USR_DATE {My.Application.User.UserId},'{CDate(DateEditFrom.EditValue)}','{oDate2}'"
' If Await My.Database.ExecuteNonQueryIDBAsync(oProc) = True Then
' oP3 = $"{AttributeSearch}~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)
' AddHandler oForm.NeedsRefresh, AddressOf Form_NeedsRefresh
' oForm.Show()
' Else
' bsiStatus.Caption = "No Results"
' End If
' Else
' bsiStatus.Caption = "Error in FlowSearch - Check Your log"
' End If
'End Function
'Private Function GetDateConstraint(pDateConstraint As DateConstraint) As String
' Select Case pDateConstraint
' Case DateConstraint.Today
@ -231,204 +491,13 @@ Public Class frmFlowSearch1
' End Try
'End Function
Private Sub cmbLimitationDateAttr_SelectedValueChanged(sender As Object, e As EventArgs) Handles cmbLimitationDateAttr.SelectedValueChanged
If cmbLimitationDateAttr.SelectedIndex <> -1 Then
Try
Dim oEditValue As String = cmbLimitationDateAttr.SelectedItem.ToString
If oEditValue = IDB_ADDED_WHEN_String_German Or oEditValue = IDB_ADDED_WHEN_String_Englisch Then
AttributeSearch = SEARCH_FACT_DATE_DEFAULT
Else
AttributeSearch = oEditValue
'SEARCH_FACT_DATE = $"MONTH(GRPDATE.[{SEARCH_FACT_DATE_ATTRIBUTE}]) <> 13"
End If
'SearchContent()
Catch ex As Exception
Logger.Error(ex)
End Try
End If
End Sub
Private Sub frmFlowSearch1_Load(sender As Object, e As EventArgs) Handles Me.Load
Logger = My.LogConfig.GetLogger()
Try
If My.Application.User.Language = "de-DE" Then
cmbLimitationDateAttr.Items.Add(IDB_ADDED_WHEN_String_German)
Else
cmbLimitationDateAttr.Items.Add(IDB_ADDED_WHEN_String_Englisch)
End If
'Dim oDT As DataTable = My.DatabaseIDB.GetDatatable($"SELECT * FROM VWIDB_BE_ATTRIBUTE WHERE TYPE_ID IN (5,6) AND LANG_ID = {My.Application.User.LanguageId}")
For Each oRow As DataRow In My.Tables.DTIDB_ATTRIBUTE.Rows
If CBool(oRow.Item("SYS_ATTRIBUTE")) = False And (oRow.Item("TYP_ID") = 5 Or oRow.Item("TYP_ID") = 6) Then
cmbLimitationDateAttr.Items.Add(oRow.Item("ATTR_TITLE"))
End If
Next
_Environment = My.Application.GetEnvironment
'Dim editor As BarEditItem = BarEditItemDate
' editor = TryCast(BarEditItemDate, ComboBoxEdit)
If My.Application.User.Language = "de-DE" Then
cmbLimitationDateAttr.SelectedIndex = 0
' BarEditItemDate.EditValue = "Erstellt Wann"
Else
cmbLimitationDateAttr.SelectedIndex = 1
' BarEditItemDate.EditValue = "Added When"
End If
For Each oRow As DataRow In My.Tables.DTIDB_COMMON_SQL.Rows
If oRow.Item("TITLE") = SQLCMD_FLOW_SEARCH_BASE Then
BaseSearchSQL = oRow.Item("SQL_COMMAND")
BaseSearchSQL = BaseSearchSQL.Replace("@USER_ID", My.Application.User.UserId)
BaseSearchSQL = BaseSearchSQL.Replace("@LANG_CODE", My.Application.User.Language)
End If
Next
Dim osql = $"EXEC PRIDB_SEARCH_AUTOSUGGEST '{My.Application.User.Language}',{My.Application.User.UserId}"
Dim oDTSuggest As DataTable
oDTSuggest = My.Database.GetDatatableIDB(osql)
Dim collection As AutoCompleteStringCollection = New AutoCompleteStringCollection
For Each orow As DataRow In oDTSuggest.Rows
collection.Add(orow.Item("TERM"))
Next
txtSearchInput.MaskBox.AutoCompleteSource = AutoCompleteSource.CustomSource
txtSearchInput.MaskBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend
txtSearchInput.MaskBox.AutoCompleteCustomSource = collection
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
Logger.Error(ex)
End Try
Me.BringToFront()
End Sub
Private Async Function BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) As Threading.Tasks.Task Handles BarButtonItem1.ItemClick
Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
Try
Await ExecuteSearch()
Catch ex As Exception
Logger.Error(ex)
Finally
SplashScreenManager.CloseOverlayForm(oHandle)
End Try
End Function
Private Async Function ExecuteSearch() As Threading.Tasks.Task
Dim oSearchTerm = txtSearchInput.Text
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"
}
}
Dim oP3 = $"{AttributeSearch}~{DateConstraint}"
If ExplizitDate Then
Dim oDate2 As Date
If Not IsNothing(DateEditTill.EditValue) Then
oDate2 = CDate(DateEditTill.EditValue)
Else
oDate2 = CDate(DateEditFrom.EditValue)
End If
Dim oProc = $"EXEC PRIDB_SEARCH_ADD_USR_DATE {My.Application.User.UserId},'{CDate(DateEditFrom.EditValue)}','{oDate2}'"
If Await My.Database.ExecuteNonQueryIDBAsync(oProc) = True Then
oP3 = $"{AttributeSearch}~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)
AddHandler oForm.NeedsRefresh, AddressOf Form_NeedsRefresh
oForm.Show()
Else
bsiStatus.Caption = "No Results"
End If
Else
bsiStatus.Caption = "Error in FlowSearch - Check Your log"
End If
End Function
Private Sub Form_NeedsRefresh(sender As Object, e As Integer)
End Sub
Private Async Function txtSearchInput_KeyUp(sender As Object, e As KeyEventArgs) As Threading.Tasks.Task Handles txtSearchInput.KeyUp
If e.KeyCode = Keys.Return Then
If txtSearchInput.Text = String.Empty Then
Return
End If
Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
Try
Await ExecuteSearch()
Catch ex As Exception
Logger.Error(ex)
Finally
SplashScreenManager.CloseOverlayForm(oHandle)
End Try
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 '{txtSearchInput.Text}'"
Else
Return $"Search For '{txtSearchInput.Text}'"
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
Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick
txtSearchInput.Text = ""
ResetTogglesDate()
ToggleSwitchDateto.IsOn = False
ExplizitDate = False
End Sub
Private Sub ToggleSwitch1_Toggled(sender As Object, e As EventArgs) Handles ToggleSwitchDateto.Toggled
Dim oToggle As ToggleSwitch = TryCast(sender, ToggleSwitch)
If oToggle.IsOn Then
DateEditTill.Enabled = True
lblDatefrom.Text = "Datum von"
Else
DateEditTill.Enabled = False
lblDatefrom.Text = "Datum"
End If
End Sub
Private Sub DateEdit1_EditValueChanged(sender As Object, e As EventArgs) Handles DateEditFrom.EditValueChanged
Dim oDateFrom = DateEditFrom.EditValue
If Not IsNothing(oDateFrom) Then
ResetTogglesDate()
ExplizitDate = True
End If
End Sub
'Private Enum DateConstraintEnum
' Today
' Yesterday
' Last7Days
' CurrentYear
' LastYear
' CurrentMonth
' LastMonth
'End Enum
End Class

View File

@ -441,6 +441,7 @@
<Compile Include="Search\Search.vb" />
<Compile Include="Search\SearchCriteria.vb" />
<Compile Include="Search\SearchFilter.vb" />
<Compile Include="Search\SearchRunner.vb" />
<Compile Include="Search\SearchToken.vb" />
<Compile Include="Search\State.vb" />
<EmbeddedResource Include="Administration\frmAdmin_ClipboardWatcher.resx">