Skip to content

Commit

Permalink
mogelijk maken van bepalen van gezag over kind van partner + fix dat …
Browse files Browse the repository at this point in the history
…derde niet altijd goed wordt gevuld omdat de gezagsrelatie onterecht er uit wordt gefiltered
  • Loading branch information
Patrick-4488 committed Sep 23, 2024
1 parent 790bc69 commit 4d32d78
Show file tree
Hide file tree
Showing 9 changed files with 78 additions and 67 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@
import nl.rijksoverheid.mev.brpadapter.soap.BrpClient;
import nl.rijksoverheid.mev.exception.BrpException;
import nl.rijksoverheid.mev.exception.GezagException;
import nl.rijksoverheid.mev.gezagsmodule.domain.HuwelijkOfPartnerschap;
import nl.rijksoverheid.mev.gezagsmodule.domain.Persoonslijst;
import nl.rijksoverheid.mev.transaction.Transaction;
import nl.rijksoverheid.mev.transaction.TransactionHandler;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.function.Consumer;

/**
* Service voor BRP functionaliteit
Expand All @@ -28,7 +30,7 @@ public class BrpService {
/**
* Ophalen persoonslijst
*
* @param bsn de bsn om de persoonslijst voor op te halen
* @param bsn de bsn om de persoonslijst voor op te halen
* @param transaction de originele transactie
* @return de persoonslijst
* @throws GezagException wanneer BRP communicatie misgaat
Expand All @@ -46,17 +48,29 @@ public Persoonslijst getPersoonslijst(final String bsn, final Transaction transa
/**
* Ophalen bsns van minderjarige kinderen
*
* @param bsn de bsn om de persoonslijst voor op te halen
* @param bsn de bsn om de persoonslijst voor op te halen
* @param transaction de originele transactie
* @return de BSNs van de kinderen
* @throws GezagException wanneer BRP communicatie misgaat
*/
public List<String> getBsnsMinderjarigeKinderen(final String bsn, final Transaction transaction) throws BrpException {
public List<String> getBsnsMinderjarigeKinderenOuderEnPartners(final String bsn, final Transaction transaction) throws BrpException {
Persoonslijst persoonslijstOuder = client.opvragenPersoonslijst(bsn, transaction);
List<Persoonslijst> partners = persoonslijstOuder.getHuwelijkOfPartnerschappen().stream()
.filter(hop -> hop.getBsnPartner() != null)
.map(HuwelijkOfPartnerschap::getBsnPartner)
.map(bsnPartner -> client.opvragenPersoonslijst(bsnPartner, transaction))
.toList();

transaction.setReceivedId(persoonslijstOuder.getReceivedId());
transactionHandler.saveBrpServiceTransaction(BRP_SERVICE_GET_BSNS_MINDERJARIGE_KINDEREN, persoonslijstOuder.getReceivedId(), transaction);

return persoonslijstOuder.getBurgerservicenummersVanMinderjarigeKinderen();
List<String> kinderen = persoonslijstOuder.getBurgerservicenummersVanMinderjarigeKinderen();
kinderen.addAll(partners.stream().map(Persoonslijst::getBurgerservicenummersVanMinderjarigeKinderen)
.mapMulti((final List<String> list, final Consumer<String> consumer) -> {
list.forEach(consumer::accept);
}).toList());

return kinderen.stream()
.distinct().toList();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -476,8 +476,8 @@ public void bepalenGezagdragers(final String bsn, final ARAntwoordenModel arAntw
if ((((arAntwoordenModel.getGezagNietOuder1() != null && arAntwoordenModel.getGezagNietOuder1().equals("Ja"))
|| (arAntwoordenModel.getGezagNietOuder2() != null && arAntwoordenModel.getGezagNietOuder2().equals("Ja")))
&& (plNietOuder != null))) {
Gezagsrelatie gezagsrelatie = new Gezagsrelatie(bsn, soortGezag, plNietOuder.getPersoon().getBsn(), uitleg);
gezagsrelatie.setDerde(true);
Gezagsrelatie gezagsrelatie = new Gezagsrelatie(bsn, soortGezag, null, uitleg);
gezagsrelatie.setBsnDerde(plNietOuder.getPersoon().getBsn());
gezagsrelaties.add(gezagsrelatie);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static org.apache.commons.lang3.StringUtils.isNotBlank;
Expand Down Expand Up @@ -263,7 +264,7 @@ public List<String> getBurgerservicenummersVanMinderjarigeKinderen() {
.filter(Kind::isMinderjarig)
.map(Kind::getBsn)
.filter(Objects::nonNull)
.toList();
.collect(Collectors.toList());
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class Gezagsrelatie {
private String soortGezag;
private String bsnMeerderjarige;
private String toelichting;
private boolean isDerde;
private String bsnDerde;

public Gezagsrelatie(
final String bsnMinderjarige,
Expand Down Expand Up @@ -45,9 +45,10 @@ public boolean isTweehoofdigOuderlijkGezag() {
@Override
public String toString() {
return "Gezagsrelatie{"
+ ", bsnMinderjarige=" + bsnMinderjarige
+ "bsnMinderjarige=" + bsnMinderjarige
+ ", soortGezag=" + soortGezag
+ ", bsnMeerderjarige=" + bsnMeerderjarige
+ ", toelichting=" + toelichting + '}';
+ ", toelichting=" + toelichting
+ ", bsnDerde= " + bsnDerde + '}';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -145,21 +145,31 @@ public void bepalenGezagdragers(final String bsn, final ARAntwoordenModel arAntw
if (arAntwoordenModel != null) {
String uitleg = arAntwoordenModel.getUitleg();
String soortGezag = arAntwoordenModel.getSoortGezag();
if (arAntwoordenModel.getGezagOuder1() != null && arAntwoordenModel.getGezagOuder1().equals("Ja")
&& (plOuder1 != null)) {
gezagsrelaties.add(
new Gezagsrelatie(bsn, soortGezag, plOuder1.getPersoon().getBsn(), uitleg));

boolean ouder1Gezag = arAntwoordenModel.getGezagOuder1() != null && arAntwoordenModel.getGezagOuder1().equals("Ja")
&& (plOuder1 != null);
boolean ouder2Gezag = arAntwoordenModel.getGezagOuder2() != null && arAntwoordenModel.getGezagOuder2().equals("Ja")
&& (plOuder2 != null);
boolean nietOuderGezag = (((arAntwoordenModel.getGezagNietOuder1() != null && arAntwoordenModel.getGezagNietOuder1().equals("Ja"))
|| (arAntwoordenModel.getGezagNietOuder2() != null && arAntwoordenModel.getGezagNietOuder2().equals("Ja")))
&& (plNietOuder != null));
if (ouder1Gezag) {
Gezagsrelatie gezagsrelatie = new Gezagsrelatie(bsn, soortGezag, plOuder1.getPersoon().getBsn(), uitleg);
if (nietOuderGezag) {
gezagsrelatie.setBsnDerde(plNietOuder.getPersoon().getBsn());
}
gezagsrelaties.add(gezagsrelatie);
}
if (arAntwoordenModel.getGezagOuder2() != null && arAntwoordenModel.getGezagOuder2().equals("Ja")
&& (plOuder2 != null)) {
gezagsrelaties.add(
new Gezagsrelatie(bsn, soortGezag, plOuder2.getPersoon().getBsn(), uitleg));
if (ouder2Gezag) {
Gezagsrelatie gezagsrelatie = new Gezagsrelatie(bsn, soortGezag, plOuder2.getPersoon().getBsn(), uitleg);
if (nietOuderGezag) {
gezagsrelatie.setBsnDerde(plNietOuder.getPersoon().getBsn());
}
gezagsrelaties.add(gezagsrelatie);
}
if ((((arAntwoordenModel.getGezagNietOuder1() != null && arAntwoordenModel.getGezagNietOuder1().equals("Ja"))
|| (arAntwoordenModel.getGezagNietOuder2() != null && arAntwoordenModel.getGezagNietOuder2().equals("Ja")))
&& (plNietOuder != null))) {
Gezagsrelatie gezagsrelatie = new Gezagsrelatie(bsn, soortGezag, plNietOuder.getPersoon().getBsn(), uitleg);
gezagsrelatie.setDerde(true);
if (!ouder1Gezag && !ouder2Gezag && nietOuderGezag) {
Gezagsrelatie gezagsrelatie = new Gezagsrelatie(bsn, soortGezag, null, uitleg);
gezagsrelatie.setBsnDerde(plNietOuder.getPersoon().getBsn());
gezagsrelaties.add(gezagsrelatie);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,12 @@ private Persoon bepaalGezagVoorPersoon(final String burgerservicenummer, final T
}

private Stream<Gezagsrelatie> vindGezagsrelatiesVoorKinderen(final String bevraagdePersoon, final Transaction transaction) throws GezagException {
List<String> kinderen = brpService.getBsnsMinderjarigeKinderen(bevraagdePersoon, transaction);
List<String> kinderen = brpService.getBsnsMinderjarigeKinderenOuderEnPartners(bevraagdePersoon, transaction);
List<Gezagsrelatie> gezagsrelaties = gezagService.getGezag(kinderen, transaction);

return gezagsrelaties.stream()
.filter(gezagsrelatie -> gezagsrelatie.isTweehoofdigOuderlijkGezag() || bevraagdePersoon.equals(gezagsrelatie.getBsnMeerderjarige()));
.filter(gezagsrelatie -> gezagsrelatie.isTweehoofdigOuderlijkGezag()
|| bevraagdePersoon.equals(gezagsrelatie.getBsnMeerderjarige())
|| bevraagdePersoon.equals(gezagsrelatie.getBsnDerde()));
}
}
40 changes: 11 additions & 29 deletions src/main/java/nl/rijksoverheid/mev/gmapi/GezagTransformer.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,9 @@ public List<AbstractGezagsrelatie> from(final List<Gezagsrelatie> gezagsrelaties
}

private void transformGezagrelatie(final Gezagsrelatie gezagsrelatie, final List<AbstractGezagsrelatie> vertaaldeGezagsrelaties) {
final String burgerservicenummerMeerderjarige = gezagsrelatie.getBsnMeerderjarige();
final String burgerservicenummerMinderjarige = gezagsrelatie.getBsnMinderjarige();
String burgerservicenummerMeerderjarige = gezagsrelatie.getBsnMeerderjarige();
String burgerservicenummerMinderjarige = gezagsrelatie.getBsnMinderjarige();
String burgerservicenummerDerde = gezagsrelatie.getBsnDerde();

switch (gezagsrelatie.getSoortGezag()) {
case "OG1" -> {
Expand All @@ -69,28 +70,21 @@ private void transformGezagrelatie(final Gezagsrelatie gezagsrelatie, final List
);
}
case "GG" -> {
var gezamenlijkGezag = getGezamenlijkGezagGezagMinderjarige(burgerservicenummerMinderjarige, vertaaldeGezagsrelaties)
.orElseGet(() -> {
var result = new GezamenlijkGezag()
.minderjarige(new Minderjarige().burgerservicenummer(burgerservicenummerMinderjarige))
.type(TYPE_GEZAMELIJK_GEZAG);
vertaaldeGezagsrelaties.add(result);
return result;
});
AbstractGezagsrelatie gezag = new GezamenlijkGezag()
.minderjarige(new Minderjarige().burgerservicenummer(burgerservicenummerMinderjarige))
.derde(new Meerderjarige().burgerservicenummer(burgerservicenummerDerde))
.ouder(new GezagOuder().burgerservicenummer(gezagsrelatie.getBsnMeerderjarige()))
.type(TYPE_GEZAMELIJK_GEZAG);

if (gezagsrelatie.isDerde()) {
gezamenlijkGezag.setDerde(Optional.of(new Meerderjarige().burgerservicenummer(gezagsrelatie.getBsnMeerderjarige())));
} else {
gezamenlijkGezag.setOuder(Optional.of(new GezagOuder().burgerservicenummer(gezagsrelatie.getBsnMeerderjarige())));
}
vertaaldeGezagsrelaties.add(gezag);
}
case "V" -> {
Voogdij gezag = new Voogdij()
.minderjarige(new Minderjarige().burgerservicenummer(burgerservicenummerMinderjarige))
.type(TYPE_VOOGDIJ);

if (burgerservicenummerMeerderjarige != null && !burgerservicenummerMeerderjarige.isEmpty()) {
gezag.addDerdenItem(new Meerderjarige().burgerservicenummer(burgerservicenummerMeerderjarige));
if (burgerservicenummerDerde != null && !burgerservicenummerDerde.isEmpty()) {
gezag.addDerdenItem(new Meerderjarige().burgerservicenummer(burgerservicenummerDerde));
}

vertaaldeGezagsrelaties.add(gezag);
Expand All @@ -113,16 +107,4 @@ private Optional<TweehoofdigOuderlijkGezag> getTweehoofdigOuderlijkGezagMinderja
.equals(burgerservicenummerMinderjarige))
.findFirst();
}

private Optional<GezamenlijkGezag> getGezamenlijkGezagGezagMinderjarige(
final String burgerservicenummerMinderjarige,
final List<AbstractGezagsrelatie> vertaaldeGezagsrelaties
) {
return vertaaldeGezagsrelaties.stream()
.filter(GezamenlijkGezag.class::isInstance)
.map(GezamenlijkGezag.class::cast)
.filter(gezamenlijkGezag -> gezamenlijkGezag.getMinderjarige().orElseThrow().getBurgerservicenummer() // not optional, should be fixed in OpenAPI Spec
.equals(burgerservicenummerMinderjarige))
.findFirst();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,9 @@ void setup() throws GezagException {
}

void setupFamilieRelaties() throws GezagException {
when(brpService.getBsnsMinderjarigeKinderen(BSN_OUDER_VAN_MINDERJARIGE_OUDER, transaction)).thenReturn(List.of(BSN_MINDERJARIGE_OUDER));
when(brpService.getBsnsMinderjarigeKinderen(BSN_MINDERJARIGE_OUDER, transaction)).thenReturn(List.of(BSN_KIND_1, BSN_KIND_2));
when(brpService.getBsnsMinderjarigeKinderen(BSN_MEERDERJARIGE_OUDER, transaction)).thenReturn(List.of(BSN_KIND_1, BSN_KIND_2));
when(brpService.getBsnsMinderjarigeKinderenOuderEnPartners(BSN_OUDER_VAN_MINDERJARIGE_OUDER, transaction)).thenReturn(List.of(BSN_MINDERJARIGE_OUDER));
when(brpService.getBsnsMinderjarigeKinderenOuderEnPartners(BSN_MINDERJARIGE_OUDER, transaction)).thenReturn(List.of(BSN_KIND_1, BSN_KIND_2));
when(brpService.getBsnsMinderjarigeKinderenOuderEnPartners(BSN_MEERDERJARIGE_OUDER, transaction)).thenReturn(List.of(BSN_KIND_1, BSN_KIND_2));
}

void setupGezagRelaties() {
Expand All @@ -79,33 +79,33 @@ void geenGezaghebbendenVanMeerderjarigen() {
}

void grootOuderAlsGezaghebbendeVanMinderjarigeOuder() {
var gezagsrelatieMinderjarigeOuderMetDiensOuder = new nl.rijksoverheid.mev.gezagsmodule.model.Gezagsrelatie(BSN_MINDERJARIGE_OUDER, "OG1", BSN_OUDER_VAN_MINDERJARIGE_OUDER, UITLEG, false);
var gezagsrelatieMinderjarigeOuderMetDiensOuder = new nl.rijksoverheid.mev.gezagsmodule.model.Gezagsrelatie(BSN_MINDERJARIGE_OUDER, "OG1", BSN_OUDER_VAN_MINDERJARIGE_OUDER, UITLEG, null);
var gezagsrelatiesMinderjarigeOuderMetDiensOuder = List.of(gezagsrelatieMinderjarigeOuderMetDiensOuder);

when(gezagService.getGezag(List.of(BSN_MINDERJARIGE_OUDER), transaction)).thenReturn(gezagsrelatiesMinderjarigeOuderMetDiensOuder);
}

void grootOuderEnMeerderjarigeOuderAlsGezaghebbendenVanKind1() {
var gezagsrelatieKind1MetGrootouder = new nl.rijksoverheid.mev.gezagsmodule.model.Gezagsrelatie(BSN_KIND_1, "OG1", BSN_OUDER_VAN_MINDERJARIGE_OUDER, UITLEG, false);
var gezagsrelatieKind1MetMeerderjarigeOuder = new nl.rijksoverheid.mev.gezagsmodule.model.Gezagsrelatie(BSN_KIND_1, "OG1", BSN_MEERDERJARIGE_OUDER, UITLEG, false);
var gezagsrelatieKind1MetGrootouder = new nl.rijksoverheid.mev.gezagsmodule.model.Gezagsrelatie(BSN_KIND_1, "OG1", BSN_OUDER_VAN_MINDERJARIGE_OUDER, UITLEG, null);
var gezagsrelatieKind1MetMeerderjarigeOuder = new nl.rijksoverheid.mev.gezagsmodule.model.Gezagsrelatie(BSN_KIND_1, "OG1", BSN_MEERDERJARIGE_OUDER, UITLEG, null);
var gezagsrelatiesKind1 = List.of(gezagsrelatieKind1MetGrootouder, gezagsrelatieKind1MetMeerderjarigeOuder);

when(gezagService.getGezag(List.of(BSN_KIND_1), transaction)).thenReturn(gezagsrelatiesKind1);
}

void voogdEnMeerderjarigeOuderAlsGezaghebbendenVanKind2() {
var gezagsrelatieKind2MetVoogd = new nl.rijksoverheid.mev.gezagsmodule.model.Gezagsrelatie(BSN_KIND_2, "V", BSN_VOOGD_KIND_2, UITLEG, false);
var gezagsrelatieKind2MetMeerderjarigeOuder = new nl.rijksoverheid.mev.gezagsmodule.model.Gezagsrelatie(BSN_KIND_2, "OG1", BSN_MEERDERJARIGE_OUDER, UITLEG, false);
var gezagsrelatieKind2MetVoogd = new nl.rijksoverheid.mev.gezagsmodule.model.Gezagsrelatie(BSN_KIND_2, "V", BSN_VOOGD_KIND_2, UITLEG, null);
var gezagsrelatieKind2MetMeerderjarigeOuder = new nl.rijksoverheid.mev.gezagsmodule.model.Gezagsrelatie(BSN_KIND_2, "OG1", BSN_MEERDERJARIGE_OUDER, UITLEG, null);
var gezagsrelatiesKind2 = List.of(gezagsrelatieKind2MetVoogd, gezagsrelatieKind2MetMeerderjarigeOuder);

when(gezagService.getGezag(List.of(BSN_KIND_2), transaction)).thenReturn(gezagsrelatiesKind2);
}

void gezagRelatiesKind1EnKind2() {
var gezagsrelatieKind1MetGrootouder = new nl.rijksoverheid.mev.gezagsmodule.model.Gezagsrelatie(BSN_KIND_1, "OG1", BSN_OUDER_VAN_MINDERJARIGE_OUDER, UITLEG, false);
var gezagsrelatieKind1MetMeerderjarigeOuder = new nl.rijksoverheid.mev.gezagsmodule.model.Gezagsrelatie(BSN_KIND_1, "OG1", BSN_MEERDERJARIGE_OUDER, UITLEG, false);
var gezagsrelatieKind2MetVoogd = new nl.rijksoverheid.mev.gezagsmodule.model.Gezagsrelatie(BSN_KIND_2, "V", BSN_VOOGD_KIND_2, UITLEG, false);
var gezagsrelatieKind2MetMeerderjarigeOuder = new nl.rijksoverheid.mev.gezagsmodule.model.Gezagsrelatie(BSN_KIND_2, "OG1", BSN_MEERDERJARIGE_OUDER, UITLEG, false);
var gezagsrelatieKind1MetGrootouder = new nl.rijksoverheid.mev.gezagsmodule.model.Gezagsrelatie(BSN_KIND_1, "OG1", BSN_OUDER_VAN_MINDERJARIGE_OUDER, UITLEG, null);
var gezagsrelatieKind1MetMeerderjarigeOuder = new nl.rijksoverheid.mev.gezagsmodule.model.Gezagsrelatie(BSN_KIND_1, "OG1", BSN_MEERDERJARIGE_OUDER, UITLEG, null);
var gezagsrelatieKind2MetVoogd = new nl.rijksoverheid.mev.gezagsmodule.model.Gezagsrelatie(BSN_KIND_2, "V", BSN_VOOGD_KIND_2, UITLEG, null);
var gezagsrelatieKind2MetMeerderjarigeOuder = new nl.rijksoverheid.mev.gezagsmodule.model.Gezagsrelatie(BSN_KIND_2, "OG1", BSN_MEERDERJARIGE_OUDER, UITLEG, null);
var gezagsrelaties = List.of(gezagsrelatieKind1MetGrootouder, gezagsrelatieKind1MetMeerderjarigeOuder, gezagsrelatieKind2MetVoogd, gezagsrelatieKind2MetMeerderjarigeOuder);

when(gezagService.getGezag(List.of(BSN_KIND_1, BSN_KIND_2), transaction)).thenReturn(gezagsrelaties);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -705,7 +705,7 @@ private static Arguments minderjarigeArguments(final String testcase, final Stri
gezagsrelatie.setBsnMeerderjarige(bsnMeerderjarige);
gezagsrelatie.setToelichting(UITLEG);
if("GG".equals(soortGezag) && !gezagsrelaties.isEmpty()) {
gezagsrelatie.setDerde(true);
gezagsrelatie.setBsnDerde(bsnMeerderjarige);
}
gezagsrelaties.add(gezagsrelatie);
}
Expand Down

0 comments on commit 4d32d78

Please sign in to comment.