Developer01 5c0120cca8 3.4.4.0
2025-10-30 18:29:35 +01:00

598 lines
27 KiB
VB.net

Imports System.IO
Imports System.Globalization
Imports System.ComponentModel
Public Class ClassHelper
Private Shared BW_DocPath As String
Private Shared BW_DocID As Integer
Private Shared BW_ParentID As Integer
Private Shared BW_Filename As String
Public Shared Function FORMAT_WM_PATH(WMpath As String)
Try
If Not IsNothing(WMpath) Then
Dim ochanged As Boolean = False
If WMpath.StartsWith("W:") Then
WMpath = WMpath.Replace("W:", WMPATH_PREFIX)
ochanged = True
ElseIf WMpath.StartsWith("\") Then
If WMpath.StartsWith(WMPATH_PREFIX) = False Then
WMpath = WMPATH_PREFIX & WMpath
ochanged = True
End If
End If
LOGGER.Debug("WMpath is: " & WMpath)
Return WMpath
Else
Return Nothing
End If
Catch ex As Exception
Return WMpath
End Try
End Function
Public Shared Function GetRelPath(WMpath As String)
Try
If WMpath.StartsWith("W:") Then
WMpath = WMpath.Replace("W:", "")
ElseIf WMpath.StartsWith("\") Then
If WMpath.StartsWith(WMPATH_PREFIX) = False Then
WMpath = WMpath.Replace("WMPATH_PREFIX:", "")
End If
End If
LOGGER.Debug("WMpath is: " & WMpath)
Return WMpath
Catch ex As Exception
Return WMpath
End Try
End Function
Public Shared Function Format_Currency(value As String, language As String)
Try
If IsNothing(value) Then
Return ""
End If
If language <> "de-DE" Then
value = value.Replace(",", ".")
End If
Dim dValue = Double.Parse(value)
Dim ci = Threading.Thread.CurrentThread.CurrentCulture
Dim nfi As NumberFormatInfo = ci.NumberFormat.Clone()
nfi.CurrencySymbol = "" ' KEIN Currency Symbol
Return dValue.ToString("C", nfi)
Catch ex As Exception
Return value.ToString()
End Try
End Function
Public Shared Function Convert_Date(input As String, format As String)
Try
Dim dt As Date = CDate(input)
Dim result = dt.ToString(format, CultureInfo.InvariantCulture)
Return result
Catch ex As Exception
LOGGER.Warn("Unexpected Error while converting value '" & input & "' to date....." & ex.Message)
Return input
End Try
End Function
Public Shared Function CheckDBNull(input As Object, back_Value As String)
If IsDBNull(input) Then
If back_Value = "String" Then
Return ""
Else
Return True
End If
Else
If back_Value = "String" Then
Return input.ToString
Else
Return False
End If
End If
End Function
Public Shared Function Convert_to_Database_Date(input As String)
Try
Dim dt As Date = CDate(input)
Dim result = dt.ToString("yyyy-MM-dd", Nothing)
Return result
Catch ex As Exception
LOGGER.Warn("Unexpected Error while converting value '" & input & "' to date(Convert_to_Database_Date)....." & ex.Message)
Return input
End Try
End Function
Public Shared Function Get_TempFilename()
'Eine tempfile generieren
Dim tempFilename = My.Computer.FileSystem.GetTempFileName()
'Nur den Filenamen ohne Erweiterung
Dim tempName = Path.GetDirectoryName(tempFilename) & "\" & Path.GetFileNameWithoutExtension(tempFilename)
'tempfile lsöchen
If My.Computer.FileSystem.FileExists(tempFilename) Then
My.Computer.FileSystem.DeleteFile(tempFilename)
End If
Return tempName
End Function
Public Shared Function CheckFileIsInUse(ByVal filename) As Boolean
Dim fs As Integer = FreeFile()
Dim inuse As Boolean = False
If File.Exists(filename) Then
Try
Using f As New IO.FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.None)
' thisFileInUse = False
End Using
Catch
inuse = True
End Try
Try
FileOpen(fs, filename, OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.LockReadWrite)
Catch ex As Exception
LOGGER.Warn("File " & filename & " inuse or not able to open - message: " & ex.Message)
inuse = True
Finally
FileClose(fs)
End Try
End If
Return inuse
End Function
Public Shared Function Versionierung_Datei(Dateiname As String)
Dim extension
Dim _NewFileString
Try
Dim version As Integer = 1
Dim Stammname As String = Path.GetDirectoryName(Dateiname) & "\" & Path.GetFileNameWithoutExtension(Dateiname)
extension = Path.GetExtension(Dateiname)
Dim _neuername As String = Stammname
'Dim MoveFilename As String = DATEINAME.Replace(element.Value, "")
'Überprüfen ob File existiert
If File.Exists(_neuername & extension) = False Then
_NewFileString = _neuername
Else
Do While File.Exists(_neuername & extension)
version = version + 1
_neuername = Stammname & "~" & version
_NewFileString = _neuername
Loop
End If
Return _NewFileString & extension
Catch ex As Exception
LOGGER.Warn(" - Error in versioning file - error: " & vbNewLine & ex.Message)
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in versioning file:")
Return ""
End Try
End Function
Public Shared Function CleanFilename(ByVal sFilename As String,
Optional ByVal REPLACEChar As String = "") As String
' alle nicht zulässigen Zeichen ersetzen
Return System.Text.RegularExpressions.Regex.Replace(
sFilename, "[?*^""<>|]", REPLACEChar)
End Function
Public Shared Function File_open(RESULT_DOC_PATH As Object, DocID As String, pParentID As Integer)
Try
Dim oFileName = Path.GetFileName(RESULT_DOC_PATH)
BW_Filename = oFileName
RESULT_DOC_PATH = FORMAT_WM_PATH(RESULT_DOC_PATH)
If pParentID = 0 Then
Dim sql = String.Format("SELECT dwParentID FROM TBPMO_DOCRESULT_LIST WHERE DocID = {0}", DocID)
pParentID = MYDB_ECM.GetScalarValue(sql)
End If
If SHARE_DRIVE_ACTIVE Then
If RESULT_DOC_PATH.ToString.StartsWith(constWMOBJECTS) Then
RESULT_DOC_PATH = RESULT_DOC_PATH.ToString.Replace(constWMOBJECTS, WMPATH_PREFIX)
End If
End If
CURRENT_OFFICE_FILE_CHANGED = False
If RESULT_DOC_PATH <> Nothing Then
'Dim EXT = Path.GetExtension(RESULT_DOC_PATH)
'EXT = EXT.Replace(".", "")
' Dim sql = String.Format("SELECT VIEWER FROM TBPMO_DOC_USER_VIEW WHERE USER_ID = {0} AND FILE_EXTENSION = '{1}'", USER_GUID, EXT)
' Dim DT As DataTable = MYDB_ECM.GetDatatable(sql)
' If DT.Rows.Count = 1 Then
' Select Case DT.Rows(0).Item("VIEWER")
' Case "DOC_VIEW"
' OPEN_DOCVIEW(RESULT_DOC_PATH, DocID)
' End Select
' Else
File_SYSOPEN(RESULT_DOC_PATH, DocID, pParentID)
'End If
Return True
Else
MSGBOX_Handler("ERROR", "", "Sorry, but the docpath for doc-id: " & DocID & " is nothing!")
Return False
LOGGER.Debug("RESULT_DOC_PATH IS NOTHING")
End If
Catch ex As Exception
MsgBox("Unexpected Error in File_open:" & vbNewLine & ex.Message & vbNewLine & RESULT_DOC_PATH & vbNewLine & "DocID: " & DocID, MsgBoxStyle.Critical)
LOGGER.Warn("Error in File_open: " & ex.Message & vbNewLine & " - Path: " & RESULT_DOC_PATH & " - DocID: " & DocID)
Return False
End Try
End Function
Public Shared Sub Open_Folder(RESULT_DOC_PATH As Object, DocID As String)
Try
If RESULT_DOC_PATH <> Nothing Then
RESULT_DOC_PATH = FORMAT_WM_PATH(RESULT_DOC_PATH)
Dim _path = Path.GetDirectoryName(RESULT_DOC_PATH)
FOLDER_OPEN(_path, DocID)
Else
LOGGER.Debug("RESULT_DOC_PATH IS NOTHING")
End If
Catch ex As Exception
MsgBox("Unexpected Error in Open_Folder:" & vbNewLine & ex.Message & vbNewLine & RESULT_DOC_PATH & vbNewLine & "DocID: " & DocID, MsgBoxStyle.Critical)
LOGGER.Warn("Error in Open_Folder: " & ex.Message & vbNewLine & " - Path: " & RESULT_DOC_PATH & " - DocID: " & DocID)
End Try
End Sub
Private Shared Sub File_SYSOPEN(RESULT_DOC_PATH As Object, DocID As String, pParentID As Integer)
Try
If RESULT_DOC_PATH <> Nothing Then
BW_DocPath = RESULT_DOC_PATH
BW_DocID = DocID
BW_ParentID = pParentID
Dim BWFileHandler As New BackgroundWorker
AddHandler BWFileHandler.DoWork, AddressOf BWFileHandler_DoWork
BWFileHandler.RunWorkerAsync()
Else
LOGGER.Warn("File_SYSOPEN RESULT_DOC_PATH is nothing")
End If
Catch ex As Exception
MsgBox("Unexpected Error in File_SYSOPEN:" & vbNewLine & ex.Message & vbNewLine & RESULT_DOC_PATH & vbNewLine & "DocID: " & DocID, MsgBoxStyle.Critical)
LOGGER.Warn("Error in File_SYSOPEN: " & ex.Message & vbNewLine & " - Path: " & RESULT_DOC_PATH & " - DocID: " & DocID)
End Try
End Sub
Private Shared Sub BWFileHandler_DoWork()
Try
Dim oOverrideRunPath As String = ""
Dim oExtension As String = Path.GetExtension(BW_DocPath).ToLower()
' Prüfen, ob eine spezielle Anwendung für die Dateierweiterung definiert ist
For Each oROW As DataRow In CURRENT_TBFILE_EXTENSION_OVERRIDE.Rows
If oExtension.Replace(".", "") = oROW.Item("FILE_EXTENSION").ToString().ToLower() Then
LOGGER.Debug($"Specific file extension override for [{oExtension}] found.")
oOverrideRunPath = oROW.Item("PROCESS").ToString()
Exit For
End If
Next
Dim oMyProcess As Process = Nothing
Dim oSql As String = ""
Try
' ###### Startinfo vorbereiten ######
Dim startInfo As New ProcessStartInfo()
If oOverrideRunPath <> "" Then
startInfo.FileName = oOverrideRunPath
startInfo.Arguments = $"""{BW_DocPath}"""
LOGGER.Debug($"Opening document [{BW_DocPath}] using override application [{oOverrideRunPath}].")
Else
startInfo.FileName = BW_DocPath
LOGGER.Debug($"Opening document [{BW_DocPath}] with system default application.")
End If
startInfo.UseShellExecute = True
startInfo.RedirectStandardOutput = False
If oOverrideRunPath <> "" Then
oMyProcess = Process.Start(startInfo)
Else
oMyProcess = Process.Start(BW_DocPath)
End If
' ###### Prozess starten ######
' ID des gestarteten Prozesses holen (nicht den eigenen!)
Dim ProcID As Integer = oMyProcess.Id
LOGGER.Debug($"Started process ID {ProcID} for document [{BW_DocPath}].")
' Warten, bis der Benutzer das Dokument geschlossen hat
oMyProcess.WaitForExit()
' Nachbearbeitung, wenn Format bearbeitbar ist
oExtension = Path.GetExtension(BW_DocPath).ToLower()
LOGGER.Debug($"Checking if file extension [{oExtension}] may change during edit...")
If FILE_FORMATS_CHANGE_DURING_EDIT.Contains(oExtension) Then
oSql = $"SELECT * FROM VWOF_DOCID_HANDLE WHERE dwParentID = {BW_ParentID} AND [Filename] = '{BW_Filename}'"
Dim oDTNEWDoc As DataTable = MYDB_ECM.GetDatatable(oSql)
If oDTNEWDoc IsNot Nothing AndAlso oDTNEWDoc.Rows.Count = 1 Then
Dim oInsert = $"INSERT INTO TBPMO_DOC_ID_CHANGED (USER_ID,PROCESS_ID,VERSION_ID,OLD_DOC_ID,NEW_DOC_ID,DOC_PATH) VALUES (" &
$"{USER_GUID},'{ProcID}',{oDTNEWDoc.Rows(0).Item("dwVersionID")},{BW_DocID},{oDTNEWDoc.Rows(0).Item("NewDocID")},'{BW_DocPath}')"
MYDB_ECM.ExecuteNonQuery(oInsert)
LOGGER.Debug("Document change recorded in TBPMO_DOC_ID_CHANGED.")
Else
LOGGER.Debug("No matching document change detected.")
End If
End If
Catch ex As Exception
' Fehler im Prozessstart oder während des Wartens
LOGGER.Warn("Error in Process.Start(): " & ex.Message & vbNewLine & " - Path: " & BW_DocPath & " - DocID: " & BW_DocID)
MsgBox("Error in OpenFile: " & ex.Message & vbNewLine &
"Path: " & BW_DocPath & vbNewLine & "DocID: " & BW_DocID,
MsgBoxStyle.Exclamation, "Open File Error")
End Try
Catch ex As Exception
' Fehler im gesamten Worker (z. B. Path nicht vorhanden)
LOGGER.Warn("General error in BWFileHandler_DoWork: " & ex.Message & vbNewLine &
" - Path: " & BW_DocPath & " - DocID: " & BW_DocID)
' Letzter Versuch: Öffne mit Standardprogramm
Try
Process.Start(BW_DocPath)
LOGGER.Debug("Fallback: Document opened with default application.")
Catch ex1 As Exception
LOGGER.Warn("Fallback error in Process.Start(): " & ex1.Message & vbNewLine &
" - Path: " & BW_DocPath & " - DocID: " & BW_DocID)
End Try
End Try
End Sub
'Private Shared Sub BWFileHandler_DoWork()
' Try
' Dim oOverrideRunPath As String = ""
' Dim oExtension = Path.GetExtension(BW_DocPath).ToLower
' For Each oROW As DataRow In CURRENT_TBFILE_EXTENSION_OVERRIDE.Rows
' If oExtension.Replace(".", "") = oROW.Item("FILE_EXTENSION") Then
' LOGGER.Debug($"Specific fileextension override for extension [{oExtension}] found! ")
' oOverrideRunPath = oROW.Item("PROCESS")
' End If
' Next
' Dim oMyProcess = New Process()
' Dim oSql
' Try
' '######
' Dim startInfo As New ProcessStartInfo()
' If oOverrideRunPath <> "" Then
' startInfo.FileName = oOverrideRunPath
' startInfo.Arguments = """" & BW_DocPath & """"
' startInfo.UseShellExecute = True
' startInfo.RedirectStandardOutput = False
' Else
' startInfo.FileName = BW_DocPath
' startInfo.UseShellExecute = True
' startInfo.RedirectStandardOutput = False
' End If
' '#####
' oMyProcess.Start(startInfo)
' Dim myViewerProcessID = oMyProcess.Id
' oMyProcess.WaitForExit()
' oExtension = Path.GetExtension(BW_DocPath).ToLower
' LOGGER.Debug($"Checking oExtension [{oExtension}]...")
' If FILE_FORMATS_CHANGE_DURING_EDIT.Contains(oExtension) Then
' oSql = $"SELECT * FROM VWOF_DOCID_HANDLE WHERE dwParentID = {BW_ParentID} and [Filename] = '{BW_Filename}'"
' Dim oDTNEWDoc As DataTable = MYDB_ECM.GetDatatable(oSql)
' If Not IsNothing(oDTNEWDoc) Then
' If oDTNEWDoc.Rows.Count = 1 Then
' Dim oInsert = $"INSERT INTO TBPMO_DOC_ID_CHANGED (USER_ID,PROCESS_ID,VERSION_ID,OLD_DOC_ID,NEW_DOC_ID, DOC_PATH) VALUES (
' {USER_GUID},'{myViewerProcessID.ToString}',{oDTNEWDoc.Rows(0).Item("dwVersionID")},{BW_DocID},{oDTNEWDoc.Rows(0).Item("NewDocID")}, '{BW_DocPath}')"
' MYDB_ECM.ExecuteNonQuery(oInsert)
' End If
' End If
' End If
' Catch ex As Exception
' LOGGER.Warn("Error in Process1.Start(): " & ex.Message & vbNewLine & " - Path: " & BW_DocPath & " - DocID: " & BW_DocID)
' MsgBox("Error in OpenFile: " & ex.Message & vbNewLine & " - Path: " & BW_DocPath & " - DocID: " & BW_DocID, MsgBoxStyle.Exclamation)
' Exit Sub
' End Try
' Catch ex As Exception
' LOGGER.Warn("Error in Process.Start(): " & ex.Message & vbNewLine & " - Path: " & BW_DocPath & " - DocID: " & BW_DocID)
' Try
' Process.Start(BW_DocPath)
' Catch ex1 As Exception
' LOGGER.Warn("Error in Process.Start(1): " & ex1.Message & vbNewLine & " - Path: " & BW_DocPath & " - DocID: " & BW_DocID)
' End Try
' End Try
'End Sub
Private Shared Sub FOLDER_OPEN(PATH As Object, DocID As String)
Try
If PATH <> Nothing Then
LOGGER.Debug("in FOLDER_OPEN(" & PATH & ")")
If System.IO.Directory.Exists(PATH) = True Then
Process.Start(PATH)
Else
MsgBox("Folder '" & PATH & "' not existing or accessible!", MsgBoxStyle.Exclamation)
End If
End If
Catch ex As Exception
MsgBox("Unexpected Error in FOLDER_OPEN:" & vbNewLine & ex.Message & vbNewLine & PATH & vbNewLine & "DocID: " & DocID, MsgBoxStyle.Critical)
LOGGER.Warn("Error in FOLDER_OPEN: " & ex.Message & vbNewLine & " - Path: " & PATH & " - DocID: " & DocID)
End Try
End Sub
Shared Function Convert_Date_2_Form_Format(p1 As Date) As Date
Throw New NotImplementedException
End Function
Public Shared Function InsertEssential_Log(REFERENCE_KEY As Integer, REFERENCE_STRING As String, COMMENT As String)
Try
COMMENT = COMMENT.Replace("'", "")
Dim insert = String.Format("INSERT INTO TBPMO_LOG_ESSENTIALS (REFERENCE_KEY,REFERENCE_STRING,COMMENT,ADDED_WHO) VALUES ({0},'{1}','{2}','{3}')", REFERENCE_KEY, REFERENCE_STRING, COMMENT, USER_USERNAME)
Dim result = MYDB_ECM.ExecuteNonQuery(insert)
Return result
Catch ex As Exception
LOGGER.Warn("Unexpected Error in InsertEssential_Log: " & ex.Message)
Return False
End Try
End Function
Public Shared Function DeleteRecord(SELECTED_RECORD_ID As Integer, Optional Comment As String = "")
Try
Dim DeleteRecordSQL = String.Format("EXEC [dbo].[PRPMO_DELETE_RECORD] {0}, '{1}','{2}'", SELECTED_RECORD_ID, USER_USERNAME, Comment)
Dim result As Boolean = MYDB_ECM.ExecuteNonQuery(DeleteRecordSQL)
If result = False Then
Dim msg = "Der Datensatz '" & SELECTED_RECORD_ID & "' konnte nicht gelöscht werden. Überprüfen Sie das log"
If USER_LANGUAGE <> "de-DE" Then
msg = "The record '" & SELECTED_RECORD_ID & "' could not be deleted. Check the log"
End If
MsgBox(msg, MsgBoxStyle.Exclamation)
End If
LOGGER.Info($"Deleted Record [{SELECTED_RECORD_ID}] Result was [{result}]: ")
Return result
Catch ex As Exception
LOGGER.Warn("Unexpected Error in DeleteRecord: " & ex.Message)
Return False
End Try
End Function
Public Shared Sub MSGBOX_Handler(type As String, Caption As String, info1 As String, Optional info2 As String = "")
Dim msg = info1
If info2 <> "" Then
msg &= vbNewLine & vbNewLine & info2
End If
If type = "ERROR" Then
MessageBox.Show(msg, Caption, MessageBoxButtons.OK, MessageBoxIcon.Error)
LOGGER.Warn(msg)
ElseIf type = "INFO" Then
MessageBox.Show(msg, Caption, MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Sub
Public Shared Function Check_Record_Read_only(RECORD_ID As Integer, ENTITY_ID As Integer)
Dim sql = ""
Try
sql = SQL_RECORD_AND_FILE_READ_ONLY
sql = sql.Replace("@RECORDID", RECORD_ID)
sql = sql.Replace("@RECORD_ID", RECORD_ID)
sql = sql.Replace("@USER_ID", USER_GUID)
sql = sql.Replace("@USER_GUID", USER_GUID)
sql = sql.Replace("@ENTITY_ID", ENTITY_ID)
sql = sql.Replace("@USERNAME", USER_USERNAME)
sql = sql.Replace("@USER_NAME", USER_USERNAME)
LOGGER.Debug("RIGHT_ONLY_READ_RECORD_DOC SQL: (When true then disable) '" & sql & "'")
Return CBool(MYDB_ECM.GetScalarValue(sql))
Catch ex As Exception
LOGGER.Warn("SQL_RIGHT_READ_AND_VIEW_ONLY: " & sql)
Return False
End Try
End Function
Public Shared Function Check_File_Read_only(RECORD_ID As Integer, ENTITY_ID As Integer)
Dim sql = ""
Try
sql = SQL_DOC_READ_ONLY
sql = sql.Replace("@RECORDID", RECORD_ID)
sql = sql.Replace("@RECORD_ID", RECORD_ID)
sql = sql.Replace("@USER_ID", USER_GUID)
sql = sql.Replace("@USER_GUID", USER_GUID)
sql = sql.Replace("@ENTITY_ID", ENTITY_ID)
sql = sql.Replace("@USERNAME", USER_USERNAME)
sql = sql.Replace("@USER_NAME", USER_USERNAME)
LOGGER.Debug("RIGHT_ONLY_READ_COC SQL: (When true then disable) '" & sql & "'")
Return CBool(MYDB_ECM.GetScalarValue(sql))
Catch ex As Exception
LOGGER.Warn("RIGHT_WINDREAM_FORBIDDEN: " & sql)
Return False
End Try
End Function
Public Shared Sub Create_USER_FILE_TABLE()
Try
Dim sql = String.Format("SELECT *, CONVERT(BIT,0) AS DELETE_FILE FROM TBPMO_FILES_USER WHERE (USER_WORK = '{0}') AND WORKED = 0", USER_USERNAME)
CURRENT_TBPMO_FILES_USER = MYDB_ECM.GetDatatable(sql)
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Unexpected error while creating User_File_Table")
End Try
End Sub
Public Shared Function DELETE_PMO_FILE_USER(GUID As Integer)
Try
Dim del As String = String.Format("DELETE FROM TBPMO_FILES_USER WHERE GUID = {0}", GUID)
Return MYDB_ECM.ExecuteNonQuery(del)
Catch ex As Exception
MsgBox("Unexpected Error in DELETE_PMO_FILE_USER: " & ex.Message, MsgBoxStyle.Critical)
Return False
End Try
End Function
Public Shared Function DecryptString(ciphertext As String, MethodName As String)
Dim result As String
Dim wrapper As New ClassEncryption("!35452didalog=")
' DecryptData throws if the wrong password is used.
Try
result = wrapper.DecryptData(ciphertext)
Return result
Catch ex As Exception
LOGGER.Warn("The ciphertext for Method'" & MethodName & "' could not be decrypted")
Return ""
End Try
End Function
Public Shared Function FILTER_DATATABLE(BaseDatatable As DataTable, expression As String, sortstring As String)
Try
'Schema übernehmen
Dim filteredData As DataTable = BaseDatatable.Clone()
'Einfügevariante
BaseDatatable.Select(expression, sortstring).CopyToDataTable(filteredData, LoadOption.PreserveChanges)
Console.WriteLine("Found {0} rows.", filteredData.Rows.Count)
'Dim filteredData = BaseDatatable.Select(expression).CopyToDataTable()
Return filteredData
Catch ex As Exception
LOGGER.Warn("unexpected error in FILTER_DATATABLE: " & ex.Message)
Return Nothing
End Try
End Function
Public Shared Function GetDocrecordLinks(pRECORDID As Integer)
Try
Dim oSQL = $"SELECT * FROM TBPMO_DOC_RECORD_LINK WHERE RECORD_ID = {pRECORDID}"
CURRENT_DT_TBPMO_DOC_RECORD_LINK = MYDB_ECM.GetDatatable(oSQL)
Catch ex As Exception
LOGGER.Warn("Unexpected Error in GetDocrecordLinks: " & ex.Message)
Return False
End Try
End Function
Public Shared Function Insert_USER_File(pFilename As String, handleType As String)
Try
Dim filename_only As String = Path.GetFileName(pFilename)
CURRENT_FILE_HASH = ""
If File.Exists(pFilename) Then
If (pFilename.ToUpper.EndsWith(".MSG") Or pFilename.ToUpper.EndsWith(".EML")) And (handleType = "|OUTLOOK_MESSAGE|" Or handleType = "|MSGONLY|") Then
CURRENT_FILE_HASH = FILESYSTEM.GetChecksumFromString(pFilename)
Else
CURRENT_FILE_HASH = FILESYSTEM.GetChecksum(pFilename)
End If
End If
Dim oSQL = $"SELECT ADDED_WHO, FORMAT(ADDED_WHEN, 'dd-MM-yyyy HH:mm') AS ADDED_WHEN_STRING FROM TBPMO_DOCRESULT_LIST WHERE FILE_HASH = '{CURRENT_FILE_HASH}' ORDER BY ADDED_WHEN DESC"
LOGGER.Debug($"Inserting File - hash is [{CURRENT_FILE_HASH}]")
Dim oDTCHECK As DataTable = MYDB_ECM.GetDatatable(oSQL)
If Not IsNothing(oDTCHECK) Then
If oDTCHECK.Rows.Count >= 1 Then
LOGGER.Info($"We got a file with the same hash [{CURRENT_FILE_HASH}]")
Dim oUSER = oDTCHECK.Rows(0).Item(0)
Dim oADDED_WHEN = oDTCHECK.Rows(0).Item(1)
Dim oMSG = $"Achtung:" & vbNewLine & "Die Datei wurde bereits nach orgFLOW importiert. Anzahl: " & oDTCHECK.Rows.Count.ToString & vbNewLine &
$"Importiert wann: {oADDED_WHEN}" & vbNewLine &
$"Importiert wer: {oUSER}" & vbNewLine &
"Wollen Sie die Datei dennoch importieren?"
Dim result As MsgBoxResult
result = MessageBox.Show(oMSG, CAPTION_CONFIRMATION, MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If result = MsgBoxResult.No Then
Return False
End If
End If
End If
Dim ins As String = String.Format("INSERT INTO TBPMO_FILES_USER (FILENAME2WORK, USER_WORK,HANDLE_TYPE,FILENAME_ONLY) VALUES ('{0}','{1}','{2}','{3}')", pFilename, USER_USERNAME, handleType, filename_only)
Return MYDB_ECM.ExecuteNonQuery(ins)
Catch ex As Exception
MsgBox("Unexpected Error in Insert file for user (TBPMO_FILES_USER): " & ex.Message, MsgBoxStyle.Critical)
Return False
End Try
End Function
End Class