Imports DevExpress.XtraEditors Imports DevExpress.XtraSplashScreen Imports DigitalData.GUIs.Common Imports DigitalData.GUIs.ZooFlow.ClassConstants Imports DigitalData.Modules.Logging Imports DigitalData.Modules.ZooFlow Public Class frmFlowSearch1 Private _Environment As Environment Private Logger As Logger Private TOGGLE_Change As Boolean = False Private AttributeSearch As String = "ADDED_WHEN" Private DateConstraint As String = "" Private BaseSearchSQL 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 ExplizitDate As Boolean = False '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 End Sub Private Sub ToggleSwitchToday_Toggled(sender As Object, e As EventArgs) Handles _ ToggleSwitchToday.Toggled, ToggleSwitchYesterday.Toggled, ToggleSwitchYear.Toggled, ToggleSwitchYear_Last.Toggled, ToggleSwitchMonth_Last.Toggled, ToggleSwitchMonth.Toggled, ToggleSwitchLastWeek.Toggled, ToggleSwitchTomorrow.Toggled If TOGGLE_Change = True Then Exit Sub End If Dim oToggle As ToggleSwitch = TryCast(sender, ToggleSwitch) If oToggle.IsOn Then TOGGLE_Change = 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 'oWHENDATE = GET_DATE_LIMITATION("YEAR(@ATTRIBUTE) = YEAR(GETDATE())", CREATED_TOMORROW) DateConstraint = CREATED_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 'oWHENDATE = GET_DATE_LIMITATION("YEAR(@ATTRIBUTE) = YEAR(GETDATE())", CREATED_YEAR_CURRENT) 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 'oWHENDATE = GET_DATE_LIMITATION("YEAR(@ATTRIBUTE) = YEAR(GETDATE())", CREATED_YEAR_LAST) DateConstraint = CREATED_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 'oWHENDATE = GET_DATE_LIMITATION("MONTH(@ATTRIBUTE) = MONTH(GETDATE())", CREATED_MONTH_CURR) DateConstraint = CREATED_MONTH_CURR 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 '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 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 'oWHENDATE = GET_DATE_LIMITATION("convert(DATE,@ATTRIBUTE) = convert(DATE,GETDATE())", CREATED_TODAY) DateConstraint = CREATED_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 'oWHENDATE = GET_DATE_LIMITATION("convert(DATE,@ATTRIBUTE) = convert(DATE,GETDATE()-1)", CREATED_YESTERDAY) DateConstraint = CREATED_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 'oWHENDATE = GET_DATE_LIMITATION("convert(DATE,@ATTRIBUTE) = convert(DATE,GETDATE()-1)", CREATED_LAST_7_DAYS) DateConstraint = CREATED_LAST_7_DAYS End Select 'SEARCH_FACT_DATE = oWHENDATE TOGGLE_Change = 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 = "" 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 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 End Class