Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vil bruke fødseldato fra PDL, ikke utledet fra ident #1015

Merged
merged 8 commits into from
Oct 14, 2024
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
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<okhttp3.version>4.9.1</okhttp3.version> <!-- overskriver spring sin versjon, blir brukt av mock-oauth2-server -->

<felles.version>3.20240913110742_adb42f8</felles.version>
<kontrakter.version>3.0_20241004134208_2962899</kontrakter.version>
<kontrakter.version>3.0_20241009100044_c0fcd51</kontrakter.version>
<start-class>no.nav.familie.ef.søknad.ApplicationKt</start-class>
<!--suppress UnresolvedMavenProperty Ligger som secret i github-->
<sonar.projectKey>${SONAR_PROJECTKEY}</sonar.projectKey>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ data class PdlSøker(
val navn: List<Navn>,
val sivilstand: List<Sivilstand>,
val statsborgerskap: List<Statsborgerskap>,
@JsonProperty("foedselsdato") val fødselsdato: List<Fødselsdato>,
)

data class PdlBarn(
Expand All @@ -82,8 +83,9 @@ data class PdlBarn(

data class PdlAnnenForelder(
val adressebeskyttelse: List<Adressebeskyttelse>,
@JsonProperty("doedsfall") val dødsfall: List<Dødsfall>,
val navn: List<Navn>,
@JsonProperty("doedsfall") val dødsfall: List<Dødsfall>,
@JsonProperty("foedselsdato") val fødselsdato: List<Fødselsdato>,
)

data class Adressebeskyttelse(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import no.nav.familie.ef.søknad.person.dto.AdressebeskyttelseGradering
import no.nav.familie.ef.søknad.person.dto.Bostedsadresse
import no.nav.familie.ef.søknad.person.dto.Familierelasjonsrolle
import no.nav.familie.ef.søknad.person.dto.ForelderBarnRelasjon
import no.nav.familie.ef.søknad.person.dto.Fødselsdato
import no.nav.familie.ef.søknad.person.dto.MatrikkelId
import no.nav.familie.ef.søknad.person.dto.PdlAnnenForelder
import no.nav.familie.ef.søknad.person.dto.PdlBarn
Expand All @@ -19,7 +20,6 @@ import no.nav.familie.ef.søknad.person.dto.Sivilstand
import no.nav.familie.ef.søknad.person.dto.Sivilstandstype
import no.nav.familie.ef.søknad.person.dto.Vegadresse
import no.nav.familie.ef.søknad.person.dto.visningsnavn
import no.nav.familie.kontrakter.felles.Fødselsnummer
import no.nav.familie.sikkerhet.EksternBrukerUtils
import org.slf4j.LoggerFactory
import org.springframework.stereotype.Component
Expand Down Expand Up @@ -166,7 +166,7 @@ internal class SøkerinfoMapper(

return Person(
fnr = EksternBrukerUtils.hentFnrFraToken(),
alder = kalkulerAlder(EksternBrukerUtils.hentFnrFraToken()),
alder = this.fødselsdato.kalkulerAlder(),
forkortetNavn = navn.first().visningsnavn(),
adresse = adresse,
egenansatt = false, // TODO denne er vel i beste fall unødvendig?
Expand All @@ -176,8 +176,6 @@ internal class SøkerinfoMapper(
)
}

private fun kalkulerAlder(ident: String) = Period.between(Fødselsnummer(ident).fødselsdato, LocalDate.now()).years

private fun formaterAdresse(pdlSøker: PdlSøker): String {
val bosted = pdlSøker.bostedsadresse.firstOrNull()
return when {
Expand Down Expand Up @@ -226,10 +224,14 @@ internal class SøkerinfoMapper(
private fun space(vararg args: String?): String? = join(*args, separator = " ")
}

fun PdlAnnenForelder.tilDto(annenForelderPersonsIdent: String): Medforelder {
val fødselsdato = Fødselsnummer(annenForelderPersonsIdent).fødselsdato
val alder = Period.between(fødselsdato, LocalDate.now()).years
private fun List<Fødselsdato>.kalkulerAlder(): Int {
return this.first().fødselsdato?.let {
return Period.between(it, LocalDate.now()).years
} ?: error("Ingen fødselsdato registrert")
}

fun PdlAnnenForelder.tilDto(annenForelderPersonsIdent: String): Medforelder {
val alder = this.fødselsdato.kalkulerAlder()
if (this.adressebeskyttelse.harBeskyttetAdresse()) {
return Medforelder(
harAdressesperre = true,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package no.nav.familie.ef.søknad.søknad

import no.nav.familie.ef.søknad.infrastruktur.exception.ApiFeil
import no.nav.familie.ef.søknad.infrastruktur.featuretoggle.FeatureToggleService
import no.nav.familie.ef.søknad.søknad.domain.Kvittering
import no.nav.familie.ef.søknad.søknad.dto.SøknadBarnetilsynDto
import no.nav.familie.ef.søknad.søknad.dto.SøknadBarnetilsynGjenbrukDto
import no.nav.familie.kontrakter.felles.objectMapper
import no.nav.familie.sikkerhet.EksternBrukerUtils
import no.nav.security.token.support.core.api.ProtectedWithClaims
import org.slf4j.LoggerFactory
import org.springframework.http.HttpStatus
import org.springframework.http.MediaType.APPLICATION_JSON_VALUE
import org.springframework.validation.annotation.Validated
Expand All @@ -25,10 +22,7 @@ import java.time.LocalDateTime
@Validated
class SøknadBarnetilsynController(
val søknadService: SøknadService,
val featureToggleService: FeatureToggleService,
) {
private val secureLogger = LoggerFactory.getLogger("secureLogger")

@PostMapping
fun sendInn(
@RequestBody søknad: SøknadBarnetilsynDto,
Expand All @@ -42,12 +36,5 @@ class SøknadBarnetilsynController(
}

@GetMapping("forrige")
fun hentForrigeBarnetilsynSøknad(): SøknadBarnetilsynGjenbrukDto? {
val forrigeBarnetilsynSøknad = søknadService.hentForrigeBarnetilsynSøknad()
val personIdent = EksternBrukerUtils.hentFnrFraToken()
if (forrigeBarnetilsynSøknad != null) {
secureLogger.info("forrige barnetilsynsøknad for $personIdent : " + objectMapper.writeValueAsString(forrigeBarnetilsynSøknad))
}
return forrigeBarnetilsynSøknad
}
fun hentForrigeBarnetilsynSøknad(): SøknadBarnetilsynGjenbrukDto? = søknadService.hentForrigeBarnetilsynSøknad()
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package no.nav.familie.ef.søknad.søknad

import no.nav.familie.ef.søknad.infrastruktur.exception.ApiFeil
import no.nav.familie.ef.søknad.infrastruktur.featuretoggle.FeatureToggleService
import no.nav.familie.ef.søknad.søknad.domain.Kvittering
import no.nav.familie.ef.søknad.søknad.dto.SøknadOvergangsstønadDto
import no.nav.familie.sikkerhet.EksternBrukerUtils
Expand All @@ -21,7 +20,6 @@ import java.time.LocalDateTime
@Validated
class SøknadOvergangsstønadController(
val søknadService: SøknadService,
val featureToggleService: FeatureToggleService,
) {
@PostMapping
fun sendInn(
Expand All @@ -30,6 +28,7 @@ class SøknadOvergangsstønadController(
if (!EksternBrukerUtils.personIdentErLikInnloggetBruker(søknad.person.søker.fnr)) {
throw ApiFeil("Fnr fra token matcher ikke fnr på søknaden", HttpStatus.FORBIDDEN)
}

val innsendingMottatt = LocalDateTime.now()
søknadService.sendInn(søknad, innsendingMottatt)
return Kvittering("ok", mottattDato = innsendingMottatt)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ import java.util.UUID
import no.nav.familie.ef.søknad.søknad.domain.AnnenForelder as AnnenForelderDto
import no.nav.familie.ef.søknad.utils.Språktekster.Alder as AlderTekst
import no.nav.familie.ef.søknad.utils.Språktekster.Fødselsnummer as FødselsnummerTekst
import no.nav.familie.kontrakter.ef.søknad.Barn as Kontraktbarn
import no.nav.familie.kontrakter.ef.søknad.Barn as Søknadbarn

object BarnMapper : MapperMedVedlegg<List<Barn>, List<Kontraktbarn>>(BarnaDine) {
object BarnMapper : MapperMedVedlegg<List<Barn>, List<Søknadbarn>>(BarnaDine) {
val manglerAnnenForelderTeller: Counter = Metrics.counter("alene.med.barn.soknad.manglerMedforelder")

init {
Expand All @@ -43,23 +43,18 @@ object BarnMapper : MapperMedVedlegg<List<Barn>, List<Kontraktbarn>>(BarnaDine)
override fun mapDto(
data: List<Barn>,
vedlegg: Map<String, DokumentasjonWrapper>,
): List<Kontraktbarn> =
): List<Søknadbarn> =
data.map { barn ->
tilKontraktBarn(barn, vedlegg)
}

fun mapTilDto(barn: List<Kontraktbarn>): List<Barn> =
fun mapTilDto(barn: List<Søknadbarn>): List<Barn> =
barn.map {
Barn(
alder =
TekstFelt(
AlderTekst.hentTekst(),
Period
.between(
it.fødselsnummer?.verdi?.fødselsdato ?: it.fødselTermindato?.verdi,
LocalDate.now(),
).years
.toString(),
it.hentPdlAlder(),
),
ident = TekstFelt(FødselsnummerTekst.hentTekst(), it.fødselsnummer?.verdi?.verdi ?: ""),
fødselsdato = it.fødselTermindato.tilNullableDatoFelt(),
Expand All @@ -84,7 +79,7 @@ object BarnMapper : MapperMedVedlegg<List<Barn>, List<Kontraktbarn>>(BarnaDine)
private fun tilKontraktBarn(
barn: Barn,
vedlegg: Map<String, DokumentasjonWrapper>,
) = Kontraktbarn(
) = Søknadbarn(
navn = barn.navn?.tilSøknadsfelt(),
fødselsnummer = mapFødselsnummer(barn),
harSkalHaSammeAdresse = barn.harSammeAdresse.tilSøknadsfelt(),
Expand Down Expand Up @@ -247,3 +242,11 @@ object BarnMapper : MapperMedVedlegg<List<Barn>, List<Kontraktbarn>>(BarnaDine)
),
)
}

private fun no.nav.familie.kontrakter.ef.søknad.Barn.hentPdlAlder(): String =
Period
.between(
this.fødselTermindato?.verdi,
LocalDate.now(),
).years
.toString()
4 changes: 4 additions & 0 deletions src/main/resources/pdl/andreForeldre.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ query($identer: [ID!]!){
doedsfall {
doedsdato
}
foedselsdato {
foedselsdato
foedselsaar
}
navn {
fornavn
mellomnavn
Expand Down
4 changes: 4 additions & 0 deletions src/main/resources/pdl/søker.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ query($ident: ID!){
adressebeskyttelse {
gradering
}
foedselsdato {
foedselsdato
foedselsaar
}
bostedsadresse {
vegadresse {
adressenavn
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import no.nav.familie.ef.søknad.person.dto.PdlSøker
import no.nav.familie.ef.søknad.person.dto.Sivilstand
import no.nav.familie.ef.søknad.person.dto.Sivilstandstype
import no.nav.familie.ef.søknad.person.mapper.SøkerinfoMapper
import no.nav.familie.ef.søknad.person.mapper.lagFødseldato
import no.nav.familie.sikkerhet.EksternBrukerUtils
import no.nav.familie.util.FnrGenerator
import org.assertj.core.api.Assertions.assertThat
Expand Down Expand Up @@ -188,15 +189,17 @@ internal class OppslagServiceServiceImplTest {
mapOf(
generer to
PdlAnnenForelder(
listOf(),
listOf(),
listOf(
Navn(
"forelder",
"forelder",
"forelder",
adressebeskyttelse = listOf(),
navn =
listOf(
Navn(
"forelderFornavn",
"forelder",
"forelder",
),
),
),
dødsfall = listOf(),
fødselsdato = lagFødseldato(23),
),
)

Expand Down Expand Up @@ -334,7 +337,12 @@ internal class OppslagServiceServiceImplTest {

private fun mockPdlHentAnnenForelder(adressebeskyttelseGradering: AdressebeskyttelseGradering) {
val annenForelder =
PdlAnnenForelder(adressebeskyttelse = listOf(Adressebeskyttelse(adressebeskyttelseGradering)), listOf(), listOf())
PdlAnnenForelder(
adressebeskyttelse = listOf(Adressebeskyttelse(adressebeskyttelseGradering)),
listOf(),
listOf(),
listOf(),
)

every { pdlApp2AppClient.hentAndreForeldre(any()) } returns (mapOf("enIdent" to annenForelder))
}
Expand All @@ -347,12 +355,13 @@ internal class OppslagServiceServiceImplTest {
) {
every { pdlClient.hentSøker(any()) } returns (
PdlSøker(
listOf(Adressebeskyttelse(adressebeskyttelseGradering)),
listOf(),
listOf(),
adressebeskyttelse = listOf(Adressebeskyttelse(adressebeskyttelseGradering)),
bostedsadresse = listOf(),
forelderBarnRelasjon = listOf(),
navn = listOf(Navn(fornavn, mellomnavn, etternavn)),
sivilstand = listOf(Sivilstand(Sivilstandstype.UOPPGITT)),
listOf(),
statsborgerskap = listOf(),
fødselsdato = lagFødseldato(34),
)
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,18 @@ class PdlApp2AppClientConfig {
),
)

val fødselsdato = LocalDate.now().minusYears(31)
every { pdlApp2AppClient.hentAndreForeldre(any()) } returns
mapOf(
medforelderFnr to
PdlAnnenForelder(
adressebeskyttelse = listOf(Adressebeskyttelse(UGRADERT)),
navn = lagNavn("Bjørn", "Borg", "Borgersen"),
dødsfall = listOf(),
fødselsdato =
listOf(
Fødselsdato(fødselsår = fødselsdato.year, fødselsdato = fødselsdato),
),
),
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import io.mockk.mockk
import no.nav.familie.ef.søknad.person.dto.Bostedsadresse
import no.nav.familie.ef.søknad.person.dto.Familierelasjonsrolle
import no.nav.familie.ef.søknad.person.dto.ForelderBarnRelasjon
import no.nav.familie.ef.søknad.person.dto.Fødselsdato
import no.nav.familie.ef.søknad.person.dto.Navn
import no.nav.familie.ef.søknad.person.dto.PdlSøker
import no.nav.familie.ef.søknad.person.dto.Sivilstand
Expand All @@ -30,6 +31,7 @@ class PdlClientConfig {

every { pdlClient.ping() } returns Unit

val fødselsdato = LocalDate.now().minusYears(30)
every { pdlClient.hentSøker(any()) } returns
PdlSøker(
adressebeskyttelse = listOf(),
Expand All @@ -38,6 +40,7 @@ class PdlClientConfig {
navn = lagNavn(),
sivilstand = sivilstand(),
statsborgerskap = statsborgerskap(),
fødselsdato = listOf(Fødselsdato(fødselsdato = fødselsdato, fødselsår = fødselsdato.year)),
)

return pdlClient
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import no.nav.familie.ef.søknad.person.dto.Sivilstand
import no.nav.familie.ef.søknad.person.dto.Sivilstandstype
import no.nav.familie.ef.søknad.person.dto.Statsborgerskap
import no.nav.familie.ef.søknad.person.dto.Vegadresse
import no.nav.familie.ef.søknad.person.mapper.lagFødseldato
import java.time.LocalDate

object PdlTestdata {
Expand Down Expand Up @@ -70,6 +71,7 @@ object PdlTestdata {
navn,
listOf(Sivilstand(Sivilstandstype.GIFT)),
statsborgerskap,
fødselsdato = lagFødseldato(33),
),
)

Expand Down
Loading