Skip to content

Commit a4ba626

Browse files
Merge branch 'main' into acceptatiecriteria
2 parents e2ee7aa + f457ce9 commit a4ba626

20 files changed

Lines changed: 1047 additions & 7 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,4 @@ nb-configuration.xml
4747

4848
# Claude Code
4949
.claude/
50+
CLAUDE.md

pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@
6565
<groupId>io.quarkus</groupId>
6666
<artifactId>quarkus-arc</artifactId>
6767
</dependency>
68+
<dependency>
69+
<groupId>io.quarkus</groupId>
70+
<artifactId>quarkus-quartz</artifactId>
71+
</dependency>
6872
<dependency>
6973
<groupId>io.quarkus</groupId>
7074
<artifactId>quarkus-hibernate-envers</artifactId>

src/main/java/nl/rijksoverheid/moz/controller/ProfielController.java

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import nl.rijksoverheid.moz.dto.request.ContactgegevenUpdateRequest;
2929
import nl.rijksoverheid.moz.dto.request.PartijIdentificatieRequest;
3030
import nl.rijksoverheid.moz.dto.request.PartijRequest;
31+
import nl.rijksoverheid.moz.dto.request.TeVerwijderenOpRequest;
3132
import nl.rijksoverheid.moz.dto.request.VoorkeurRequest;
3233
import nl.rijksoverheid.moz.dto.request.VoorkeurUpdateRequest;
3334
import nl.rijksoverheid.moz.dto.response.ContactgegevenResponse;
@@ -446,4 +447,78 @@ public Response deleteVoorkeur(
446447
return Response.noContent().build();
447448
}
448449

