TaskFlow/app/DD_PM_WINDREAM/ClassAllgemeineFunktionen.vb
2022-06-24 13:24:05 +02:00

350 lines
15 KiB
VB.net

Imports System.Data.SqlClient
Imports System.Data.OracleClient
Imports System.IO
Imports WINDREAMLib
Public Class ClassAllgemeineFunktionen
Public Shared Function GUI_LANGUAGE_INFO(pTITLE As String)
Dim oFilteredDatatable As DataTable = BASEDATA_DT_GUI_LANGUAGE_PHRASES.Clone()
Dim oExpression = $"LANGUAGE ='{USER_LANGUAGE}' AND TITLE = '{pTITLE}'"
BASEDATA_DT_GUI_LANGUAGE_PHRASES.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
If oFilteredDatatable.Rows.Count = 1 Then
If oFilteredDatatable.Rows(0).Item("CAPT_TYPE") = "MsgBox" Or oFilteredDatatable.Rows(0).Item("CAPT_TYPE") = "MsgboxResult" Then
Return oFilteredDatatable
Else
If oFilteredDatatable.Rows(0).Item("STRING2") <> String.Empty Then
Return oFilteredDatatable
Else
Return oFilteredDatatable.Rows(0).Item("STRING1")
End If
End If
Else
Return oFilteredDatatable
End If
End Function
Public Shared Function GUI_LANGUAGE_MSGBOX(pTITLE As String)
Dim oFilteredDatatable As DataTable = BASEDATA_DT_GUI_LANGUAGE_PHRASES.Clone()
Dim oExpression = $"LANGUAGE = '{USER_LANGUAGE}' AND TITLE = '{pTITLE}'"
BASEDATA_DT_GUI_LANGUAGE_PHRASES.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
If oFilteredDatatable.Rows.Count = 1 Then
Return oFilteredDatatable.Rows(0)
Else
Return ""
End If
End Function
Public Shared Function LoginOut(LoginorOut As String) As Boolean
Try
If USER_EXISTS = False Then
Return False
End If
Dim oSql As String
If LoginorOut = "LOGIN" Then
oSql = String.Format("INSERT INTO TBDD_USER_MODULE_LOG_IN (USER_ID,CLIENT_ID,MODULE,VERSION_CLIENT,MACHINE_NAME) VALUES ({0},{1},'Process-Manager','{2}','{3}')", USER_ID, 1, My.Application.Info.Version.ToString, Environment.MachineName)
Else
If INACTIVITYRecognized = True Then
oSql = $"UPDATE TBDD_USER_LOGIN_OUT SET COMMENT = 'Inactivity Detected',LOGOUT = GETDATE() WHERE USER_ID = {USER_ID} AND UPPER(MODULE) = UPPER('Process-Manager') AND LOGOUT IS NULL"
If DatabaseFallback.ExecuteNonQueryECM(oSql) = True Then
End If
End If
oSql = $"DELETE FROM TBDD_USER_MODULE_LOG_IN WHERE USER_ID = {USER_ID} AND UPPER(MODULE) = UPPER('Process-Manager')"
End If
If DatabaseFallback.ExecuteNonQueryECM(oSql) = True Then
LOGGER.Debug($"{LoginorOut} of User successfully!")
Return True
Else
LOGGER.Info("User could not be logged in/out....")
Return False
End If
Catch ex As Exception
LOGGER.Error(ex)
LOGGER.Info("Error in LoginOut: " & ex.Message)
Return False
End Try
End Function
Public Function Insert_LogEntry(ERR_MSG As String)
Try
ERR_MSG = ERR_MSG.Replace("'", "''")
Dim insert As String = $"INSERT INTO TBPM_LOG_DEBUG (USERID, LOGMSG) VALUES ({USER_ID},'{ERR_MSG}')"
If ExecuteonMSSQL(insert, CONNECTION_STRING_ECM) <> "" Then
LOGGER.Warn("...Eintrag in Log-Tabelle konnte nicht erstellt werden!!", True)
End If
Catch ex As Exception
LOGGER.Error(ex)
LOGGER.Info("Error in Insert_LogEntry: " & ex.Message)
End Try
End Function
Public Function ExecuteonMSSQL(ByVal sqlcommand As String, ConString As String)
Try
' die nötigen Variablen definieren
Dim Connection As SqlConnection
Dim Command As SqlCommand = Nothing
Dim DataAdapter As SqlDataAdapter = Nothing
' ConnectionString aufbauen (aus Settings auslesen)
Connection = New SqlConnection(ConString)
' Verbindung zur Datenbank aufbauen
Try
Connection.Open()
Catch ex As Exception
LOGGER.Error(ex)
' DB-Connection schliessen
Me.CloseMssqlDb(Connection)
LOGGER.Debug("ExecuteonMSSQL.Connection definieren - Error: " & ex.Message, True)
Return "ExecuteonMSSQL.Connection definieren - Error: " & ex.Message
End Try
' SQL-Abfrage definieren
Try
Command = New SqlCommand(sqlcommand, Connection)
Catch ex As Exception
LOGGER.Error(ex)
LOGGER.Debug("ExecuteonMSSQL.sqlcommand definieren - Error: " & ex.Message, True)
' DB-Connection schliessen
Me.CloseMssqlDb(Connection)
Return "ExecuteonMSSQL.sqlcommand definieren - Error: " & ex.Message
End Try
' *** Ausführen des Command ***
If Command IsNot Nothing Then
Try
Command.ExecuteNonQuery()
' DB-Connection schliessen
Me.CloseMssqlDb(Connection)
Return ""
Catch ex As Exception
LOGGER.Error(ex)
'bei einem Fehler einen Eintrag in der Logdatei erzeugen
LOGGER.Info("ExecuteonMSSQL.Execute Command - Error: " & ex.Message, True)
LOGGER.Info("Command-Befehl: " & Command.CommandText, True)
' DB-Connection schliessen
Me.CloseMssqlDb(Connection)
Return "ExecuteonMSSQL.Execute Command - Error: " & ex.Message
End Try
Else
' kann eintreten, wenn entweder die SQL-Anweisung falsch ist oder wenn die DataConnection nicht richtig aufgebaut werden konnte
' Eintrag in Logdatei machen
LOGGER.Info("ExecuteonMSSQL.SQL-Command ist ungültig. Command-Objekt konnte nicht erstellt werden")
Return "ExecuteonMSSQL.SQL-Command ist ungültig. Command-Objekt konnte nicht erstellt werden"
End If
Catch ex As Exception
LOGGER.Error(ex)
' an dieser Stelle sollte jeder unvorhergesehene Fehler der Funktion abgefangen werden
LOGGER.Info("ExecuteonMSSQL.Ein unbekannter Fehler in ExecuteonMSSQL - Error: " & ex.Message, True)
Return "ExecuteonMSSQL.Ein unbekannter Fehler in ExecuteonMSSQL - Error: " & ex.Message
End Try
End Function
Private Sub CloseMssqlDb(ByRef Connection As SqlConnection)
' wenn eine Datenbank-Connection aufgebaut ist
If Connection IsNot Nothing Then
' diese schliessen
Connection.Close()
Connection = Nothing
End If
End Sub
'Public Function Delete_xffres(originFile As String, clsWD As ClassWindream_allgemein)
' Try
' Dim Stammname As String = System.IO.Path.GetFileNameWithoutExtension(originFile)
' Dim Path As String = System.IO.Path.GetDirectoryName(originFile)
' Dim xffres As String = Path & "\" & Stammname & ".xffres"
' If file_exists(xffres, clsWD) = True Then
' System.IO.File.Delete(xffres)
' LOGGER.Info("Datei " & xffres & " erfolgreich gelöscht")
' Return True
' Else
' Return Nothing
' End If
' Catch ex As Exception
' LOGGER.Error(ex)
' LOGGER.Info(" Fehler bei Delete_xffres", True)
' LOGGER.Info("Fehlermeldung: " & ex.Message)
' End Try
'End Function
'Public Function Delete_File(originFile As String)
' Try
' If file_exists(originFile, False) = True Then
' System.IO.File.Delete(originFile)
' LOGGER.Info("Manuelles Löschen: Datei " & originFile & " erfolgreich gelöscht", False)
' Return True
' Else
' MsgBox("Die Datei konnte nicht gelsöcht werden. File NOT EXISTS", MsgBoxStyle.Exclamation)
' Return False
' End If
' Catch ex As Exception
' LOGGER.Info(" Fehler bei Delete_File", True)
' LOGGER.Info("Fehlermeldung: " & ex.Message)
' End Try
'End Function
Public Function Move2Folder(ByVal vMove_File As String, ByVal vZiel_Pfad As String, Profile_ID As Integer, clsWD As ClassWindream_allgemein)
Try
Dim extension As String = IO.Path.GetExtension(vMove_File)
Dim Filename As String = IO.Path.GetFileName(vMove_File)
Dim path As String = IO.Path.GetDirectoryName(vMove_File)
Dim _Ziel As String
_Ziel = vZiel_Pfad & "\" & Filename
Dim version As Integer = 1
If vZiel_Pfad <> path Then
Dim Stammname As String = IO.Path.GetFileNameWithoutExtension(vMove_File)
Do While Check_File_exists(_Ziel, clsWD) = True
Dim neuername As String = Stammname & "~" & version & extension
_Ziel = neuername
version += 1
Loop
My.Computer.FileSystem.MoveFile(vMove_File, _Ziel)
LOGGER.Info("Datei erfolgreich verschoben - Ziel: " & _Ziel)
Else
LOGGER.Info("Ziel und Quellpfad sind identisch!")
End If
Return ""
Catch ex As Exception
LOGGER.Error(ex)
LOGGER.Info("Fehler bei Move2Folder", True)
LOGGER.Info("Fehlermeldung")
LOGGER.Info(ex.Message)
Insert_LogEntry($"ERROR {ex.Message}")
Return ex.Message
End Try
End Function
Public Function Check_File_exists(ByVal _file As String, clsWD As ClassWindream_allgemein)
Try
Return clsWD.CheckFileExists(_file)
Catch ex As Exception
LOGGER.Error(ex)
LOGGER.Info("Fehler in Funktion file_exists - Fehler: ", ex.Message)
Return False
End Try
End Function
Public Function CheckValue_Exists(sqlbefehl As String, Replace_value As String, Check_value As String, Typ As String, connString As String, profilid As Integer)
Try
Dim sql As String
Dim CONNTYPE As String
If connString <> "" Then
If connString.StartsWith("%MS") Then
CONNTYPE = "MS-SQL"
connString = connString.Replace("%MS", "")
ElseIf connString.StartsWith("%OR") Then
CONNTYPE = "ORACLE"
connString = connString.Replace("%OR", "")
End If
Dim sqlscalar = sqlbefehl
Select Case Typ
Case "INTEGER"
'@manValue
sqlscalar = sqlscalar.ToString.Replace(Replace_value, Check_value)
Case Else
sqlscalar = sqlscalar.ToString.Replace(Replace_value, "'" & Check_value & "'")
End Select
sql = sqlscalar
Dim ergebnis As Integer
If CONNTYPE = "ORACLE" Then
ergebnis = Execute_Scalar_Oracle(sql, connString, True)
Else
ergebnis = Execute_Scalar_SQLServer(sql, connString, True)
End If
Select Case ergebnis
Case 1
Return True
Case Else
Return False
End Select
End If
Catch ex As Exception
LOGGER.Error(ex)
MsgBox("Fehler:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler bei checkValue_Exists:")
LOGGER.Info(" - Unvorhergesehener Fehler bei checkValue_Exists - Fehler: " & vbNewLine & ex.Message)
Return False
End Try
End Function
Function Execute_Scalar_SQLServer(vsql_statement As String, vconnectionString As String, check As Boolean)
Try
Dim cnn As SqlConnection
cnn = New SqlConnection(vconnectionString)
Dim cmd As SqlCommand
cnn.Open()
cmd = New SqlCommand(vsql_statement, cnn)
If check = True Then
'ERgebnis muss immer 1 oder mehr ergeben
Dim count As Int32 = Convert.ToInt32(cmd.ExecuteScalar())
If count = 1 Then
cmd.Dispose()
cnn.Close()
Return 1
Else
cmd.Dispose()
cnn.Close()
Return 2
End If
Else
'Ergebnis
Dim ergebnis As String = cmd.ExecuteScalar()
Return ergebnis
End If
Catch ex As Exception
LOGGER.Error(ex)
MsgBox("Unvorhergesehener Fehler bei Execute_Scalar_SQLServer" & vbNewLine & "Automatischer Index (j/n): " & check.ToString & vbNewLine & "Fehler:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler bei Ausführen sql:")
Insert_LogEntry($"ERROR Execute_Scalar_SQLServer{ex.Message}")
LOGGER.Info(" - Unvorhergesehener Fehler bei Execute_Scalar_SQLServer" & vbNewLine & "Automatischer Index (j/n): " & check.ToString & vbNewLine & "Fehler: " & vbNewLine & ex.Message)
LOGGER.Info(" - SQL: " & vsql_statement)
LOGGER.Info(" - Connection: " & vconnectionString)
Return 99
End Try
End Function
Function Execute_Scalar_Oracle(vsql_statement As String, vconnectionString As String, check As Boolean)
Try
Dim cnn As System.Data.OleDb.OleDbConnection
cnn = New System.Data.OleDb.OleDbConnection(vconnectionString)
Dim cmd As System.Data.OleDb.OleDbCommand
cnn.Open()
cmd = New System.Data.OleDb.OleDbCommand(vsql_statement, cnn)
If check = True Then
'Ergebnis muss immer 1 oder mehr ergeben
Dim count As Int32 = Convert.ToInt32(cmd.ExecuteScalar())
If count = 1 Then
Return 1
Else
Return 2
End If
Else
'Ergebnis
Dim ergebnis As String = cmd.ExecuteScalar()
Return ergebnis
End If
cmd.Dispose()
cnn.Close()
Catch ex As Exception
LOGGER.Error(ex)
MsgBox("Unvorhergesehener Fehler bei Execute_Scalar_Oracle" & vbNewLine & "Automatischer Index (j/n): " & check.ToString & vbNewLine & "Fehler:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler bei Ausführen sql:")
Insert_LogEntry($"ERROR Execute_Scalar_Oracle{ex.Message}")
LOGGER.Info(" - Unvorhergesehener Fehler bei Execute_Scalar_Oracle" & vbNewLine & "Automatischer Index (j/n): " & check.ToString & vbNewLine & "Fehler: " & vbNewLine & ex.Message)
LOGGER.Info(" - SQL: " & vsql_statement)
LOGGER.Info(" - Connection: " & vconnectionString)
Return 99
End Try
End Function
End Class