From abff7fa74592d23d452181169c8e184c81312ceb Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Tue, 29 Mar 2022 14:27:31 +0200 Subject: [PATCH] EDMI: Move Object Status changes into Service --- .../ctrlObjectPropertyDialog.vb | 10 ++++------ .../frmObjectPropertyDialog.vb | 5 ----- GUIs.Common/frmDocumentResultList.vb | 9 --------- Service.EDMIService/IDB/Helpers.vb | 19 +++++++++++++++++++ .../SetAttributeValueMethod.vb | 3 +++ .../IDB/UpdateFile/UpdateFileMethod.vb | 7 +++++-- 6 files changed, 31 insertions(+), 22 deletions(-) diff --git a/GUIs.Common/ObjectPropertyDialog/ctrlObjectPropertyDialog.vb b/GUIs.Common/ObjectPropertyDialog/ctrlObjectPropertyDialog.vb index 2d67d8af..74f733d5 100644 --- a/GUIs.Common/ObjectPropertyDialog/ctrlObjectPropertyDialog.vb +++ b/GUIs.Common/ObjectPropertyDialog/ctrlObjectPropertyDialog.vb @@ -63,12 +63,6 @@ Public Class ctrlObjectPropertyDialog .Language = Environment.User.Language, .Username = Environment.User.UserName }) - - Logger.Info("Updating Object State for Object [{0}]", ObjectId) - Await Client.SetObjectStateAsync(ObjectId, FileStore.OBJECT_STATE_METADATA_CHANGED, New Options.SetObjectStateOptions With { - .Language = Environment.User.Language, - .Username = Environment.User.UserName - }) Next ErrorHandler.ShowInfoMessage($"{Changes.Count} Änderungen gespeichert!") @@ -92,6 +86,10 @@ Public Class ctrlObjectPropertyDialog End Function Public Async Function LoadObject(pObjectId As Long, pEntityId As Long) As Task(Of Boolean) + If pObjectId = 0 Then + Return True + End If + IsLoading = True Dim oLoadingHandle = SplashScreenManager.ShowOverlayForm(Me) diff --git a/GUIs.Common/ObjectPropertyDialog/frmObjectPropertyDialog.vb b/GUIs.Common/ObjectPropertyDialog/frmObjectPropertyDialog.vb index 6fabf108..0cc68a05 100644 --- a/GUIs.Common/ObjectPropertyDialog/frmObjectPropertyDialog.vb +++ b/GUIs.Common/ObjectPropertyDialog/frmObjectPropertyDialog.vb @@ -223,11 +223,6 @@ Public Class frmObjectPropertyDialog .Language = Environment.User.Language, .Username = Environment.User.UserName }) - Logger.Info("Updating Object State for Object [{0}]", ObjectId) - Await Client.SetObjectStateAsync(ObjectId, IDB.FileStore.OBJECT_STATE_METADATA_CHANGED, New Options.SetObjectStateOptions With { - .Language = Environment.User.Language, - .Username = Environment.User.UserName - }) Next ErrorHandler.ShowInfoMessage($"{Changes.Count} Änderungen gespeichert!") diff --git a/GUIs.Common/frmDocumentResultList.vb b/GUIs.Common/frmDocumentResultList.vb index 5f4c7e71..1cd1b6fe 100644 --- a/GUIs.Common/frmDocumentResultList.vb +++ b/GUIs.Common/frmDocumentResultList.vb @@ -288,7 +288,6 @@ Public Class frmDocumentResultList Public Async Sub Watcher_FileChanged(sender As Object, e As DocumentResultList.Watcher.FileChangedArgs) Handles Watcher.FileChanged Try - Dim oDoctype As GlobalStateDoctype = Nothing If e.File.Document.DocumentType IsNot Nothing Then @@ -330,18 +329,10 @@ Public Class frmDocumentResultList Private Async Function Watcher_OverwriteFile(pFile As DocumentResultList.Watcher.OpenFile) As Task Await Watcher_UpdateFile(pFile, pCreateNewVersion:=False) - Await Client.SetObjectStateAsync(pFile.Document.Id, OBJECT_STATE_FILE_CHANGED, New Options.SetObjectStateOptions With { - .Language = Environment.User.Language, - .Username = Environment.User.UserName - }) End Function Private Async Function Watcher_VersionFile(pFile As DocumentResultList.Watcher.OpenFile) As Task Await Watcher_UpdateFile(pFile, pCreateNewVersion:=True) - Await Client.SetObjectStateAsync(pFile.Document.Id, OBJECT_STATE_FILE_VERSIONED, New Options.SetObjectStateOptions With { - .Language = Environment.User.Language, - .Username = Environment.User.UserName - }) End Function Private Async Function Watcher_UpdateFile(pFile As DocumentResultList.Watcher.OpenFile, pCreateNewVersion As Boolean) As Task diff --git a/Service.EDMIService/IDB/Helpers.vb b/Service.EDMIService/IDB/Helpers.vb index d4a0fc31..b5f5c608 100644 --- a/Service.EDMIService/IDB/Helpers.vb +++ b/Service.EDMIService/IDB/Helpers.vb @@ -199,6 +199,25 @@ Namespace IDB Return True End Function + + Public Function SetObjectState(pObjectId As Long, pState As String, pWho As String) As Boolean + Try + Dim oSql As String = $"EXEC PRIDB_OBJECT_SET_STATE {pObjectId}, '{pState}', '{pWho}'" + Dim oResult = Database.ExecuteNonQuery(oSql) + If oResult = False Then + Return False + End If + + Logger.Info("Object state for [{0}] created: [{1}]", pObjectId, pState) + Return True + + Catch ex As Exception + Logger.Warn("Error while setting Object State") + Logger.Error(ex) + Return False + + End Try + End Function End Class End Namespace \ No newline at end of file diff --git a/Service.EDMIService/Methods/IDB/SetAttributeValue/SetAttributeValueMethod.vb b/Service.EDMIService/Methods/IDB/SetAttributeValue/SetAttributeValueMethod.vb index bec40ba6..2aa1cb87 100644 --- a/Service.EDMIService/Methods/IDB/SetAttributeValue/SetAttributeValueMethod.vb +++ b/Service.EDMIService/Methods/IDB/SetAttributeValue/SetAttributeValueMethod.vb @@ -2,6 +2,7 @@ Imports DigitalData.Modules.Database Imports DigitalData.Services.EDMIService.IDB Imports System.Data.SqlClient +Imports DigitalData.Modules.Base.IDB Namespace Methods.IDB.SetAttributeValue Public Class SetAttributeValueMethod @@ -34,6 +35,8 @@ Namespace Methods.IDB.SetAttributeValue Logger.Debug("Attribute value set!") + Helpers.SetObjectState(pData.ObjectId, FileStore.OBJECT_STATE_FILE_CHANGED, pData.Who) + ' Finally, commit the transaction Transaction?.Commit() diff --git a/Service.EDMIService/Methods/IDB/UpdateFile/UpdateFileMethod.vb b/Service.EDMIService/Methods/IDB/UpdateFile/UpdateFileMethod.vb index bdea2b2d..d43c0fd9 100644 --- a/Service.EDMIService/Methods/IDB/UpdateFile/UpdateFileMethod.vb +++ b/Service.EDMIService/Methods/IDB/UpdateFile/UpdateFileMethod.vb @@ -2,8 +2,7 @@ Imports DigitalData.Modules.Database Imports DigitalData.Modules.Database.MSSQLServer.TransactionMode Imports DigitalData.Modules.Logging -Imports DigitalData.Services.EDMIService.Methods -Imports DigitalData.Services.EDMIService.GlobalState +Imports DigitalData.Modules.Base.IDB Namespace Methods.IDB.UpdateFile Public Class UpdateFileMethod @@ -62,6 +61,8 @@ Namespace Methods.IDB.UpdateFile LogAndThrow(ex, $"Could not write file [{oFilePath}] to disk!") End Try + Helpers.SetObjectState(pData.ObjectId, FileStore.OBJECT_STATE_FILE_CHANGED, pData.User.UserName) + oResultObjectId = pData.ObjectId Else @@ -101,6 +102,8 @@ Namespace Methods.IDB.UpdateFile DatabaseIDB.ExecuteNonQuery(oSql) Logger.Debug("Versioning complete from [{0}] to [{1}]", pData.ObjectId, oNewObjectId) + Helpers.SetObjectState(pData.ObjectId, FileStore.OBJECT_STATE_FILE_VERSIONED, pData.User.UserName) + oResultObjectId = oNewObjectId End If