450+
@PATCH
451+
@Path("/voorkeur/te-verwijderen-op")
452+
@Transactional
453+
@Operation(
454+
summary = "Stel te-verwijderen-op in voor een voorkeur (Dienstverlener)",
455+
description = "Stelt of overschrijft de te-verwijderen-op datum voor een voorkeur. Alleen toegestaan voor een Dienstverlener met een bestaande scope op de voorkeur."
456+
)
457+
@APIResponses({
458+
@APIResponse(responseCode = "200", description = "Te-verwijderen-op succesvol bijgewerkt"),
459+
@APIResponse(responseCode = "400", description = "Ongeldige waarde voor te-verwijderen-op"),
460+
@APIResponse(responseCode = "403", description = "Dienstverlener heeft geen scope op deze voorkeur"),
461+
@APIResponse(responseCode = "404", description = "Voorkeur of partij niet gevonden")
462+
})
463+
@Logboek(name = "updateVoorkeurTeVerwijderenOp", processingActivityId = "https://mijnoverheidzakelijk.nl/verwerkingsactiviteiten/PS-630")
464+
public Response updateVoorkeurTeVerwijderenOp(@Valid TeVerwijderenOpRequest request) {
465+
if (request == null) return missingBody("updateVoorkeurTeVerwijderenOp");
466+
467+
logboekContext.setDataSubjectId(hashHelper.hashIdentifier(request.identificatieNummer));
468+
logboekContext.setDataSubjectType(String.valueOf(request.identificatieType));
469+
470+
boolean updated = partijService.updateVoorkeurTeVerwijderenOpByDienstverlener(request);
471+
472+
if (!updated) {
473+
logboekContext.setStatus(StatusCode.ERROR);
474+
LOG.warn("Voorkeur of partij niet gevonden voor te-verwijderen-op update");
475+
return Response.status(Response.Status.NOT_FOUND).build();
476+
}
477+
478+
logboekContext.setStatus(StatusCode.OK);
479+
LOG.info("Te-verwijderen-op bijgewerkt voor voorkeur");
480+
return Response.ok().build();
481+
}
482+
483+
@PATCH
484+
@Path("/contactgegeven/te-verwijderen-op")
485+
@Transactional
486+
@Operation(
487+
summary = "Stel te-verwijderen-op in voor een contactgegeven (Dienstverlener)",
488+
description = "Stelt of overschrijft de te-verwijderen-op datum voor een contactgegeven. Alleen toegestaan voor een Dienstverlener met een bestaande scope op het contactgegeven."
489+
)
490+
@APIResponses({
491+
@APIResponse(responseCode = "200", description = "Te-verwijderen-op succesvol bijgewerkt"),
492+
@APIResponse(responseCode = "400", description = "Ongeldige waarde voor te-verwijderen-op"),
493+
@APIResponse(responseCode = "403", description = "Dienstverlener heeft geen scope op dit contactgegeven"),
494+
@APIResponse(responseCode = "404", description = "Contactgegeven of partij niet gevonden")
495+
})
496+
@Logboek(name = "updateContactgegevenTeVerwijderenOp", processingActivityId = "https://mijnoverheidzakelijk.nl/verwerkingsactiviteiten/PS-631")
497+
public Response updateContactgegevenTeVerwijderenOp(@Valid TeVerwijderenOpRequest request) {
498+
499+
if (request == null) return missingBody("updateContactgegevenTeVerwijderenOp");
500+
501+
logboekContext.setDataSubjectId(hashHelper.hashIdentifier(request.identificatieNummer));
502+
logboekContext.setDataSubjectType(String.valueOf(request.identificatieType));
503+
504+
boolean updated = partijService.updateContactgegevenTeVerwijderenOpByDienstverlener(request);
505+
506+
if (!updated) {
507+
logboekContext.setStatus(StatusCode.ERROR);
508+
LOG.warn("Contactgegeven of partij niet gevonden voor te-verwijderen-op update");
509+
return Response.status(Response.Status.NOT_FOUND).build();
510+
}
511+
512+
logboekContext.setStatus(StatusCode.OK);
513+
LOG.info("Te-verwijderen-op bijgewerkt voor contactgegeven");
514+
return Response.ok().build();
515+
}
516+
517+
private Response missingBody(String methode) {
518+
logboekContext.setDataSubjectId("ONBEKEND");
519+
logboekContext.setDataSubjectType("ONBEKEND");
520+
logboekContext.setStatus(StatusCode.ERROR);
521+
LOG.warn("Request body mag niet leeg zijn bij " + methode);
522+
return Response.status(Response.Status.BAD_REQUEST).entity("Request body mag niet leeg zijn").build();
523+
}
449524
}

src/main/java/nl/rijksoverheid/moz/dto/request/ContactgegevenRequest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import nl.rijksoverheid.moz.common.IdentificatieType;
77
import org.eclipse.microprofile.openapi.annotations.media.Schema;
88

