diff --git a/src/Controllers/Storage/DataController.cs b/src/Controllers/Storage/DataController.cs index 0bc480ae..34506228 100644 --- a/src/Controllers/Storage/DataController.cs +++ b/src/Controllers/Storage/DataController.cs @@ -260,6 +260,7 @@ public async Task> GetMany(int instanceOwnerPartyI /// The data type identifier for the data being uploaded. /// An optional array of data element references. /// An optional id of the task the data element was generated from + /// An optional id of the task the data element was generated from /// The metadata of the new data element. [Authorize(Policy = AuthzConstants.POLICY_INSTANCE_WRITE)] [HttpPost("data")] @@ -273,7 +274,8 @@ public async Task> CreateAndUploadData( [FromRoute] Guid instanceGuid, [FromQuery] string dataType, [FromQuery(Name = "refs")] List refs = null, - [FromQuery(Name = "generatedFromTask")] string generatedFromTask = null) + [FromQuery(Name = "generatedFromTask")] string generatedFromTask = null, + [FromQuery(Name = "metadata")] List metadata = null) { if (instanceOwnerPartyId == 0 || string.IsNullOrEmpty(dataType) || Request.Body == null) { @@ -297,7 +299,7 @@ public async Task> CreateAndUploadData( return Forbid(); } - var streamAndDataElement = await ReadRequestAndCreateDataElementAsync(Request, dataType, refs, generatedFromTask, instance); + var streamAndDataElement = await ReadRequestAndCreateDataElementAsync(Request, dataType, refs, generatedFromTask, metadata, instance); Stream theStream = streamAndDataElement.Stream; DataElement newData = streamAndDataElement.DataElement; @@ -403,8 +405,8 @@ public async Task> OverwriteData( { return StatusCode(500, "Storage url does not match with instance metadata"); } - - var streamAndDataElement = await ReadRequestAndCreateDataElementAsync(Request, dataElement.DataType, refs, generatedFromTask, instance); + + var streamAndDataElement = await ReadRequestAndCreateDataElementAsync(Request, dataElement.DataType, refs, generatedFromTask, null, instance); Stream theStream = streamAndDataElement.Stream; DataElement updatedData = streamAndDataElement.DataElement; @@ -543,7 +545,7 @@ public async Task SetFileScanStatus( /// /// Creates a data element by reading the first multipart element or body of the request. /// - private async Task<(Stream Stream, DataElement DataElement)> ReadRequestAndCreateDataElementAsync(HttpRequest request, string elementType, List refs, string generatedFromTask, Instance instance) + private async Task<(Stream Stream, DataElement DataElement)> ReadRequestAndCreateDataElementAsync(HttpRequest request, string elementType, List refs, string generatedFromTask, List metadata, Instance instance) { DateTime creationTime = DateTime.UtcNow; Stream theStream; @@ -591,7 +593,7 @@ public async Task SetFileScanStatus( string user = User.GetUserOrOrgNo(); - DataElement newData = DataElementHelper.CreateDataElement(elementType, refs, instance, creationTime, contentType, contentFileName, fileSize, user, generatedFromTask); + DataElement newData = DataElementHelper.CreateDataElement(elementType, refs, instance, creationTime, contentType, contentFileName, fileSize, user, generatedFromTask, metadata); return (theStream, newData); } diff --git a/src/Helpers/Storage/DataElementHelper.cs b/src/Helpers/Storage/DataElementHelper.cs index f895eb7d..de06b7da 100644 --- a/src/Helpers/Storage/DataElementHelper.cs +++ b/src/Helpers/Storage/DataElementHelper.cs @@ -11,7 +11,7 @@ public static class DataElementHelper /// Creates a data element based on element type, instance id, content type, content file name and file size. /// /// DataElement - public static DataElement CreateDataElement(string dataType, List refs, Instance instance, DateTime creationTime, string contentType, string contentFileName, long fileSize, string user, string generatedFromTask) + public static DataElement CreateDataElement(string dataType, List refs, Instance instance, DateTime creationTime, string contentType, string contentFileName, long fileSize, string user, string generatedFromTask, List metadata) { string dataId = Guid.NewGuid().ToString(); @@ -36,6 +36,7 @@ public static DataElement CreateDataElement(string dataType, List refs, In LastChanged = creationTime, Size = fileSize, Refs = refs, + Metadata = metadata, }; if (!String.IsNullOrEmpty(generatedFromTask)) diff --git a/src/Services/Storage/Implementation/InstanceService.cs b/src/Services/Storage/Implementation/InstanceService.cs index 879826ba..0fcdcb61 100644 --- a/src/Services/Storage/Implementation/InstanceService.cs +++ b/src/Services/Storage/Implementation/InstanceService.cs @@ -75,7 +75,8 @@ public InstanceService(IInstanceRepository instanceRepository, IDataService data $"{signRequest.SignatureDocumentDataType}.json", 0, performedBy, - signRequest.GeneratedFromTask); + signRequest.GeneratedFromTask, + null); signDocument.Id = dataElement.Id;