Imports System.IO Public Class ClassDOC_SEARCH Private Shared DT_RESULTLIST_OPTIONS As DataTable Private Shared ENTITY_ID As Integer Private Shared RECORD_ID As Integer Private Shared Function GET_DOCSEARCH_DATATABLE(Type As String) Try Dim OPTION1 Dim OPTION2 Dim OPTION3 Dim OPTION4 Dim OPTION5 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 Dim SQL_DOC_SEARCH If Type = "ENTITY" Then '"FROM VWPMO_WD_DOC_SEARCH WHERE ENTITY_ID LIKE '%#{1}%'", RECORD_ID, ENTITY_ID, OPTION1, OPTION2, OPTION3, OPTION4) ' SQL_DOC_SEARCH = String.Format("SELECT * ," & _ ' "CASE " & _ ' "WHEN [ENTITY_ID] = {1} THEN " & _ ' " (SELECT VALUE FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = {2} AND RECORD_ID = {0}) " & _ ' "ELSE '' END AS OPTION1," & _ ' "CASE " & _ ' "WHEN [ENTITY_ID] = {1} THEN " & _ ' " (SELECT VALUE FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = {3} AND RECORD_ID = {0}) " & _ ' "ELSE '' END AS OPTION2," & _ ' "CASE " & _ ' "WHEN [ENTITY_ID] = {1} THEN " & _ ' " (SELECT VALUE FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = {4} AND RECORD_ID = {0}) " & _ ' "ELSE '' END AS OPTION3," & _ ' "CASE " & _ ' "WHEN [ENTITY_ID] = {1} THEN " & _ ' " (SELECT VALUE FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = {5} AND RECORD_ID = {0}) " & _ ' "ELSE '' END AS OPTION4" & _ ' ",(SELECT [dbo].[FNPMO_DOC_GET_IDX] (DocID,{1},'DOCIDX1')) AS DOCIDX1 " & _ ' ",(SELECT [dbo].[FNPMO_DOC_GET_IDX] (DocID,{1},'DOCIDX2')) AS DOCIDX2 " & _ ' ",(SELECT [dbo].[FNPMO_DOC_GET_IDX] (DocID,{1},'DOCIDX3')) AS DOCIDX3 " & _ ' ",(SELECT [dbo].[FNPMO_DOC_GET_IDX] (DocID,{1},'DOCIDX4')) AS DOCIDX4 " & _ ' ",(SELECT [dbo].[FNPMO_DOC_GET_DROPDOWN] (DocID,{1},'DROPDOWN1','{7}')) AS DROPDOWN1 " & _ ' ",(SELECT [dbo].[FNPMO_DOC_GET_DROPDOWN] (DocID,{1},'DROPDOWN2','{7}')) AS DROPDOWN2 " & _ ' ",(SELECT [dbo].[FNPMO_DOC_GET_DROPDOWN] (DocID,{1},'DROPDOWN3','{7}')) AS DROPDOWN3 " & _ ' ",(SELECT [dbo].[FNPMO_DOC_GET_DROPDOWN] (DocID,{1},'DROPDOWN4','{7}')) AS DROPDOWN4 " & _ '"FROM VWPMO_WD_DOC_SEARCH WHERE ENTITY_ID = {1} AND DocID = (SELECT dwObjectID FROM VWPMO_WD_OBJECT_RIGHTS WHERE dwUserOrGroupID = {6} AND dwObjectID = DocID)", RECORD_ID, ENTITY_ID, OPTION1, OPTION2, OPTION3, OPTION4, USERID_FK_INT_ECM, USER_LANGUAGE) SQL_DOC_SEARCH = String.Format("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] (T.DocID,{1},'DROPDOWN1','{7}') AS DROPDOWN1," & vbNewLine & _ "[dbo].[FNPMO_DOC_GET_DROPDOWN] (T.DocID,{1},'DROPDOWN2','{7}') AS DROPDOWN2," & vbNewLine & _ "[dbo].[FNPMO_DOC_GET_DROPDOWN] (T.DocID,{1},'DROPDOWN3','{7}') AS DROPDOWN3," & vbNewLine & _ "[dbo].[FNPMO_DOC_GET_DROPDOWN] (T.DocID,{1},'DROPDOWN4','{7}') AS DROPDOWN4 " & vbNewLine & _ "FROM " & vbNewLine & _ "VWPMO_WD_DOC_SEARCH T " & vbNewLine & _ "LEFT JOIN TBPMO_CONTROL_VALUE T1 ON T.RECORD_ID = T1.RECORD_ID AND T1.CONTROL_ID = {2} " & vbNewLine & _ "LEFT JOIN TBPMO_CONTROL_VALUE T2 ON T.RECORD_ID = T2.RECORD_ID AND T2.CONTROL_ID = {3} " & vbNewLine & _ "LEFT JOIN TBPMO_CONTROL_VALUE T3 ON T.RECORD_ID = T3.RECORD_ID AND T3.CONTROL_ID = {4} " & vbNewLine & _ "LEFT JOIN TBPMO_CONTROL_VALUE T4 ON T.RECORD_ID = T4.RECORD_ID AND T4.CONTROL_ID = {5} " & vbNewLine & _ "WHERE T.ENTITY_ID = {1} AND T.DocID = (SELECT dwObjectID FROM VWPMO_WD_OBJECT_RIGHTS WHERE dwUserOrGroupID = {6} AND dwObjectID = T.DocID)", RECORD_ID, ENTITY_ID, OPTION1, OPTION2, OPTION3, OPTION4, USERID_FK_INT_ECM, USER_LANGUAGE) If CURRENT_ENTITYSQL.ToUpper.Contains("WHERE") Then Dim where = CURRENT_ENTITYSQL.ToUpper.Replace("SELECT T.*", "SELECT '#' + CONVERT(VARCHAR(10),T.[Record-ID]) + '#'") SQL_DOC_SEARCH = SQL_DOC_SEARCH & String.Format(" AND RECORD_ID IN ({0})", where) End If Else SQL_DOC_SEARCH = String.Format("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] (T.DocID,{1},'DROPDOWN1','{7}') AS DROPDOWN1," & vbNewLine & _ "[dbo].[FNPMO_DOC_GET_DROPDOWN] (T.DocID,{1},'DROPDOWN2','{7}') AS DROPDOWN2," & vbNewLine & _ "[dbo].[FNPMO_DOC_GET_DROPDOWN] (T.DocID,{1},'DROPDOWN3','{7}') AS DROPDOWN3," & vbNewLine & _ "[dbo].[FNPMO_DOC_GET_DROPDOWN] (T.DocID,{1},'DROPDOWN4','{7}') AS DROPDOWN4 " & vbNewLine & _ "FROM " & vbNewLine & _ "VWPMO_WD_DOC_SEARCH T " & vbNewLine & _ "LEFT JOIN TBPMO_CONTROL_VALUE T1 ON T.RECORD_ID = T1.RECORD_ID AND T1.CONTROL_ID = {2} " & vbNewLine & _ "LEFT JOIN TBPMO_CONTROL_VALUE T2 ON T.RECORD_ID = T2.RECORD_ID AND T2.CONTROL_ID = {3} " & vbNewLine & _ "LEFT JOIN TBPMO_CONTROL_VALUE T3 ON T.RECORD_ID = T3.RECORD_ID AND T3.CONTROL_ID = {4} " & vbNewLine & _ "LEFT JOIN TBPMO_CONTROL_VALUE T4 ON T.RECORD_ID = T4.RECORD_ID AND T4.CONTROL_ID = {5} " & vbNewLine & _ "WHERE T.RECORD_ID = {0} AND T.ENTITY_ID = {1} AND T.DocID = (SELECT dwObjectID FROM VWPMO_WD_OBJECT_RIGHTS WHERE dwUserOrGroupID = {6} AND dwObjectID = T.DocID)", RECORD_ID, ENTITY_ID, OPTION1, OPTION2, OPTION3, OPTION4, USERID_FK_INT_ECM, USER_LANGUAGE) ' SQL_DOC_SEARCH = String.Format("SELECT * ," & _ ' "(CASE (SELECT FORM_ID FROM TBPMO_RECORD WHERE GUID = {0}) " & _ ' "WHEN {1} THEN " & _ ' " (SELECT VALUE FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = {2} AND RECORD_ID = {0}) " & _ ' "ELSE '' END) AS OPTION1," & _ ' "CASE (SELECT FORM_ID FROM TBPMO_RECORD WHERE GUID = {0}) " & _ ' "WHEN {1} THEN " & _ ' " (SELECT VALUE FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = {3} AND RECORD_ID = {0}) " & _ ' "ELSE '' END AS OPTION2," & _ ' "CASE (SELECT FORM_ID FROM TBPMO_RECORD WHERE GUID = {0}) " & _ ' "WHEN {1} THEN " & _ ' " (SELECT VALUE FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = {4} AND RECORD_ID = {0}) " & _ ' "ELSE '' END AS OPTION3," & _ ' "CASE (SELECT FORM_ID FROM TBPMO_RECORD WHERE GUID = {0}) " & _ ' "WHEN {1} THEN " & _ ' " (SELECT VALUE FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = {5} AND RECORD_ID = {0}) " & _ ' "ELSE '' END AS OPTION4 " & _ ' ",(SELECT [dbo].[FNPMO_DOC_GET_IDX] (DocID,{1},'DOCIDX1')) AS DOCIDX1 " & _ ' ",(SELECT [dbo].[FNPMO_DOC_GET_IDX] (DocID,{1},'DOCIDX2')) AS DOCIDX2 " & _ ' ",(SELECT [dbo].[FNPMO_DOC_GET_IDX] (DocID,{1},'DOCIDX3')) AS DOCIDX3 " & _ ' ",(SELECT [dbo].[FNPMO_DOC_GET_IDX] (DocID,{1},'DOCIDX4')) AS DOCIDX4 " & _ ' ",(SELECT [dbo].[FNPMO_DOC_GET_DROPDOWN] (DocID,{1},'DROPDOWN1','{7}')) AS DROPDOWN1 " & _ ' ",(SELECT [dbo].[FNPMO_DOC_GET_DROPDOWN] (DocID,{1},'DROPDOWN2','{7}')) AS DROPDOWN2 " & _ ' ",(SELECT [dbo].[FNPMO_DOC_GET_DROPDOWN] (DocID,{1},'DROPDOWN3','{7}')) AS DROPDOWN3 " & _ ' ",(SELECT [dbo].[FNPMO_DOC_GET_DROPDOWN] (DocID,{1},'DROPDOWN4','{7}')) AS DROPDOWN4 " & _ '"FROM VWPMO_WD_DOC_SEARCH WHERE RECORD_ID = {0} AND ENTITY_ID = {1} AND DocID = (SELECT dwObjectID FROM VWPMO_WD_OBJECT_RIGHTS WHERE dwUserOrGroupID = {6} AND dwObjectID = DocID)", RECORD_ID, ENTITY_ID, OPTION1, OPTION2, OPTION3, OPTION4, USERID_FK_INT_ECM, USER_LANGUAGE) End If Return ClassDatabase.Return_Datatable_Connection(SQL_DOC_SEARCH, 1) 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_DOC_RESULTTABLE(vDT_RESULTLIST_OPTIONS As DataTable, DT_WINDREAM_RESULTLIST As DataTable, ENT_ID As Integer, REC_ID As Integer, vType As String) Dim COL_ARRAY_RESULTLIST As List(Of String) ENTITY_ID = ENT_ID DT_RESULTLIST_OPTIONS = vDT_RESULTLIST_OPTIONS RECORD_ID = REC_ID Try Dim sw As New Stopwatch sw.Start() Dim elapsed As Double Dim DT_FILE_RESULT As DataTable = GET_DOCSEARCH_DATATABLE(vType) 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 elapsed = sw.Elapsed.TotalSeconds sw.Stop() sw.Reset() Console.WriteLine(">> GET_DOCSEARCH_DATATABLE took " & Format(elapsed, "0.000000000") & " seconds") If LogErrorsOnly = False Then ClassLogger.Add(" >> Run GET_DOCSEARCH_DATATABLE took " & Format(elapsed, "0.000000000") & " seconds", False) sw.Start() Dim DTGrid As New DataTable Dim ColArrayDEFINITION As New List(Of String) 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) ' Dim colPath As New System.Data.DataColumn() colPath.DataType = GetType(String) colPath.ColumnName = "FULLPATH" colPath.Caption = "Fullpath" DTGrid.Columns.Add(colPath) Dim colOtype As New System.Data.DataColumn() colOtype.DataType = GetType(String) colOtype.ColumnName = "OBJECTTYPE" colOtype.Caption = "Objecttype" DTGrid.Columns.Add(colOtype) Dim colDocID As New System.Data.DataColumn() colDocID.DataType = GetType(String) colDocID.ColumnName = "DocID" colDocID.Caption = "DocID" DTGrid.Columns.Add(colDocID) If Not DT_WINDREAM_RESULTLIST Is Nothing And DT_WINDREAM_RESULTLIST.Rows.Count >= 1 Then Dim ColCount As Integer = 1 For Each rw As DataRow In DT_WINDREAM_RESULTLIST.Rows Dim ColumnName = rw.Item("HEADER_CAPTION") Dim Width = rw.Item("WIDTH") If IsNothing(Width) Or IsDBNull(Width) Then Width = 200 End If 'Die Spalte definieren DTGrid.Columns.Add(ColumnName) ColCount += 1 Next 'Jetzt das Array zusammenbauen um die Spaltenwerte zu erhalten For Each rw As DataRow In DT_WINDREAM_RESULTLIST.Rows ColArrayDEFINITION.Add(rw.Item("COLUMN_VIEW")) Next End If Catch ex As Exception MsgBox("Unexpected Error in Construct Datatable for GridResult: " & vbNewLine & ex.Message, MsgBoxStyle.Critical) End Try elapsed = sw.Elapsed.TotalSeconds sw.Stop() sw.Reset() Console.WriteLine(">> DTGrid-Definition took " & Format(elapsed, "0.000000000") & " seconds") If LogErrorsOnly = False Then ClassLogger.Add(" >> DTGrid-Definition took " & Format(elapsed, "0.000000000") & " seconds", False) sw.Start() COL_ARRAY_RESULTLIST = ColArrayDEFINITION For Each FILE_ROW As DataRow In DT_FILE_RESULT.Rows 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 ".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 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 2 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 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 rowvalue = "Error getting rowvalue" 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 Return DTGrid elapsed = sw.Elapsed.TotalSeconds sw.Stop() sw.Reset() If LogErrorsOnly = False Then ClassLogger.Add(" >> Run Get_DOC_RESULTTABLE took " & Format(elapsed, "0.000000000") & " seconds", False) Catch ex As Exception MsgBox("Unexpected Error in Get_DOC_RESULTTABLE: " & vbNewLine & ex.Message, MsgBoxStyle.Critical) 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 SET_RECORD_DOCID_LINK(DOC_ID As Integer, RECORD_ID As Integer) Try Dim ins = String.Format("INSERT INTO TBPMO_DOC_RECORD_LINK (DOC_ID, RECORD_ID,ADDED_WHO) VALUES ({0},{1},'{2}')", DOC_ID, RECORD_ID, Environment.UserName) Return ClassDatabase.Execute_non_Query(ins) Catch ex As Exception MsgBox("Unexpected Error in SET_RECORD_DOCID_LINK: " & vbNewLine & ex.Message, MsgBoxStyle.Critical) Return False End Try End Function Public Shared Function SET_WD_RIGHTS(ByVal RESULT_DOCID, ByVal RESULT_DOC_PATH, ByVal ENTITY_ID) Try If CURRENT_RECORD_ID = 0 Then MsgBox("No Record selected - Please select one!", MsgBoxStyle.Exclamation) Return False End If DD_Rights.clsLogger.Init(Application.UserAppDataPath() & "\Log", Environment.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 End Class