diff --git a/GUIs.ZooFlow/ClassDataASorDB.vb b/GUIs.ZooFlow/ClassDataASorDB.vb new file mode 100644 index 00000000..3b548371 --- /dev/null +++ b/GUIs.ZooFlow/ClassDataASorDB.vb @@ -0,0 +1,92 @@ +Imports DigitalData.Modules.EDMI.API.EDMIServiceReference +Imports DigitalData.Modules.Logging + +Public Class ClassDataASorDB + Private _Logger As Logger + Public Sub New(LogConfig As LogConfig) + _Logger = LogConfig.GetLogger + End Sub + Public Function GetDatatable(pDB As String, pSQL As String, pAppServDT As String, pAppServFilter As String, pAppServSort As String, Optional pForce As String = "") As DataTable + Try + Dim oReturnDT As DataTable + If My.Application.Service.IsActive = True And pForce = String.Empty Then + Try + Dim oTableResult As TableResult = _Client.GetDatatableByName(pAppServDT, pAppServFilter, pAppServSort) + oReturnDT = oTableResult.Table + If IsNothing(oReturnDT) Then + _Logger.Warn($"Datatable from ApPServData is nothing [{pAppServDT} - {pAppServFilter}] - Failover via DB") + Return GetDatatable(pDB, pSQL, "", "", "", "DB") + End If + Catch ex As Exception + _Logger.Warn($"Error getting ApPServData [{pAppServDT} - {pAppServFilter}]") + Return GetDatatable(pDB, pSQL, "", "", "", "DB") + End Try + Else + If pDB = "DD_ECM" Then + oReturnDT = My.Database.GetDatatable(pSQL) + ElseIf pDB = "IDB" Then + oReturnDT = My.DatabaseIDB.GetDatatable(pSQL) + End If + + End If + Return oReturnDT + Catch ex As Exception + _Logger.Error(ex) + End Try + End Function + + Public Function CheckModuleData() + Try + Dim oSql = String.Format("SELECT * FROM [dbo].[FNDD_CHECK_USER_MODULE] ('{0}','CW',{1})", My.Application.User.UserName) + Dim DT_CHECKUSER_MODULE As DataTable + DT_CHECKUSER_MODULE = GetDatatable("DD_ECM", oSql, "TBDD_USER_MODULE", $"USERNAME = '{My.Application.User.UserName.ToLower}' AND MODULE_SHORT = 'CW'", "", "") + + If DT_CHECKUSER_MODULE.Rows.Count = 0 Then + _Logger.Info("DT_CHECKUSER_MODULE.Rows.Count = 0", True) + 'ERROR_STATE = "NO USER" + MsgBox("Sorry - Something went wrong in getting Your rights." & vbNewLine & "Please contact the system administrator!", MsgBoxStyle.Exclamation) + Return False + End If + If DT_CHECKUSER_MODULE.Rows.Count = 1 Then + _Logger.Info(">> Login Username: " & My.Application.User.UserName, False) + _Logger.Info(">> Login time: " & Now.ToString, False) + My.Application.User.UserId = DT_CHECKUSER_MODULE.Rows(0).Item("USER_ID") + My.Application.User.Surname = IIf(IsDBNull(DT_CHECKUSER_MODULE.Rows(0).Item("USER_SURNAME")), "", DT_CHECKUSER_MODULE.Rows(0).Item("USER_SURNAME")) + My.Application.User.GivenName = IIf(IsDBNull(DT_CHECKUSER_MODULE.Rows(0).Item("USER_PRENAME")), "", DT_CHECKUSER_MODULE.Rows(0).Item("USER_PRENAME")) + My.Application.User.ShortName = IIf(IsDBNull(DT_CHECKUSER_MODULE.Rows(0).Item("USER_SHORTNAME")), "", DT_CHECKUSER_MODULE.Rows(0).Item("USER_SHORTNAME")) + My.Application.User.Email = IIf(IsDBNull(DT_CHECKUSER_MODULE.Rows(0).Item("USER_EMAIL")), "", DT_CHECKUSER_MODULE.Rows(0).Item("USER_EMAIL")) + My.Application.User.Language = DT_CHECKUSER_MODULE.Rows(0).Item("USER_LANGUAGE") + My.Application.User.DateFormat = DT_CHECKUSER_MODULE.Rows(0).Item("USER_DATE_FORMAT") + + My.Application.User.IsAdmin = DT_CHECKUSER_MODULE.Rows(0).Item("IS_ADMIN") + ADDITIONAL_TITLE = DT_CHECKUSER_MODULE.Rows(0).Item("ADDITIONAL_TITLE") + If ADDITIONAL_TITLE = String.Empty Then + ADDITIONAL_TITLE = My.Application.Info.ProductName + End If + + Return True + Else + _Logger.Info(" - User '" & My.Application.User.UserName & "' not listed in Useradministration!", False) + 'MsgBox("Achtung: Sie sind nicht in der Userverwaltung hinterlegt." & vbNewLine & "Bitte setzen Sie sich mit dem Systembetreuer in Verbindung!", MsgBoxStyle.Critical, "Achtung:") + 'Me.Close() + Dim msg = String.Format("You are not listed in the Useradministration." & vbNewLine & "Please contact the admin.") + MsgBox(msg, MsgBoxStyle.Exclamation) + Return False + End If + Catch ex As Exception + _Logger.Error(ex) + Return False + End Try + + End Function + Public Sub Refresh_Connections() + Try + Dim oSql = String.Format("SELECT * FROM TBDD_CONNECTION") + Dim oResult As DataTable + DT_CONNECTIONS = GetDatatable("DD_ECM", oSql, "TBDD_CONNECTION", "", "", "") + Catch ex As Exception + _Logger.Error(ex) + MsgBox("Unexpected Error in Refresh_Connections: " & ex.Message, MsgBoxStyle.Critical) + End Try + End Sub +End Class diff --git a/GUIs.ZooFlow/ClassInit.vb b/GUIs.ZooFlow/ClassInit.vb index 98397fcc..708cc0ce 100644 --- a/GUIs.ZooFlow/ClassInit.vb +++ b/GUIs.ZooFlow/ClassInit.vb @@ -8,16 +8,20 @@ Imports DigitalData.GUIs.ZooFlow.ClassInitLoader Imports DigitalData.GUIs.ZooFlow.ClassConstants Imports System.Threading Imports System.Globalization +Imports DigitalData.Modules.EDMI.API Public Class ClassInit Private _MainForm As frmFlowForm Private _Logger As Logger - + Private _LogConfig As LogConfig Public Event Completed As EventHandler + Private _DataASorDB As ClassDataASorDB Public Sub New(LogConfig As LogConfig, ParentForm As frmFlowForm) _MainForm = ParentForm _Logger = LogConfig.GetLogger() + _LogConfig = LogConfig + _DataASorDB = New ClassDataASorDB(LogConfig) End Sub Public Sub InitializeApplication() @@ -114,7 +118,7 @@ Public Class ClassInit Private Sub Initialize3rdParty(MyApplication As My.MyApplication) Try Dim oSql = "Select LICENSE FROM TBDD_3RD_PARTY_MODULES WHERE NAME = 'GDPICTURE'" - Dim oDatatable As DataTable = My.Database.GetDatatable(oSql) + Dim oDatatable As DataTable = _DataASorDB.GetDatatable("DD_ECM", oSql, "TBDD_3RD_PARTY_MODULES", "", "") If oDatatable.Rows.Count = 0 Then Throw New InitException("Konfiguration konnte nicht geladen werden!") @@ -133,11 +137,11 @@ Public Class ClassInit Private Sub InitBasicData(MyApplication As My.MyApplication) Try Dim oSql = "SELECT * FROM TBGI_FUNCTION_REGEX" - My.Application.Globix.DT_FUNCTION_REGEX = My.Database.GetDatatable(oSql) + My.Application.Globix.DT_FUNCTION_REGEX = _DataASorDB.GetDatatable("DD_ECM", oSql, "TBGI_FUNCTION_REGEX", "", "") oSql = "SELECT * FROM TBIDB_COMMON_SQL WHERE ACTIVE = 1" - My.DTCOMMON_SQL = My.DatabaseIDB.GetDatatable(oSql) + My.DTCOMMON_SQL = _DataASorDB.GetDatatable("IDB", oSql, "TBIDB_COMMON_SQL", "", "") oSql = "SELECT * FROM TBIDB_CATALOG" - My.DTCATALOG = My.DatabaseIDB.GetDatatable(oSql) + My.DTCATALOG = _DataASorDB.GetDatatable("IDB", oSql, "TBIDB_CATALOG", "", "") For Each oRow As DataRow In My.DTCATALOG.Rows 'Console.WriteLine(oRow.Item("CAT_TITLE").ToString) Select Case oRow.Item("CAT_TITLE").ToString @@ -159,7 +163,23 @@ Public Class ClassInit Private Sub InitializeIDBService(MyApplication As My.MyApplication) Try MyApplication.Service.Address = My.SystemConfig.AppServerConfig - MyApplication.Service.IsActive = True + + Dim oSplit() As String = MyApplication.Service.Address.Split(":") + Dim oAppServerAddress As String = oSplit(0) + Dim oAppServerPort As Integer = 9000 + If oSplit.Length = 2 Then + oAppServerPort = oSplit(1) + End If + _Client = New Client(_LogConfig, oAppServerAddress, oAppServerPort) + If Not IsNothing(_Client) Then + If _Client.Connect() Then + MyApplication.Service.IsActive = True + + End If + End If + + + Catch ex As Exception _Logger.Error(ex) Throw New InitException("Error in InitBasicData") diff --git a/GUIs.ZooFlow/Globix/frmGlobix_Index.vb b/GUIs.ZooFlow/Globix/frmGlobix_Index.vb index dbb6166d..de17d234 100644 --- a/GUIs.ZooFlow/Globix/frmGlobix_Index.vb +++ b/GUIs.ZooFlow/Globix/frmGlobix_Index.vb @@ -950,6 +950,8 @@ Public Class frmGlobix_Index Dim oExportSuccessful As Boolean = False 'Variable Folder If DropType = "|DROPFROMFSYSTEM|" Or DropType = "|OUTLOOK_ATTACHMENT|" Or DropType = "|ATTMNTEXTRACTED|" Or DropType = "|FW_SIMPLEINDEXER|" Then + Move_File(My.Application.Globix.CURRENT_WORKFILE, My.Application.Globix.CURRENT_NEWFILENAME, My.Application.Globix.CURRENT_WORKFILE_EXTENSION, My.Application.Globix.FILE_DELIMITER) + ' oExportSuccessful = SINGLEFILE_2_WINDREAM(My.Application.Globix.CURR_D) ElseIf DropType = "|OUTLOOK_MESSAGE|" Or DropType = "|FW_MSGONLY|" Or DropType = "|MSGONLY|" Or DropType = "|FW_OUTLOOK_MESSAGE|" Then ' oExportSuccessful = SINGLEFILE_2_WINDREAM(CURR_DOKART_OBJECTTYPE) @@ -1020,7 +1022,82 @@ Public Class frmGlobix_Index Return False End Try End Function - Private Function + Private Function ImportFile2IDB() As Boolean + Try + If Move_File(My.Application.Globix.CURRENT_WORKFILE, My.Application.Globix.CURRENT_NEWFILENAME, My.Application.Globix.CURRENT_WORKFILE_EXTENSION, My.Application.Globix.VERSION_DELIMITER) = True Then + Dim oEXEC As String = $"EXEC PRIDB_ADD_DOC_FROM_FOLDER '{My.Application.Globix.CURRENT_NEWFILENAME}','{My.Application.User.UserName}'" + Dim oDTRESULT As DataTable = My.DatabaseIDB.GetDatatable(oEXEC) + If IsNothing(oDTRESULT) Then + Return False + Else + If oDTRESULT.Rows.Count = 0 Then + Return False + Else + My.Application.Globix.CURRENT_DOC_ID = oDTRESULT.Rows(0).Item(0) + Return True + End If + End If + End If + + + Catch ex As Exception + _Logger.Error(ex) + End Try + End Function + Function Move_File(Quelle As String, _NewFilename As String, extension As String, _versionTz As String) As Boolean + 'Überprüfen ob File existiert + If File.Exists(_NewFilename) = False Then + My.Application.Globix.CURRENT_NEWFILENAME = _NewFilename + Else + 'Versionieren + Dim version As Integer = 1 + Dim Stammname As String = _NewFilename + Dim neuername As String = _NewFilename + Do While File.Exists(neuername) + version = version + 1 + neuername = Stammname.Replace(extension, "") & _versionTz & version & extension + My.Application.Globix.CURRENT_NEWFILENAME = neuername + Loop + End If + 'Die Datei wird nun verschoben + If My.Application.Globix.CURR_DELETE_ORIGIN = True Then + My.Computer.FileSystem.MoveFile(My.Application.Globix.CURRENT_WORKFILE, My.Application.Globix.CURRENT_NEWFILENAME) + Else + My.Computer.FileSystem.CopyFile(My.Application.Globix.CURRENT_WORKFILE, My.Application.Globix.CURRENT_NEWFILENAME) + End If + + Dim Insert_String As String + Try + Dim tempCur_WF = My.Application.Globix.CURRENT_WORKFILE.Replace("'", "''") + Dim tempCur_New_FN = My.Application.Globix.CURRENT_NEWFILENAME.Replace("'", "''") + Insert_String = sql_history_INSERT_INTO & ",ADDED_WHO,ADDED_WHERE) VALUES ('" & tempCur_WF & "','" & tempCur_New_FN & "'" & sql_history_Index_Values & ",'" & Environment.UserDomainName & "\" & Environment.UserName & "','" & Environment.MachineName & "')" + If My.Database.ExecuteNonQuery(Insert_String) = True Then + If My.Application.Globix.CURRENT_MESSAGEID <> "" Then + Dim oMax As String = "SELECT MAX(GUID) FROM TBGI_HISTORY" + Dim oGUID = My.Database.GetScalarValue(oMax) + Try + If oGUID > 0 Then + Dim oSql As String + If My.Application.Globix.CURRENT_ISATTACHMENT = True Then + oSql = "Update TBGI_HISTORY SET ATTACHMENT = 1, MSG_ID = '" & My.Application.Globix.CURRENT_MESSAGEID & "' WHERE GUID = " & oGUID + My.Database.GetScalarValue(oSql) + Else + oSql = "Update TBGI_HISTORY SET ATTACHMENT = 0, MSG_ID = '" & My.Application.Globix.CURRENT_MESSAGEID & "' WHERE GUID = " & oGUID + My.Database.GetScalarValue(oSql) + End If + End If + Catch ex As Exception + + End Try + End If + End If + Return True + Catch ex As Exception + _Logger.Error(ex.Message) + _Logger.Warn(" - Unexpected error in Move_Rename - Insert_String: " & Insert_String) + Return False + End Try + End Function Private Function Write_Indizes() Try Dim indexierung_erfolgreich As Boolean = False diff --git a/GUIs.ZooFlow/ModuleHelpers.vb b/GUIs.ZooFlow/ModuleHelpers.vb index 3c5f369e..e266785e 100644 --- a/GUIs.ZooFlow/ModuleHelpers.vb +++ b/GUIs.ZooFlow/ModuleHelpers.vb @@ -2,6 +2,7 @@ Imports System.Text.RegularExpressions Module ModuleHelpers + ''' ''' Überprüft einen Wert auf verschiedene Arten von "Null" und gibt einen Standard-Wert zurück, wenn der Wert "Null" ist. ''' diff --git a/GUIs.ZooFlow/ZooFlow.vbproj b/GUIs.ZooFlow/ZooFlow.vbproj index 013afe23..fee39b72 100644 --- a/GUIs.ZooFlow/ZooFlow.vbproj +++ b/GUIs.ZooFlow/ZooFlow.vbproj @@ -114,6 +114,7 @@ + frmFlowSearch.vb diff --git a/GUIs.ZooFlow/modCurrent.vb b/GUIs.ZooFlow/modCurrent.vb index 2ceafdb7..8e102522 100644 --- a/GUIs.ZooFlow/modCurrent.vb +++ b/GUIs.ZooFlow/modCurrent.vb @@ -1,3 +1,7 @@ -Module modCurrent +Imports DigitalData.Modules.EDMI.API +Module modCurrent + Public _Client As Client + Public ADDITIONAL_TITLE As String + Public DT_CONNECTIONS As DataTable End Module diff --git a/Modules.ZooFlow/State/UserState.vb b/Modules.ZooFlow/State/UserState.vb index cd015f3a..e92f1ae0 100644 --- a/Modules.ZooFlow/State/UserState.vb +++ b/Modules.ZooFlow/State/UserState.vb @@ -14,6 +14,7 @@ Namespace State Public Property MachineName As String Public Property DateFormat As String Public Property Language As String + Public Property IsAdmin As Boolean = False Public Property HideBasicConfig As Boolean = False