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 ''' ''' Returns a right-type for file. ''' ''' DOC_ID of windream-file ''' Returns info about filerights ''' 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