2020-01-16 13:22:56 +01:00

562 lines
32 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
Dim VALUE_CONF2
Dim VALUE_CONF3
Dim VALUE_CONF4
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
If LogErrorsOnly = False Then ClassLogger.Add(" >> DT_RESULTLIST_SEL_VALUES.Rows.Count: " & DT_RESULTLIST_SEL_VALUES.Rows.Count, False)
If DT_RESULTLIST_SEL_VALUES.Rows.Count = 0 Then
VALUE_CONF1 = 0
VALUE_CONF2 = 0
VALUE_CONF3 = 0
VALUE_CONF4 = 0
Else
VALUE_CONF1 = DT_RESULTLIST_SEL_VALUES.Rows(0).Item("GUID")
Try
VALUE_CONF2 = DT_RESULTLIST_SEL_VALUES.Rows(1).Item("GUID")
Catch ex As Exception
VALUE_CONF2 = 0
End Try
Try
VALUE_CONF3 = DT_RESULTLIST_SEL_VALUES.Rows(2).Item("GUID")
Catch ex As Exception
VALUE_CONF3 = 0
End Try
Try
VALUE_CONF4 = DT_RESULTLIST_SEL_VALUES.Rows(3).Item("GUID")
Catch ex As Exception
VALUE_CONF4 = 0
End Try
End If
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 = 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 &
"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 = '{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 TRL.RECORD_ID = {0} AND TR.FORM_ID = {1} AND TRIGHTS.dwUserOrGroupID = {6}", RECORD_ID, 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" 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
If LogErrorsOnly = False Then ClassLogger.Add(" >> SQL_DOC_SEARCH: " & SQL_DOC_SEARCH, False)
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 'ClassDatabase.Return_Datatable(SQL_DOC_SEARCH, True)
Catch ex As Exception
ClassLogger.Add("Unexpected Error in GET_DOCSEARCH_DATATABLE: " & ex.Message, True)
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
ClassLogger.Add(">> ATTENTION: GET_DOCSEARCH_DATATABLE IS NOTHING!!", False)
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 DTGrid As New DataTable
Dim ColArrayDEFINITION As New List(Of String)
Dim listcheck As New List(Of String)
For Each row As DataRow In DT_TBPMO_DOCSEARCH_RESULTLIST_CONFIG.Rows
Dim type = row.Item("TYPE_ID")
Dim COLNAME = row.Item("HEADER_CAPTION")
If type = 2 Then
listcheck.Add(COLNAME)
End If
Next
_step = "2"
For Each col1 As String In listcheck
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 = ""
DTGrid.Columns.Add(colIcon)
_step = "4"
Dim colPath As New System.Data.DataColumn()
colPath.DataType = GetType(String)
colPath.ColumnName = "FULLPATH"
colPath.Caption = "Fullpath"
DTGrid.Columns.Add(colPath)
_step = "5"
Dim colOtype As New System.Data.DataColumn()
colOtype.DataType = GetType(String)
colOtype.ColumnName = "OBJECTTYPE"
colOtype.Caption = "Objecttype"
DTGrid.Columns.Add(colOtype)
_step = "6"
Dim colDocID As New System.Data.DataColumn()
colDocID.DataType = GetType(Int32)
colDocID.ColumnName = "DocID"
colDocID.Caption = "DocID"
DTGrid.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 = 4 Then
oColumn.DataType = GetType(DateTime)
End If
DTGrid.Columns.Add(oColumn)
ColCount += 1
Catch ex As Exception
ClassLogger.Add(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
ClassLogger.Add("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 listcheck
Dim collist As DataColumn = DTGrid.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")
'Dim Folderpath = Path.GetDirectoryName(fullpath)
Dim filename = Path.GetFileName(fullpath)
Dim extension = Path.GetExtension(fullpath)
' Try
Dim NewRow As DataRow
NewRow = DTGrid.NewRow()
'Icon zuweisen
Select Case extension.ToUpper
Case ".csv".ToUpper
NewRow.Item(0) = My.Resources.doc_excel_csv
Case ".txt".ToUpper
NewRow.Item(0) = My.Resources.text
Case ".pdf".ToUpper
NewRow.Item(0) = My.Resources.pdf
Case ".doc".ToUpper
NewRow.Item(0) = My.Resources.doc
Case ".docx".ToUpper
NewRow.Item(0) = My.Resources.doc
Case ".xls".ToUpper
NewRow.Item(0) = My.Resources.xls
Case ".xlsx".ToUpper
NewRow.Item(0) = My.Resources.xls
Case ".xlsm".ToUpper
NewRow.Item(0) = My.Resources.xls
Case ".ppt".ToUpper
NewRow.Item(0) = My.Resources.ppt
Case ".pptx".ToUpper
NewRow.Item(0) = My.Resources.ppt
Case ".dwg".ToUpper
NewRow.Item(0) = My.Resources.dwg
Case ".dxf".ToUpper
NewRow.Item(0) = My.Resources.dxf
Case ".msg".ToUpper
NewRow.Item(0) = My.Resources.email_go
Case ".msg".ToUpper
NewRow.Item(0) = My.Resources.email_go
Case Else
NewRow.Item(0) = My.Resources._blank
End Select
'Den Filepath mitgeben
NewRow.Item(1) = fullpath
NewRow.Item(2) = objecttype
NewRow.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 LogErrorsOnly = False Then ClassLogger.Add(" >> rowvalue for Colname '" & Colname & "': '" & rowvalue.ToString & "'", False)
Catch ex As Exception
If CURRENT_SEARCH_TYPE = "RECORD" Then ClassLogger.Add("Unexpected Error in GetVariableValue for Column '" & Colname & "'- Error: " & ex.Message)
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 = "Error getting rowvalue"
End If
End If
End Try
NewRow.Item(i) = rowvalue.ToString
i += 1
Next
DTGrid.Rows.Add(NewRow)
' Catch ex As Exception
' ClassLogger.Add("Unexpected Error in CreateRow for doc '" & filename & "- Error: " & ex.Message)
' End Try
Next
_step = "10"
Return DTGrid
sw.Done()
Catch ex As Exception
MsgBox("Unexpected Error in Get_DOC_RESULTTABLE (Step " & _step & "): " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
ClassLogger.Add("Unexpected Error in Get_DOC_RESULTTABLE (Step " & _step & "): " & ex.Message)
Return Nothing
End Try
End Function
Public Shared Function REFRESH_DOC_TABLE_RESULTS()
Try
Dim execute = "EXEC[dbo].[PRPMO_DOCRESULT_CHANGE]"
Return ClassDatabase.Execute_non_Query_withConn(execute, 1)
Catch ex As Exception
MsgBox("Unexpected Error in REFRESH_TABLE_RESULTS: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return False
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 [dbo].[PRPMO_DOC_CREATE_NEW_DOC] {0},{1},'{2}'", DOC_ID, RECORD_ID, USER_USERNAME)
If ClassDatabase.Execute_non_Query(execute) = True Then
If LICENSE_PROXY = True And DD_LIB_Standards.clsDatabase.DB_PROXY_INITIALIZED Then
execute = String.Format("EXEC [dbo].[PRPROXY_DOC_CREATE_NEW_DOC] {0},{1},'{2}'", DOC_ID, RECORD_ID, USER_USERNAME)
ClassDatabase.Execute_non_Query(execute, True)
End If
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(ByVal RESULT_DOCID, ByVal RESULT_DOC_PATH)
Try
If CURRENT_RECORD_ID = 0 Then
MsgBox("No Record selected - Please select one!", MsgBoxStyle.Exclamation)
Return False
End If
If LogErrorsOnly = False Then ClassLogger.Add("#### SETTING RIGHTS FOR FILE ######", False)
If ClassWDRights.Init = True Then
If ClassWDRights.Doc_Renew_Rights(RESULT_DOCID, RESULT_DOC_PATH, True) 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
'DD_Rights.clsLogger.Init(Application.UserAppDataPath() & "\Log", USER_USERNAME)
'If DD_Rights.clsDatabase.Init(MyConnectionString) = True Then
' If DD_Rights.ClassRights.Init(ENTITY_ID, LogErrorsOnly) = True Then
' If DD_Rights.ClassRights.Collect_Users(CURRENT_RECORD_ID, ENTITY_ID) = True Then
' If DD_Rights.ClassRights.File_DeleteAndSetRight(RESULT_DOCID, RESULT_DOC_PATH, True) Then
' If DD_Rights.ClassRights.MSG_RESULT <> "" Then
' Dim msg = "Achtung: einige Rechte konnten nicht gesetzt werden: " & vbNewLine & DD_Rights.ClassRights.MSG_RESULT
' If USER_LANGUAGE <> "de-DE" Then
' msg = "Attention: some rights could not be set: " & vbNewLine & DD_Rights.ClassRights.MSG_RESULT
' End If
' MsgBox(msg, MsgBoxStyle.Exclamation)
' Return True
' Else
' Return True
' End If
' Else
' Return False
' End If
' Else
' Return False
' End If
' Else
' Return False
' End If
'Else
' 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
Dim sql = String.Format("SELECT dwAccessRight FROM VWPMO_WD_OBJECT_RIGHTS WHERE dwObjectID = {0} and dwUserOrGroupID = {1}", DOC_ID, USERID_FK_INT_ECM)
Dim result = clsDatabase.Execute_Scalar(sql, True)
If IsNothing(result) Or IsDBNull(result) Then
Return Nothing
End If
Select Case result
Case 1
Return "R"
Case 3
Return "RW"
Case 7
Return "RWA"
Case 141
Return "RWA"
Case Else
Return "R"
End Select
Catch ex As Exception
clsLogger.Add("Unexpected Error in Get_File_Rights: " & ex.Message, True)
Return Nothing
End Try
End Function
End Class