MS ClassUpdate entfernt

This commit is contained in:
2023-11-15 15:09:39 +01:00
parent fc87dc05a9
commit 5ae2d466d0
10 changed files with 297 additions and 695 deletions

View File

@@ -1,5 +1,6 @@
Imports System.IO
Imports DD_LIB_Standards
Imports DevExpress.DataAccess.Native
Imports DigitalData.Modules.Config
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
@@ -22,7 +23,6 @@ Public Class ClassInit
Dim oStartupPath = Application.StartupPath
' If AppConfig from Startup Path should be forced, rewrite the common app data path
If My.Settings.UseAppConfigConString = True Then
' UserAppDataPath = StartupPath
oCommonAppDataPath = oStartupPath
End If
@@ -183,7 +183,7 @@ Public Class ClassInit
WMPATH_PREFIX = KONFIG_DT.Rows(0).Item("WMPATH_PREFIX")
If Not WMPATH_PREFIX.ToUpper.StartsWith("\\WINDREAM\OBJECTS") Then
SHARE_DRIVE_ACTIVE = True
LOGGER.Info("WM SHARE_DRIVE via TBPMO_KONFIGURATION is active")
LOGGER.Info($"WM SHARE_DRIVE [{WMPATH_PREFIX}] via TBPMO_KONFIGURATION is active")
End If
End If
@@ -234,18 +234,18 @@ Public Class ClassInit
Public Shared Function InitUserLogin(Optional _User As String = "")
Try
Dim oMODULE_ACCES As Boolean = False
If _User = "" Then
USER_USERNAME = Environment.UserName
Else
USER_USERNAME = _User
End If
Dim sql = String.Format("SELECT T.*, T1.IS_ADMIN FROM TBDD_USER T INNER JOIN TBDD_USER_MODULES T1 ON T.GUID = T1.USER_ID INNER JOIN TBDD_MODULES T2 ON T1.MODULE_ID = T2.GUID
WHERE (USERNAME = '{0}') AND T2.SHORT_NAME = 'ADDI'", USER_USERNAME)
Dim oFNSQL = String.Format("SELECT * FROM [dbo].[FNDD_LOGIN_USER_MODULE] ('{0}','ORGFLOW',{1})", USER_USERNAME, CLIENT_SELECTED)
Dim DT_CHECKUSER_MODULE As DataTable
LOGGER.Info("Login at: " & Now.ToString)
LOGGER.Info("Username: " & USER_USERNAME)
Dim USER_DT As DataTable = MYDB_ECM.GetDatatable(sql)
Dim USER_DT As DataTable = MYDB_ECM.GetDatatable(oFNSQL)
If USER_DT.Rows.Count = 0 Then
LOGGER.Warn(" - User '" & USER_USERNAME & "' not listed in Useradministration!")
@@ -254,168 +254,186 @@ WHERE (USERNAME = '{0}') AND T2.SHORT_NAME = 'ADDI'", USER_USERNAME)
ClassHelper.InsertEssential_Log(0, "USER-ID", String.Format("User '{0}' not listed in Userconfiguration", USER_USERNAME))
Return False
Else
Dim Right_RO As Boolean = False
USER_GUID = USER_DT.Rows(0).Item("GUID")
USERID_FK_INT_ECM = USER_DT.Rows(0).Item("USERID_FK_INT_ECM")
USER_WAN = USER_DT.Rows(0).Item("WAN_ENVIRONMENT")
USER_LANGUAGE = USER_DT.Rows(0).Item("LANGUAGE")
clsCURRENT.USER_LANGUAGE = USER_LANGUAGE
USER_DATE_FORMAT = USER_DT.Rows(0).Item("DATE_FORMAT")
USER_GENERAL_VIEWER = USER_DT.Rows(0).Item("GENERAL_VIEWER")
Right_RO = True
USER_GUID = USER_DT.Rows(0).Item("USER_ID")
Try
If CBool(USER_DT.Rows(0).Item("PMO_READ_ONLY")) = True Then
WM_READ_ONLY = True
LOGGER.Info("WINDREAM IS CONFIGURED READ ONLY!!")
End If
USERID_FK_INT_ECM = USER_DT.Rows(0).Item("USERID_FK_INT_ECM")
Catch ex As Exception
USERID_FK_INT_ECM = 0
End Try
USER_LANGUAGE = USER_DT.Rows(0).Item("USER_LANGUAGE")
clsCURRENT.USER_LANGUAGE = USER_LANGUAGE
USER_DATE_FORMAT = USER_DT.Rows(0).Item("USER_DATE_FORMAT")
oMODULE_ACCES = USER_DT.Rows(0).Item("MODULE_ACCESS")
Dim oWORKING_MODE = USER_DT.Rows(0).Item("WORKING_MODE")
Dim oSplitWorkMode As String() = oWORKING_MODE.Split("#")
If Right_RO = False Then
LOGGER.Warn("User '" & USER_USERNAME & "' not authorized for using OrgFlow!")
'MsgBox("Achtung: Sie sind nicht für die Nutzung dieses Moduls freigeschaltet." & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!", MsgBoxStyle.Critical, "Achtung:")
Dim msg = String.Format("Sie sind nicht für die Nutzung dieses Moduls freigeschaltet." & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!")
' Use For Each loop over words and display them.
Dim oMode As String
For Each oMode In oSplitWorkMode
LOGGER.Debug($"oWorkingMode Parameter: {oMode}")
If USER_LANGUAGE <> "de-DE" Then
msg = String.Format("You are not authorized for using this module." & vbNewLine & "Please contact the admin.")
End If
MsgBox(msg, MsgBoxStyle.Exclamation)
Return False
'Me.Close()
Else
sql = String.Format("select * from TBPMO_RIGHT_USER WHERE USER_ID = " & USER_GUID)
CURRENT_TBPMO_RIGHT_USER = MYDB_ECM.GetDatatable(sql)
Init_CONN_SWITCH()
DT_CLIENT_USER = MYDB_ECM.GetDatatable("SELECT T.*, T1.LICENSE_PMO, T1.CLIENT_NAME FROM TBDD_CLIENT_USER T,TBDD_CLIENT T1 WHERE T.CLIENT_ID = T1.GUID AND T.USER_ID = " & USER_GUID)
If DT_CLIENT_USER.Rows.Count > 1 Then
frmClientLogin.ShowDialog()
ElseIf DT_CLIENT_USER.Rows.Count = 1 Then
CLIENT_SELECTED = DT_CLIENT_USER.Rows(0).Item("CLIENT_ID")
End If
If CLIENT_SELECTED = 99 Then
Dim msg = String.Format("Die Mandantenanmeldung war nicht möglich." & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!")
If USER_LANGUAGE <> "de-DE" Then
msg = String.Format("The client-login was not possible." & vbNewLine & "Please contact the admin.")
If oMode.StartsWith("WMMODE") Then
WorkMode_WMMODE = oMode.Replace("WMMODE=", "")
If WorkMode_WMMODE = "READ" Then
WM_READ_ONLY = True
LOGGER.Info("WINDREAM IS CONFIGURED READ ONLY FOR USER!")
End If
MsgBox(msg, MsgBoxStyle.Exclamation)
Return False
End If
'Am System anmelden
ClassLicence.Refresh_Licence(CLIENT_SELECTED)
'Am System anmelden
'sql = String.Format("UPDATE TBDD_USER SET LOGGED_IN = 1, LOGGED_WHERE = '{0}' WHERE GUID = {1}", Environment.MachineName, USER_GUID)
MYDB_ECM.ExecuteNonQuery(sql)
sql = "DELETE FROM TBDD_USER_MODULE_LOG_IN WHERE USER_ID = " & USER_GUID & " AND UPPER(MODULE)= UPPER('Record-Organizer')"
If MYDB_ECM.ExecuteNonQuery(sql) = True Then
End If
Dim ConStringMain As String
If clsDatabase.DB_PROXY_INITIALIZED = True Then
ConStringMain = "PROXY: " & ClassProxy.MyPROXYConnectionString & " # MAIN: " & MyConnectionString
Else
ConStringMain = "Main: " & MyConnectionString
End If
sql = String.Format("INSERT INTO TBDD_USER_MODULE_LOG_IN (USER_ID,CLIENT_ID,MODULE,VERSION_CLIENT,MACHINE_NAME,CONNECTION_STRING) VALUES ({0},{1},'Record-Organizer','{2}','{3}','{4}')", USER_GUID, CLIENT_SELECTED, My.Application.Info.Version.ToString, Environment.MachineName, ConStringMain)
MYDB_ECM.ExecuteNonQuery(sql)
USER_IS_ADMIN = USER_DT.Rows(0).Item("IS_ADMIN") 'vorher RECORD_ADMIN
If USER_IS_ADMIN = True Then
If ESC_Hidden = True Then
frmLoginUserSelect.ShowDialog()
ESC_Hidden = False
If USER_USERNAME <> "" Then
InitUserLogin(USER_USERNAME)
End If
ElseIf oMode.StartsWith("WM_PRAEFIX") Then
WMPATH_PREFIX = oMode.Replace("WM_PRAEFIX=", "")
If Not WMPATH_PREFIX.ToUpper.StartsWith("\\WINDREAM\OBJECTS") Then
SHARE_DRIVE_ACTIVE = True
LOGGER.Info($"WM SHARE_DRIVE [{WMPATH_PREFIX}] via WORKING_MODE is active")
End If
Else
If oMode <> "0" Then
LOGGER.Info($"Wrong oMode: {oMode}")
End If
End If
Next
If SHARE_DRIVE_ACTIVE = True And Len(oWORKING_MODE) = 0 Then
LOGGER.Info("WINDREAM IS CONFIGURED READ ONLY AS No Workmode was configured and Sharedrive is active!")
WM_READ_ONLY = True
End If
End If
If oMODULE_ACCES = False Then
LOGGER.Warn("User '" & USER_USERNAME & "' not authorized for using OrgFlow!")
'MsgBox("Achtung: Sie sind nicht für die Nutzung dieses Moduls freigeschaltet." & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!", MsgBoxStyle.Critical, "Achtung:")
Dim msg = String.Format("Sie sind nicht für die Nutzung dieses Moduls freigeschaltet." & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!")
If USER_LANGUAGE <> "de-DE" Then
msg = String.Format("You are not authorized for using this module." & vbNewLine & "Please contact the admin.")
End If
MsgBox(msg, MsgBoxStyle.Exclamation)
Return False
End If
'Me.Close()
oFNSQL = String.Format("select * from TBPMO_RIGHT_USER WHERE USER_ID = " & USER_GUID)
CURRENT_TBPMO_RIGHT_USER = MYDB_ECM.GetDatatable(oFNSQL)
Init_CONN_SWITCH()
DT_CLIENT_USER = MYDB_ECM.GetDatatable("SELECT T.*, T1.LICENSE_PMO, T1.CLIENT_NAME FROM TBDD_CLIENT_USER T,TBDD_CLIENT T1 WHERE T.CLIENT_ID = T1.GUID AND T.USER_ID = " & USER_GUID)
If DT_CLIENT_USER.Rows.Count > 1 Then
frmClientLogin.ShowDialog()
ElseIf DT_CLIENT_USER.Rows.Count = 1 Then
CLIENT_SELECTED = DT_CLIENT_USER.Rows(0).Item("CLIENT_ID")
End If
If CLIENT_SELECTED = 99 Then
Dim msg = String.Format("Die Mandantenanmeldung war nicht möglich." & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!")
If USER_LANGUAGE <> "de-DE" Then
msg = String.Format("The client-login was not possible." & vbNewLine & "Please contact the admin.")
End If
MsgBox(msg, MsgBoxStyle.Exclamation)
Return False
End If
'Am System anmelden
ClassLicence.Refresh_Licence(CLIENT_SELECTED)
'Am System anmelden
'sql = String.Format("UPDATE TBDD_USER SET LOGGED_IN = 1, LOGGED_WHERE = '{0}' WHERE GUID = {1}", Environment.MachineName, USER_GUID)
MYDB_ECM.ExecuteNonQuery(oFNSQL)
oFNSQL = "DELETE FROM TBDD_USER_MODULE_LOG_IN WHERE USER_ID = " & USER_GUID & " AND UPPER(MODULE)= UPPER('Record-Organizer')"
If MYDB_ECM.ExecuteNonQuery(oFNSQL) = True Then
End If
Dim ConStringMain As String
If clsDatabase.DB_PROXY_INITIALIZED = True Then
ConStringMain = "PROXY: " & ClassProxy.MyPROXYConnectionString & " # MAIN: " & MyConnectionString
Else
ConStringMain = "Main: " & MyConnectionString
End If
oFNSQL = String.Format("INSERT INTO TBDD_USER_MODULE_LOG_IN (USER_ID,CLIENT_ID,MODULE,VERSION_CLIENT,MACHINE_NAME,CONNECTION_STRING) VALUES ({0},{1},'Record-Organizer','{2}','{3}','{4}')", USER_GUID, CLIENT_SELECTED, My.Application.Info.Version.ToString, Environment.MachineName, ConStringMain)
MYDB_ECM.ExecuteNonQuery(oFNSQL)
USER_IS_ADMIN = USER_DT.Rows(0).Item("IS_ADMIN") 'vorher RECORD_ADMIN
If USER_IS_ADMIN = True Then
If ESC_Hidden = True Then
frmLoginUserSelect.ShowDialog()
ESC_Hidden = False
If USER_USERNAME <> "" Then
InitUserLogin(USER_USERNAME)
End If
End If
End If
Try
If WM_READ_ONLY = False Then
Try
If WM_READ_ONLY = True Then
If SHARE_DRIVE_ACTIVE = True Then
LOGGER.Info($"SHAREDRIVE IS ACTIVE = {SHARE_DRIVE_ACTIVE.ToString}")
WM_READ_ONLY = True
End If
Else
Try
WMMOD = New DigitalData.Modules.Windream.Windream(LOGCONFIG, False, WMDriveLetter, WMPATH_PREFIX, True, "", "", "", "")
If IsNothing(WMMOD) Then
MsgBox("No windream connectable", MsgBoxStyle.Exclamation)
End If
Catch ex As Exception
LOGGER.Warn("Could not create the login for DigitalData.Modules.Windream.Windream!")
End Try
If clsWindream.Create_Session = False Then
LOGGER.Warn("Could not create the login for windream - No session created!")
ClassHelper.MSGBOX_Handler("ERROR", "windream-login Error:", "Could not create the login/session!", "OrgFlow will start anyway but be aware that searching and importing won't be possible!")
End If
WMMOD = New DigitalData.Modules.Windream.Windream(LOGCONFIG, False, WMDriveLetter, WMPATH_PREFIX, True, "", "", "", "")
If IsNothing(WMMOD) Then
MsgBox("Could not connect to windream! Check Your configuration", MsgBoxStyle.Exclamation)
End If
Catch ex As Exception
LOGGER.Warn("Unexpected Error in clswindream.Init: " & ex.Message)
MsgBox("Unexpected Error in Creating windream-Session: " & ex.Message & vbNewLine & "Please inform Your sysadmin!", MsgBoxStyle.Critical)
LOGGER.Error(ex)
LOGGER.Warn("Could not create the login for DigitalData.Modules.Windream.Windream! Setting WM_READ_ONLY = True")
WM_READ_ONLY = True
End Try
sql = String.Format("SELECT COUNT(*) AS Expr1 FROM TBDD_USER_MODULE_LOG_IN WHERE UPPER(MODULE) = UPPER('Record-Organizer') AND CLIENT_ID = {0}", CLIENT_SELECTED)
Dim anzahl = MYDB_ECM.GetScalarValue(sql)
USERS_LOGGED_IN = CInt(anzahl)
LOGGER.Info("User# logged in: " & anzahl.ToString)
LOGGER.Info("LICENSE_COUNT: " & LICENSE_COUNT.ToString)
'####
If LICENSE_COUNT <= (USERS_LOGGED_IN + 1) And LICENSE_EXPIRED = False Then
Dim msg = String.Format("Die Anzahl der aktuell angemeldeten User (" & USERS_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!")
If USER_LANGUAGE <> "de-DE" Then
msg = String.Format("The number of logged Users (" & USERS_LOGGED_IN.ToString & ") exceeds the number of licenses." & vbNewLine &
"Number of licenses: " & LICENSE_COUNT.ToString & vbNewLine & "Please contact Your admin!")
End If
MsgBox(msg, MsgBoxStyle.Exclamation)
LOGGER.Warn("The number of logged Users (" & USERS_LOGGED_IN.ToString & ") exceeds the number of licenses (" & LICENSE_COUNT & ") ")
If USER_IS_ADMIN = False Then
'Anmeldung wieder herausnehmen
sql = "DELETE FROM TBDD_USER_MODULE_LOG_IN WHERE USER_ID = " & USER_GUID & " AND MODULE= 'Record-Organizer'"
MYDB_ECM.ExecuteNonQuery(sql)
LOGGER.Warn(" - logged out the user")
Return False
End If
Else
Try
'Die FolderWatch starten
Dim sql1 = "SELECT FOLDER_PATH FROM TBPMO_FOLDERWATCH_USER WHERE FOLDER_TYPE = 'SCAN' AND USER_ID = " & USER_GUID
Dim folderwatch_SCAN = MYDB_ECM.GetScalarValue(sql1)
If Not folderwatch_SCAN Is Nothing Then
CURRENT_SCAN_FOLDERWATCH = folderwatch_SCAN
If FWSCAN_started = True Then
ClassFolderWatcher.StartStop_FolderWatchSCAN()
End If
End If
Catch ex As Exception
LOGGER.Warn("Unexpected Error in Init_Folderwatch: " & ex.Message, True)
Return False
End Try
If clsWindream.Create_Session = False Then
LOGGER.Warn("Could not create the login for windream - No session created!")
ClassHelper.MSGBOX_Handler("ERROR", "windream-login Error:", "Could not create the login/session!", "OrgFlow will start anyway but be aware that searching and importing won't be possible!")
End If
If LICENSE_PROXY = True And clsDatabase.DB_PROXY_INITIALIZED Then
SQL_FULLTEXT = "SELECT DISTINCT [dwDocID] FROM [dbo].FullText WHERE CONTAINS([Text], '""*@FULLTEXT*""') "
End If
Dim oSQL = $"SELECT COUNT(GU.GUID) FROM TBDD_GROUPS_USER GU INNER JOIN TBDD_GROUPS G ON GU.GROUP_ID = G.GUID WHERE G.NAME = 'ORGFLOW-Supervisor' AND GU.USER_ID = {USER_GUID}"
USER_IS_SUPERVISOR = MYDB_ECM.GetScalarValue(oSQL)
Return True
'LabelLoggedIn.Caption = "Anzahl Angemeldete User: " & anzahl.ToString
End If
Catch ex As Exception
LOGGER.Warn("Unexpected Error in clswindream.Init: " & ex.Message)
MsgBox("Unexpected Error in Creating windream-Session: " & ex.Message & vbNewLine & "Please inform Your sysadmin!", MsgBoxStyle.Critical)
End Try
oFNSQL = String.Format("SELECT COUNT(*) AS Expr1 FROM TBDD_USER_MODULE_LOG_IN WHERE UPPER(MODULE) = UPPER('Record-Organizer') AND CLIENT_ID = {0}", CLIENT_SELECTED)
Dim anzahl = MYDB_ECM.GetScalarValue(oFNSQL)
USERS_LOGGED_IN = CInt(anzahl)
LOGGER.Info("User# logged in: " & anzahl.ToString)
LOGGER.Info("LICENSE_COUNT: " & LICENSE_COUNT.ToString)
'####
If LICENSE_COUNT <= (USERS_LOGGED_IN + 1) And LICENSE_EXPIRED = False Then
Dim msg = String.Format("Die Anzahl der aktuell angemeldeten User (" & USERS_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!")
If USER_LANGUAGE <> "de-DE" Then
msg = String.Format("The number of logged Users (" & USERS_LOGGED_IN.ToString & ") exceeds the number of licenses." & vbNewLine &
"Number of licenses: " & LICENSE_COUNT.ToString & vbNewLine & "Please contact Your admin!")
End If
MsgBox(msg, MsgBoxStyle.Exclamation)
LOGGER.Warn("The number of logged Users (" & USERS_LOGGED_IN.ToString & ") exceeds the number of licenses (" & LICENSE_COUNT & ") ")
If USER_IS_ADMIN = False Then
'Anmeldung wieder herausnehmen
oFNSQL = "DELETE FROM TBDD_USER_MODULE_LOG_IN WHERE USER_ID = " & USER_GUID & " AND MODULE= 'Record-Organizer'"
MYDB_ECM.ExecuteNonQuery(oFNSQL)
LOGGER.Warn(" - logged out the user")
Return False
End If
Else
Try
'Die FolderWatch starten
Dim sql1 = "SELECT FOLDER_PATH FROM TBPMO_FOLDERWATCH_USER WHERE FOLDER_TYPE = 'SCAN' AND USER_ID = " & USER_GUID
Dim folderwatch_SCAN = MYDB_ECM.GetScalarValue(sql1)
If Not folderwatch_SCAN Is Nothing Then
CURRENT_SCAN_FOLDERWATCH = folderwatch_SCAN
If FWSCAN_started = True Then
ClassFolderWatcher.StartStop_FolderWatchSCAN()
End If
End If
Catch ex As Exception
LOGGER.Warn("Unexpected Error in Init_Folderwatch: " & ex.Message, True)
Return False
End Try
End If
If LICENSE_PROXY = True And clsDatabase.DB_PROXY_INITIALIZED Then
SQL_FULLTEXT = "SELECT DISTINCT [dwDocID] FROM [dbo].FullText WHERE CONTAINS([Text], '""*@FULLTEXT*""') "
End If
Dim oSQL = $"SELECT COUNT(GU.GUID) FROM TBDD_GROUPS_USER GU INNER JOIN TBDD_GROUPS G ON GU.GROUP_ID = G.GUID WHERE G.NAME = 'ORGFLOW-Supervisor' AND GU.USER_ID = {USER_GUID}"
USER_IS_SUPERVISOR = MYDB_ECM.GetScalarValue(oSQL)
Return True
Catch ex As Exception
LOGGER.Error(ex)
LOGGER.Warn("Unexpected Error in InitUserLogin: " & ex.Message)