Skip to content

Commit

Permalink
autodelete logic moved logic to onprocessend (#100)
Browse files Browse the repository at this point in the history
  • Loading branch information
acn-sbuad authored Jun 20, 2022
1 parent 7a7cf9d commit a0ff660
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 16 deletions.
2 changes: 1 addition & 1 deletion src/Altinn.App.Api/Altinn.App.Api.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<OutputType>Library</OutputType>
<Version>5.3.0-alpha.2</Version>
<Version>5.3.0-alpha.4</Version>
<AssemblyVersion>5.3.0.0</AssemblyVersion>
<PackageId>Altinn.App.Api</PackageId>
<PackageTags>Altinn;Studio;App;Api;Controllers</PackageTags>
Expand Down
2 changes: 1 addition & 1 deletion src/Altinn.App.Common/Altinn.App.Common.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<OutputType>Library</OutputType>
<Version>5.3.0-alpha.2</Version>
<Version>5.3.0-alpha.4</Version>
<AssemblyVersion>5.3.0.0</AssemblyVersion>
<PackageId>Altinn.App.Common</PackageId>
<PackageTags>Altinn;Studio;App;Common</PackageTags>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<OutputType>Library</OutputType>
<Version>5.3.0-alpha.2</Version>
<Version>5.3.0-alpha.4</Version>
<AssemblyVersion>5.3.0.0</AssemblyVersion>
<PackageId>Altinn.App.PlatformServices</PackageId>
<PackageTags>Altinn;Studio;App;Services;Platform</PackageTags>
Expand Down
42 changes: 29 additions & 13 deletions src/Altinn.App.PlatformServices/Implementation/AppBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,8 @@ public async Task OnStartProcess(string startEvent, Instance instance)
/// <inheritdoc />
public async Task OnEndProcess(string endEvent, Instance instance)
{
await Task.CompletedTask;
await AutoDeleteDataElements(instance);

_logger.LogInformation($"OnEndProcess for {instance.Id}, endEvent: {endEvent}");
}

Expand Down Expand Up @@ -245,7 +246,6 @@ public async Task OnEndProcessTask(string taskId, Instance instance)
foreach (DataType dataType in dataTypesToLock)
{
bool generatePdf = dataType.AppLogic?.ClassRef != null && dataType.EnablePdfCreation;
bool autoDeleteDataElement = dataType.AppLogic?.AutoDeleteOnProcessEnd == true && !_appMetadata.AutoDeleteOnProcessEnd;

foreach (DataElement dataElement in instance.Data.FindAll(de => de.DataType == dataType.Id))
{
Expand All @@ -263,17 +263,6 @@ public async Task OnEndProcessTask(string taskId, Instance instance)
{
await updateData;
}

if (autoDeleteDataElement)
{
await _dataClient.DeleteData(
_org,
_app,
int.Parse(instance.InstanceOwner.PartyId),
instanceGuid,
Guid.Parse(dataElement.Id),
true);
}
}
}

Expand Down Expand Up @@ -513,5 +502,32 @@ private async Task SendEFormidlingShipment(Instance instance)
throw;
}
}

private async Task AutoDeleteDataElements(Instance instance)
{
List<string> typesToDelete = _appMetadata.DataTypes.Where(dt => dt?.AppLogic?.AutoDeleteOnProcessEnd == true).Select(dt => dt.Id).ToList();
if (typesToDelete.Count == 0)
{
return;
}

instance = await _instanceClient.GetInstance(instance);
List<DataElement> elementsToDelete = instance.Data.Where(e => typesToDelete.Contains(e.DataType)).ToList();

List<Task> deleteTasks = new();
foreach (DataElement item in elementsToDelete)
{
deleteTasks.Add(
_dataClient.DeleteData(
_org,
_app,
int.Parse(instance.InstanceOwner.PartyId),
Guid.Parse(item.InstanceGuid),
Guid.Parse(item.Id),
true));
}

await Task.WhenAll(deleteTasks);
}
}
}

0 comments on commit a0ff660

Please sign in to comment.