diff --git a/GUIs.Common/DocumentResultList/frmDocumentResultList.vb b/GUIs.Common/DocumentResultList/frmDocumentResultList.vb
index 17ec85b7..57d774bc 100644
--- a/GUIs.Common/DocumentResultList/frmDocumentResultList.vb
+++ b/GUIs.Common/DocumentResultList/frmDocumentResultList.vb
@@ -210,16 +210,29 @@ Public Class frmDocumentResultList
End Select
End Sub
- Private Sub GridView_FocusedRowChanged(sender As GridView, e As FocusedRowChangedEventArgs)
+ Private Async Sub GridView_FocusedRowChanged(sender As GridView, e As FocusedRowChangedEventArgs)
_ActiveRowHandle = e.FocusedRowHandle
- DocumentViewer1.CloseDocument()
+ If _IsLegacy Then
+ If e.FocusedRowHandle >= 0 Then
+ DocumentViewer1.CloseDocument()
- If e.FocusedRowHandle >= 0 Then
- Dim oRow = sender.GetDataRow(e.FocusedRowHandle)
- Dim oFullPath = oRow.Item(COLUMN_FILEPATH)
+ Dim oRow = sender.GetDataRow(e.FocusedRowHandle)
+ Dim oFullPath = oRow.Item(COLUMN_FILEPATH)
+
+ DocumentViewer1.LoadFile(oFullPath)
+ End If
+
+ Else
+ If e.FocusedRowHandle >= 0 Then
+ DocumentViewer1.CloseDocument()
+
+ Dim oRow = sender.GetDataRow(e.FocusedRowHandle)
+ Dim oObjectId = oRow.Item(COLUMN_DOCID)
+
+ Dim oInfo = Await _IDBClient.GetDocumentInfo(_Environment.User.UserId, oObjectId)
+ End If
- DocumentViewer1.LoadFile(oFullPath)
End If
End Sub
diff --git a/Modules.EDMIAPI/Client.vb b/Modules.EDMIAPI/Client.vb
index f1f6ad9f..4ed0ca7e 100644
--- a/Modules.EDMIAPI/Client.vb
+++ b/Modules.EDMIAPI/Client.vb
@@ -1,5 +1,6 @@
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.EDMI.API.EDMIServiceReference
+Imports DigitalData.Modules.EDMI.API.Rights
Imports System.ServiceModel
Imports System.IO
@@ -17,6 +18,11 @@ Public Class Client
Public Datatable As DataTable
End Class
+ Public Class DocumentInfo
+ Public FullPath As String
+ Public AccessRight As AccessRight
+ End Class
+
'''
''' Creates a new EDMIAPI object
'''
@@ -151,16 +157,18 @@ Public Class Client
End Try
End Function
- Public Async Function GetAccessRightAsync(UserId As Long, ObjectId As Long) As Task(Of Rights.AccessRight)
+ Public Async Function GetDocumentInfo(UserId As Long, ObjectId As Long) As Task(Of DocumentInfo)
Try
- Dim oResponse As AccessRightResult = Await _channel.GetAccessRightAsync(UserId, ObjectId)
+ Dim oParams = New DocumentInfoRequest With {
+ .ObjectId = ObjectId,
+ .UserId = UserId
+ }
+ Dim oResponse As DocumentInfoResponse = Await _channel.GetFileInfoByObjectIdAsync(oParams)
- If oResponse.OK Then
- Return oResponse.Right
- Else
- _logger.Warn("Rights from server could not be fetched for UserId [{0}] on Object [{1}]. Returning default Right View", UserId, ObjectId)
- Return Rights.AccessRight.VIEW_ONLY
- End If
+ Return New DocumentInfo With {
+ .AccessRight = oResponse.FileRight,
+ .FullPath = oResponse.FullPath
+ }
Catch ex As Exception
_logger.Error(ex)
Throw ex
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.DocumentInfoResponse.datasource b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.DocumentInfoResponse.datasource
new file mode 100644
index 00000000..0f899425
--- /dev/null
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.DocumentInfoResponse.datasource
@@ -0,0 +1,10 @@
+
+
+
+ DigitalData.Modules.EDMI.API.EDMIServiceReference.DocumentInfoResponse, 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.Modules.EDMI.API.EDMIServiceReference.AccessRightResult.datasource b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.RightsAccessRight.datasource
similarity index 67%
rename from Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.AccessRightResult.datasource
rename to Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.RightsAccessRight.datasource
index 6b5713fa..b7dc0d4c 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.AccessRightResult.datasource
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.RightsAccessRight.datasource
@@ -5,6 +5,6 @@
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
-
- DigitalData.Modules.EDMI.API.EDMIServiceReference.AccessRightResult, Connected Services.EDMIServiceReference.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
+ DigitalData.Modules.EDMI.API.EDMIServiceReference.RightsAccessRight, 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.Messages.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Messages.xsd
index 6bbe67ac..943f1763 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Messages.xsd
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Messages.xsd
@@ -1,6 +1,5 @@
-
@@ -49,14 +48,4 @@
-
-
-
-
-
-
-
-
-
-
\ 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 186b4eab..0a4f00a0 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl
@@ -7,8 +7,8 @@
-
+
@@ -77,12 +77,6 @@
-
-
-
-
-
-
@@ -98,6 +92,12 @@
+
+
+
+
+
+
@@ -147,10 +147,6 @@
-
-
-
-
@@ -159,6 +155,10 @@
+
+
+
+
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd
index 29204c42..d67b55ef 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd
@@ -2,6 +2,7 @@
+
@@ -156,21 +157,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -199,11 +185,27 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap
index 873b6dfc..317fffe7 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap
@@ -29,8 +29,8 @@
-
+
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb
index 42e51812..1b1c5bcc 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb
@@ -23,7 +23,6 @@ Namespace EDMIServiceReference
System.SerializableAttribute(), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ScalarResult)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.NonQueryResult)), _
- System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.AccessRightResult)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.TableResult))> _
Partial Public Class BaseResult
Inherits Object
@@ -83,229 +82,206 @@ Namespace EDMIServiceReference
End If
End Sub
End Class
-
-
+
+ _
Partial Public Class ScalarResult
Inherits EDMIServiceReference.BaseResult
-
-
+
+ _
Private ScalarField As Object
-
-
+
+ _
Public Property Scalar() As Object
Get
Return Me.ScalarField
End Get
Set
- If (Object.ReferenceEquals(Me.ScalarField, Value) <> True) Then
- Me.ScalarField = Value
+ If (Object.ReferenceEquals(Me.ScalarField, value) <> true) Then
+ Me.ScalarField = value
Me.RaisePropertyChanged("Scalar")
End If
End Set
End Property
End Class
-
-
+
+ _
Partial Public Class NonQueryResult
Inherits EDMIServiceReference.BaseResult
End Class
-
-
- Partial Public Class AccessRightResult
- Inherits EDMIServiceReference.BaseResult
-
-
- Private RightField As EDMIServiceReference.RightsAccessRight
-
-
- Public Property Right() As EDMIServiceReference.RightsAccessRight
- Get
- Return Me.RightField
- End Get
- Set
- If (Me.RightField.Equals(Value) <> True) Then
- Me.RightField = Value
- Me.RaisePropertyChanged("Right")
- End If
- End Set
- End Property
- End Class
-
-
+
+ _
Partial Public Class TableResult
Inherits EDMIServiceReference.BaseResult
-
-
+
+ _
Private TableField As System.Data.DataTable
-
-
+
+ _
Public Property Table() As System.Data.DataTable
Get
Return Me.TableField
End Get
Set
- If (Object.ReferenceEquals(Me.TableField, Value) <> True) Then
- Me.TableField = Value
+ If (Object.ReferenceEquals(Me.TableField, value) <> true) Then
+ Me.TableField = value
Me.RaisePropertyChanged("Table")
End If
End Set
End Property
End Class
-
-
+
+ _
Public Enum RightsAccessRight As Integer
-
-
+
+ _
VIEW_ONLY = 1
-
-
+
+ _
VIEW_EXPORT = 2
-
-
+
+ _
FULL = 4
End Enum
-
-
+
+ _
Public Interface IEDMIService
-
-
+
+ _
Function Heartbeat() As Boolean
-
-
+
+ _
Function HeartbeatAsync() As System.Threading.Tasks.Task(Of Boolean)
-
-
+
+ _
Function ReturnDatatableFromCache(ByVal Name As String, ByVal FilterExpression As String, ByVal SortByColumn As String) As EDMIServiceReference.TableResult
-
-
+
+ _
Function ReturnDatatableFromCacheAsync(ByVal Name As String, ByVal FilterExpression As String, ByVal SortByColumn As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.TableResult)
-
-
+
+ _
Function ReturnDatatable_Firebird(ByVal SQL As String) As EDMIServiceReference.TableResult
-
-
+
+ _
Function ReturnDatatable_FirebirdAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.TableResult)
-
-
+
+ _
Function ReturnScalar_Firebird(ByVal SQL As String) As EDMIServiceReference.ScalarResult
-
-
+
+ _
Function ReturnScalar_FirebirdAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.ScalarResult)
-
-
+
+ _
Function ExecuteNonQuery_Firebird(ByVal SQL As String) As EDMIServiceReference.NonQueryResult
-
-
+
+ _
Function ExecuteNonQuery_FirebirdAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.NonQueryResult)
-
-
+
+ _
Function ReturnDatatable_MSSQL_IDB(ByVal SQL As String) As EDMIServiceReference.TableResult
-
-
+
+ _
Function ReturnDatatable_MSSQL_IDBAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.TableResult)
-
-
+
+ _
Function ReturnScalar_MSSQL_IDB(ByVal SQL As String) As EDMIServiceReference.ScalarResult
-
-
+
+ _
Function ReturnScalar_MSSQL_IDBAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.ScalarResult)
-
-
+
+ _
Function ExecuteNonQuery_MSSQL_IDB(ByVal SQL As String) As EDMIServiceReference.NonQueryResult
-
-
+
+ _
Function ExecuteNonQuery_MSSQL_IDBAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.NonQueryResult)
-
-
+
+ _
Function ReturnDatatable_MSSQL_ECM(ByVal SQL As String) As EDMIServiceReference.TableResult
-
-
+
+ _
Function ReturnDatatable_MSSQL_ECMAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.TableResult)
-
-
+
+ _
Function ReturnScalar_MSSQL_ECM(ByVal SQL As String) As EDMIServiceReference.ScalarResult
-
-
+
+ _
Function ReturnScalar_MSSQL_ECMAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.ScalarResult)
-
-
+
+ _
Function ExecuteNonQuery_MSSQL_ECM(ByVal SQL As String) As EDMIServiceReference.NonQueryResult
-
-
+
+ _
Function ExecuteNonQuery_MSSQL_ECMAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.NonQueryResult)
-
-
- Function GetAccessRight(ByVal UserId As Long, ByVal ObjectId As Long) As EDMIServiceReference.AccessRightResult
-
-
- Function GetAccessRightAsync(ByVal UserId As Long, ByVal ObjectId As Long) As System.Threading.Tasks.Task(Of EDMIServiceReference.AccessRightResult)
-
+
'CODEGEN: Der Nachrichtenvertrag wird generiert, da der Wrappername (DocumentImportRequest) von Nachricht "DocumentImportRequest" nicht mit dem Standardwert (ImportFile) übereinstimmt.
-
+ _
Function ImportFile(ByVal request As EDMIServiceReference.DocumentImportRequest) As EDMIServiceReference.DocumentImportResponse
-
-
+
+ _
Function ImportFileAsync(ByVal request As EDMIServiceReference.DocumentImportRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.DocumentImportResponse)
-
+
'CODEGEN: Der Nachrichtenvertrag wird generiert, da der Wrappername (DocumentStreamRequest) von Nachricht "DocumentStreamRequest" nicht mit dem Standardwert (GetFileByObjectId) übereinstimmt.
-
+ _
Function GetFileByObjectId(ByVal request As EDMIServiceReference.DocumentStreamRequest) As EDMIServiceReference.DocumentStreamResponse
-
-
+
+ _
Function GetFileByObjectIdAsync(ByVal request As EDMIServiceReference.DocumentStreamRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.DocumentStreamResponse)
-
+
+ _
+ Function GetFileInfoByObjectId(ByVal request As EDMIServiceReference.DocumentInfoRequest) As EDMIServiceReference.DocumentInfoResponse
+
+ 'CODEGEN: Der Nachrichtenvertrag wird generiert, da der Vorgang mehrere Rückgabewerte aufweist.
+ _
+ Function GetFileInfoByObjectIdAsync(ByVal request As EDMIServiceReference.DocumentInfoRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.DocumentInfoResponse)
+
'CODEGEN: Der Nachrichtenvertrag wird generiert, da der Vorgang ListFilesForUser weder in RPC noch in einem Dokument eingeschlossen ist.
-
+ _
Function ListFilesForUser(ByVal request As EDMIServiceReference.ListFilesForUserRequest) As EDMIServiceReference.DocumentListResponse
-
-
+
+ _
Function ListFilesForUserAsync(ByVal request As EDMIServiceReference.ListFilesForUserRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.DocumentListResponse)
End Interface
-
+
_
+ Partial Public Class DocumentInfoRequest
+
+ _
+ Public ObjectId As Long
+
+ _
+ Public UserId As Long
+
+ Public Sub New()
+ MyBase.New
+ End Sub
+
+ Public Sub New(ByVal ObjectId As Long, ByVal UserId As Long)
+ MyBase.New
+ Me.ObjectId = ObjectId
+ Me.UserId = UserId
+ End Sub
+ End Class
+
+ _
+ Partial Public Class DocumentInfoResponse
+
+ _
+ Public FileRight As EDMIServiceReference.RightsAccessRight
+
+ _
+ Public FullPath As String
+
+ Public Sub New()
+ MyBase.New
+ End Sub
+
+ Public Sub New(ByVal FileRight As EDMIServiceReference.RightsAccessRight, ByVal FullPath As String)
+ MyBase.New
+ Me.FileRight = FileRight
+ Me.FullPath = FullPath
+ End Sub
+ End Class
+
_
Function EDMIServiceReference_IEDMIService_ImportFile(ByVal request As EDMIServiceReference.DocumentImportRequest) As EDMIServiceReference.DocumentImportResponse Implements EDMIServiceReference.IEDMIService.ImportFile
Return MyBase.Channel.ImportFile(request)
@@ -614,6 +626,24 @@ Namespace EDMIServiceReference
Return CType(Me,EDMIServiceReference.IEDMIService).GetFileByObjectIdAsync(inValue)
End Function
+ _
+ Function EDMIServiceReference_IEDMIService_GetFileInfoByObjectId(ByVal request As EDMIServiceReference.DocumentInfoRequest) As EDMIServiceReference.DocumentInfoResponse Implements EDMIServiceReference.IEDMIService.GetFileInfoByObjectId
+ Return MyBase.Channel.GetFileInfoByObjectId(request)
+ End Function
+
+ Public Function GetFileInfoByObjectId(ByVal ObjectId As Long, ByVal UserId As Long, ByRef FullPath As String) As EDMIServiceReference.RightsAccessRight
+ Dim inValue As EDMIServiceReference.DocumentInfoRequest = New EDMIServiceReference.DocumentInfoRequest()
+ inValue.ObjectId = ObjectId
+ inValue.UserId = UserId
+ Dim retVal As EDMIServiceReference.DocumentInfoResponse = CType(Me,EDMIServiceReference.IEDMIService).GetFileInfoByObjectId(inValue)
+ FullPath = retVal.FullPath
+ Return retVal.FileRight
+ End Function
+
+ Public Function GetFileInfoByObjectIdAsync(ByVal request As EDMIServiceReference.DocumentInfoRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.DocumentInfoResponse) Implements EDMIServiceReference.IEDMIService.GetFileInfoByObjectIdAsync
+ Return MyBase.Channel.GetFileInfoByObjectIdAsync(request)
+ End Function
+
_
Function EDMIServiceReference_IEDMIService_ListFilesForUser(ByVal request As EDMIServiceReference.ListFilesForUserRequest) As EDMIServiceReference.DocumentListResponse Implements EDMIServiceReference.IEDMIService.ListFilesForUser
Return MyBase.Channel.ListFilesForUser(request)
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl
index ab72cafa..1f3071f6 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl
@@ -140,15 +140,6 @@
-
-
-
-
-
-
-
-
-
@@ -168,6 +159,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/Modules.EDMIAPI/EDMI.API.vbproj b/Modules.EDMIAPI/EDMI.API.vbproj
index 62d7626b..bb970afc 100644
--- a/Modules.EDMIAPI/EDMI.API.vbproj
+++ b/Modules.EDMIAPI/EDMI.API.vbproj
@@ -106,10 +106,10 @@
-
+
Reference.svcmap
-
+
Reference.svcmap
@@ -121,6 +121,9 @@
Reference.svcmap
+
+ Reference.svcmap
+
Reference.svcmap
diff --git a/Service.EDMIService/EDMIService.vb b/Service.EDMIService/EDMIService.vb
index 9302901b..6bbe3664 100644
--- a/Service.EDMIService/EDMIService.vb
+++ b/Service.EDMIService/EDMIService.vb
@@ -104,7 +104,7 @@ Public Class EDMIService
End If
Catch ex As Exception
_Logger.Error(ex)
- Return New TableResult(ex.Message)
+ Throw New FaultException(ex.Message)
End Try
End Function
#End Region
@@ -269,7 +269,7 @@ Public Class EDMIService
Dim oObjectId = MSSQL_IDB.GetScalarValue(oCommand, "@IDB_OBJ_ID")
- Return New Messages.DocumentImportResponse() With {.ObjectId = oObjectId}
+ Return New DocumentImportResponse() With {.ObjectId = oObjectId}
Catch ex As Exception
_Logger.Error(ex)
Throw New FaultException(ex.Message)
@@ -315,12 +315,15 @@ Public Class EDMIService
}
Return oMessage
+
Catch ex As IOException
_Logger.Error(ex)
Throw New FaultException($"Object [{Data.ObjectId}] could not be streamed!")
+
Catch ex As Exception
_Logger.Error(ex)
Throw New FaultException(ex.Message)
+
End Try
End Function
@@ -333,47 +336,82 @@ Public Class EDMIService
Return New DocumentListResponse() With {
.Datatable = oDatatable
}
+
Catch ex As Exception
_Logger.Error(ex)
Throw New FaultException(ex.Message)
+
End Try
End Function
-#End Region
-#Region "=== Access Rights ==="
- Public Function GetAccessRight(UserId As Long, ObjectId As Long) As AccessRightResult Implements IEDMIService.GetAccessRight
+ Public Function GetFileInfoByObjectId(Data As DocumentInfoRequest) As DocumentInfoResponse Implements IEDMIService.GetFileInfoByObjectId
Try
- Dim oTableName As String = "TBIDB_ACCESSRIGHT"
+ Dim oAccessRight = GetAccessRight(Data.UserId, Data.ObjectId)
+ Dim oFullPath = GetFullPath(Data.ObjectId)
- If Not GlobalState.TableStore.Tables.Contains(oTableName) Then
- _Logger.Warn("GetAccessRight: Access right table does not exist!")
- Return New AccessRightResult(AccessRight.VIEW_ONLY)
- End If
+ Return New DocumentInfoResponse With {
+ .FileRight = oAccessRight,
+ .FullPath = oFullPath
+ }
- Dim oTable As DataTable = GlobalState.TableStore.Tables.Item(oTableName)
- Dim oRows As List(Of DataRow) = oTable.Select($"IDB_OBJ_ID = {ObjectId} AND USR_ID = {UserId}").ToList()
- Dim oRight As AccessRight = AccessRight.VIEW_ONLY
-
- If oRows.Count = 0 Then
- _Logger.Warn("GetAccessRight: Access right assignment does not exist for user [{0}] on object [{1}]", UserId, ObjectId)
- Return New AccessRightResult(AccessRight.VIEW_ONLY)
- Else
- If oRows.Count > 1 Then
- _Logger.Warn("GetAccessRight: More than one access right assignment found for user [{0}] on object [{1}]", UserId, ObjectId)
- End If
-
- Dim oRow As DataRow = oRows.First()
- Dim oRightAsInt = oRow.Item("ACCESSRIGHT")
-
- oRight = Utils.ToEnum(Of AccessRight)(oRightAsInt)
- End If
-
- Return New AccessRightResult(oRight)
Catch ex As Exception
- _Logger.Warn("GetAccessRight: Exception while getting access right for user [{0}] on object [{1}]", UserId, ObjectId)
_Logger.Error(ex)
- Return New AccessRightResult(ex)
+ Throw New FaultException(ex.Message)
+
End Try
End Function
+
+ Private Function GetFullPath(ObjectId As Long) As String
+ Dim oTableName As String = "TBIDB_DOC_INFO"
+
+ If Not GlobalState.TableStore.Tables.Contains(oTableName) Then
+ _Logger.Warn("GetFullPath: Document info table does not exist!")
+ Return String.Empty
+ End If
+
+ Dim oTable As DataTable = GlobalState.TableStore.Tables.Item(oTableName)
+ Dim oRows As List(Of DataRow) = oTable.Select($"IDB_OBJ_ID = {ObjectId}").ToList()
+
+ Dim oFullPath As String
+
+ If oRows.Count = 0 Then
+ _Logger.Warn("GetFullPath: Full path does not exist for on object [{1}]", ObjectId)
+ oFullPath = String.Empty
+ Else
+ Dim oRow As DataRow = oRows.First()
+ oFullPath = oRow.Item("FULL_PATH")
+ End If
+
+ Return oFullPath
+ End Function
+
+ Private Function GetAccessRight(UserId As Long, ObjectId As Long) As AccessRight
+ Dim oTableName As String = "TBIDB_ACCESSRIGHT"
+
+ If Not GlobalState.TableStore.Tables.Contains(oTableName) Then
+ _Logger.Warn("GetAccessRight: Access right table does not exist!")
+ Return AccessRight.VIEW_ONLY
+ End If
+
+ Dim oTable As DataTable = GlobalState.TableStore.Tables.Item(oTableName)
+ Dim oRows As List(Of DataRow) = oTable.Select($"IDB_OBJ_ID = {ObjectId} AND USR_ID = {UserId}").ToList()
+ Dim oRight As AccessRight = AccessRight.VIEW_ONLY
+
+ If oRows.Count = 0 Then
+ _Logger.Warn("GetAccessRight: Access right assignment does not exist for user [{0}] on object [{1}]", UserId, ObjectId)
+ Return AccessRight.VIEW_ONLY
+ Else
+ If oRows.Count > 1 Then
+ _Logger.Warn("GetAccessRight: More than one access right assignment found for user [{0}] on object [{1}]", UserId, ObjectId)
+ End If
+
+ Dim oRow As DataRow = oRows.First()
+ Dim oRightAsInt = oRow.Item("ACCESSRIGHT")
+
+ oRight = Utils.ToEnum(Of AccessRight)(oRightAsInt)
+ End If
+
+ Return oRight
+ End Function
#End Region
End Class
\ No newline at end of file
diff --git a/Service.EDMIService/IEDMIService.vb b/Service.EDMIService/IEDMIService.vb
index e15fe05f..7a76c450 100644
--- a/Service.EDMIService/IEDMIService.vb
+++ b/Service.EDMIService/IEDMIService.vb
@@ -50,11 +50,6 @@ Interface IEDMIService
Function ExecuteNonQuery_MSSQL_ECM(SQL As String) As NonQueryResult
#End Region
-#Region "Access Rights"
-
- Function GetAccessRight(UserId As Long, ObjectId As Long) As AccessRightResult
-#End Region
-
#Region "Document (New)"
Function ImportFile(Data As DocumentImportRequest) As DocumentImportResponse
@@ -62,6 +57,9 @@ Interface IEDMIService
Function GetFileByObjectId(Data As DocumentStreamRequest) As DocumentStreamResponse
+
+ Function GetFileInfoByObjectId(Data As DocumentInfoRequest) As DocumentInfoResponse
+
Function ListFilesForUser() As DocumentListResponse
#End Region
diff --git a/Service.EDMIService/Results/Messages.vb b/Service.EDMIService/Results/Messages.vb
index bda16d0b..aa5c8d00 100644
--- a/Service.EDMIService/Results/Messages.vb
+++ b/Service.EDMIService/Results/Messages.vb
@@ -1,6 +1,7 @@
Imports System.IO
Imports System.Runtime.Serialization
Imports System.ServiceModel
+Imports DigitalData.Modules.EDMI.API.Rights
Namespace Messages
@@ -43,6 +44,26 @@ Namespace Messages
End Class
#End Region
+#Region "DocumentInfo"
+
+ Public Class DocumentInfoRequest
+
+ Public ObjectId As Long
+
+
+ Public UserId As Long
+ End Class
+
+
+ Public Class DocumentInfoResponse
+
+ Public FullPath As String
+
+
+ Public FileRight As AccessRight
+ End Class
+#End Region
+
#Region "DocumentList"