2016-08-18 14:38:10 +02:00

257 lines
12 KiB
VB.net

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
'' <summary>
''' Ersetzt alle nicht zulässigen Zeichen im angegebenen Dateinamen
''' </summary>
''' <param name="sFilename">Dateiname ohne Pfadangabe</param>
''' <param name="sChar">Ersatzzeichen für alle unzulässigen Zeichen
''' im Dateinamen</param>
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
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"
Try
Dim DocView
DocView = Nothing
DocView = CreateObject("WMPViewXNG.Viewer")
' open the viewer
Dim viewer_string = RESULT_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 & RESULT_DOC_PATH & vbNewLine & "DocID: " & DocID, MsgBoxStyle.Critical)
ClassLogger.Add("Error in DocView Open: " & ex.Message & vbNewLine & " - Path: " & RESULT_DOC_PATH & " - DocID: " & DocID, True)
File_SYSOPEN(RESULT_DOC_PATH, DocID)
End Try
End Select
Else
File_SYSOPEN(RESULT_DOC_PATH, DocID)
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
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
colDate.DataType = GetType(Date)
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: 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)
Return ClassDatabase.Execute_non_Query_withConn(DeleteRecordSQL, 1)
Catch ex As Exception
ClassLogger.Add("Unexpected Error in DeleteRecord: " & ex.Message, True)
Return False
End Try
End Function
End Class