2022-02-04 13:39:16 +01:00

42 lines
1.7 KiB
VB.net

Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
Namespace Methods.IDB.GetAttributeValue
Public Class GetAttributeValueMethod
Inherits BaseMethod
Public Sub New(pLogConfig As LogConfig, pDatabaseIDB As MSSQLServer, pDatabaseECM As MSSQLServer, pGlobalState As GlobalState)
MyBase.New(pLogConfig, pDatabaseIDB, pDatabaseECM, pGlobalState)
End Sub
Public Function Run(pData As GetAttributeValueRequest) As GetAttributeValueResponse
Try
If Helpers.TestObjectIdExists(pData.ObjectId) = False Then
LogAndThrow("ObjectId does not exist!")
End If
Dim oSQL As String = $"SELECT TERM_VALUE FROM FNIDB_GET_VARIABLE_VALUE ({pData.ObjectId}, '{pData.AttributeName}', '{pData.User.Language}')"
Dim oTable As DataTable = DatabaseIDB.GetDatatable(oSQL)
If oTable Is Nothing Then
Throw New ApplicationException($"Error while getting value for Attribute '{pData.AttributeName}'!")
End If
If oTable.Rows.Count = 0 Then
Throw New KeyNotFoundException($"Attribute '{pData.AttributeName}' is empty!")
End If
Dim oRow As DataRow = oTable.Rows.Item(0)
Dim oValue As Object = oRow.Item("TERM_VALUE")
Return New GetAttributeValueResponse(pData.ObjectId, oValue)
Catch ex As Exception
Logger.Warn("Error occurred while getting attribute value!")
Logger.Error(ex)
Return New GetAttributeValueResponse(ex)
End Try
End Function
End Class
End Namespace