TaskFlow/app/DD_PM_WINDREAM/ClassInit.vb
2018-05-30 16:31:03 +02:00

200 lines
9.7 KiB
VB.net

Imports System.ComponentModel
Imports DLLLicenseManager
Public Class ClassInit
Private _windreamPM As ClassPMWindream
Public _lizenzManager As ClassLicenseManager
Public Sub New()
End Sub
Public Sub InitLogger()
ClassLogger.Init("", Environment.UserName)
ClassLogger.Add("## ProcessManager für Windream gestartet - " & Now, False)
If LogErrorsOnly = False Then
'Setzt DetailLog zurück
LogErrorsOnly = False = False
My.Settings.Save()
End If
'Throw New Exception("Dummy Fehler!")
End Sub
Public Sub InitUserConfig()
Settings_Load()
End Sub
Public Function InitDatabase()
Dim dbResult As Boolean
If MyConnectionString <> String.Empty Then
dbResult = ClassDatabase.Init()
Else
MsgBox("No Databaseconnection configured. (First Start or Appdata not accessible)" & vbNewLine & "Basic-Config will be loaded.", MsgBoxStyle.Information)
ERROR_STATE = "NO DB-CONNECTION"
frmKonfig.ShowDialog()
dbResult = ClassDatabase.Init()
End If
If dbResult = False Then
ERROR_STATE = "FAILED DBCONNECTION"
MsgBox("Error in init database. (Connection failed) More information in the logfile.", MsgBoxStyle.Critical)
Return False
Else
Return True
End If
End Function
Public Function InitWindream()
Try
' Windream instanziieren
_windreamPM = New ClassPMWindream()
'Windream initialisieren (Connection, Session, ... aufbauen)
Return _windreamPM.Init()
Catch ex As Exception
MsgBox("Fehler bei Initialisieren von windream: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Achtung:")
Return False
End Try
End Function
Sub Refresh_Licence()
Try
Me._lizenzManager = New ClassLicenseManager("#DigitalData35452!#", "")
Dim lic As String = CURRENT_DT_CONFIG.Rows(0).Item("LIZENZEN") ' ClassDatabase.Execute_Scalar("SELECT LIZENZEN FROM TBPM_KONFIGURATION WHERE (GUID = 1)", MyConnectionString)
Dim licString = Me._lizenzManager.DecodeLicenseKey(lic)
Dim split() = licString.ToString.Split("#")
If lic <> "" Then
LICENSE_COUNT = split(0)
Else
LICENSE_COUNT = 0
End If
If CDate(split(1)) <= CDate(Now.ToShortDateString) Then
MsgBox("Ihre Lizenz ist abgelaufen!" & vbNewLine & "Letztes Gültigkeitsdatum: " & split(1) & vbNewLine & "Die Lizenzanzahl wird auf 0 gesetzt" & vbNewLine & "Bitte setzen Sie sich mit Digital Data in Verbindung", MsgBoxStyle.Exclamation)
LICENSE_EXPIRED = True
LICENSE_COUNT = 0
End If
If LogErrorsOnly = False Then ClassLogger.Add(" >> license initialized....", False)
LICENSE_PROFILES = split(2)
Catch ex As Exception
ClassLogger.Add("Unexpected error in Refresh license: " & ex.Message, True)
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Fehler bei Licensemanager:")
End Try
End Sub
Public Sub InitUserLogin()
Try
USER_USERNAME = Environment.UserName
Dim sql = String.Format("SELECT * FROM TBDD_USER WHERE LOWER(USERNAME) = LOWER('{0}')", Environment.UserName)
ClassLogger.Add(">> Username: " & USER_USERNAME, False)
Dim dt As DataTable = ClassDatabase.Return_Datatable(sql)
CURRENT_USER_ID = dt.Rows(0).Item("GUID")
CURRENT_USER_SURNAME = dt.Rows(0).Item("NAME")
CURRENT_USER_PRENAME = dt.Rows(0).Item("PRENAME")
CURRENT_USER_SHORTNAME = dt.Rows(0).Item("SHORTNAME")
CURRENT_USER_EMAIL = dt.Rows(0).Item("EMAIL")
If IsDBNull(CURRENT_USER_ID) Or IsNothing(CURRENT_USER_ID) Then
USER_EXISTS = False
Else
USER_EXISTS = True
End If
If USER_EXISTS = False Then
ClassLogger.Add("User '" & USER_USERNAME & "' not configured in Useradministration! (DBNull)", True)
'MsgBox("Achtung: Sie sind nicht in der Userverwaltung hinterlegt." & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!", MsgBoxStyle.Critical, "Achtung:")
'Me.Close()
ERROR_STATE = "NO USER"
' Throw New Exception("You are not configured in the Useradministration." & vbNewLine & "Please contact the system administrator!")
MsgBox("You are not configured in the Useradministration." & vbNewLine & "Please contact the system administrator!", MsgBoxStyle.Exclamation)
Else
If LogErrorsOnly = False Then ClassLogger.Add(" >> User exists....", False)
'Am System anmelden
Refresh_Licence()
Check_User_Exists_in_PMGroups()
ClassAllgemeineFunktionen.LoginOut("LOGIN")
sql = String.Format("SELECT COUNT(*) AS Expr1 FROM TBDD_USER_MODULE_LOG_IN WHERE UPPER(MODULE) = UPPER('Process-Manager') AND CLIENT_ID = {0}", 1)
USERCOUNT_LOGGED_IN = ClassDatabase.Execute_Scalar(sql, MyConnectionString, True)
If LogErrorsOnly = False Then ClassLogger.Add(" >> Count Users logged in: " & USERCOUNT_LOGGED_IN.ToString, False)
If LICENSE_COUNT < USERCOUNT_LOGGED_IN And LICENSE_EXPIRED = False Then
MsgBox("Die Anzahl der aktuell angemeldeten User (" & USERCOUNT_LOGGED_IN.ToString & ") überschreitet die Anzahl der aktuellen Lizenzen!" & vbNewLine & "Anzahl der Lizenzen: " & LICENSE_COUNT.ToString & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!", MsgBoxStyle.Critical, "Achtung:")
ClassLogger.Add(" >> Die Anzahl der aktuell angemeldeten User (" & USERCOUNT_LOGGED_IN.ToString & ") überschreitet die Anzahl der Lizenzen (" & LICENSE_COUNT & ") für Process Manager!", False)
If USER_IS_ADMIN = False Then
ClassAllgemeineFunktionen.LoginOut("LOGOUT")
ClassLogger.Add(" - Wieder abgemeldet - START INCOMPLETE", False)
ERROR_STATE = "START INCOMPLETE"
End If
End If
'Alles OK bis hierhin...nun die FolderwatchKonfig laden
If LogErrorsOnly = False Then ClassLogger.Add(" >> Init Userlogin successfull completed....", False)
End If
Catch ex As Exception
ClassLogger.Add("Unexpected Error in InitUserLogin: " & ex.Message, True)
ERROR_STATE = "START INCOMPLETE"
End Try
End Sub
Public Shared Sub InitBasics()
Try
Dim sql = String.Format("select * from TBPM_KONFIGURATION WHERE GUID = 1")
CURRENT_DT_CONFIG = ClassDatabase.Return_Datatable(sql)
Catch ex As Exception
ClassLogger.Add("Unexpected Error in InitBasics: " & ex.Message, True)
ERROR_STATE = "Basics not initialized"
End Try
End Sub
Private Function Check_User_Exists_in_Group(ByVal Groupname As String)
Try
Dim sel = String.Format("select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = {0} AND UPPER(T.NAME) = '{1}'", CURRENT_USER_ID, Groupname)
Dim DT As DataTable = ClassDatabase.Return_Datatable(sel)
If Not IsNothing(DT) Then
If DT.Rows.Count = 1 Then
Return True
Else
Return False
End If
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in CheckUserExistsinGroup:")
Return False
End Try
End Function
Private Function Check_User_Exists_in_PMGroups()
Try
Dim sel = String.Format("select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = {0} AND UPPER(T.NAME) = 'PM_USER'", CURRENT_USER_ID)
Dim DT As DataTable = ClassDatabase.Return_Datatable(sel)
If Not IsNothing(DT) Then
If DT.Rows.Count = 1 Then
If LogErrorsOnly = False Then ClassLogger.Add(" >> User is in PM_USER-Group....", False)
USER_IN_MODULE = True
Else
sel = String.Format("select T.* from TBDD_USER_MODULES T WHERE T.USER_ID = {0} AND T.MODULE_ID = 3", CURRENT_USER_ID)
DT = ClassDatabase.Return_Datatable(sel)
If Not IsNothing(DT) Then
If DT.Rows.Count = 1 Then
If LogErrorsOnly = False Then ClassLogger.Add(" >> Singe User-relation defined for user....", False)
USER_IN_MODULE = True
End If
End If
End If
End If
sel = String.Format("select T1.* from TBDD_GROUPS T, TBDD_GROUPS_USER T1 WHERE T.GUID = T1.GROUP_ID AND T1.USER_ID = {0} AND UPPER(T.NAME) = 'PM_ADMINS'", CURRENT_USER_ID)
DT = ClassDatabase.Return_Datatable(sel)
If Not IsNothing(DT) Then
If DT.Rows.Count = 1 Then
If LogErrorsOnly = False Then ClassLogger.Add(" >> User is in PM_ADMINS-Group....", False)
USER_IS_ADMIN = True
USER_IN_MODULE = True
End If
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in Check_User_Exists_in_PMGroups:")
End Try
End Function
End Class