Imports System.IO
Imports System.Globalization
Public Class ClassHelper
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
ClassLogger.Add("Unexpected Error while converting value '" & input & "' to date....." & ex.Message, False)
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 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
ClassLogger.Add("File " & filename & " inuse or not able to open - message: " & ex.Message, True)
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
ClassLogger.Add(" - Error in versioning file - error: " & vbNewLine & ex.Message)
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in versioning file:")
Return ""
End Try
End Function
''
''' Ersetzt alle nicht zulässigen Zeichen im angegebenen Dateinamen
'''
''' Dateiname ohne Pfadangabe
''' Ersatzzeichen für alle unzulässigen Zeichen
''' im Dateinamen
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 Sub File_open(RESULT_DOC_PATH As Object, DocID As String)
Try
If RESULT_DOC_PATH <> Nothing Then
If USER_GENERAL_VIEWER = "NONE" 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 UPPER(FILE_EXTENSION) = UPPER('{1}')", USER_GUID, EXT)
Dim DT As DataTable = ClassDatabase.Return_Datatable(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)
End If
Else
Select Case USER_GENERAL_VIEWER
Case "DOC-VIEW"
OPEN_DOCVIEW(RESULT_DOC_PATH, DocID)
End Select
End If
Else
If LogErrorsOnly = False Then ClassLogger.Add(" >> 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)
ClassLogger.Add("Error in File_open: " & ex.Message & vbNewLine & " - Path: " & RESULT_DOC_PATH & " - DocID: " & DocID, True)
End Try
End Sub
Public Shared Sub OPEN_DOCVIEW(Doc_Path As String, DocID As Integer)
Try
Dim DocView
DocView = Nothing
DocView = CreateObject("WMPViewXNG.Viewer")
' open the viewer
Dim viewer_string = Doc_Path.Substring(2)
DocView.ViewFile(viewer_string)
CURRENT_DOCVIEW_PATH = viewer_string
CURRENT_DOCVIEW = DocView
Catch ex As Exception
MsgBox("Unexpected Error in DocView Open:" & vbNewLine & ex.Message & vbNewLine & Doc_Path & vbNewLine & "DocID: " & DocID, MsgBoxStyle.Critical)
ClassLogger.Add("Error in DocView Open: " & ex.Message & vbNewLine & " - Path: " & Doc_Path & " - DocID: " & DocID, True)
File_SYSOPEN(Doc_Path, DocID)
End Try
End Sub
Private Shared Sub File_SYSOPEN(RESULT_DOC_PATH As Object, DocID As String)
Try
If RESULT_DOC_PATH <> Nothing Then
If System.IO.File.Exists(RESULT_DOC_PATH) = True Then
Process.Start(RESULT_DOC_PATH)
Else
MsgBox("File Does Not Exist!", MsgBoxStyle.Exclamation)
End If
End If
Catch ex As Exception
MsgBox("Unexpected Error in File_SYSOPEN:" & vbNewLine & ex.Message & vbNewLine & RESULT_DOC_PATH & vbNewLine & "DocID: " & DocID, MsgBoxStyle.Critical)
ClassLogger.Add("Error in File_SYSOPEN: " & ex.Message & vbNewLine & " - Path: " & RESULT_DOC_PATH & " - DocID: " & DocID, True)
End Try
End Sub
Shared Function Convert_Date_2_Form_Format(p1 As Date) As Date
Throw New NotImplementedException
End Function
Public Shared Function Return_listcheck(ENTITY_ID As Integer)
Try
Dim listcheck As New List(Of String)
' Alle Checkboxen für aktuelle Ansicht heraussuchen
Dim sqlcheck As String = "SELECT COL_NAME FROM TBPMO_CONTROL WHERE CONTROL_TYPE_ID in (10,11) AND SHOW_COLUMN = 1 AND FORM_ID = " & ENTITY_ID
Dim dtcheck As DataTable = ClassDatabase.Return_Datatable(sqlcheck)
'Liste von allen Spaltentiteln mit Checkbox erstellen
If dtcheck.Rows.Count > 0 Then
For Each row As DataRow In dtcheck.Rows
listcheck.Add(row.Item(0))
Next
End If
Return listcheck
Catch ex As Exception
ClassLogger.Add("Unexpected Error in Return_listcheck: " & ex.Message, True)
Return Nothing
End Try
End Function
Public Shared Function Return_listdate(ENTITY_ID As Integer)
Try
Dim listdate As New List(Of String)
' Alle Checkboxen für aktuelle Ansicht heraussuchen
Dim sqlcheck As String = "SELECT COL_NAME FROM TBPMO_CONTROL WHERE CONTROL_TYPE_ID = 4 AND SHOW_COLUMN = 1 AND FORM_ID = " & ENTITY_ID
Dim dtdate As DataTable = ClassDatabase.Return_Datatable(sqlcheck)
'Liste von allen Spaltentiteln mit Checkbox erstellen
If dtdate.Rows.Count > 0 Then
For Each row As DataRow In dtdate.Rows
listdate.Add(row.Item(0))
Next
End If
Return listdate
Catch ex As Exception
ClassLogger.Add("Unexpected Error in Return_listdate: " & ex.Message, True)
Return Nothing
End Try
End Function
Public Shared Function Format_GridColumns(Primary_DT As DataTable, _ENTITYSQL As String, listcheck As List(Of String), listdate As List(Of String))
Try
Dim tbltemp As DataTable = Primary_DT.Clone()
For Each col As String In listdate
Dim colDate As DataColumn = tbltemp.Columns(col)
If Not IsNothing(colDate) Then
Try
colDate.DataType = GetType(Date)
Catch ex As Exception
End Try
End If
Next
For Each col1 As String In listcheck
Dim collist As DataColumn = tbltemp.Columns(col1)
If Not IsNothing(collist) Then
collist.DataType = GetType(Boolean)
End If
Next
Try
tbltemp.Load(Primary_DT.CreateDataReader)
Return tbltemp
Catch ex As Exception
ClassLogger.Add(">> Attention: Format_GridColumns - Could not load converted datatable: " & ex.Message, False)
'Tabelle wird ohne Datekonvertierung geladen
Dim DTEntity As DataTable = ClassDatabase.Return_Datatable(_ENTITYSQL, "Load_Entity_Data_Only")
Dim primaryKey(1) As DataColumn
primaryKey(0) = DTEntity.Columns("Record-ID")
DTEntity.PrimaryKey = primaryKey
Return DTEntity
End Try
Catch ex As Exception
MsgBox("Unexpected Error in Format_GridColumns:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
ClassLogger.Add("Error in Format_GridColumns: " & ex.Message, True)
Return Nothing
End Try
End Function
Public Shared Function InsertEssential_Log(REFERENCE_KEY As Integer, REFERENCE_STRING As String, COMMENT As String)
Try
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, Environment.UserName)
Return ClassDatabase.Execute_non_Query(insert)
Catch ex As Exception
ClassLogger.Add("Unexpected Error in InsertEssential_Log: " & ex.Message, True)
Return False
End Try
End Function
Public Shared Function DeleteRecord(ByVal SELECTED_RECORD_ID)
Try
Dim DeleteRecordSQL = String.Format("EXEC [dbo].[PRPMO_DELETE_RECORD] {0}, '{1}'", SELECTED_RECORD_ID, Environment.UserName)
Dim result As Boolean = ClassDatabase.Execute_non_Query_withConn(DeleteRecordSQL, 1)
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
Return result
Catch ex As Exception
ClassLogger.Add("Unexpected Error in DeleteRecord: " & ex.Message, True)
Return False
End Try
End Function
End Class