/// <inheritdoc /> public async Task OnEndProcessTask(string taskId, Instance instance) { await RunProcessTaskEnd(taskId, instance); _logger.LogInformation($"OnEndProcessTask for {instance.Id}. Locking data elements connected to {taskId}"); List <DataType> dataTypesToLock = _appMetadata.DataTypes.FindAll(dt => dt.TaskId == taskId); foreach (DataType dataType in dataTypesToLock) { bool generatePdf = dataType.AppLogic != null; foreach (DataElement dataElement in instance.Data.FindAll(de => de.DataType == dataType.Id)) { dataElement.Locked = true; _logger.LogInformation($"Locking data element {dataElement.Id} of dataType {dataType.Id}."); Task updateData = _dataService.Update(instance, dataElement); if (generatePdf) { Type dataElementType = GetAppModelType(dataType.AppLogic.ClassRef); Task createPdf = GenerateAndStoreReceiptPDF(instance, taskId, dataElement, dataElementType); await Task.WhenAll(updateData, createPdf); } else { await updateData; } } } if (_appSettings != null && _appSettings.EnableEFormidling && _appMetadata.EFormidling.SendAfterTaskId == taskId) { await SendEFormidlingShipment(instance); } if (_appMetadata.AutoDeleteOnProcessEnd) { int instanceOwnerPartyId = int.Parse(instance.InstanceOwner.PartyId); Guid instanceGuid = Guid.Parse(instance.Id.Split("/")[1]); await _instanceService.DeleteInstance(instanceOwnerPartyId, instanceGuid, true); } await Task.CompletedTask; }
public async Task <ActionResult <Instance> > DeleteInstance( [FromRoute] int instanceOwnerPartyId, [FromRoute] Guid instanceGuid, [FromQuery] bool hard) { try { Instance deletedInstance = await _instanceService.DeleteInstance(instanceOwnerPartyId, instanceGuid, hard); SelfLinkHelper.SetInstanceAppSelfLinks(deletedInstance, Request); return(Ok(deletedInstance)); } catch (Exception exception) { return(ExceptionResponse(exception, $"Deleting instance {instanceOwnerPartyId}/{instanceGuid} failed.")); } }