From 3dc62ae6775fb6c38ce4f476b44733f142350701 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Fri, 25 Mar 2022 16:06:00 +0100 Subject: [PATCH] EDMI: Add CheckInOutFile Method --- GUIs.Common/frmDocumentResultList.Designer.vb | 82 ++++----- GUIs.Common/frmDocumentResultList.resx | 40 ++--- GUIs.Common/frmDocumentResultList.vb | 2 +- Modules.EDMIAPI/Client/Options.vb | 7 + ...eference.CheckInOutFileResponse.datasource | 10 ++ ...EDMIService.Methods.IDB.CheckInOutFile.xsd | 31 ++++ .../DigitalData.Services.EDMIService.wsdl | 11 ++ .../DigitalData.Services.EDMIService.xsd | 19 ++- .../EDMIServiceReference/Reference.svcmap | 1 + .../EDMIServiceReference/Reference.vb | 157 ++++++++++++++++++ .../EDMIServiceReference/service.wsdl | 9 + Modules.EDMIAPI/EDMI.API.vbproj | 8 + Modules.EDMIAPI/Modules/IDB/CheckInFile.vb | 34 ++++ Modules.EDMIAPI/Modules/IDB/CheckOutFile.vb | 36 ++++ Service.EDMIService/EDMIService.vb | 6 + Service.EDMIService/EDMIService.vbproj | 3 + Service.EDMIService/IEDMIService.vb | 3 + .../CheckInOutFile/CheckInOutFileMethod.vb | 117 +++++++++++++ .../CheckInOutFile/CheckInOutFileRequest.vb | 31 ++++ .../CheckInOutFile/CheckInOutFileResponse.vb | 21 +++ 20 files changed, 564 insertions(+), 64 deletions(-) create mode 100644 Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.CheckInOutFileResponse.datasource create mode 100644 Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.CheckInOutFile.xsd create mode 100644 Modules.EDMIAPI/Modules/IDB/CheckInFile.vb create mode 100644 Modules.EDMIAPI/Modules/IDB/CheckOutFile.vb create mode 100644 Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileMethod.vb create mode 100644 Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileRequest.vb create mode 100644 Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileResponse.vb diff --git a/GUIs.Common/frmDocumentResultList.Designer.vb b/GUIs.Common/frmDocumentResultList.Designer.vb index 8c952277..d08b87ca 100644 --- a/GUIs.Common/frmDocumentResultList.Designer.vb +++ b/GUIs.Common/frmDocumentResultList.Designer.vb @@ -41,7 +41,7 @@ Partial Class frmDocumentResultList Me.MenuItemFolderOpen = New DevExpress.XtraBars.BarButtonItem() Me.MenuItemFilepathCopy = New DevExpress.XtraBars.BarButtonItem() Me.MenuItemFolderpathCopy = New DevExpress.XtraBars.BarButtonItem() - Me.MenuItemPropertiesECM = New DevExpress.XtraBars.BarButtonItem() + Me.MenuItemProperties = New DevExpress.XtraBars.BarButtonItem() Me.MenuItemsOpenFileZooFlow = New DevExpress.XtraBars.BarButtonItem() Me.MenuItemPropertiesZooFlow = New DevExpress.XtraBars.BarButtonItem() Me.ButtonRefresh = New DevExpress.XtraBars.BarButtonItem() @@ -51,10 +51,10 @@ Partial Class frmDocumentResultList Me.BarButtonItem4 = New DevExpress.XtraBars.BarButtonItem() Me.BarButtonItem5 = New DevExpress.XtraBars.BarButtonItem() Me.BarButtonItem6 = New DevExpress.XtraBars.BarButtonItem() - Me.BarButtonItem7 = New DevExpress.XtraBars.BarButtonItem() - Me.BarButtonItem8 = New DevExpress.XtraBars.BarButtonItem() - Me.BarButtonItem9 = New DevExpress.XtraBars.BarButtonItem() - Me.BarButtonItem10 = New DevExpress.XtraBars.BarButtonItem() + Me.MenuItemStartAdhocWorkflow = New DevExpress.XtraBars.BarButtonItem() + Me.MenuItemCheckInFile = New DevExpress.XtraBars.BarButtonItem() + Me.MenuItemCheckOutFile = New DevExpress.XtraBars.BarButtonItem() + Me.MenuItemVersionFile = New DevExpress.XtraBars.BarButtonItem() Me.chkGridShowQuickfilter = New DevExpress.XtraBars.BarCheckItem() Me.chkGridShowGrouping = New DevExpress.XtraBars.BarCheckItem() Me.chkGridShowTitle = New DevExpress.XtraBars.BarCheckItem() @@ -190,7 +190,7 @@ Partial Class frmDocumentResultList 'RibbonControl ' Me.RibbonControl.ExpandCollapseItem.Id = 0 - Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.RibbonControl.SearchEditItem, Me.SwitchMainContainerHorizontal, Me.SwitchDetailContainerHorizontal, Me.BarButtonItemExportGrid1, Me.BarStaticItem1, Me.labelResultCount, Me.BarButtonBack, Me.BarButtonResetLayout, Me.labelCriticalError, Me.labelWarning, Me.MenuItemFileOpen, Me.MenuItemPropertiesIDB, Me.MenuItemFolderOpen, Me.MenuItemFilepathCopy, Me.MenuItemFolderpathCopy, Me.MenuItemPropertiesECM, Me.MenuItemsOpenFileZooFlow, Me.MenuItemPropertiesZooFlow, Me.ButtonRefresh, Me.BarButtonItem1, Me.BarButtonItem2, Me.BarButtonItem3, Me.BarButtonItem4, Me.BarButtonItem5, Me.BarButtonItem6, Me.BarButtonItem7, Me.BarButtonItem8, Me.BarButtonItem9, Me.BarButtonItem10, Me.chkGridShowQuickfilter, Me.chkGridShowGrouping, Me.chkGridShowTitle, Me.MenuItemSaveProperties, Me.BarButtonItem11, Me.BarWorkspaceMenuItem1}) + Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.RibbonControl.SearchEditItem, Me.SwitchMainContainerHorizontal, Me.SwitchDetailContainerHorizontal, Me.BarButtonItemExportGrid1, Me.BarStaticItem1, Me.labelResultCount, Me.BarButtonBack, Me.BarButtonResetLayout, Me.labelCriticalError, Me.labelWarning, Me.MenuItemFileOpen, Me.MenuItemPropertiesIDB, Me.MenuItemFolderOpen, Me.MenuItemFilepathCopy, Me.MenuItemFolderpathCopy, Me.MenuItemProperties, Me.MenuItemsOpenFileZooFlow, Me.MenuItemPropertiesZooFlow, Me.ButtonRefresh, Me.BarButtonItem1, Me.BarButtonItem2, Me.BarButtonItem3, Me.BarButtonItem4, Me.BarButtonItem5, Me.BarButtonItem6, Me.MenuItemStartAdhocWorkflow, Me.MenuItemCheckInFile, Me.MenuItemCheckOutFile, Me.MenuItemVersionFile, Me.chkGridShowQuickfilter, Me.chkGridShowGrouping, Me.chkGridShowTitle, Me.MenuItemSaveProperties, Me.BarButtonItem11, Me.BarWorkspaceMenuItem1}) resources.ApplyResources(Me.RibbonControl, "RibbonControl") Me.RibbonControl.MaxItemId = 46 Me.RibbonControl.Name = "RibbonControl" @@ -317,12 +317,12 @@ Partial Class frmDocumentResultList Me.MenuItemFolderpathCopy.ImageOptions.SvgImage = Global.DigitalData.GUIs.Common.My.Resources.Resources.open Me.MenuItemFolderpathCopy.Name = "MenuItemFolderpathCopy" ' - 'MenuItemPropertiesECM + 'MenuItemProperties ' - resources.ApplyResources(Me.MenuItemPropertiesECM, "MenuItemPropertiesECM") - Me.MenuItemPropertiesECM.Id = 26 - Me.MenuItemPropertiesECM.ImageOptions.SvgImage = CType(resources.GetObject("MenuItemPropertiesECM.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) - Me.MenuItemPropertiesECM.Name = "MenuItemPropertiesECM" + resources.ApplyResources(Me.MenuItemProperties, "MenuItemProperties") + Me.MenuItemProperties.Id = 26 + Me.MenuItemProperties.ImageOptions.SvgImage = CType(resources.GetObject("MenuItemPropertiesECM.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) + Me.MenuItemProperties.Name = "MenuItemProperties" ' 'MenuItemsOpenFileZooFlow ' @@ -382,33 +382,33 @@ Partial Class frmDocumentResultList Me.BarButtonItem6.ImageOptions.SvgImage = Global.DigitalData.GUIs.Common.My.Resources.Resources.clearpivottable Me.BarButtonItem6.Name = "BarButtonItem6" ' - 'BarButtonItem7 + 'MenuItemStartAdhocWorkflow ' - resources.ApplyResources(Me.BarButtonItem7, "BarButtonItem7") - Me.BarButtonItem7.Id = 36 - Me.BarButtonItem7.ImageOptions.SvgImage = Global.DigitalData.GUIs.Common.My.Resources.Resources.bo_transition - Me.BarButtonItem7.Name = "BarButtonItem7" + resources.ApplyResources(Me.MenuItemStartAdhocWorkflow, "MenuItemStartAdhocWorkflow") + Me.MenuItemStartAdhocWorkflow.Id = 36 + Me.MenuItemStartAdhocWorkflow.ImageOptions.SvgImage = Global.DigitalData.GUIs.Common.My.Resources.Resources.bo_transition + Me.MenuItemStartAdhocWorkflow.Name = "MenuItemStartAdhocWorkflow" ' - 'BarButtonItem8 + 'MenuItemCheckInFile ' - resources.ApplyResources(Me.BarButtonItem8, "BarButtonItem8") - Me.BarButtonItem8.Id = 37 - Me.BarButtonItem8.ImageOptions.SvgImage = Global.DigitalData.GUIs.Common.My.Resources.Resources.security_unlock - Me.BarButtonItem8.Name = "BarButtonItem8" + resources.ApplyResources(Me.MenuItemCheckInFile, "MenuItemCheckInFile") + Me.MenuItemCheckInFile.Id = 37 + Me.MenuItemCheckInFile.ImageOptions.SvgImage = Global.DigitalData.GUIs.Common.My.Resources.Resources.security_unlock + Me.MenuItemCheckInFile.Name = "MenuItemCheckInFile" ' - 'BarButtonItem9 + 'MenuItemCheckOutFile ' - resources.ApplyResources(Me.BarButtonItem9, "BarButtonItem9") - Me.BarButtonItem9.Id = 38 - Me.BarButtonItem9.ImageOptions.SvgImage = Global.DigitalData.GUIs.Common.My.Resources.Resources._private - Me.BarButtonItem9.Name = "BarButtonItem9" + resources.ApplyResources(Me.MenuItemCheckOutFile, "MenuItemCheckOutFile") + Me.MenuItemCheckOutFile.Id = 38 + Me.MenuItemCheckOutFile.ImageOptions.SvgImage = Global.DigitalData.GUIs.Common.My.Resources.Resources._private + Me.MenuItemCheckOutFile.Name = "MenuItemCheckOutFile" ' - 'BarButtonItem10 + 'MenuItemVersionFile ' - resources.ApplyResources(Me.BarButtonItem10, "BarButtonItem10") - Me.BarButtonItem10.Id = 39 - Me.BarButtonItem10.ImageOptions.SvgImage = Global.DigitalData.GUIs.Common.My.Resources.Resources.enablescrolling - Me.BarButtonItem10.Name = "BarButtonItem10" + resources.ApplyResources(Me.MenuItemVersionFile, "MenuItemVersionFile") + Me.MenuItemVersionFile.Id = 39 + Me.MenuItemVersionFile.ImageOptions.SvgImage = Global.DigitalData.GUIs.Common.My.Resources.Resources.enablescrolling + Me.MenuItemVersionFile.Name = "MenuItemVersionFile" ' 'chkGridShowQuickfilter ' @@ -474,7 +474,7 @@ Partial Class frmDocumentResultList 'RibbonPageGroup3 ' Me.RibbonPageGroup3.ItemLinks.Add(Me.MenuItemFileOpen) - Me.RibbonPageGroup3.ItemLinks.Add(Me.MenuItemPropertiesECM) + Me.RibbonPageGroup3.ItemLinks.Add(Me.MenuItemProperties) Me.RibbonPageGroup3.Name = "RibbonPageGroup3" resources.ApplyResources(Me.RibbonPageGroup3, "RibbonPageGroup3") ' @@ -494,15 +494,15 @@ Partial Class frmDocumentResultList ' 'RibbonPageGroup4 ' - Me.RibbonPageGroup4.ItemLinks.Add(Me.BarButtonItem7) + Me.RibbonPageGroup4.ItemLinks.Add(Me.MenuItemStartAdhocWorkflow) Me.RibbonPageGroup4.Name = "RibbonPageGroup4" resources.ApplyResources(Me.RibbonPageGroup4, "RibbonPageGroup4") ' 'RibbonPageGroup8 ' - Me.RibbonPageGroup8.ItemLinks.Add(Me.BarButtonItem9) - Me.RibbonPageGroup8.ItemLinks.Add(Me.BarButtonItem8) - Me.RibbonPageGroup8.ItemLinks.Add(Me.BarButtonItem10) + Me.RibbonPageGroup8.ItemLinks.Add(Me.MenuItemCheckOutFile) + Me.RibbonPageGroup8.ItemLinks.Add(Me.MenuItemCheckInFile) + Me.RibbonPageGroup8.ItemLinks.Add(Me.MenuItemVersionFile) Me.RibbonPageGroup8.Name = "RibbonPageGroup8" resources.ApplyResources(Me.RibbonPageGroup8, "RibbonPageGroup8") ' @@ -838,7 +838,7 @@ Partial Class frmDocumentResultList Friend WithEvents MenuItemFolderOpen As DevExpress.XtraBars.BarButtonItem Friend WithEvents MenuItemFilepathCopy As DevExpress.XtraBars.BarButtonItem Friend WithEvents MenuItemFolderpathCopy As DevExpress.XtraBars.BarButtonItem - Friend WithEvents MenuItemPropertiesECM As DevExpress.XtraBars.BarButtonItem + Friend WithEvents MenuItemProperties As DevExpress.XtraBars.BarButtonItem Friend WithEvents MenuItemsOpenFileZooFlow As DevExpress.XtraBars.BarButtonItem Friend WithEvents MenuItemPropertiesZooFlow As DevExpress.XtraBars.BarButtonItem Friend WithEvents ButtonRefresh As DevExpress.XtraBars.BarButtonItem @@ -867,10 +867,10 @@ Partial Class frmDocumentResultList Friend WithEvents RibbonPageCategoryFile As DevExpress.XtraBars.Ribbon.RibbonPageCategory Friend WithEvents RibbonPageActions2 As DevExpress.XtraBars.Ribbon.RibbonPage Friend WithEvents RibbonPageGroup4 As DevExpress.XtraBars.Ribbon.RibbonPageGroup - Friend WithEvents BarButtonItem7 As DevExpress.XtraBars.BarButtonItem - Friend WithEvents BarButtonItem8 As DevExpress.XtraBars.BarButtonItem - Friend WithEvents BarButtonItem9 As DevExpress.XtraBars.BarButtonItem - Friend WithEvents BarButtonItem10 As DevExpress.XtraBars.BarButtonItem + Friend WithEvents MenuItemStartAdhocWorkflow As DevExpress.XtraBars.BarButtonItem + Friend WithEvents MenuItemCheckInFile As DevExpress.XtraBars.BarButtonItem + Friend WithEvents MenuItemCheckOutFile As DevExpress.XtraBars.BarButtonItem + Friend WithEvents MenuItemVersionFile As DevExpress.XtraBars.BarButtonItem Friend WithEvents SvgImageCollection1 As DevExpress.Utils.SvgImageCollection Friend WithEvents chkGridShowQuickfilter As DevExpress.XtraBars.BarCheckItem Friend WithEvents chkGridShowGrouping As DevExpress.XtraBars.BarCheckItem diff --git a/GUIs.Common/frmDocumentResultList.resx b/GUIs.Common/frmDocumentResultList.resx index ccb0a3a6..b73617c4 100644 --- a/GUIs.Common/frmDocumentResultList.resx +++ b/GUIs.Common/frmDocumentResultList.resx @@ -388,7 +388,7 @@ Ordnerpfad kopieren - + Eigenschaften @@ -447,16 +447,16 @@ Fenster Layout zurücksetzen - + Adhoc Workflow starten - + Einchecken - + Auschecken - + Versionieren @@ -861,10 +861,10 @@ DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - MenuItemPropertiesECM + + MenuItemProperties - + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a @@ -921,28 +921,28 @@ DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - BarButtonItem7 + + MenuItemStartAdhocWorkflow - + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - BarButtonItem8 + + MenuItemCheckInFile - + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - BarButtonItem9 + + MenuItemCheckOutFile - + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - BarButtonItem10 + + MenuItemVersionFile - + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a diff --git a/GUIs.Common/frmDocumentResultList.vb b/GUIs.Common/frmDocumentResultList.vb index 2cdf934f..bc5f9cf1 100644 --- a/GUIs.Common/frmDocumentResultList.vb +++ b/GUIs.Common/frmDocumentResultList.vb @@ -803,7 +803,7 @@ Public Class frmDocumentResultList End Function #Region "File Actions" - Private Sub MenuItem_OpenProperties_ItemClick(sender As Object, e As ItemClickEventArgs) Handles MenuItemPropertiesECM.ItemClick + Private Sub MenuItem_OpenProperties_ItemClick(sender As Object, e As ItemClickEventArgs) Handles MenuItemProperties.ItemClick If _CurrentDocument Is Nothing Then Exit Sub End If diff --git a/Modules.EDMIAPI/Client/Options.vb b/Modules.EDMIAPI/Client/Options.vb index f894a8cc..5ded31a1 100644 --- a/Modules.EDMIAPI/Client/Options.vb +++ b/Modules.EDMIAPI/Client/Options.vb @@ -25,6 +25,13 @@ Public Property DateImported As Date = Date.Now End Class + ''' + ''' Import options for NewFileAsync. + ''' + Public Class CheckOutInOptions + Inherits BaseOptions + End Class + Public Class UpdateFileOptions Inherits BaseOptions diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.CheckInOutFileResponse.datasource b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.CheckInOutFileResponse.datasource new file mode 100644 index 00000000..8cee8348 --- /dev/null +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.CheckInOutFileResponse.datasource @@ -0,0 +1,10 @@ + + + + DigitalData.Modules.EDMI.API.EDMIServiceReference.CheckInOutFileResponse, Connected Services.EDMIServiceReference.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + \ No newline at end of file diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.CheckInOutFile.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.CheckInOutFile.xsd new file mode 100644 index 00000000..a5fef09c --- /dev/null +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.CheckInOutFile.xsd @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl index 8b12f002..04335481 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl @@ -24,6 +24,7 @@ + @@ -193,6 +194,12 @@ + + + + + + @@ -333,6 +340,10 @@ + + + + diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd index c0e93896..d6450046 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd @@ -12,6 +12,7 @@ + @@ -318,6 +319,20 @@ + + + + + + + + + + + + + + @@ -328,7 +343,7 @@ - + @@ -344,7 +359,7 @@ - + diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap index a8367d73..c9f8aca4 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap @@ -46,6 +46,7 @@ + diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb index 6161b094..ba0a54dc 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb @@ -33,6 +33,7 @@ Namespace EDMIServiceReference System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetAttributeValueResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetFileObjectResponse)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetClientConfigResponse))> _ Partial Public Class BaseResponse Inherits Object @@ -180,6 +181,9 @@ Namespace EDMIServiceReference System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetFileObjectRequest)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetFileObjectResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.FileObject)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileRequest)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileAction)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.RightsAccessRight))> _ Partial Public Class ScalarResult Inherits EDMIServiceReference.BaseResponse @@ -281,6 +285,9 @@ Namespace EDMIServiceReference System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetFileObjectRequest)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetFileObjectResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.FileObject)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileRequest)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileAction)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.RightsAccessRight))> _ Partial Public Class GetScalarValueResponse Inherits EDMIServiceReference.BaseResponse @@ -448,6 +455,9 @@ Namespace EDMIServiceReference System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetFileObjectRequest)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetFileObjectResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.FileObject)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileRequest)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileAction)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.RightsAccessRight))> _ Partial Public Class GetAttributeValueResponse Inherits EDMIServiceReference.BaseResponse @@ -535,6 +545,31 @@ Namespace EDMIServiceReference End Property End Class + _ + Partial Public Class CheckInOutFileResponse + Inherits EDMIServiceReference.BaseResponse + + _ + Private ObjectIdField As Long + + _ + Public Property ObjectId() As Long + Get + Return Me.ObjectIdField + End Get + Set + If (Me.ObjectIdField.Equals(value) <> true) Then + Me.ObjectIdField = value + Me.RaisePropertyChanged("ObjectId") + End If + End Set + End Property + End Class + _ + Partial Public Class CheckInOutFileRequest + Inherits Object + Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged + + _ + Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject + + _ + Private ActionField As EDMIServiceReference.CheckInOutFileAction + + _ + Private CommentField As Long + + _ + Private ObjectIdField As Long + + _ + Private UserField As EDMIServiceReference.UserState + + _ + Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData + Get + Return Me.extensionDataField + End Get + Set + Me.extensionDataField = value + End Set + End Property + + _ + Public Property Action() As EDMIServiceReference.CheckInOutFileAction + Get + Return Me.ActionField + End Get + Set + If (Me.ActionField.Equals(value) <> true) Then + Me.ActionField = value + Me.RaisePropertyChanged("Action") + End If + End Set + End Property + + _ + Public Property Comment() As Long + Get + Return Me.CommentField + End Get + Set + If (Me.CommentField.Equals(value) <> true) Then + Me.CommentField = value + Me.RaisePropertyChanged("Comment") + End If + End Set + End Property + + _ + Public Property ObjectId() As Long + Get + Return Me.ObjectIdField + End Get + Set + If (Me.ObjectIdField.Equals(value) <> true) Then + Me.ObjectIdField = value + Me.RaisePropertyChanged("ObjectId") + End If + End Set + End Property + + _ + Public Property User() As EDMIServiceReference.UserState + Get + Return Me.UserField + End Get + Set + If (Object.ReferenceEquals(Me.UserField, value) <> true) Then + Me.UserField = value + Me.RaisePropertyChanged("User") + End If + End Set + End Property + + Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged + + Protected Sub RaisePropertyChanged(ByVal propertyName As String) + Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent + If (Not (propertyChanged) Is Nothing) Then + propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName)) + End If + End Sub + End Class + + _ + Public Enum CheckInOutFileAction As Integer + + _ + CheckIn = 0 + + _ + CheckOut = 1 + End Enum + _ Public Enum RightsAccessRight As Integer @@ -2525,6 +2668,12 @@ Namespace EDMIServiceReference _ Function GetFileObjectAsync(ByVal Data As EDMIServiceReference.GetFileObjectRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.GetFileObjectResponse) + _ + Function CheckInOutFile(ByVal Data As EDMIServiceReference.CheckInOutFileRequest) As EDMIServiceReference.CheckInOutFileResponse + + _ + Function CheckInOutFileAsync(ByVal Data As EDMIServiceReference.CheckInOutFileRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.CheckInOutFileResponse) + 'CODEGEN: Der Nachrichtenvertrag wird generiert, da der Wrappername (DocumentStreamRequest) von Nachricht "DocumentStreamRequest" nicht mit dem Standardwert (GetFileByObjectId) übereinstimmt. _ Function EDMIServiceReference_IEDMIService_GetFileByObjectId(ByVal request As EDMIServiceReference.DocumentStreamRequest) As EDMIServiceReference.DocumentStreamResponse Implements EDMIServiceReference.IEDMIService.GetFileByObjectId Return MyBase.Channel.GetFileByObjectId(request) diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl index db3f426a..d81cb177 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl @@ -272,6 +272,15 @@ + + + + + + + + + diff --git a/Modules.EDMIAPI/EDMI.API.vbproj b/Modules.EDMIAPI/EDMI.API.vbproj index 2724259e..00829f3f 100644 --- a/Modules.EDMIAPI/EDMI.API.vbproj +++ b/Modules.EDMIAPI/EDMI.API.vbproj @@ -79,6 +79,8 @@ + + @@ -121,6 +123,9 @@ Designer + + Reference.svcmap + Reference.svcmap @@ -205,6 +210,9 @@ Designer + + Designer + Designer diff --git a/Modules.EDMIAPI/Modules/IDB/CheckInFile.vb b/Modules.EDMIAPI/Modules/IDB/CheckInFile.vb new file mode 100644 index 00000000..af853037 --- /dev/null +++ b/Modules.EDMIAPI/Modules/IDB/CheckInFile.vb @@ -0,0 +1,34 @@ +Imports DigitalData.Modules.EDMI.API.EDMIServiceReference +Imports DigitalData.Modules.Logging + +Namespace Modules.IDB + Public Class CheckInFile + Inherits BaseMethod + + Public Sub New(pLogConfig As LogConfig, pChannel As IEDMIServiceChannel) + MyBase.New(pLogConfig, pChannel) + End Sub + + Public Async Function RunAsync(pObjectId As Long, Optional pOptions As Options.CheckOutInOptions = Nothing) As Task(Of Long) + ' Set default options + If pOptions Is Nothing Then + pOptions = New Options.CheckOutInOptions() + End If + + Dim oCheckInFileResponse = Await Channel.CheckInOutFileAsync(New CheckInOutFileRequest With { + .User = New UserState With { + .Language = pOptions.Language, + .UserName = pOptions.Username + }, + .Action = CheckInOutFileAction.CheckOut, + .ObjectId = pObjectId + }) + + If oCheckInFileResponse.OK = False Then + Throw New ApplicationException("Could not Import File Contents!") + End If + + Return oCheckInFileResponse.ObjectId + End Function + End Class +End Namespace diff --git a/Modules.EDMIAPI/Modules/IDB/CheckOutFile.vb b/Modules.EDMIAPI/Modules/IDB/CheckOutFile.vb new file mode 100644 index 00000000..8707752d --- /dev/null +++ b/Modules.EDMIAPI/Modules/IDB/CheckOutFile.vb @@ -0,0 +1,36 @@ +Imports DigitalData.Modules.EDMI.API.EDMIServiceReference +Imports DigitalData.Modules.Logging + +Namespace Modules.IDB + Public Class CheckOutFile + Inherits BaseMethod + + Public Sub New(pLogConfig As LogConfig, pChannel As IEDMIServiceChannel) + MyBase.New(pLogConfig, pChannel) + End Sub + + Public Async Function RunAsync(pObjectId As Long, Optional pComment As String = "", Optional pOptions As Options.CheckOutInOptions = Nothing) As Task(Of Long) + ' Set default options + If pOptions Is Nothing Then + pOptions = New Options.CheckOutInOptions() + End If + + Dim oCheckOutFileResponse = Await Channel.CheckInOutFileAsync(New CheckInOutFileRequest With { + .User = New UserState With { + .Language = pOptions.Language, + .UserName = pOptions.Username + }, + .Action = CheckInOutFileAction.CheckOut, + .Comment = pComment, + .ObjectId = pObjectId + }) + + If oCheckOutFileResponse.OK = False Then + Throw New ApplicationException("Could not Import File Contents!") + End If + + Return oCheckOutFileResponse.ObjectId + End Function + End Class + +End Namespace diff --git a/Service.EDMIService/EDMIService.vb b/Service.EDMIService/EDMIService.vb index 8651b8ae..73383f18 100644 --- a/Service.EDMIService/EDMIService.vb +++ b/Service.EDMIService/EDMIService.vb @@ -109,6 +109,12 @@ Public Class EDMIService Return oGetFileObject.Run(pData) End Function + Public Function CheckInOutFile(pData As CheckInOutFile.CheckInOutFileRequest) As CheckInOutFile.CheckInOutFileResponse Implements IEDMIService.CheckInOutFile + _Logger.Debug("Start of Method [CheckInOutFile]") + Dim oCheckInOutFile As New CheckInOutFile.CheckInOutFileMethod(LogConfig, MSSQL_IDB, MSSQL_ECM, GlobalState) + Return oCheckInOutFile.Run(pData) + End Function + #Region "=== Database ===" Public Function GetCachedTables() As List(Of String) Implements IEDMIService.GetCachedTables diff --git a/Service.EDMIService/EDMIService.vbproj b/Service.EDMIService/EDMIService.vbproj index aae3abe5..3e7928b7 100644 --- a/Service.EDMIService/EDMIService.vbproj +++ b/Service.EDMIService/EDMIService.vbproj @@ -145,6 +145,9 @@ + + + diff --git a/Service.EDMIService/IEDMIService.vb b/Service.EDMIService/IEDMIService.vb index 3c231594..d6a50d02 100644 --- a/Service.EDMIService/IEDMIService.vb +++ b/Service.EDMIService/IEDMIService.vb @@ -97,6 +97,9 @@ Interface IEDMIService Function GetFileObject(Data As GetFileObject.GetFileObjectRequest) As GetFileObject.GetFileObjectResponse + + + Function CheckInOutFile(Data As CheckInOutFile.CheckInOutFileRequest) As CheckInOutFile.CheckInOutFileResponse #End Region #Region "Document (Old)" diff --git a/Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileMethod.vb b/Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileMethod.vb new file mode 100644 index 00000000..5bd479d5 --- /dev/null +++ b/Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileMethod.vb @@ -0,0 +1,117 @@ +Imports System.Data.SqlClient +Imports DigitalData.Modules.Base.IDB +Imports DigitalData.Modules.Database +Imports DigitalData.Modules.Database.MSSQLServer.TransactionMode +Imports DigitalData.Modules.Logging + +Namespace Methods.IDB.CheckInOutFile + Public Class CheckInOutFileMethod + Inherits BaseMethod + + Private ReadOnly Connection As SqlConnection + Private ReadOnly Transaction As SqlTransaction + + Public Sub New(pLogConfig As LogConfig, pDatabaseIDB As MSSQLServer, pDatabaseECM As MSSQLServer, pGlobalState As GlobalState) + MyBase.New(pLogConfig, pDatabaseIDB, pDatabaseECM, pGlobalState) + + Connection = DatabaseIDB.GetConnection() + Transaction = Connection.BeginTransaction() + End Sub + + Public Function Run(pData As CheckInOutFileRequest) As CheckInOutFileResponse + Try + Dim oResult = False + + If pData.Action = CheckInOutFileAction.CheckOut Then + oResult = CheckOutFile(pData.ObjectId, pData.User.UserName, pData.Comment) + + ElseIf pData.Action = CheckInOutFileAction.CheckIn Then + oResult = CheckInFile(pData.ObjectId, pData.User.UserName) + + Else + LogAndThrow("Invalid action supplied!") + + End If + + If oResult = False Then + LogAndThrow($"Could not Check In/Out file [{pData.ObjectId}]!") + End If + + Return New CheckInOutFileResponse(pData.ObjectId) + Catch ex As Exception + Logger.Warn("Error occurred while checkin in/out file!") + Logger.Error(ex) + + Logger.Info("Rolling back transaction.") + Transaction?.Rollback() + + Return New CheckInOutFileResponse(ex) + + End Try + End Function + + Private Function CheckOutFile(pObjectId As Long, pUsername As String, pComment As String) As Boolean + Try + Dim oTable = TestFileIsCheckedOut(pObjectId) + If oTable Is Nothing Then + Return False + End If + + ' If there are rows, the file is already checked out (either by the calling user or somebody else) + If oTable.Rows.Count > 0 Then + ' TODO: Return the person who has this file checked out + Return False + End If + + Dim oSQL = $"INSERT INTO TBIDB_OBJECT_CHECK_IN_OUT (IDB_OBJ_ID, CHECKED_OUT_WHEN, COMMENT, ADDED_WHO) + VALUES ({pObjectId}, GETDATE(), '{pComment}', '{pUsername}')" + Return DatabaseIDB.ExecuteNonQuery(oSQL) + + Catch ex As Exception + Logger.Error(ex) + Return False + + End Try + End Function + + Private Function CheckInFile(pObjectId As Long, pUsername As String) As Boolean + Try + Dim oTable = TestFileIsCheckedOut(pObjectId) + If oTable Is Nothing Then + Return False + End If + + ' If there are no rows, the file is not checked out + If oTable.Rows.Count > 0 Then + Return True + End If + + Dim oSQL = $"UPDATE TBIDB_OBJECT_CHECK_IN_OUT + SET CHECKED_IN_WHEN = GETDATE(), CHANGED_WHO = '{pUsername}' + WHERE IDB_OBJ_ID = {pObjectId} AND ADDED_WHO = '{pUsername}' AND CHECKED_IN_WHEN IS NULL" + Return DatabaseIDB.ExecuteNonQuery(oSQL) + + Catch ex As Exception + Logger.Error(ex) + Return False + + End Try + End Function + + Private Function TestFileIsCheckedOut(pObjectId As Long) As DataTable + Try + Dim oSqlCheck = $"SELECT * FROM TBIDB_OBJECT_CHECK_IN_OUT WHERE IDB_OBJ_ID = {pObjectId} AND CHECKED_IN_WHEN IS NULL" + Dim oTable As DataTable = DatabaseIDB.GetDatatable(oSqlCheck) + + Return oTable + Catch ex As Exception + Logger.Error(ex) + Return Nothing + + End Try + End Function + + + End Class + +End Namespace \ No newline at end of file diff --git a/Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileRequest.vb b/Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileRequest.vb new file mode 100644 index 00000000..e6e1cb2e --- /dev/null +++ b/Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileRequest.vb @@ -0,0 +1,31 @@ +Imports System.Runtime.Serialization +Imports DigitalData.Modules.ZooFlow.State + +Namespace Methods.IDB.CheckInOutFile + + + Public Class CheckInOutFileRequest + + Public Property ObjectId As Long + + + Public Property Comment As Long + + + Public Property Action As CheckInOutFileAction + + ''' + ''' User Importing the file + ''' + ''' + + Public Property User As UserState + End Class + + Public Enum CheckInOutFileAction + CheckIn + CheckOut + End Enum + +End Namespace + diff --git a/Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileResponse.vb b/Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileResponse.vb new file mode 100644 index 00000000..a8872a5d --- /dev/null +++ b/Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileResponse.vb @@ -0,0 +1,21 @@ +Imports System.Runtime.Serialization + +Namespace Methods.IDB.CheckInOutFile + + + Public Class CheckInOutFileResponse + Inherits Messages.BaseResponse + + + Public Property ObjectId As Long + + Public Sub New(pObjectId As Long) + MyBase.New() + ObjectId = pObjectId + End Sub + + Public Sub New(pException As Exception, Optional pDetails As String = "") + MyBase.New(pException, pDetails) + End Sub + End Class +End Namespace