Imports System.ComponentModel Imports System.IO Imports DD_LIB_Standards Imports DigitalData.Modules.Logging Public Class ClassInit Public Sub New() End Sub Public Sub InitLogger() LOGCONFIG = New LogConfig(LogConfig.PathType.AppData, Nothing, Nothing, My.Application.Info.CompanyName, "ADDI") LOGGER = LOGCONFIG.GetLogger() LOGGER.Info("## ADDI started - {0}", Now) Try Dim directory As New IO.DirectoryInfo(Application.LocalUserAppDataPath & "\Log") For Each file As IO.FileInfo In directory.GetFiles If (Now - file.CreationTime).Days > 29 Then file.Delete() Else Exit For End If Next Catch ex As Exception End Try End Sub Public Shared Function InitDatabase() Try Dim dbResult As Boolean MySettings_Load() If LoadFileExclusion() = False Then MsgBox("The Exclude File Structure for files in Folderwatch could not be initialized!", MsgBoxStyle.Information) End If clsDatabase.GUI = True If MyConnectionString <> String.Empty Then dbResult = clsDatabase.Init(MyConnectionString) Else frmConfig_Basic.ShowDialog() dbResult = clsDatabase.Init(MyConnectionString) End If If ClassProxy.MyPROXYConnectionString <> String.Empty Then If clsDatabase.Init(ClassProxy.MyPROXYConnectionString, True) = False Then ClassHelper.MSGBOX_Handler("ERROR", "", "Error while Initializing proxyserver - Check logfile") Else Dim csb As New SqlClient.SqlConnectionStringBuilder csb.ConnectionString = ClassProxy.MyPROXYConnectionString ClassHelper.InsertEssential_Log(USER_GUID, "USER-ID", String.Format("Proxy-Server {0} - Database {1} is used", csb.DataSource, csb.InitialCatalog)) End If End If ClassDatabase.Init() If dbResult = False Then If clsLogger.LOGG_MSG <> String.Empty Then Throw New Exception("Error while Initializing database:" & vbNewLine & clsLogger.LOGG_MSG) Else Throw New Exception("Find more information in the logfile.") End If End If Return True Catch ex As Exception MsgBox("Unexpected Error in Init Database:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) Return False End Try End Function Public Sub InitAddons() Try Dim CurrentDir As String = My.Application.Info.DirectoryPath Dim AddonPath As String = MY_ADDON_PATH ' ClassDatabase.Execute_Scalar(Sql) Dim Dev_AddonPath As String = System.IO.Path.GetFullPath(System.IO.Path.Combine(CurrentDir, "..\..\..\..\app")) If AddonPath Is Nothing OrElse AddonPath = "" Then ' Addon Pfad in der Datenbank ist leer Dim path = System.IO.Path.Combine(CurrentDir, "Addons") Dim AddonDir As New DirectoryInfo(path) If AddonDir.Exists Then AddonPath = path Else AddonPath = Dev_AddonPath End If Else ' Addon Pfad steht in der Datenbank Dim path = AddonPath Dim AddonDir As New DirectoryInfo(path) If (AddonDir.Exists) Then If AddonDir.Name = "Addons" Then AddonPath = path Else AddonPath = Dev_AddonPath End If Else AddonPath = Dev_AddonPath End If End If MY_ADDON_PATH = AddonPath SaveMySettingsValue("PATH_ADDON", MY_ADDON_PATH, "ConfigMain") Catch ex As Exception MsgBox("Unexpected Error in InitAddons:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) End Try End Sub Public Sub InitBasics2() Try Dim configResult As Boolean configResult = Settings_LoadBasicConfig() If configResult = False Then Throw New Exception("Find more information in the logfile.") End If Dim sql = String.Format("SELECT * FROM TBPMO_KONFIGURATION WHERE GUID = 1") Dim KONFIG_DT As DataTable = ClassDatabase.Return_Datatable(sql, False) If KONFIG_DT.Rows.Count = 1 Then Try MY_WIKISTRING = KONFIG_DT.Rows(0).Item("WIKI_STRING") Catch ex As Exception MY_WIKISTRING = "" End Try WD_UNICODE = KONFIG_DT.Rows(0).Item("WD_UNICODE") SQL_FULLTEXT = KONFIG_DT.Rows(0).Item("SQL_FULLTEXT") WMDriveLetter = KONFIG_DT.Rows(0).Item("WM_LAUFWERKBUCHSTABE") WMPATH_PREFIX = KONFIG_DT.Rows(0).Item("WMPATH_PREFIX") If Not WMPATH_PREFIX.ToUpper.StartsWith("\\WINDREAM\OBJECTS") Then SHARE_DRIVE_ACTIVE = True End If End If sql = "SELECT * FROM TBDD_SQL_COMMANDS" Dim oDTSQL_COMMANDS As DataTable = ClassDatabase.Return_Datatable(sql, True) For Each oRow As DataRow In oDTSQL_COMMANDS.Rows If oRow.Item("TITLE") = "ADDI_DOC_SEARCH_RECORD" Then SQL_DOC_RESULT_RECORD = oRow.Item("SQL_COMMAND") End If Next sql = "SELECT * FROM TBPMO_CONTROL" CURRENT_TBPMO_CONTROL = ClassDatabase.Return_Datatable(sql, True) sql = String.Format("SELECT * FROM TBPMO_DOCSEARCH_RESULTLIST_CONFIG WHERE VISIBLE = 1") CURRENT_RESULTLIST_CONFIG = ClassDatabase.Return_Datatable(sql, True) sql = String.Format("SELECT * FROM TBPMO_DOCSEARCH_VARIABLE_CONTROLS") CURRENT_VARIABLE_CONTROLS = ClassDatabase.Return_Datatable(sql, True) sql = String.Format("SELECT * FROM TBPMO_FORM_VIEW") CURRENT_TBPMO_FORM_VIEW = ClassDatabase.Return_Datatable(sql, True) sql = String.Format("select T.*, T1.HEADER_CAPTION,T1.TYPE_ID ,T1.ENTITY_ID,T1.LANGUAGE from TBPMO_DOCRESULT_DROPDOWN_ITEMS T, TBPMO_DOCSEARCH_RESULTLIST_CONFIG T1 WHERE T.CONFIG_ID = T1.GUID") CURRENT_TBPMO_DOCRESULT_DROPDOWN_ITEMS = ClassDatabase.Return_Datatable(sql, True) clsCURRENT.LOG_ERRORS_ONLY = DEBUG sql = String.Format("select* from TBPMO_FILE_FORMATS_CHANGE") Dim oDTFF_CHANGE As DataTable = ClassDatabase.Return_Datatable(sql, True) For Each oRow As DataRow In oDTFF_CHANGE.Rows FILE_FORMATS_CHANGE_DURING_EDIT.Add(oRow.Item("FILE_EXT")) Next Catch ex As Exception MsgBox("Unexpected Error in InitBasics2:" & vbNewLine & ex.Message, MsgBoxStyle.Critical) End Try End Sub Public Shared Sub Init_CONN_SWITCH() Try Dim sql = String.Format("SELECT T1.GUID, T.DESCRIPTION, T.SQL_CONNECTION, T.SQL_CONNECTION_PROXY, T.WM_ALIAS,T1.ACTIVE FROM " & "TBPMO_CLIENT_CONNECTION_SWITCH T, TBPMO_CLIENT_CONN_SWITCH_USER T1 WHERE T.GUID = T1.CONN_SWITCH_ID " & "And T.ACTIVE = 1 And T1.USER_ID = {0}", USER_GUID) CURRENT_TBPMO_CONN_SWITCH = ClassDatabase.Return_Datatable(sql) Catch ex As Exception LOGGER.Warn("Unexpected Error in Init_CONN_SWITCH: " & ex.Message) End Try End Sub Public Shared Function InitUserLogin(Optional _User As String = "") Try 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) LOGGER.Info("Login at: " & Now.ToString) LOGGER.Info("Username: " & USER_USERNAME) Dim USER_DT As DataTable = ClassDatabase.Return_Datatable(sql, True) If USER_DT.Rows.Count = 0 Then LOGGER.Warn(" - User '" & USER_USERNAME & "' not listed in Useradministration!") Dim msg = String.Format("You are not listed in the Useradministration." & vbNewLine & "Please contact the admin.") MsgBox(msg, MsgBoxStyle.Exclamation) 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 If Right_RO = False Then LOGGER.Warn("User '" & USER_USERNAME & "' not authorized for using Record-Organizer!") '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 'Me.Close() Else sql = String.Format("select * from TBPMO_RIGHT_USER WHERE USER_ID = " & USER_GUID) CURRENT_TBPMO_RIGHT_USER = ClassDatabase.Return_Datatable(sql, True) Init_CONN_SWITCH() 'USER_LANGUAGE = ClassDatabase.Execute_Scalar("SELECT LANGUAGE FROM TBDD_USER WHERE GUID = " & USER_GUID, False) DT_CLIENT_USER = ClassDatabase.Return_Datatable("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, False) 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) ClassDatabase.Execute_non_Query(sql) sql = "DELETE FROM TBDD_USER_MODULE_LOG_IN WHERE USER_ID = " & USER_GUID & " AND UPPER(MODULE)= UPPER('Record-Organizer')" If ClassDatabase.Execute_non_Query(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) ClassDatabase.Execute_non_Query(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 End If Else End If Try If SHARE_DRIVE_ACTIVE = True Then End If LOGGER.Info($"SHAREDRIVE IS ACTIVE = {SHARE_DRIVE_ACTIVE.ToString}") 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!", "ADDI will start anyway but be aware that searching and importing won't be possible!") 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 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 = ClassDatabase.Execute_Scalar(sql, False) 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'" ClassDatabase.Execute_non_Query(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 = ClassDatabase.Execute_Scalar(sql1, False) 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 Return True 'LabelLoggedIn.Caption = "Anzahl Angemeldete User: " & anzahl.ToString End If End If Catch ex As Exception LOGGER.Warn("Unexpected Error in InitUserLogin: " & ex.Message) MsgBox("Unexpected Error in InitUserLogin: " & ex.Message, MsgBoxStyle.Critical) Return False End Try End Function End Class