From 7b9f6796642e24d461c43b0ca87323c80fe60266 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Mon, 11 Apr 2022 15:25:32 +0200 Subject: [PATCH] Zooflow: Improve Search Form code --- GUIs.ZooFlow/ClassInit.vb | 2 +- GUIs.ZooFlow/Search/SearchRunner.vb | 190 +++++++ .../Search/frmFlowSearch1.Designer.vb | 34 +- GUIs.ZooFlow/Search/frmFlowSearch1.vb | 527 ++++++++++-------- GUIs.ZooFlow/ZooFlow.vbproj | 1 + 5 files changed, 507 insertions(+), 247 deletions(-) create mode 100644 GUIs.ZooFlow/Search/SearchRunner.vb diff --git a/GUIs.ZooFlow/ClassInit.vb b/GUIs.ZooFlow/ClassInit.vb index 44b32bf6..b458d04f 100644 --- a/GUIs.ZooFlow/ClassInit.vb +++ b/GUIs.ZooFlow/ClassInit.vb @@ -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) diff --git a/GUIs.ZooFlow/Search/SearchRunner.vb b/GUIs.ZooFlow/Search/SearchRunner.vb new file mode 100644 index 00000000..a7b353c6 --- /dev/null +++ b/GUIs.ZooFlow/Search/SearchRunner.vb @@ -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 diff --git a/GUIs.ZooFlow/Search/frmFlowSearch1.Designer.vb b/GUIs.ZooFlow/Search/frmFlowSearch1.Designer.vb index 94ffb1d9..4648961f 100644 --- a/GUIs.ZooFlow/Search/frmFlowSearch1.Designer.vb +++ b/GUIs.ZooFlow/Search/frmFlowSearch1.Designer.vb @@ -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 diff --git a/GUIs.ZooFlow/Search/frmFlowSearch1.vb b/GUIs.ZooFlow/Search/frmFlowSearch1.vb index fad96c09..338a7913 100644 --- a/GUIs.ZooFlow/Search/frmFlowSearch1.vb +++ b/GUIs.ZooFlow/Search/frmFlowSearch1.vb @@ -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 Property BaseSearchSQL As String + Private Property TogglesDate As List(Of ToggleSwitch) + Private Property TogglesDateChanging As Boolean = False + + Private Sub ResetTogglesDate() + ResetTogglesDate(Nothing) + End Sub - 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 ExplizitDate As Boolean = False - - 'Private Enum DateConstraintEnum - ' Today - ' Yesterday - ' Last7Days - ' CurrentYear - ' LastYear - ' CurrentMonth - ' LastMonth - 'End Enum - + Private Sub ResetTogglesDate(pExcludeToggle As ToggleSwitch) + TogglesDateChanging = True - 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 + 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 + + '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,171 +67,150 @@ 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 Function GetDateConstraint(pDateConstraint As DateConstraint) As String - ' Select Case pDateConstraint - ' Case DateConstraint.Today - ' Return GET_DATE_LIMITATION("convert(DATE,@ATTRIBUTE) = convert(DATE,GETDATE())", CREATED_TODAY) - - ' Case DateConstraint.Yesterday - ' Return GET_DATE_LIMITATION("convert(DATE,@ATTRIBUTE) = convert(DATE,GETDATE()-1)", CREATED_YESTERDAY) - - ' Case DateConstraint.Last7Days - ' Return GET_DATE_LIMITATION("convert(DATE,@ATTRIBUTE) = convert(DATE,GETDATE()-1)", CREATED_LAST_7_DAYS) - - ' Case DateConstraint.CurrentMonth - ' Return GET_DATE_LIMITATION("MONTH(@ATTRIBUTE) = MONTH(GETDATE())", CREATED_MONTH_CURR) - - ' Case DateConstraint.LastMonth - ' If Now.Month = 1 Then - ' Return GET_DATE_LIMITATION($"MONTH(@ATTRIBUTE) = 12 {vbNewLine}AND YEAR(@ATTRIBUTE) = (YEAR(GETDATE()) -1)", CREATED_MONTH_LAST) - ' Else - ' Return GET_DATE_LIMITATION("MONTH(@ATTRIBUTE) = (MONTH(GETDATE()) -1)", CREATED_MONTH_LAST) - ' End If - - ' Case DateConstraint.CurrentYear - ' Return GET_DATE_LIMITATION("YEAR(@ATTRIBUTE) = YEAR(GETDATE())", CREATED_YEAR_CURRENT) - - ' Case DateConstraint.LastYear - ' Return GET_DATE_LIMITATION("YEAR(@ATTRIBUTE) = YEAR(GETDATE())", CREATED_YEAR_LAST) - ' Case Else - ' Return "" - ' End Select - 'End Function - - 'Private Function GET_DATE_LIMITATION(pInput As String, pVariant As String) As String - ' Try - ' If SEARCH_FACT_DATE_ATTRIBUTE = SEARCH_FACT_DATE_DEFAULT Then - ' SEARCH_PARAM3 = pVariant - ' Return pInput.Replace("@ATTRIBUTE", "OBJ.ADDED_WHEN") - - ' Else - ' Dim oSTR = $"GRPDATE.[{SEARCH_FACT_DATE_ATTRIBUTE}]" - ' Return pInput.Replace("@ATTRIBUTE", oSTR) - ' End If - ' Catch ex As Exception - ' Return pInput - ' Logger.Error(ex) - ' End Try - 'End Function Private Sub cmbLimitationDateAttr_SelectedValueChanged(sender As Object, e As EventArgs) Handles cmbLimitationDateAttr.SelectedValueChanged If cmbLimitationDateAttr.SelectedIndex <> -1 Then @@ -238,9 +219,11 @@ Public Class frmFlowSearch1 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 + 'AttributeSearch = SEARCH_FACT_DATE_DEFAULT + SearchRunner.SetDateAttribute() Else - AttributeSearch = oEditValue + 'AttributeSearch = oEditValue + SearchRunner.SetDateAttribute(oEditValue) 'SEARCH_FACT_DATE = $"MONTH(GRPDATE.[{SEARCH_FACT_DATE_ATTRIBUTE}]) <> 13" End If 'SearchContent() @@ -252,6 +235,7 @@ Public Class frmFlowSearch1 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 @@ -267,7 +251,7 @@ Public Class frmFlowSearch1 End If Next - _Environment = My.Application.GetEnvironment + Environment = My.Application.GetEnvironment 'Dim editor As BarEditItem = BarEditItemDate ' editor = TryCast(BarEditItemDate, ComboBoxEdit) If My.Application.User.Language = "de-DE" Then @@ -285,6 +269,10 @@ Public Class frmFlowSearch1 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) @@ -298,74 +286,42 @@ Public Class frmFlowSearch1 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 - Me.BringToFront() - - + BringToFront() End Sub - Private Async Function BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) As Threading.Tasks.Task Handles BarButtonItem1.ItemClick + 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() + '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 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) @@ -380,7 +336,11 @@ Public Class frmFlowSearch1 Dim oHandle = SplashScreenManager.ShowOverlayForm(Me) Try - Await ExecuteSearch() + '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 @@ -388,28 +348,13 @@ Public Class frmFlowSearch1 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 + Private Sub BarButtonReset_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonReset.ItemClick txtSearchInput.Text = "" ResetTogglesDate() ToggleSwitchDateto.IsOn = False - ExplizitDate = False + 'ExplizitDate = False + SearchRunner.ExplicitDate = False End Sub Private Sub ToggleSwitch1_Toggled(sender As Object, e As EventArgs) Handles ToggleSwitchDateto.Toggled @@ -428,7 +373,131 @@ Public Class frmFlowSearch1 Dim oDateFrom = DateEditFrom.EditValue If Not IsNothing(oDateFrom) Then ResetTogglesDate() - ExplizitDate = True + '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 + ' Return GET_DATE_LIMITATION("convert(DATE,@ATTRIBUTE) = convert(DATE,GETDATE())", CREATED_TODAY) + + ' Case DateConstraint.Yesterday + ' Return GET_DATE_LIMITATION("convert(DATE,@ATTRIBUTE) = convert(DATE,GETDATE()-1)", CREATED_YESTERDAY) + + ' Case DateConstraint.Last7Days + ' Return GET_DATE_LIMITATION("convert(DATE,@ATTRIBUTE) = convert(DATE,GETDATE()-1)", CREATED_LAST_7_DAYS) + + ' Case DateConstraint.CurrentMonth + ' Return GET_DATE_LIMITATION("MONTH(@ATTRIBUTE) = MONTH(GETDATE())", CREATED_MONTH_CURR) + + ' Case DateConstraint.LastMonth + ' If Now.Month = 1 Then + ' Return GET_DATE_LIMITATION($"MONTH(@ATTRIBUTE) = 12 {vbNewLine}AND YEAR(@ATTRIBUTE) = (YEAR(GETDATE()) -1)", CREATED_MONTH_LAST) + ' Else + ' Return GET_DATE_LIMITATION("MONTH(@ATTRIBUTE) = (MONTH(GETDATE()) -1)", CREATED_MONTH_LAST) + ' End If + + ' Case DateConstraint.CurrentYear + ' Return GET_DATE_LIMITATION("YEAR(@ATTRIBUTE) = YEAR(GETDATE())", CREATED_YEAR_CURRENT) + + ' Case DateConstraint.LastYear + ' Return GET_DATE_LIMITATION("YEAR(@ATTRIBUTE) = YEAR(GETDATE())", CREATED_YEAR_LAST) + + ' Case Else + ' Return "" + ' End Select + 'End Function + + 'Private Function GET_DATE_LIMITATION(pInput As String, pVariant As String) As String + ' Try + ' If SEARCH_FACT_DATE_ATTRIBUTE = SEARCH_FACT_DATE_DEFAULT Then + ' SEARCH_PARAM3 = pVariant + ' Return pInput.Replace("@ATTRIBUTE", "OBJ.ADDED_WHEN") + + ' Else + ' Dim oSTR = $"GRPDATE.[{SEARCH_FACT_DATE_ATTRIBUTE}]" + ' Return pInput.Replace("@ATTRIBUTE", oSTR) + ' End If + ' Catch ex As Exception + ' Return pInput + ' Logger.Error(ex) + ' End Try + 'End Function + + 'Private Enum DateConstraintEnum + ' Today + ' Yesterday + ' Last7Days + ' CurrentYear + ' LastYear + ' CurrentMonth + ' LastMonth + 'End Enum End Class \ No newline at end of file diff --git a/GUIs.ZooFlow/ZooFlow.vbproj b/GUIs.ZooFlow/ZooFlow.vbproj index bdf0d917..3a221e09 100644 --- a/GUIs.ZooFlow/ZooFlow.vbproj +++ b/GUIs.ZooFlow/ZooFlow.vbproj @@ -441,6 +441,7 @@ +