Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .bruno/Correspondence/Initialize and Upload.bru
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ body:multipart-form {
"attachments": []
},
"RequestedPublishTime": "2024-09-28T12:44:28.290518+00:00",
"allowSystemDeleteAfter": "2025-08-29T13:31:28.290518+00:00",
"dueDateTime": "2025-05-29T13:31:28.290518+00:00",
"externalReferences": [
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ body:multipart-form {
correspondence.content.messagesummary: Ett sammendrag for meldingen
correspondence.content.messagebody: Som kan være plain text eller **markdown**
correspondence.requestedpublishtime: {{requestedPublishTime}}
correspondence.allowsystemdeleteafter: {{allowSystemDeleteAfter}}
correspondence.duedatetime: {{dueDateTime}}
correspondence.propertylist.casenumber: 123
correspondence.propertylist.etc: can-use-for-anything
Expand Down
1 change: 0 additions & 1 deletion .bruno/Correspondence/Initialize.bru
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ body:json {
},
"requestedPublishTime": "{{requestedPublishTime}}",
"dueDateTime": "{{dueDateTime}}",
"allowSystemDeleteAfter": "{{allowSystemDeleteAfter}}",
"externalReferences": [],
"propertyList": {
"caseNumber": "123",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ export function getCorrespondenceForm(resource_id, sender, recipient, boundary)
addFormField('Correspondence.content.attachments[0].FileName', 'testfile.txt');
addFormField('Correspondence.content.attachments[0].IsEncrypted', 'true');
addFormField('Correspondence.visibleFrom', visibleFrom.toISOString());
addFormField('Correspondence.allowSystemDeleteAfter', deleteAfter.toISOString());
addFormField('Correspondence.dueDateTime', dueDateTime.toISOString());
addFormField('Correspondence.content.externalReferences[0].referenceValue', 'test');
addFormField('Correspondence.content.externalReferences[0].referenceType', 'AltinnBrokerFileTransfer');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ export function getCorrespondenceJson(resource_id, sender, recipient) {
const visibleFrom = new Date(now);
const dueDateTime = new Date(now.getTime());
dueDateTime.setMonth(dueDateTime.getMonth() + 1);
const deleteAfter = new Date(now.getTime());
deleteAfter.setMonth(deleteAfter.getMonth() + 5);
const data_without_attachment = {
Correspondence: {
resourceId: resource_id,
Expand All @@ -18,7 +16,6 @@ export function getCorrespondenceJson(resource_id, sender, recipient) {
attachments: [],
},
visibleFrom: visibleFrom.toISOString(),
allowSystemDeleteAfter: deleteAfter.toISOString(),
dueDateTime: dueDateTime.toISOString(),
externalReferences: [],
propertyList: {},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ formData.append('Correspondence.content.attachments[0].SendersReference', "1234"
formData.append('Correspondence.content.attachments[0].FileName', "testfile.txt");
formData.append('Correspondence.content.attachments[0].IsEncrypted', "true");
formData.append('Correspondence.visibleFrom', "2024-05-29T13:31:28.290518+00:00");
formData.append('Correspondence.allowSystemDeleteAfter', "2025-05-29T13:31:28.290518+00:00");
formData.append('Correspondence.dueDateTime', "2025-05-29T13:31:28.290518+00:00");
formData.append('Correspondence.content.externalReferences[0].referenceValue', "test");
formData.append('Correspondence.content.externalReferences[0].referenceType', "AltinnBrokerFileTransfer");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ const data_without_attachment = {
attachments: [],
},
visibleFrom: "2024-09-28T12:44:28.290518+00:00",
allowSystemDeleteAfter: "2025-08-29T13:31:28.290518+00:00",
dueDateTime: "2025-05-29T13:31:28.290518+00:00",
externalReferences: [],
propertyList: {},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -180,11 +180,6 @@ public CorrespondenceBuilder WithRequestedPublishTime(DateTimeOffset? requestedP
_correspondence.Correspondence.RequestedPublishTime = requestedPublishTime;
return this;
}
public CorrespondenceBuilder WithAllowSystemDeleteAfter(DateTimeOffset dueDateTime)
{
_correspondence.Correspondence.AllowSystemDeleteAfter = dueDateTime;
return this;
}
public CorrespondenceBuilder WithConfirmationNeeded(bool confirmationNeeded)
{
_correspondence.Correspondence.IsConfirmationNeeded = confirmationNeeded;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -216,12 +216,6 @@ public CorrespondenceEntityBuilder WithServiceOwnerId(string serviceOwnerId)
return this;
}

public CorrespondenceEntityBuilder WithAllowSystemDeleteAfter(DateTimeOffset? allowSystemDeleteAfter)
{
_correspondenceEntity.AllowSystemDeleteAfter = allowSystemDeleteAfter;
return this;
}

public CorrespondenceEntityBuilder WithMessageSummary(string messageSummary)
{
if (_correspondenceEntity.Content != null)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ public static MultipartFormDataContent CorrespondenceToFormData(BaseCorresponden
{ new StringContent(correspondence.SendersReference), "correspondence.sendersReference" },
{ new StringContent(correspondence.RequestedPublishTime.ToString()), "correspondence.RequestedPublishTime" },
{ new StringContent(correspondence.DueDateTime.ToString()), "correspondence.dueDateTime" },
{ new StringContent(correspondence.AllowSystemDeleteAfter.ToString()), "correspondence.AllowSystemDeleteAfter" },
{ new StringContent(correspondence.Content.MessageTitle), "correspondence.content.MessageTitle" },
{ new StringContent(correspondence.Content.MessageSummary), "correspondence.content.MessageSummary" },
{ new StringContent(correspondence.Content.MessageBody), "correspondence.content.MessageBody" },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -427,58 +427,6 @@ public async Task InitializeCorrespondence_DueDate_PriorRequestedPublishTime_Ret
Assert.Equal(HttpStatusCode.BadRequest, initializeCorrespondenceResponse.StatusCode);
}

[Fact]
public async Task InitializeCorrespondence_AllowSystemDeleteAfter_PriorToday_Returns_BadRequest()
{
// Arrange
var payload = new CorrespondenceBuilder()
.CreateCorrespondence()
.WithAllowSystemDeleteAfter(DateTimeOffset.UtcNow.AddDays(-7))
.Build();

// Act
var initializeCorrespondenceResponse = await _senderClient.PostAsJsonAsync("correspondence/api/v1/correspondence", payload);

// Assert
Assert.Equal(HttpStatusCode.BadRequest, initializeCorrespondenceResponse.StatusCode);
}

[Fact]
public async Task InitializeCorrespondence_AllowSystemDeleteAfter_PriorRequestedPublishTime_Returns_BadRequest()
{
// Arrange
var payload = new CorrespondenceBuilder()
.CreateCorrespondence()
.WithAllowSystemDeleteAfter(DateTimeOffset.UtcNow.AddDays(7))
.WithRequestedPublishTime(DateTimeOffset.UtcNow.AddDays(14))
.WithDueDateTime(DateTimeOffset.UtcNow.AddDays(21)) // ensure DueDate is after RequestedPublishTime
.Build();

// Act
var initializeCorrespondenceResponse = await _senderClient.PostAsJsonAsync("correspondence/api/v1/correspondence", payload);

// Assert
Assert.Equal(HttpStatusCode.BadRequest, initializeCorrespondenceResponse.StatusCode);
}

[Fact]
public async Task InitializeCorrespondence_AllowSystemDeleteAfter_PriorDueDate_Returns_BadRequest()
{
// Arrange
var payload = new CorrespondenceBuilder()
.CreateCorrespondence()
.WithAllowSystemDeleteAfter(DateTimeOffset.UtcNow.AddDays(14))
.WithRequestedPublishTime(DateTimeOffset.UtcNow.AddDays(7))
.WithDueDateTime(DateTimeOffset.UtcNow.AddDays(21))
.Build();

// Act
var initializeCorrespondenceResponse = await _senderClient.PostAsJsonAsync("correspondence/api/v1/correspondence", payload);

// Assert
Assert.Equal(HttpStatusCode.BadRequest, initializeCorrespondenceResponse.StatusCode);
}

[Fact]
public async Task InitializeCorrespondence_WithConfirmationNeeded_Without_DueDate_Returns_BadRequest()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,7 @@ public async Task MakeCorrespondenceAvailable_Defined()
.WithStatusEvent(MigrateCorrespondenceStatusExt.Archived, new DateTime(2024, 1, 9, 10, 50, 17))
.Build();
SetNotificationHistory(migrateCorrespondenceExt);
string jsonCorr = "{\"correspondenceData\":{\"correspondence\":{\"resourceId\":\"skd-migratedcorrespondence-3476-130314\",\"sender\":\"urn:altinn:organization:identifier-no:974761076\",\"senderPartyUuid\":\"e6e80419-0019-4892-b8a7-78ac03eb3c51\",\"sendersReference\":\"b4199d2c-c063-4bb2-bce6-0b4d69f5acea\",\"messageSender\":\"Skatteetaten\",\"content\":{\"language\":\"nb\",\"messageTitle\":\"A03 a-melding tilbakemelding for 2025-05 - meldingsId: tlx-1232714052\",\"messageSummary\":\"\",\"messageBody\":\"Tilbakemelding på a-melding\"},\"requestedPublishTime\":\"2025-06-30T12:06:09.487+02:00\",\"allowSystemDeleteAfter\":null,\"dueDateTime\":null,\"externalReferences\":[],\"propertyList\":{\"Altinn2ArchiveUnitReference\":\"AR20699019\"},\"replyOptions\":[],\"ignoreReservation\":null,\"published\":\"2025-06-30T12:06:09.487+02:00\",\"isConfirmationNeeded\":false},\"recipients\":[\"urn:altinn:organization:identifier-no:313414450\"],\"recipientPartyUuids\":[\"aa0c3933-4d4e-4bbb-8ac6-1becd706ffe8\"],\"existingAttachments\":[]},\"altinn2CorrespondenceId\":30088189,\"eventHistory\":[{\"status\":0,\"statusText\":\"Correspondence Created in Altinn 2\",\"statusChanged\":\"2025-06-30T12:06:09.487+02:00\",\"eventUserUuid\":\"00000000-0000-0000-0000-000000000000\",\"eventUserPartyUuid\":\"00000000-0000-0000-0000-000000000000\"},{\"status\":2,\"statusText\":\"Correspondence Published in Altinn 2\",\"statusChanged\":\"2025-06-30T12:06:09.487+02:00\",\"eventUserUuid\":\"e6e80419-0019-4892-b8a7-78ac03eb3c51\",\"eventUserPartyUuid\":\"e6e80419-0019-4892-b8a7-78ac03eb3c51\"},{\"status\":4,\"statusText\":\"Migrated event Read from Altinn 2\",\"statusChanged\":\"2025-06-30T12:06:46.337+02:00\",\"eventUserUuid\":\"2a064dc8-193e-4ca0-9027-9aef49c96db1\",\"eventUserPartyUuid\":\"2a064dc8-193e-4ca0-9027-9aef49c96db1\"}],\"notificationHistory\":[],\"forwardingHistory\":[],\"IsMigrating\":true,\"created\":\"2025-06-30T12:06:09.487+02:00\",\"partyId\":51843981}";
string jsonCorr = "{\"correspondenceData\":{\"correspondence\":{\"resourceId\":\"skd-migratedcorrespondence-3476-130314\",\"sender\":\"urn:altinn:organization:identifier-no:974761076\",\"senderPartyUuid\":\"e6e80419-0019-4892-b8a7-78ac03eb3c51\",\"sendersReference\":\"b4199d2c-c063-4bb2-bce6-0b4d69f5acea\",\"messageSender\":\"Skatteetaten\",\"content\":{\"language\":\"nb\",\"messageTitle\":\"A03 a-melding tilbakemelding for 2025-05 - meldingsId: tlx-1232714052\",\"messageSummary\":\"\",\"messageBody\":\"Tilbakemelding på a-melding\"},\"requestedPublishTime\":\"2025-06-30T12:06:09.487+02:00\",\"dueDateTime\":null,\"externalReferences\":[],\"propertyList\":{\"Altinn2ArchiveUnitReference\":\"AR20699019\"},\"replyOptions\":[],\"ignoreReservation\":null,\"published\":\"2025-06-30T12:06:09.487+02:00\",\"isConfirmationNeeded\":false},\"recipients\":[\"urn:altinn:organization:identifier-no:313414450\"],\"recipientPartyUuids\":[\"aa0c3933-4d4e-4bbb-8ac6-1becd706ffe8\"],\"existingAttachments\":[]},\"altinn2CorrespondenceId\":30088189,\"eventHistory\":[{\"status\":0,\"statusText\":\"Correspondence Created in Altinn 2\",\"statusChanged\":\"2025-06-30T12:06:09.487+02:00\",\"eventUserUuid\":\"00000000-0000-0000-0000-000000000000\",\"eventUserPartyUuid\":\"00000000-0000-0000-0000-000000000000\"},{\"status\":2,\"statusText\":\"Correspondence Published in Altinn 2\",\"statusChanged\":\"2025-06-30T12:06:09.487+02:00\",\"eventUserUuid\":\"e6e80419-0019-4892-b8a7-78ac03eb3c51\",\"eventUserPartyUuid\":\"e6e80419-0019-4892-b8a7-78ac03eb3c51\"},{\"status\":4,\"statusText\":\"Migrated event Read from Altinn 2\",\"statusChanged\":\"2025-06-30T12:06:46.337+02:00\",\"eventUserUuid\":\"2a064dc8-193e-4ca0-9027-9aef49c96db1\",\"eventUserPartyUuid\":\"2a064dc8-193e-4ca0-9027-9aef49c96db1\"}],\"notificationHistory\":[],\"forwardingHistory\":[],\"IsMigrating\":true,\"created\":\"2025-06-30T12:06:09.487+02:00\",\"partyId\":51843981}";

migrateCorrespondenceExt = JsonConvert.DeserializeObject<MigrateCorrespondenceExt>(jsonCorr);
CorrespondenceMigrationStatusExt resultObj = await MigrateSingleCorrespondence_NoAdd(migrateCorrespondenceExt);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,11 @@ public async Task ExecuteCleanupInBackground_RemovesExpiresAtAndCountsAlreadyOk(
.WithCreated(now.UtcDateTime.AddMinutes(-2))
.WithRequestedPublishTime(now.AddMinutes(-2))
.WithExternalReference(ReferenceType.DialogportenDialogId, "d1")
.WithAllowSystemDeleteAfter(now.AddDays(30))
.Build();
var c2 = new CorrespondenceEntityBuilder()
.WithCreated(now.UtcDateTime.AddMinutes(-1))
.WithRequestedPublishTime(now.AddMinutes(-1))
.WithExternalReference(ReferenceType.DialogportenDialogId, "d2")
.WithAllowSystemDeleteAfter(now.AddDays(30))
.Build();

var repo = new Mock<ICorrespondenceRepository>();
Expand Down Expand Up @@ -70,7 +68,6 @@ public async Task ExecuteCleanupInBackground_DoesNotReprocessOrSkipItemsBetweenB
.WithCreated(baseTime.AddSeconds(i).UtcDateTime)
.WithRequestedPublishTime(baseTime.AddSeconds(i))
.WithExternalReference(ReferenceType.DialogportenDialogId, $"d{i}")
.WithAllowSystemDeleteAfter(baseTime.AddDays(30))
.Build());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,6 @@ public CorrespondenceController(ILogger<CorrespondenceController> logger)
/// <li>1007: Existing attachment not found</li>
/// <li>1008: DueDateTime cannot be prior to today</li>
/// <li>1009: DueDateTime cannot be prior to RequestedPublishTime</li>
/// <li>1010: AllowSystemDelete cannot be prior to today</li>
/// <li>1011: AllowSystemDelete cannot be prior to RequestedPublishTime</li>
/// <li>1012: AllowSystemDelete cannot be prior to DueDateTime</li>
/// <li>1013: Sender cannot delete correspondence that has been published</li>
/// <li>1016: DueDateTime is required when confirmation is needed</li>
/// <li>1017: The sender of the correspondence must be equal the sender of existing attachments</li>
Expand Down Expand Up @@ -163,9 +160,6 @@ public async Task<ActionResult<InitializeCorrespondencesResponseExt>> Initialize
/// <li>1007: Existing attachment not found</li>
/// <li>1008: DueDateTime cannot be prior to today</li>
/// <li>1009: DueDateTime cannot be prior to RequestedPublishTime</li>
/// <li>1010: AllowSystemDelete cannot be prior to today</li>
/// <li>1011: AllowSystemDelete cannot be prior to RequestedPublishTime</li>
/// <li>1012: AllowSystemDelete cannot be prior to DueDateTime</li>
/// <li>1013: Sender cannot delete correspondence that has been published</li>
/// <li>1016: DueDateTime is required when confirmation is needed</li>
/// <li>1017: The sender of the correspondence must be equal the sender of existing attachments</li>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ internal static CorrespondenceDetailsExt MapToExternal(GetCorrespondenceDetailsR
ResourceId = correspondenceDetails.ResourceId.ToString(),
RequestedPublishTime = correspondenceDetails.RequestedPublishTime,
IgnoreReservation = correspondenceDetails.IgnoreReservation,
AllowSystemDeleteAfter = correspondenceDetails.AllowSystemDeleteAfter,
DueDateTime = correspondenceDetails.DueDateTime,
PropertyList = correspondenceDetails.PropertyList,
Published = correspondenceDetails.Published,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ internal static CorrespondenceOverviewExt MapToExternal(GetCorrespondenceOvervie
ExternalReferences = ExternalReferenceMapper.MapListToExternal(correspondenceOverview.ExternalReferences),
ResourceId = correspondenceOverview.ResourceId.ToString(),
RequestedPublishTime = correspondenceOverview.RequestedPublishTime,
AllowSystemDeleteAfter = correspondenceOverview.AllowSystemDeleteAfter,
DueDateTime = correspondenceOverview.DueDateTime,
PropertyList = correspondenceOverview.PropertyList,
IgnoreReservation = correspondenceOverview.IgnoreReservation,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ internal static OneOf<InitializeCorrespondencesRequest, Error> MapToRequest(Init
ServiceOwnerId = null, // Will be populated by the handler after determining service owner from ResourceRegistry
MessageSender = request.Correspondence.MessageSender,
RequestedPublishTime = request.Correspondence.RequestedPublishTime ?? DateTimeOffset.UtcNow,
AllowSystemDeleteAfter = request.Correspondence.AllowSystemDeleteAfter,
DueDateTime = request.Correspondence.DueDateTime,
PropertyList = request.Correspondence.PropertyList,
ReplyOptions = request.Correspondence.ReplyOptions != null ? CorrespondenceReplyOptionsMapper.MapListToEntities(request.Correspondence.ReplyOptions) : new List<CorrespondenceReplyOptionEntity>(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ internal static LegacyCorrespondenceOverviewExt MapToExternal(LegacyGetCorrespon
ExternalReferences = ExternalReferenceMapper.MapListToExternal(correspondenceOverview.ExternalReferences),
ResourceId = correspondenceOverview.ResourceId.ToString(),
RequestedPublishTime = correspondenceOverview.RequestedPublishTime,
AllowSystemDeleteAfter = correspondenceOverview.AllowSystemDeleteAfter,
DueDateTime = correspondenceOverview.DueDateTime,
PropertyList = correspondenceOverview.PropertyList,
IgnoreReservation = correspondenceOverview.IgnoreReservation,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ internal static async Task<MigrateCorrespondenceRequest> MapToRequestAsync(Migra
ServiceOwnerId = await serviceOwnerHelper.GetSafeServiceOwnerIdAsync(migrateCorrespondenceExt.CorrespondenceData.Correspondence.Sender, cancellationToken),
MessageSender = migrateCorrespondenceExt.CorrespondenceData.Correspondence.MessageSender,
RequestedPublishTime = (DateTimeOffset)migrateCorrespondenceExt.CorrespondenceData.Correspondence.RequestedPublishTime,
AllowSystemDeleteAfter = migrateCorrespondenceExt.CorrespondenceData.Correspondence.AllowSystemDeleteAfter,
DueDateTime = migrateCorrespondenceExt.CorrespondenceData.Correspondence.DueDateTime,
PropertyList = migrateCorrespondenceExt.CorrespondenceData.Correspondence.PropertyList,
ReplyOptions = migrateCorrespondenceExt.CorrespondenceData.Correspondence.ReplyOptions != null ? CorrespondenceReplyOptionsMapper.MapListToEntities(migrateCorrespondenceExt.CorrespondenceData.Correspondence.ReplyOptions) : new List<CorrespondenceReplyOptionEntity>(),
Expand Down
6 changes: 0 additions & 6 deletions src/Altinn.Correspondence.API/Models/BaseCorrespondenceExt.cs
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,6 @@ public class BaseCorrespondenceExt
[JsonPropertyName("requestedPublishTime")]
public DateTimeOffset? RequestedPublishTime { get; set; }

/// <summary>
/// When Altinn can remove the correspondence from its database.
/// </summary>
[JsonPropertyName("allowSystemDeleteAfter")]
public DateTimeOffset? AllowSystemDeleteAfter { get; set; }

/// <summary>
/// When the recipient must reply to the correspondence
/// </summary>
Expand Down
2 changes: 0 additions & 2 deletions src/Altinn.Correspondence.API/Models/CorrespondenceExt.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@ public class CorrespondenceExt

public required DateTimeOffset RequestedPublishTime { get; set; }

public DateTimeOffset? AllowSystemDeleteAfter { get; set; }

public DateTimeOffset? DueDateTime { get; set; }

public List<ExternalReferenceEntity> ExternalReferences { get; set; } = new List<ExternalReferenceEntity>();
Expand Down
Loading
Loading