SchreiberM 89853759cb MS
2016-09-12 10:44:27 +02:00

324 lines
17 KiB
VB.net

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
' 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 = 3305) " & _
' "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 = 3305) " & _
' "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 = 3305) " & _
' "WHEN {1} THEN " & _
' " (SELECT VALUE FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = {5} AND RECORD_ID = {0}) " & _
' "ELSE '' END AS OPTION4 " & _
'"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')) AS DROPDOWN1 " & _
",(SELECT [dbo].[FNPMO_DOC_GET_DROPDOWN] (DocID,{1},'DROPDOWN2')) AS DROPDOWN2 " & _
",(SELECT [dbo].[FNPMO_DOC_GET_DROPDOWN] (DocID,{1},'DROPDOWN3')) AS DROPDOWN3 " & _
",(SELECT [dbo].[FNPMO_DOC_GET_DROPDOWN] (DocID,{1},'DROPDOWN4')) 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)
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 * ," & _
"(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')) AS DROPDOWN1 " & _
",(SELECT [dbo].[FNPMO_DOC_GET_DROPDOWN] (DocID,{1},'DROPDOWN2')) AS DROPDOWN2 " & _
",(SELECT [dbo].[FNPMO_DOC_GET_DROPDOWN] (DocID,{1},'DROPDOWN3')) AS DROPDOWN3 " & _
",(SELECT [dbo].[FNPMO_DOC_GET_DROPDOWN] (DocID,{1},'DROPDOWN4')) 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)
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