9+
import java.time.Instant;
10+
911
@Schema(description = "Request object voor het toevoegen van een contactgegeven aan een partij")
1012
public class ContactgegevenRequest {
1113

@@ -22,4 +24,6 @@ public class ContactgegevenRequest {
2224
public String waarde;
2325

2426
public ScopeRequest scope;
27+
28+
public Instant teVerwijderenOp;
2529
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package nl.rijksoverheid.moz.dto.request;
2+
3+
import jakarta.validation.constraints.NotBlank;
4+
import jakarta.validation.constraints.NotNull;
5+
import nl.rijksoverheid.moz.common.IdentificatieType;
6+
7+
import java.time.Instant;
8+
import java.util.UUID;
9+
10+
public class TeVerwijderenOpRequest {
11+
12+
@NotNull
13+
public UUID id;
14+
15+
@NotNull
16+
public IdentificatieType identificatieType;
17+
18+
@NotBlank
19+
public String identificatieNummer;
20+
21+
@NotBlank
22+
public String dienstverlenerNaam;
23+
24+
public String dienstNaam;
25+
26+
@NotNull
27+
public Instant teVerwijderenOp;
28+
}

src/main/java/nl/rijksoverheid/moz/dto/request/VoorkeurRequest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import nl.rijksoverheid.moz.common.IdentificatieType;
66
import nl.rijksoverheid.moz.common.VoorkeurType;
77

8+
import java.time.Instant;
9+
810
public class VoorkeurRequest {
911

1012
@NotNull
@@ -20,4 +22,6 @@ public class VoorkeurRequest {
2022
public String waarde;
2123

2224
public ScopeRequest scope;
25+
26+
public Instant teVerwijderenOp;
2327
}

src/main/java/nl/rijksoverheid/moz/dto/response/ContactgegevenResponse.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@ public class ContactgegevenResponse {
1414
public boolean isDefault;
1515
public Instant createdAt;
1616
public Instant lastUpdated;
17+
public Instant teVerwijderenOp;
1718
public List<ScopeResponse> scopes;
1819
}

src/main/java/nl/rijksoverheid/moz/dto/response/VoorkeurResponse.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ public class VoorkeurResponse {
1212
public String waarde;
1313
public Instant createdAt;
1414
public Instant lastUpdated;
15+
public Instant teVerwijderenOp;
1516
public List<ScopeResponse> scopes;
1617
}

src/main/java/nl/rijksoverheid/moz/entity/Contactgegeven.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,11 @@ public class Contactgegeven extends PanacheEntityBase {
7777
@Nullable
7878
private Instant lastUsedAt;
7979

80+
@Nullable
81+
private Instant teVerwijderenOp;
82+
83+
private boolean teVerwijderenOpAutomatisch = false;
84+
8085
@PrePersist
8186
private void onCreate() {
8287
Instant now = Instant.now();
@@ -177,4 +182,21 @@ public Instant getLastUsedAt() {
177182
public void setLastUsedAt(@Nullable Instant lastUsedAt) {
178183
this.lastUsedAt = lastUsedAt;
179184
}
185+
186+
@Nullable
187+
public Instant getTeVerwijderenOp() {
188+
return teVerwijderenOp;
189+
}
190+
191+
public void setTeVerwijderenOp(@Nullable Instant teVerwijderenOp) {
192+
this.teVerwijderenOp = teVerwijderenOp;
193+
}
194+
195+
public boolean isTeVerwijderenOpAutomatisch() {
196+
return teVerwijderenOpAutomatisch;
197+
}
198+
199+
public void setTeVerwijderenOpAutomatisch(boolean teVerwijderenOpAutomatisch) {
200+
this.teVerwijderenOpAutomatisch = teVerwijderenOpAutomatisch;
201+
}
180202
}

src/main/java/nl/rijksoverheid/moz/entity/Voorkeur.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ public class Voorkeur extends PanacheEntityBase {
5858
@Nullable
5959
private Instant lastUsedAt;
6060

61+
@Nullable
62+
private Instant teVerwijderenOp;
63+
64+
private boolean teVerwijderenOpAutomatisch = false;
65+
6166
@PrePersist
6267
private void onCreate() {
6368
Instant now = Instant.now();
@@ -123,4 +128,21 @@ public Instant getLastUsedAt() {
123128
public void setLastUsedAt(@Nullable Instant lastUsedAt) {
124129
this.lastUsedAt = lastUsedAt;
125130
}
131+
132+
@Nullable
133+
public Instant getTeVerwijderenOp() {
134+
return teVerwijderenOp;
135+
}
136+
137+
public void setTeVerwijderenOp(@Nullable Instant teVerwijderenOp) {
138+
this.teVerwijderenOp = teVerwijderenOp;
139+
}
140+
141+
public boolean isTeVerwijderenOpAutomatisch() {
142+
return teVerwijderenOpAutomatisch;
143+
}
144+
145+
public void setTeVerwijderenOpAutomatisch(boolean teVerwijderenOpAutomatisch) {
146+
this.teVerwijderenOpAutomatisch = teVerwijderenOpAutomatisch;
147+
}
126148
}

0 commit comments

Comments
 (0)