615 lines
36 KiB
VB.net
615 lines
36 KiB
VB.net
Imports System.IO
|
|
'Imports DD_LIB_Standards
|
|
Public Class ClassDOC_SEARCH
|
|
Private Shared DT_RESULTLIST_OPTIONS As DataTable
|
|
Private Shared DT_RESULTLIST_SEL_VALUES As DataTable
|
|
Private Shared ENTITY_ID As Integer
|
|
Private Shared RECORD_ID As Integer
|
|
Private Shared AsyncRunning As Boolean = False
|
|
Private Shared Function GET_DOCSEARCH_DATATABLE(Optional BG As Boolean = False)
|
|
Try
|
|
Dim OPTION1
|
|
Dim OPTION2
|
|
Dim OPTION3
|
|
Dim OPTION4
|
|
Dim OPTION5
|
|
Dim VALUE_CONF1 = 0
|
|
Dim VALUE_CONF2 = 0
|
|
Dim VALUE_CONF3 = 0
|
|
Dim VALUE_CONF4 = 0
|
|
Dim VALUE_CONF5 = 0
|
|
Dim VALUE_CONF6 = 0
|
|
If DT_RESULTLIST_OPTIONS.Rows.Count = 0 Then
|
|
OPTION1 = 0
|
|
OPTION2 = 0
|
|
OPTION3 = 0
|
|
OPTION4 = 0
|
|
OPTION5 = 0
|
|
Else
|
|
OPTION1 = DT_RESULTLIST_OPTIONS.Rows(0).Item("OPTION1_CTRL")
|
|
OPTION2 = DT_RESULTLIST_OPTIONS.Rows(0).Item("OPTION2_CTRL")
|
|
OPTION3 = DT_RESULTLIST_OPTIONS.Rows(0).Item("OPTION3_CTRL")
|
|
OPTION4 = DT_RESULTLIST_OPTIONS.Rows(0).Item("OPTION4_CTRL")
|
|
OPTION5 = DT_RESULTLIST_OPTIONS.Rows(0).Item("OPTION5_CTRL")
|
|
End If
|
|
|
|
|
|
For Each oRow As DataRow In DT_RESULTLIST_SEL_VALUES.Rows
|
|
If oRow.Item("COLUMN_VIEW").ToString = "VALUE1" Then
|
|
VALUE_CONF1 = oRow.Item("GUID")
|
|
ElseIf oRow.Item("COLUMN_VIEW").ToString = "VALUE2" Then
|
|
VALUE_CONF2 = oRow.Item("GUID")
|
|
ElseIf oRow.Item("COLUMN_VIEW").ToString = "VALUE3" Then
|
|
VALUE_CONF3 = oRow.Item("GUID")
|
|
ElseIf oRow.Item("COLUMN_VIEW").ToString = "VALUE4" Then
|
|
VALUE_CONF4 = oRow.Item("GUID")
|
|
ElseIf oRow.Item("COLUMN_VIEW").ToString = "VALUE5" Then
|
|
VALUE_CONF5 = oRow.Item("GUID")
|
|
ElseIf oRow.Item("COLUMN_VIEW").ToString = "VALUE6" Then
|
|
VALUE_CONF6 = oRow.Item("GUID")
|
|
End If
|
|
Next
|
|
|
|
Dim SQL_DOC_SEARCH
|
|
If CURRENT_SEARCH_TYPE = "ENTITY" Then
|
|
SQL_DOC_SEARCH = String.Format("SELECT DISTINCT T.*," & vbNewLine &
|
|
"'NO OPTION IN ENTITY-SEARCH' AS OPTION1," & vbNewLine &
|
|
"'NO OPTION IN ENTITY-SEARCH' AS OPTION2," & vbNewLine &
|
|
"'NO INDEX IN ENTITY-SEARCH' AS DOCIDX1," & vbNewLine &
|
|
"'NO INDEX IN ENTITY-SEARCH' AS DOCIDX2," & vbNewLine &
|
|
"'NO INDEX IN ENTITY-SEARCH' AS DOCIDX3," & vbNewLine &
|
|
"'NO INDEX IN ENTITY-SEARCH' AS DOCIDX4," & vbNewLine &
|
|
"'NO DROPDOWN IN ENTITY-SEARCH' AS DROPDOWN1," & vbNewLine &
|
|
"'NO DROPDOWN IN ENTITY-SEARCH' AS DROPDOWN2," & vbNewLine &
|
|
"'NO DROPDOWN IN ENTITY-SEARCH' AS DROPDOWN3," & vbNewLine &
|
|
"'NO DROPDOWN IN ENTITY-SEARCH' AS DROPDOWN4" & vbNewLine &
|
|
"FROM " & vbNewLine &
|
|
"VWPMO_DOC_SEARCH T" & vbNewLine &
|
|
"WHERE T.DocID IN (select DISTINCT T.DOC_ID from TBPMO_DOC_RECORD_LINK T, TBPMO_RECORD T1 WHERE T.RECORD_ID = T1.GUID AND T1.FORM_ID = {0}) " & vbNewLine &
|
|
"AND T.DocID IN (SELECT dwObjectID FROM VWPMO_WD_OBJECT_RIGHTS WHERE dwUserOrGroupID = {2} AND dwObjectID = T.DocID)", ENTITY_ID, USER_LANGUAGE, USERID_FK_INT_ECM, OPTION1, OPTION2)
|
|
If CURRENT_ENTITYSQL_WHERE <> "" Then
|
|
Dim where = CURRENT_ENTITYSQL_WHERE.Replace("WHERE [RECORD-ID] IN ", "")
|
|
SQL_DOC_SEARCH = SQL_DOC_SEARCH & " " & vbNewLine & String.Format("AND T.DocID IN (SELECT DISTINCT DOC_ID from TBPMO_DOC_RECORD_LINK WHERE RECORD_ID IN ({0}))", where)
|
|
End If
|
|
If BG = True Then
|
|
If IsNothing(CURRENT_DT_DOC_ENTITY_SEARCH) Then
|
|
If AsyncRunning = True Then
|
|
MsgBox("Entity-Search already running in background! Please wait a while!", MsgBoxStyle.Information)
|
|
Return Nothing
|
|
End If
|
|
Dim async As New ClassAsyncReturnDT(SQL_DOC_SEARCH, "LOAD_ENTITY_SEARCH_AT STARTUP")
|
|
async.bw.RunWorkerAsync()
|
|
While async.bw.IsBusy
|
|
Application.DoEvents()
|
|
End While
|
|
CURRENT_DT_DOC_ENTITY_SEARCH = async.dt
|
|
AsyncRunning = False
|
|
End If
|
|
|
|
End If
|
|
|
|
ElseIf CURRENT_SEARCH_TYPE = "RECORD" Then
|
|
SQL_DOC_SEARCH = SQL_DOC_RESULT_RECORD
|
|
SQL_DOC_SEARCH = SQL_DOC_SEARCH.ToString
|
|
SQL_DOC_SEARCH = SQL_DOC_SEARCH.ToString.Replace("@ENTITY_ID", ENTITY_ID)
|
|
SQL_DOC_SEARCH = SQL_DOC_SEARCH.ToString.Replace("@USER_LANGUAGE", USER_LANGUAGE)
|
|
SQL_DOC_SEARCH = SQL_DOC_SEARCH.ToString.Replace("@VALUE_CONF1", VALUE_CONF1)
|
|
SQL_DOC_SEARCH = SQL_DOC_SEARCH.ToString.Replace("@VALUE_CONF2", VALUE_CONF2)
|
|
SQL_DOC_SEARCH = SQL_DOC_SEARCH.ToString.Replace("@VALUE_CONF3", VALUE_CONF3)
|
|
SQL_DOC_SEARCH = SQL_DOC_SEARCH.ToString.Replace("@VALUE_CONF4", VALUE_CONF4)
|
|
SQL_DOC_SEARCH = SQL_DOC_SEARCH.ToString.Replace("@VALUE_CONF5", VALUE_CONF5)
|
|
SQL_DOC_SEARCH = SQL_DOC_SEARCH.ToString.Replace("@VALUE_CONF6", VALUE_CONF6)
|
|
SQL_DOC_SEARCH = SQL_DOC_SEARCH.ToString.Replace("@OPTION1", OPTION1)
|
|
SQL_DOC_SEARCH = SQL_DOC_SEARCH.ToString.Replace("@OPTION2", OPTION2)
|
|
SQL_DOC_SEARCH = SQL_DOC_SEARCH.ToString.Replace("@OPTION3", OPTION3)
|
|
SQL_DOC_SEARCH = SQL_DOC_SEARCH.ToString.Replace("@OPTION4", OPTION4)
|
|
SQL_DOC_SEARCH = SQL_DOC_SEARCH.ToString.Replace("@RECORD_ID", RECORD_ID)
|
|
SQL_DOC_SEARCH = SQL_DOC_SEARCH.ToString.Replace("@USERID_FK_INT_ECM", USERID_FK_INT_ECM)
|
|
|
|
' SQL_DOC_SEARCH = $"SELECT T.* ," & vbNewLine &
|
|
' $"ISNULL(T1.VALUE,'') AS OPTION1," & vbNewLine &
|
|
' $"ISNULL(T2.VALUE,'') AS OPTION2," & vbNewLine &
|
|
' $"ISNULL(T3.VALUE,'') AS OPTION3," & vbNewLine &
|
|
' $"ISNULL(T4.VALUE,'') AS OPTION4," & vbNewLine &
|
|
' $"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX1') AS DOCIDX1," & vbNewLine &
|
|
' $"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX2') AS DOCIDX2," & vbNewLine &
|
|
' $"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX3') AS DOCIDX3," & vbNewLine &
|
|
' $"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX4') AS DOCIDX4," & vbNewLine &
|
|
' $"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN1','{7}',TRL.RECORD_ID) AS DROPDOWN1," & vbNewLine &
|
|
' $"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN2','{7}',TRL.RECORD_ID) AS DROPDOWN2," & vbNewLine &
|
|
' $"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN3','{7}',TRL.RECORD_ID) AS DROPDOWN3," & vbNewLine &
|
|
' $"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN4','{7}',TRL.RECORD_ID) AS DROPDOWN4," & vbNewLine &
|
|
' $"COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC.GUID),'') AS VALUE1," & vbNewLine &
|
|
' $"COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC1.GUID),'') AS VALUE2," & vbNewLine &
|
|
' $"COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC2.GUID),'') AS VALUE3," & vbNewLine &
|
|
' $"COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC3.GUID),'') AS VALUE4," & vbNewLine &
|
|
'$"COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC4.GUID),'') AS VALUE5," & vbNewLine &
|
|
'$"COALESCE([dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC5.GUID),'') AS VALUE6," & vbNewLine &
|
|
'$"dwAccessRight AS ACCESS_RIGHT" & vbNewLine &
|
|
'$"FROM " & vbNewLine &
|
|
'$"VWPMO_DOC_SEARCH T " & vbNewLine &
|
|
'$"INNER JOIN TBPMO_DOC_RECORD_LINK TRL ON T.DocID = TRL.DOC_ID" & vbNewLine &
|
|
'$"INNER JOIN TBPMO_RECORD TR ON TRL.RECORD_ID = TR.GUID" & vbNewLine &
|
|
' $"INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS ON T.DocID = TRIGHTS.dwObjectID" & vbNewLine &
|
|
' $"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC ON TR.FORM_ID = TRC.ENTITY_ID AND TRC.LANGUAGE = '{USER_LANGUAGE}' AND TRC.GUID = {VALUE_CONF1}" & vbNewLine &
|
|
' $"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC1 ON TR.FORM_ID = TRC1.ENTITY_ID AND TRC1.LANGUAGE = '{USER_LANGUAGE}' AND TRC1.GUID = {VALUE_CONF2}" & vbNewLine &
|
|
' $"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC2 ON TR.FORM_ID = TRC2.ENTITY_ID AND TRC2.LANGUAGE = '{USER_LANGUAGE}' AND TRC2.GUID = {VALUE_CONF3}" & vbNewLine &
|
|
' $"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC3 ON TR.FORM_ID = TRC3.ENTITY_ID AND TRC3.LANGUAGE = '{USER_LANGUAGE}' AND TRC3.GUID = {VALUE_CONF4}" & vbNewLine &
|
|
' $"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC4 ON TR.FORM_ID = TRC4.ENTITY_ID AND TRC4.LANGUAGE = '{USER_LANGUAGE}' AND TRC4.GUID = {VALUE_CONF5}" & vbNewLine &
|
|
' $"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC5 ON TR.FORM_ID = TRC5.ENTITY_ID AND TRC5.LANGUAGE = '{USER_LANGUAGE}' AND TRC5.GUID = {VALUE_CONF6}" & vbNewLine &
|
|
' $"LEFT JOIN TBPMO_CONTROL_VALUE T1 ON TRL.RECORD_ID = T1.RECORD_ID AND T1.CONTROL_ID = {OPTION1} " & vbNewLine &
|
|
' $"LEFT JOIN TBPMO_CONTROL_VALUE T2 ON TRL.RECORD_ID = T2.RECORD_ID AND T2.CONTROL_ID = {OPTION2} " & vbNewLine &
|
|
' $"LEFT JOIN TBPMO_CONTROL_VALUE T3 ON TRL.RECORD_ID = T3.RECORD_ID AND T3.CONTROL_ID = {OPTION3} " & vbNewLine &
|
|
' $"LEFT JOIN TBPMO_CONTROL_VALUE T4 ON TRL.RECORD_ID = T4.RECORD_ID AND T4.CONTROL_ID = {OPTION4} " & vbNewLine &
|
|
' $"WHERE TRL.RECORD_ID = {RECORD_ID} AND TR.FORM_ID = {ENTITY_ID} AND TRIGHTS.dwUserOrGroupID = {USERID_FK_INT_ECM}"
|
|
ElseIf CURRENT_SEARCH_TYPE = "FULLTEXT" Then
|
|
Dim sqlft = SQL_FULLTEXT
|
|
sqlft = sqlft.Replace("@FULLTEXT", CURRENT_FULLTEXT_PATTERN)
|
|
SQL_DOC_SEARCH = String.Format("SELECT DISTINCT T.*," & vbNewLine &
|
|
"[dbo].[FNPMO_GET_CONTROL_VALUES_DOC_ENTITY] ({3},T.DocID,{0}) AS OPTION1," & vbNewLine &
|
|
"[dbo].[FNPMO_GET_CONTROL_VALUES_DOC_ENTITY] ({4},T.DocID,{0}) AS OPTION2," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{0},'DOCIDX1') AS DOCIDX1," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{0},'DOCIDX2') AS DOCIDX2," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{0},'DOCIDX3') AS DOCIDX3," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{0},'DOCIDX4') AS DOCIDX4," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{0},'DROPDOWN1','{1}',TRL.RECORD_ID) AS DROPDOWN1," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{0},'DROPDOWN2','{1}',TRL.RECORD_ID) AS DROPDOWN2," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{0},'DROPDOWN3','{1}',TRL.RECORD_ID) AS DROPDOWN3," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{0},'DROPDOWN4','{1}',TRL.RECORD_ID) AS DROPDOWN4" & vbNewLine &
|
|
"FROM " & vbNewLine &
|
|
"VWPMO_DOC_SEARCH T" & vbNewLine &
|
|
"INNER JOIN TBPMO_DOC_RECORD_LINK TRL ON T.DocID = TRL.DOC_ID" & vbNewLine &
|
|
"INNER JOIN TBPMO_RECORD TR ON TRL.RECORD_ID = TR.GUID" & vbNewLine &
|
|
"INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS ON T.DocID = TRIGHTS.dwObjectID" & vbNewLine &
|
|
"LEFT OUTER JOIN TBPMO_CONTROL_VALUE TCTRL ON TR.GUID = TCTRL.RECORD_ID" & vbNewLine &
|
|
"WHERE TR.FORM_ID = {0} AND TRIGHTS.dwUserOrGroupID = {2} AND (" & vbNewLine &
|
|
"TCTRL.VALUE LIKE '%{6}%' OR" & vbNewLine &
|
|
"T.DocID IN ({5}" & vbNewLine &
|
|
"))", ENTITY_ID, USER_LANGUAGE, USERID_FK_INT_ECM, OPTION1, OPTION2, sqlft, CURRENT_FULLTEXT_PATTERN)
|
|
ElseIf CURRENT_SEARCH_TYPE = "NODE_DOWN" Then
|
|
SQL_DOC_SEARCH = String.Format("SELECT DISTINCT T.* ," & vbNewLine &
|
|
"ISNULL(T1.VALUE,'') AS OPTION1," & vbNewLine &
|
|
"ISNULL(T2.VALUE,'') AS OPTION2," & vbNewLine &
|
|
"ISNULL(T3.VALUE,'') AS OPTION3," & vbNewLine &
|
|
"ISNULL(T4.VALUE,'') AS OPTION4," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX1') AS DOCIDX1," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX2') AS DOCIDX2," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX3') AS DOCIDX3," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX4') AS DOCIDX4," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN1','{7}',TRL.RECORD_ID) AS DROPDOWN1," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN2','{7}',TRL.RECORD_ID) AS DROPDOWN2," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN3','{7}',TRL.RECORD_ID) AS DROPDOWN3," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN4','{7}',TRL.RECORD_ID) AS DROPDOWN4," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC.GUID) AS VALUE1," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC1.GUID) AS VALUE2," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC2.GUID) AS VALUE3," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_DOC_VALUE] (T.DocID,TRL.RECORD_ID,TRC3.GUID) AS VALUE4" & vbNewLine &
|
|
"FROM " & vbNewLine &
|
|
"VWPMO_DOC_SEARCH T " & vbNewLine &
|
|
"INNER JOIN TBPMO_DOC_RECORD_LINK TRL ON T.DocID = TRL.DOC_ID" & vbNewLine &
|
|
"INNER JOIN TBPMO_RECORD TR ON TRL.RECORD_ID = TR.GUID" & vbNewLine &
|
|
"INNER JOIN TBPMO_STRUCTURE_NODES_USER_TEMP TTEMP ON TR.GUID = TTEMP.RECORD_ID" & vbNewLine &
|
|
"INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS ON T.DocID = TRIGHTS.dwObjectID" & vbNewLine &
|
|
"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC ON TR.FORM_ID = TRC.ENTITY_ID AND TRC.LANGUAGE = '{7}' AND TRC.GUID = {8}" & vbNewLine &
|
|
"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC1 ON TR.FORM_ID = TRC1.ENTITY_ID AND TRC1.LANGUAGE = '{7}' AND TRC1.GUID = {9}" & vbNewLine &
|
|
"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC2 ON TR.FORM_ID = TRC2.ENTITY_ID AND TRC2.LANGUAGE = '{7}' AND TRC2.GUID = {10}" & vbNewLine &
|
|
"LEFT JOIN TBPMO_DOCSEARCH_RESULTLIST_CONFIG TRC3 ON TR.FORM_ID = TRC3.ENTITY_ID AND TRC3.LANGUAGE = '{7}' AND TRC3.GUID = {11}" & vbNewLine &
|
|
"LEFT JOIN TBPMO_CONTROL_VALUE T1 ON TRL.RECORD_ID = T1.RECORD_ID AND T1.CONTROL_ID = {2} " & vbNewLine &
|
|
"LEFT JOIN TBPMO_CONTROL_VALUE T2 ON TRL.RECORD_ID = T2.RECORD_ID AND T2.CONTROL_ID = {3} " & vbNewLine &
|
|
"LEFT JOIN TBPMO_CONTROL_VALUE T3 ON TRL.RECORD_ID = T3.RECORD_ID AND T3.CONTROL_ID = {4} " & vbNewLine &
|
|
"LEFT JOIN TBPMO_CONTROL_VALUE T4 ON TRL.RECORD_ID = T4.RECORD_ID AND T4.CONTROL_ID = {5} " & vbNewLine &
|
|
"WHERE TR.FORM_ID = {1} AND TTEMP.USER_ID = {0} AND TRIGHTS.dwUserOrGroupID = {6}", USER_GUID, ENTITY_ID, OPTION1, OPTION2, OPTION3, OPTION4, USERID_FK_INT_ECM, USER_LANGUAGE, VALUE_CONF1, VALUE_CONF2, VALUE_CONF3, VALUE_CONF4)
|
|
ElseIf CURRENT_SEARCH_TYPE = "FULLTEXT_SUBNODES" Then
|
|
Dim sqlft = SQL_FULLTEXT
|
|
sqlft = sqlft.Replace("@FULLTEXT", CURRENT_FULLTEXT_PATTERN)
|
|
SQL_DOC_SEARCH = String.Format("SELECT DISTINCT T.*," & vbNewLine &
|
|
"[dbo].[FNPMO_GET_CONTROL_VALUES_DOC_ENTITY] ({4},T.DocID,{1}) AS OPTION1," & vbNewLine &
|
|
"[dbo].[FNPMO_GET_CONTROL_VALUES_DOC_ENTITY] ({5},T.DocID,{1}) AS OPTION2," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX1') AS DOCIDX1," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX2') AS DOCIDX2," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX3') AS DOCIDX3," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_IDX] (T.DocID,{1},'DOCIDX4') AS DOCIDX4," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN1','{0}',TRL.RECORD_ID) AS DROPDOWN1," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN2','{0}',TRL.RECORD_ID) AS DROPDOWN2," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN3','{0}',TRL.RECORD_ID) AS DROPDOWN3," & vbNewLine &
|
|
"[dbo].[FNPMO_DOC_GET_DROPDOWN_VALUE] (T.DocID,{1},'DROPDOWN4','{0}',TRL.RECORD_ID) AS DROPDOWN4" & vbNewLine &
|
|
"FROM " & vbNewLine &
|
|
"VWPMO_DOC_SEARCH T" & vbNewLine &
|
|
"INNER JOIN TBPMO_DOC_RECORD_LINK TRL ON T.DocID = TRL.DOC_ID" & vbNewLine &
|
|
"INNER JOIN TBPMO_RECORD TR ON TRL.RECORD_ID = TR.GUID" & vbNewLine &
|
|
"INNER JOIN TBPMO_STRUCTURE_NODES_USER_TEMP TTEMP ON TR.GUID = TTEMP.RECORD_ID" & vbNewLine &
|
|
"INNER JOIN VWPMO_WD_OBJECT_RIGHTS TRIGHTS ON T.DocID = TRIGHTS.dwObjectID" & vbNewLine &
|
|
"WHERE TR.FORM_ID = {1} AND TTEMP.USER_ID = {2} AND TRIGHTS.dwUserOrGroupID = {3}" & vbNewLine &
|
|
"AND T.DocID IN ({6})", USER_LANGUAGE, ENTITY_ID, USER_GUID, USERID_FK_INT_ECM, OPTION1, OPTION2, sqlft)
|
|
End If
|
|
LOGGER.Debug("SQL_DOC_SEARCH: " & SQL_DOC_SEARCH)
|
|
If BG = True And CURRENT_SEARCH_TYPE = "ENTITY" Then
|
|
If Not IsNothing(CURRENT_DT_DOC_ENTITY_SEARCH) Then
|
|
Return CURRENT_DT_DOC_ENTITY_SEARCH
|
|
End If
|
|
|
|
End If
|
|
Dim DTFILE_RESULT_ASYNC As DataTable
|
|
Try
|
|
Dim async As New ClassAsyncSQL(SQL_DOC_SEARCH)
|
|
async.bw.RunWorkerAsync()
|
|
While async.bw.IsBusy
|
|
Application.DoEvents()
|
|
End While
|
|
DTFILE_RESULT_ASYNC = async.dt
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error Async DTFILE_RESULT_ASYNC", ex.Message, ex.StackTrace)
|
|
End Try
|
|
|
|
Return DTFILE_RESULT_ASYNC
|
|
Catch ex As Exception
|
|
LOGGER.Error("Unexpected Error in GET_DOCSEARCH_DATATABLE: " & ex.Message)
|
|
Return Nothing
|
|
End Try
|
|
End Function
|
|
'Public Shared Function Get_DOCRESULTS(vDT_RESULTLIST_OPTIONS As DataTable, vDT_RESULTLIST_SELVALUES As DataTable, DT_WINDREAM_RESULTLIST As DataTable, ENT_ID As Integer, vType As String, Optional ftString As String = "", Optional BG As Boolean = False)
|
|
' ENTITY_ID = ENT_ID
|
|
' DT_RESULTLIST_OPTIONS = vDT_RESULTLIST_OPTIONS
|
|
' DT_RESULTLIST_SEL_VALUES = vDT_RESULTLIST_SELVALUES
|
|
' Return GET_DOCSEARCH_DATATABLE(BG)
|
|
'End Function
|
|
Public Shared Function Get_DOC_RESULTTABLE(vDT_RESULTLIST_OPTIONS As DataTable, vDT_RESULTLIST_SELVALUES As DataTable, DT_TBPMO_DOCSEARCH_RESULTLIST_CONFIG As DataTable, ENT_ID As Integer, REC_ID As Integer, Optional BG As Boolean = False, Optional Preload As Boolean = False)
|
|
Dim _step As String
|
|
Dim COL_ARRAY_RESULTLIST As List(Of String)
|
|
ENTITY_ID = ENT_ID
|
|
DT_RESULTLIST_OPTIONS = vDT_RESULTLIST_OPTIONS
|
|
DT_RESULTLIST_SEL_VALUES = vDT_RESULTLIST_SELVALUES
|
|
RECORD_ID = REC_ID
|
|
Try
|
|
Dim sw As New SW("Get_DOC_RESULTTABLE")
|
|
|
|
Dim DT_FILE_RESULT As DataTable = GET_DOCSEARCH_DATATABLE(BG)
|
|
CURRENT_DOC_RESULTS = DT_FILE_RESULT
|
|
If IsNothing(DT_FILE_RESULT) Then
|
|
' MsgBox("ATTENTION: GET_DOCSEARCH_DATATABLE IS NOTHING" & vbNewLine & "Please inform Your Sysadmin", MsgBoxStyle.Exclamation, "Attention")
|
|
LOGGER.Warn("ATTENTION: GET_DOCSEARCH_DATATABLE IS NOTHING!!")
|
|
Return Nothing
|
|
End If
|
|
sw.Done()
|
|
_step = "1"
|
|
If Preload = True Then
|
|
Return Nothing
|
|
End If
|
|
sw = New SW("Get_DOC_RESULTTABLE DTGrid-Definition")
|
|
Dim oDTGrid As New DataTable
|
|
Dim ColArrayDEFINITION As New List(Of String)
|
|
Dim oListBoolean As New List(Of String)
|
|
For Each row As DataRow In DT_TBPMO_DOCSEARCH_RESULTLIST_CONFIG.Rows
|
|
Dim oType = row.Item("TYPE_ID")
|
|
Dim COLNAME = row.Item("HEADER_CAPTION")
|
|
If oType = 2 Then
|
|
oListBoolean.Add(COLNAME)
|
|
End If
|
|
Next
|
|
_step = "2"
|
|
For Each col1 As String In oListBoolean
|
|
Dim collist As DataColumn = DT_FILE_RESULT.Columns(col1)
|
|
If Not IsNothing(collist) Then
|
|
collist.DataType = GetType(Boolean)
|
|
End If
|
|
Next
|
|
_step = "3"
|
|
Try
|
|
'Die Icon Colum erstellen und konfigurieren
|
|
Dim colIcon As New System.Data.DataColumn()
|
|
colIcon.DataType = GetType(Image)
|
|
colIcon.ColumnName = "ICON"
|
|
colIcon.Caption = ""
|
|
oDTGrid.Columns.Add(colIcon)
|
|
_step = "4"
|
|
Dim colPath As New System.Data.DataColumn()
|
|
colPath.DataType = GetType(String)
|
|
colPath.ColumnName = "FULLPATH"
|
|
colPath.Caption = "Fullpath"
|
|
oDTGrid.Columns.Add(colPath)
|
|
_step = "5"
|
|
Dim colOtype As New System.Data.DataColumn()
|
|
colOtype.DataType = GetType(String)
|
|
colOtype.ColumnName = "OBJECTTYPE"
|
|
colOtype.Caption = "Objecttype"
|
|
oDTGrid.Columns.Add(colOtype)
|
|
_step = "6"
|
|
Dim colDocID As New System.Data.DataColumn()
|
|
colDocID.DataType = GetType(Int32)
|
|
colDocID.ColumnName = "DocID"
|
|
colDocID.Caption = "DocID"
|
|
oDTGrid.Columns.Add(colDocID)
|
|
_step = "7"
|
|
|
|
If Not DT_TBPMO_DOCSEARCH_RESULTLIST_CONFIG Is Nothing And DT_TBPMO_DOCSEARCH_RESULTLIST_CONFIG.Rows.Count >= 1 Then
|
|
Dim ColCount As Integer = 1
|
|
For Each rw As DataRow In DT_TBPMO_DOCSEARCH_RESULTLIST_CONFIG.Rows
|
|
Dim ColumnName = rw.Item("HEADER_CAPTION")
|
|
Dim Width = rw.Item("WIDTH")
|
|
Dim oColumnType = rw.Item("TYPE_ID")
|
|
If IsNothing(Width) Or IsDBNull(Width) Then
|
|
Width = 200
|
|
End If
|
|
'Jetzt das Array zusammenbauen um die Spaltenwerte zu erhalten
|
|
Dim colname = rw.Item("COLUMN_VIEW")
|
|
ColArrayDEFINITION.Add(rw.Item("COLUMN_VIEW"))
|
|
_step = "7.2"
|
|
'Die Spalte definieren
|
|
Try
|
|
Dim oColumn As New DataColumn() With {
|
|
.ColumnName = ColumnName
|
|
}
|
|
|
|
If oColumnType = 3 Then
|
|
oColumn.DataType = GetType(DateTime)
|
|
ElseIf oColumnType = 2 Then
|
|
oColumn.DataType = GetType(Boolean)
|
|
ElseIf oColumnType = 4 Then
|
|
oColumn.DataType = GetType(Int32)
|
|
End If
|
|
''1 String
|
|
''2 Integer
|
|
''3 DateTime
|
|
''4 Integer
|
|
'Dim oColumn As New DataColumn() With {
|
|
' .ColumnName = ColumnName
|
|
'}
|
|
'If oColumnType = 2 Then
|
|
' oColumn.DataType = GetType(Int16)
|
|
'ElseIf oColumnType = 3 Then
|
|
' oColumn.DataType = GetType(DateTime)
|
|
'ElseIf oColumnType = 4 Then
|
|
' oColumn.DataType = GetType(Boolean)
|
|
'End If
|
|
oDTGrid.Columns.Add(oColumn)
|
|
ColCount += 1
|
|
Catch ex As Exception
|
|
LOGGER.Warn(String.Format("Unexpected Error in DTGrid.Columns.Add({0}) - CONSTR_DET_ID: {1} ", ColumnName, CURRENT_CONSTRUCTOR_DETAIL_ID) & ex.Message)
|
|
End Try
|
|
Next
|
|
_step = "7.1"
|
|
End If
|
|
Catch ex As Exception
|
|
LOGGER.Warn("Unexpected Error in Construct Datatable: " & ex.Message)
|
|
MsgBox("Unexpected Error in Construct Datatable for GridResult: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
sw.Done()
|
|
|
|
sw = New SW("Run Get_DOC_RESULTTABLE")
|
|
COL_ARRAY_RESULTLIST = ColArrayDEFINITION
|
|
_step = "8"
|
|
For Each col1 As String In oListBoolean
|
|
Dim collist As DataColumn = oDTGrid.Columns(col1)
|
|
If Not IsNothing(collist) Then
|
|
collist.DataType = GetType(Boolean)
|
|
End If
|
|
Next
|
|
_step = "9"
|
|
Dim _i As Integer
|
|
For Each FILE_ROW As DataRow In DT_FILE_RESULT.Rows
|
|
_i += 1
|
|
_step = "9 FileCount(" & _i.ToString
|
|
Dim fullpath = FILE_ROW.Item("FULL_FILENAME")
|
|
Dim objecttype = FILE_ROW.Item("OBJECTTYPE")
|
|
Dim DocID = FILE_ROW.Item("DocID")
|
|
LOGGER.Debug($"Creating Row for DocID [{DocID}]")
|
|
'Dim Folderpath = Path.GetDirectoryName(fullpath)
|
|
Dim filename = Path.GetFileName(fullpath)
|
|
Dim extension = Path.GetExtension(fullpath)
|
|
' Try
|
|
Dim oNewRow As DataRow
|
|
oNewRow = oDTGrid.NewRow()
|
|
|
|
'Icon zuweisen
|
|
Select Case extension.ToUpper
|
|
Case ".csv".ToUpper
|
|
oNewRow.Item(0) = My.Resources.doc_excel_csv
|
|
Case ".txt".ToUpper
|
|
oNewRow.Item(0) = My.Resources.text
|
|
Case ".pdf".ToUpper
|
|
oNewRow.Item(0) = My.Resources.pdf
|
|
Case ".doc".ToUpper
|
|
oNewRow.Item(0) = My.Resources.doc
|
|
Case ".docx".ToUpper
|
|
oNewRow.Item(0) = My.Resources.doc
|
|
Case ".xls".ToUpper
|
|
oNewRow.Item(0) = My.Resources.xls
|
|
Case ".xlsx".ToUpper
|
|
oNewRow.Item(0) = My.Resources.xls
|
|
Case ".xlsm".ToUpper
|
|
oNewRow.Item(0) = My.Resources.xls
|
|
Case ".ppt".ToUpper
|
|
oNewRow.Item(0) = My.Resources.ppt
|
|
Case ".pptx".ToUpper
|
|
oNewRow.Item(0) = My.Resources.ppt
|
|
Case ".dwg".ToUpper
|
|
oNewRow.Item(0) = My.Resources.dwg
|
|
Case ".dxf".ToUpper
|
|
oNewRow.Item(0) = My.Resources.dxf
|
|
Case ".msg".ToUpper
|
|
oNewRow.Item(0) = My.Resources.email_go
|
|
Case ".msg".ToUpper
|
|
oNewRow.Item(0) = My.Resources.email_go
|
|
Case Else
|
|
oNewRow.Item(0) = My.Resources._blank
|
|
End Select
|
|
'Den Filepath mitgeben
|
|
oNewRow.Item(1) = fullpath
|
|
oNewRow.Item(2) = objecttype
|
|
oNewRow.Item(3) = DocID
|
|
Dim i = 4 'Fängt bei 4 an, um die definierten Spalten zu überspringen
|
|
For Each Colname As String In ColArrayDEFINITION
|
|
Dim rowvalue
|
|
Try
|
|
rowvalue = FILE_ROW.Item(Colname)
|
|
If IsDBNull(rowvalue) Then
|
|
rowvalue = ""
|
|
End If
|
|
_step = "9.1 rowvalue for Colname [" & Colname & "]: [" & rowvalue.ToString & "]"
|
|
LOGGER.Debug("rowvalue for Colname [" & Colname & "]: [" & rowvalue.ToString & "]")
|
|
Catch ex As Exception
|
|
If CURRENT_SEARCH_TYPE = "RECORD" Then
|
|
LOGGER.Warn("Unexpected Error in GetVariableValue for Column [" & Colname & "] - Error: " & ex.Message)
|
|
End If
|
|
If Colname.ToString.StartsWith("doct") Or Colname.ToString.StartsWith("Dokum") Then
|
|
rowvalue = ""
|
|
Else
|
|
If CURRENT_SEARCH_TYPE <> "RECORD" Then
|
|
rowvalue = "Not displayable in Group-Search"
|
|
Else
|
|
rowvalue = "#"
|
|
End If
|
|
|
|
End If
|
|
End Try
|
|
_step = "9.2 now: NewRow.Item(i) = rowvalue.ToString..."
|
|
'LOGGER.Debug("9.2 now: NewRow.Item(i) = rowvalue.ToString...")
|
|
Try
|
|
Dim oType = oDTGrid.Columns(i).DataType.ToString
|
|
If oType = "System.DateTime" And Len(rowvalue) = 0 Then
|
|
LOGGER.Debug("rowvalue Is empty and Column is Datetime...")
|
|
|
|
rowvalue = "2099-12-31"
|
|
ElseIf oType = "System.Boolean" Then
|
|
Try
|
|
Dim otest = CBool(rowvalue)
|
|
Catch ex As Exception
|
|
rowvalue = False
|
|
End Try
|
|
|
|
|
|
oNewRow.Item(i) = CBool(rowvalue)
|
|
ElseIf oType = "System.Int32" Then
|
|
If Len(rowvalue) = 0 Then
|
|
oNewRow.Item(i) = 0
|
|
Else
|
|
oNewRow.Item(i) = CInt(rowvalue)
|
|
End If
|
|
Else
|
|
oNewRow.Item(i) = rowvalue.ToString
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Warn("Error in advising rowvalue to rowitem: " + ex.Message)
|
|
LOGGER.Error("Error in advising rowvalue to rowitem: " + ex.Message)
|
|
LOGGER.Warn("Type of column: " + oDTGrid.Columns(i).DataType.ToString())
|
|
End Try
|
|
|
|
i += 1
|
|
Next
|
|
oDTGrid.Rows.Add(oNewRow)
|
|
' Catch ex As Exception
|
|
' Logger.Warn("Unexpected Error in CreateRow for doc '" & filename & "- Error: " & ex.Message)
|
|
' End Try
|
|
Next
|
|
_step = "10"
|
|
|
|
Return oDTGrid
|
|
|
|
sw.Done()
|
|
Catch ex As Exception
|
|
MsgBox("Unexpected Error in Get_DOC_RESULTTABLE (Step " & _step & "): " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
LOGGER.Warn("Unexpected Error in Get_DOC_RESULTTABLE (Step " & _step & "): " & ex.Message)
|
|
Return Nothing
|
|
End Try
|
|
End Function
|
|
|
|
Public Shared Function CREATE_DOC_RELATED_LINKS(DOC_ID As Integer, RECORD_ID As Integer)
|
|
Try
|
|
Dim execute = String.Format("EXEC PROF_DOC_CREATE_UPDATE {0},{1},'{2}','{3}'", DOC_ID, RECORD_ID, USER_USERNAME, CURRENT_FILE_HASH)
|
|
If MYDB_ECM.ExecuteNonQuery(execute) = True Then
|
|
Return True
|
|
Else
|
|
Return False
|
|
End If
|
|
Catch ex As Exception
|
|
MsgBox("Unexpected Error in CREATE_DOC_RELATED_LINKS: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
Public Shared Function SET_WD_RIGHTS(oWMObject As WINDREAMLib.WMObject, RESULT_DOCID As Integer, RESULT_DOC_PATH As String, DeleteRightsBefore As Boolean)
|
|
Try
|
|
If CURRENT_RECORD_ID = 0 Then
|
|
MsgBox("No Record selected - Please select one!", MsgBoxStyle.Exclamation)
|
|
Return False
|
|
End If
|
|
LOGGER.Debug("#### SETTING RIGHTS FOR FILE ######")
|
|
If ClassWDRights.Init = True Then
|
|
If ClassWDRights.Doc_Renew_Rights(oWMObject, RESULT_DOCID, RESULT_DOC_PATH, DeleteRightsBefore) Then
|
|
If ClassWDRights.MSG_RESULT <> "" Then
|
|
Dim msg = "Achtung: einige Rechte konnten nicht gesetzt werden: " & vbNewLine & ClassWDRights.MSG_RESULT
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Attention: some rights could not be set: " & vbNewLine & ClassWDRights.MSG_RESULT
|
|
End If
|
|
ClassHelper.MSGBOX_Handler("INFO", "Information:", msg)
|
|
End If
|
|
Return True
|
|
Else
|
|
Return False
|
|
End If
|
|
Else
|
|
MsgBox("Could not initialize right-module - Check the log!", MsgBoxStyle.Exclamation)
|
|
Return False
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
MsgBox("Unexpected Error in SET_WD_RIGHTS: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
''' <summary>
|
|
''' Returns a right-type for file.
|
|
''' </summary>
|
|
''' <param name="DOC_ID">DOC_ID of windream-file</param>
|
|
''' <returns>Returns info about filerights</returns>
|
|
''' <remarks></remarks>
|
|
Public Shared Function Get_File_Rights(DOC_ID As Integer)
|
|
Try
|
|
If DOC_ID = 0 Then
|
|
Return "R"
|
|
End If
|
|
Dim sql = String.Format("SELECT dwAccessRight FROM VWPMO_WD_OBJECT_RIGHTS WHERE dwObjectID = {0} and dwUserOrGroupID = {1}", DOC_ID, USERID_FK_INT_ECM)
|
|
Dim odwAccessRight = MYDB_ECM.GetScalarValue(sql)
|
|
If IsNothing(odwAccessRight) Or IsDBNull(odwAccessRight) Then
|
|
Return Nothing
|
|
End If
|
|
LOGGER.Debug($"dwAccesRight for DocID [{DOC_ID}] is [{odwAccessRight}]")
|
|
Select Case odwAccessRight
|
|
Case 1
|
|
If USER_IS_ADMIN = False Then
|
|
Return "R"
|
|
Else
|
|
LOGGER.Warn("FileRight is R but User is Admin!! - Check the UserKonfig!")
|
|
Return "RWA"
|
|
End If
|
|
|
|
Case 3
|
|
Return "RW"
|
|
Case 7
|
|
Return "RWA"
|
|
Case 141
|
|
Return "RWA"
|
|
Case 263
|
|
Return "RWA"
|
|
Case WM_RWA
|
|
LOGGER.Debug($"odwAccessRight is equal WM_RWA [{WM_RWA}]")
|
|
Return "RWA"
|
|
Case WM_RWA1
|
|
LOGGER.Debug($"odwAccessRight is equal WM_RWA1 [{WM_RWA1}]")
|
|
Return "RWA"
|
|
Case WM_RWA2
|
|
LOGGER.Debug($"odwAccessRight is equal WM_RWA2 [{WM_RWA2}]")
|
|
Return "RWA"
|
|
Case Else
|
|
|
|
Return "R"
|
|
End Select
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Warn("Unexpected Error in Get_File_Rights: " & ex.Message)
|
|
Return Nothing
|
|
End Try
|
|
End Function
|
|
|
|
End Class
|