Monorepo/GUIs.ZooFlow/Search/frmFlowSearch1.vb

344 lines
15 KiB
VB.net

Imports DevExpress.XtraEditors
Imports DigitalData.GUIs.Common
Imports DigitalData.GUIs.ZooFlow.ClassConstants
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.ZooFlow
Public Class frmFlowSearch1
Private _Params As ClipboardWatcherParams
Private _Environment As Environment
Private Logger As Logger
Private TOGGLE_Change As Boolean = False
Private LIMITATION_DATE As Boolean = False
Private SEARCH_FACT_DATE_ATTRIBUTE = "ADDED_WHEN"
Private SEARCH_FACT_DATE As String = "MONTH(OBJ.ADDED_WHEN) <> 13"
Private CONST_CR_TODAY As String = "CREATED_TODAY"
Private CONST_CR_YDAY As String = "CREATED_YESTERDAY"
Private CONST_CR_L7DAYS As String = "CREATED_LAST7DAYS"
Private CONST_CR_Y_CURR As String = "CREATED_YEAR_CURRENT"
Private CONST_CR_Y_LAST As String = "CREATED_YEAR_LAST"
Private CONST_CR_M_CURR As String = "CREATED_MONTH_CURRENT"
Private CONST_CR_M_LAST As String = "CREATED_MONTH_LAST"
Private CONST_DATE_TOMORROW As String = "TOMORROW"
Private SEARCH_PARAM3
Private ExplizitDate As Boolean = False
Dim oBASESEARCH As String
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())", CONST_DATE_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())", CONST_CR_Y_CURR)
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())", CONST_CR_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())", CONST_CR_M_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)", CONST_CR_M_LAST)
Else
oWHENDATE = GET_DATE_LIMITATION("MONTH(@ATTRIBUTE) = (MONTH(GETDATE()) -1)", CONST_CR_M_LAST)
End If
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())", CONST_CR_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)", CONST_CR_YDAY)
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)", CONST_CR_L7DAYS)
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
SEARCH_PARAM3 = ""
End If
End If
End Sub
Private Function GET_DATE_LIMITATION(pInput As String, pVariant As String) As String
Try
If SEARCH_FACT_DATE_ATTRIBUTE = "ADDED_WHEN" Then
SEARCH_PARAM3 = "ECM_" & 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
SEARCH_FACT_DATE_ATTRIBUTE = "ADDED_WHEN"
Else
SEARCH_FACT_DATE_ATTRIBUTE = 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
oBASESEARCH = oRow.Item("SQL_COMMAND")
oBASESEARCH = oBASESEARCH.Replace("@USER_ID", My.Application.User.UserId)
oBASESEARCH = oBASESEARCH.Replace("@LANG_CODE", My.Application.User.Language)
End If
Next
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
Logger.Error(ex)
End Try
End Sub
Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem1.ItemClick
Search_GO()
End Sub
Private Sub Search_GO()
Dim owTITLE
Dim oSearchTerm = txtSearchInput.Text
If My.Application.User.Language = "de-DE" Then
owTITLE = $"Suche nach ""{oSearchTerm}"""
End If
_Params = New ClipboardWatcherParams()
_Params.ClipboardContents = oSearchTerm
Dim oParams = New DocumentResultList.Params() With {
.WindowGuid = "FlowSearch",
.WindowTitle = GetResultWindowString(oSearchTerm),
.OperationModeOverride = Modules.ZooFlow.Constants.OperationMode.ZooFlow,
.ProfileGuid = 354522
}
Dim oP3 = $"{SEARCH_FACT_DATE_ATTRIBUTE}~{SEARCH_PARAM3}"
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 My.DatabaseIDB.ExecuteNonQuery(oProc) = True Then
oP3 = $"{SEARCH_FACT_DATE_ATTRIBUTE}~DATEPART"
End If
End If
Dim oSQL = $"EXEC PRIDB_SEARCH_TEXT_GET_RESULTS {My.Application.User.UserId},'{oSearchTerm}','{oP3}'"
If My.DatabaseIDB.ExecuteNonQuery(oSQL) = True Then
Dim oDTDocResult = My.DatabaseIDB.GetDatatable(oBASESEARCH)
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.FormClosed, AddressOf ProfileResultForm_Closed
'AddHandler oForm.NeedsRefresh, AddressOf ProfileResultForm_NeedsRefresh
'OpenForms.Add(oForm)
oForm.Show()
Else
bsiStatus.Caption = "No Results"
End If
Else
bsiStatus.Caption = "Error oin FlowSearch - Check Your log"
End If
'
End Sub
Private Sub txtSearchInput_KeyUp(sender As Object, e As KeyEventArgs) Handles txtSearchInput.KeyUp
If e.KeyCode = Keys.Return Then
If txtSearchInput.Text = String.Empty Then
Exit Sub
End If
Search_GO()
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 Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick
Me.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_DateTimeChanged(sender As Object, e As EventArgs) Handles DateEditFrom.DateTimeChanged
Dim oobj = DateEditFrom.EditValue
If Not IsNothing(oobj) Then
ResetTogglesDate()
End If
End Sub
Private Sub DateEdit1_EditValueChanged(sender As Object, e As EventArgs) Handles DateEditFrom.EditValueChanged
Dim oobj = DateEditFrom.EditValue
If Not IsNothing(oobj) Then
ExplizitDate = True
End If
End Sub
End Class