Skip to content

Commit

Permalink
Merge pull request #352 from navikt/feature/legg-til-periodeFra-reque…
Browse files Browse the repository at this point in the history
…st-husstandsmedlemmer

Endret request husstandsmedlemmer
  • Loading branch information
rinnan17 authored Jun 25, 2024
2 parents 3820876 + 259978a commit f7fc4ed
Show file tree
Hide file tree
Showing 8 changed files with 84 additions and 71 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import no.nav.bidrag.commons.web.HttpHeaderRestTemplate
import no.nav.bidrag.domene.ident.Personident
import no.nav.bidrag.grunnlag.SECURE_LOGGER
import no.nav.bidrag.grunnlag.consumer.GrunnlagsConsumer
import no.nav.bidrag.grunnlag.consumer.bidragperson.api.HusstandsmedlemmerRequest
import no.nav.bidrag.grunnlag.exception.RestResponse
import no.nav.bidrag.grunnlag.exception.tryExchange
import no.nav.bidrag.transport.person.ForelderBarnRelasjonDto
Expand All @@ -25,11 +26,11 @@ import java.net.SocketTimeoutException
private const val BIDRAGPERSON_CONTEXT_FOEDSEL_DOED = "/bidrag-person/navnfoedseldoed"
private const val BIDRAGPERSON_CONTEXT_FORELDER_BARN_RELASJON = "/bidrag-person/forelderbarnrelasjon"
private const val BIDRAGPERSON_CONTEXT_HUSSTANDSMEDLEMMER = "/bidrag-person/husstandsmedlemmer"
private const val BIDRAGPERSON_CONTEXT_HUSSTANDSMEDLEMMER_DATO = "/bidrag-person/husstandsmedlemmerdato"
private const val BIDRAGPERSON_CONTEXT_SIVILSTAND = "/bidrag-person/sivilstand"
private const val BIDRAGPERSON_CONTEXT_PERSONIDENTER = "/bidrag-person/personidenter"

open class BidragPersonConsumer(private val restTemplate: HttpHeaderRestTemplate) :
GrunnlagsConsumer() {
open class BidragPersonConsumer(private val restTemplate: HttpHeaderRestTemplate) : GrunnlagsConsumer() {

companion object {
@JvmStatic
Expand Down Expand Up @@ -71,16 +72,16 @@ open class BidragPersonConsumer(private val restTemplate: HttpHeaderRestTemplate
}

@Retryable(value = [Exception::class], exclude = [SocketTimeoutException::class], backoff = Backoff(delay = 500))
open fun hentHusstandsmedlemmer(personident: Personident): RestResponse<HusstandsmedlemmerDto> {
open fun hentHusstandsmedlemmer(request: HusstandsmedlemmerRequest): RestResponse<HusstandsmedlemmerDto> {
logger.info(
"Kaller bidrag-person som igjen henter info om en persons bostedsadresser " +
"og personer som har bodd på samme adresse på samme tid fra PDL",
)

val restResponse = restTemplate.tryExchange(
BIDRAGPERSON_CONTEXT_HUSSTANDSMEDLEMMER,
BIDRAGPERSON_CONTEXT_HUSSTANDSMEDLEMMER_DATO,
HttpMethod.POST,
initHttpEntity(PersonRequest(personident)),
initHttpEntity(request),
HusstandsmedlemmerDto::class.java,
HusstandsmedlemmerDto(emptyList()),
)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package no.nav.bidrag.grunnlag.consumer.bidragperson.api

import no.nav.bidrag.transport.person.PersonRequest
import java.time.LocalDate

data class HusstandsmedlemmerRequest(val personRequest: PersonRequest, val periodeFra: LocalDate?)
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import no.nav.bidrag.grunnlag.consumer.arbeidsforhold.api.HentArbeidsforholdRequ
import no.nav.bidrag.grunnlag.consumer.arbeidsforhold.api.HentEnhetsregisterRequest
import no.nav.bidrag.grunnlag.consumer.arbeidsforhold.api.HentEnhetsregisterResponse
import no.nav.bidrag.grunnlag.consumer.bidragperson.BidragPersonConsumer
import no.nav.bidrag.grunnlag.consumer.bidragperson.api.HusstandsmedlemmerRequest
import no.nav.bidrag.grunnlag.consumer.familiebasak.FamilieBaSakConsumer
import no.nav.bidrag.grunnlag.consumer.familiebasak.api.FamilieBaSakRequest
import no.nav.bidrag.grunnlag.consumer.familiebasak.api.FamilieBaSakResponse
Expand Down Expand Up @@ -58,107 +59,90 @@ class IntegrasjonsController(

@PostMapping(HENT_AINNTEKT)
@Operation(security = [SecurityRequirement(name = "bearer-key")], summary = "Henter A-inntekt")
fun hentAinntekt(@RequestBody hentInntektListeRequest: HentInntektListeRequest): ResponseEntity<HentInntektListeResponse> {
return handleRestResponse(inntektskomponentenConsumer.hentInntekter(hentInntektListeRequest, false))
}
fun hentAinntekt(@RequestBody hentInntektListeRequest: HentInntektListeRequest): ResponseEntity<HentInntektListeResponse> =
handleRestResponse(inntektskomponentenConsumer.hentInntekter(hentInntektListeRequest, false))

@PostMapping(HENT_AINNTEKT_ABONNEMENT)
@Operation(security = [SecurityRequirement(name = "bearer-key")], summary = "Henter A-inntekt med abonnement")
fun hentAinntektAbonnement(@RequestBody hentInntektListeRequest: HentInntektListeRequest): ResponseEntity<HentInntektListeResponse> {
return handleRestResponse(inntektskomponentenConsumer.hentInntekter(hentInntektListeRequest, true))
}
fun hentAinntektAbonnement(@RequestBody hentInntektListeRequest: HentInntektListeRequest): ResponseEntity<HentInntektListeResponse> =
handleRestResponse(inntektskomponentenConsumer.hentInntekter(hentInntektListeRequest, true))

@PostMapping(HENT_SKATTEGRUNNLAG)
@Operation(security = [SecurityRequirement(name = "bearer-key")], summary = "Henter skattegrunnlag")
fun hentSkattegrunnlag(
@RequestBody hentSkattegrunnlagRequest: HentSummertSkattegrunnlagRequest,
): ResponseEntity<HentSummertSkattegrunnlagResponse> {
return handleRestResponse(sigrunConsumer.hentSummertSkattegrunnlag(hentSkattegrunnlagRequest))
}
): ResponseEntity<HentSummertSkattegrunnlagResponse> = handleRestResponse(sigrunConsumer.hentSummertSkattegrunnlag(hentSkattegrunnlagRequest))

@PostMapping(HENT_BARNETILLEGG_PENSJON)
@Operation(security = [SecurityRequirement(name = "bearer-key")], summary = "Henter barnetillegg fra pensjon")
fun hentBarnetilleggPensjon(
@RequestBody hentBarnetilleggPensjonRequest: HentBarnetilleggPensjonRequest,
): ResponseEntity<List<BarnetilleggPensjon>> {
return handleRestResponse(pensjonConsumer.hentBarnetilleggPensjon(hentBarnetilleggPensjonRequest))
}
): ResponseEntity<List<BarnetilleggPensjon>> = handleRestResponse(pensjonConsumer.hentBarnetilleggPensjon(hentBarnetilleggPensjonRequest))

@PostMapping(HENT_FAMILIEBASAK)
@Operation(security = [SecurityRequirement(name = "bearer-key")], summary = "Henter utvidet barnetrygd og småbarnstillegg")
fun hentFamilieBaSak(@RequestBody familieBaSakRequest: FamilieBaSakRequest): ResponseEntity<FamilieBaSakResponse> {
return handleRestResponse(familieBaSakConsumer.hentFamilieBaSak(familieBaSakRequest))
}
fun hentFamilieBaSak(@RequestBody familieBaSakRequest: FamilieBaSakRequest): ResponseEntity<FamilieBaSakResponse> =
handleRestResponse(familieBaSakConsumer.hentFamilieBaSak(familieBaSakRequest))

@PostMapping(HENT_FOEDSEL_DOED)
@Operation(
security = [SecurityRequirement(name = "bearer-key")],
summary = "Kaller bidrag-person som igjen henter info om fødselsdato og eventuell død fra PDL",
)
fun hentFoedselOgDoed(@RequestBody bidragPersonident: Personident): ResponseEntity<NavnFødselDødDto> {
return handleRestResponse(bidragPersonConsumer.hentNavnFoedselOgDoed(bidragPersonident))
}
fun hentFoedselOgDoed(@RequestBody bidragPersonident: Personident): ResponseEntity<NavnFødselDødDto> =
handleRestResponse(bidragPersonConsumer.hentNavnFoedselOgDoed(bidragPersonident))

@PostMapping(HENT_FORELDER_BARN_RELASJON)
@Operation(
security = [SecurityRequirement(name = "bearer-key")],
summary = "Kaller bidrag-person som igjen henter forelderbarnrelasjoner for angitt person fra PDL",
)
fun hentForelderbarnrelasjon(@RequestBody bidragPersonident: Personident): ResponseEntity<ForelderBarnRelasjonDto> {
return handleRestResponse(bidragPersonConsumer.hentForelderBarnRelasjon(bidragPersonident))
}
fun hentForelderbarnrelasjon(@RequestBody bidragPersonident: Personident): ResponseEntity<ForelderBarnRelasjonDto> =
handleRestResponse(bidragPersonConsumer.hentForelderBarnRelasjon(bidragPersonident))

@PostMapping(HENT_HUSSTANDSMEDLEMMER)
@PostMapping(HENT_HUSSTANDSMEDLEMMER_DATO)
@Operation(
security = [SecurityRequirement(name = "bearer-key")],
summary = "Kaller bidrag-person som igjen henter info om en persons bostedsadresser og personer som har bodd på samme adresse på samme tid " +
"fra PDL",
)
fun hentHusstandsmedlemmer(@RequestBody husstandsmedlemmerRequest: Personident): ResponseEntity<HusstandsmedlemmerDto> {
return handleRestResponse(bidragPersonConsumer.hentHusstandsmedlemmer(husstandsmedlemmerRequest))
}
fun hentHusstandsmedlemmer(@RequestBody husstandsmedlemmerRequest: HusstandsmedlemmerRequest): ResponseEntity<HusstandsmedlemmerDto> =
handleRestResponse(bidragPersonConsumer.hentHusstandsmedlemmer(husstandsmedlemmerRequest))

@PostMapping(HENT_SIVILSTAND)
@Operation(
security = [SecurityRequirement(name = "bearer-key")],
summary = "Kaller bidrag-person som igjen kaller PDL for å finne en persons sivilstand",
)
fun hentSivilstand(@RequestBody sivilstandRequest: Personident): ResponseEntity<SivilstandPdlHistorikkDto> {
return handleRestResponse(bidragPersonConsumer.hentSivilstand(sivilstandRequest))
}
fun hentSivilstand(@RequestBody sivilstandRequest: Personident): ResponseEntity<SivilstandPdlHistorikkDto> =
handleRestResponse(bidragPersonConsumer.hentSivilstand(sivilstandRequest))

@PostMapping(HENT_KONTANTSTOTTE)
@Operation(security = [SecurityRequirement(name = "bearer-key")], summary = "Kaller familie-ks-sak for å hente kontantstotte")
fun hentKontantstotte(@RequestBody innsynRequest: BisysDto): ResponseEntity<BisysResponsDto> {
return handleRestResponse(familieKsSakConsumer.hentKontantstotte(innsynRequest))
}
fun hentKontantstotte(@RequestBody innsynRequest: BisysDto): ResponseEntity<BisysResponsDto> =
handleRestResponse(familieKsSakConsumer.hentKontantstotte(innsynRequest))

@PostMapping(HENT_BARNETILSYN)
@Operation(
security = [SecurityRequirement(name = "bearer-key")],
summary = "Kaller familie-ef-sak/hentPerioderBarnetilsyn for å hente barnetilsyn",
)
fun hentBarnetilsyn(@RequestBody barnetilsynRequest: BarnetilsynRequest): ResponseEntity<BarnetilsynResponse> {
return handleRestResponse(familieEfSakConsumer.hentBarnetilsyn(barnetilsynRequest))
}
fun hentBarnetilsyn(@RequestBody barnetilsynRequest: BarnetilsynRequest): ResponseEntity<BarnetilsynResponse> =
handleRestResponse(familieEfSakConsumer.hentBarnetilsyn(barnetilsynRequest))

@PostMapping(HENT_ARBEIDSFORHOLD)
@Operation(security = [SecurityRequirement(name = "bearer-key")], summary = "Kaller Aareg og henter arbeidsforhold")
fun hentArbeidsforhold(@RequestBody hentArbeidsforholdRequest: HentArbeidsforholdRequest): ResponseEntity<List<Arbeidsforhold>> {
return handleRestResponse(arbeidsforholdConsumer.hentArbeidsforhold(hentArbeidsforholdRequest))
}
fun hentArbeidsforhold(@RequestBody hentArbeidsforholdRequest: HentArbeidsforholdRequest): ResponseEntity<List<Arbeidsforhold>> =
handleRestResponse(arbeidsforholdConsumer.hentArbeidsforhold(hentArbeidsforholdRequest))

@PostMapping(HENT_ENHETSINFO)
@Operation(security = [SecurityRequirement(name = "bearer-key")], summary = "Kaller Ereg og henter info fra enhetsregister")
fun hentEnhetsinfo(@RequestBody hentEnhetsregisterRequest: HentEnhetsregisterRequest): ResponseEntity<HentEnhetsregisterResponse> {
return handleRestResponse(enhetsregisterConsumer.hentEnhetsinfo(hentEnhetsregisterRequest))
}
fun hentEnhetsinfo(@RequestBody hentEnhetsregisterRequest: HentEnhetsregisterRequest): ResponseEntity<HentEnhetsregisterResponse> =
handleRestResponse(enhetsregisterConsumer.hentEnhetsinfo(hentEnhetsregisterRequest))

private fun <T> handleRestResponse(restResponse: RestResponse<T>): ResponseEntity<T> {
return when (restResponse) {
is RestResponse.Success -> ResponseEntity(restResponse.body, HttpStatus.OK)
is RestResponse.Failure -> throw ResponseStatusException(restResponse.statusCode, restResponse.message)
}
private fun <T> handleRestResponse(restResponse: RestResponse<T>): ResponseEntity<T> = when (restResponse) {
is RestResponse.Success -> ResponseEntity(restResponse.body, HttpStatus.OK)
is RestResponse.Failure -> throw ResponseStatusException(restResponse.statusCode, restResponse.message)
}

companion object {
Expand All @@ -170,6 +154,7 @@ class IntegrasjonsController(
const val HENT_FORELDER_BARN_RELASJON = "/integrasjoner/forelderbarnrelasjon"
const val HENT_FOEDSEL_DOED = "/integrasjoner/navnfoedseldoed"
const val HENT_HUSSTANDSMEDLEMMER = "/integrasjoner/husstandsmedlemmer"
const val HENT_HUSSTANDSMEDLEMMER_DATO = "/integrasjoner/husstandsmedlemmerdato"
const val HENT_SIVILSTAND = "/integrasjoner/sivilstand"
const val HENT_KONTANTSTOTTE = "/integrasjoner/kontantstotte"
const val HENT_BARNETILSYN = "/integrasjoner/barnetilsyn"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,16 @@ import no.nav.bidrag.grunnlag.SECURE_LOGGER
import no.nav.bidrag.grunnlag.bo.PersonBo
import no.nav.bidrag.grunnlag.bo.RelatertPersonBo
import no.nav.bidrag.grunnlag.consumer.bidragperson.BidragPersonConsumer
import no.nav.bidrag.grunnlag.consumer.bidragperson.api.HusstandsmedlemmerRequest
import no.nav.bidrag.grunnlag.exception.RestResponse
import no.nav.bidrag.grunnlag.service.PersistenceService
import no.nav.bidrag.grunnlag.service.PersonIdOgPeriodeRequest
import no.nav.bidrag.grunnlag.util.GrunnlagUtil.Companion.tilJson
import no.nav.bidrag.transport.behandling.grunnlag.response.OppdaterGrunnlagDto
import no.nav.bidrag.transport.person.NavnFødselDødDto
import no.nav.bidrag.transport.person.PersonRequest
import org.springframework.http.HttpStatus
import java.time.LocalDate
import java.time.LocalDateTime

class OppdaterRelatertePersoner(
Expand Down Expand Up @@ -42,7 +45,7 @@ class OppdaterRelatertePersoner(
)

// henter alle husstandsmedlemmer til BM/BP
val husstandsmedlemmerListe = hentHusstandsmedlemmer(personIdOgPeriode.personId)
val husstandsmedlemmerListe = hentHusstandsmedlemmer(personIdOgPeriode.personId, personIdOgPeriode.periodeFra)

// henter alle barn av BM/BP
val barnListe = hentBarn(Personident(personIdOgPeriode.personId))
Expand Down Expand Up @@ -99,9 +102,10 @@ class OppdaterRelatertePersoner(

private fun husstandsmedlemInnenforPeriode(personIdOgPeriode: PersonIdOgPeriodeRequest, husstandsmedlem: PersonBo): Boolean {
if (husstandsmedlem.husstandsmedlemPeriodeFra == null) {
return husstandsmedlem.husstandsmedlemPeriodeTil == null || husstandsmedlem.husstandsmedlemPeriodeTil.isAfter(
personIdOgPeriode.periodeFra,
)
return husstandsmedlem.husstandsmedlemPeriodeTil == null ||
husstandsmedlem.husstandsmedlemPeriodeTil.isAfter(
personIdOgPeriode.periodeFra,
)
}

if (husstandsmedlem.husstandsmedlemPeriodeTil == null) {
Expand All @@ -118,15 +122,20 @@ class OppdaterRelatertePersoner(
return false
}

private fun hentHusstandsmedlemmer(husstandsmedlemmerRequest: String): List<PersonBo> {
private fun hentHusstandsmedlemmer(husstandsmedlemmerRequest: String, periodeFra: LocalDate?): List<PersonBo> {
SECURE_LOGGER.info("Kaller bidrag-person Husstandsmedlemmer med request: ${tilJson(husstandsmedlemmerRequest)}")

val husstandsmedlemListe = mutableListOf<PersonBo>()

try {
when (
val restResponseHusstandsmedlemmer =
bidragPersonConsumer.hentHusstandsmedlemmer(Personident(husstandsmedlemmerRequest))
bidragPersonConsumer.hentHusstandsmedlemmer(
HusstandsmedlemmerRequest(
PersonRequest(Personident(husstandsmedlemmerRequest)),
periodeFra,
),
)
) {
is RestResponse.Success -> {
val husstandsmedlemmerResponseDto = restResponseHusstandsmedlemmer.body
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import no.nav.bidrag.domene.ident.Personident
import no.nav.bidrag.grunnlag.SECURE_LOGGER
import no.nav.bidrag.grunnlag.bo.PersonBo
import no.nav.bidrag.grunnlag.consumer.bidragperson.BidragPersonConsumer
import no.nav.bidrag.grunnlag.consumer.bidragperson.api.HusstandsmedlemmerRequest
import no.nav.bidrag.grunnlag.exception.RestResponse
import no.nav.bidrag.grunnlag.util.GrunnlagUtil.Companion.evaluerFeilmelding
import no.nav.bidrag.grunnlag.util.GrunnlagUtil.Companion.evaluerFeiltype
Expand All @@ -15,11 +16,10 @@ import no.nav.bidrag.transport.behandling.grunnlag.response.FeilrapporteringDto
import no.nav.bidrag.transport.behandling.grunnlag.response.RelatertPersonGrunnlagDto
import no.nav.bidrag.transport.person.Husstandsmedlem
import no.nav.bidrag.transport.person.NavnFødselDødDto
import no.nav.bidrag.transport.person.PersonRequest
import java.time.LocalDate

class HentRelatertePersonerService(
private val bidragPersonConsumer: BidragPersonConsumer,
) {
class HentRelatertePersonerService(private val bidragPersonConsumer: BidragPersonConsumer) {

fun hentRelatertePersoner(relatertPersonRequestListe: List<PersonIdOgPeriodeRequest>): HentGrunnlagGenericDto<RelatertPersonGrunnlagDto> {
val relatertPersonListe = mutableListOf<RelatertPersonGrunnlagDto>()
Expand Down Expand Up @@ -105,12 +105,18 @@ class HentRelatertePersonerService(
val husstandsmedlemListe = mutableListOf<PersonBo>()

when (
val restResponseHusstandsmedlemmer = bidragPersonConsumer.hentHusstandsmedlemmer(Personident(personIdOgPeriode.personId))
val restResponseHusstandsmedlemmer = bidragPersonConsumer.hentHusstandsmedlemmer(
HusstandsmedlemmerRequest(
PersonRequest(Personident(personIdOgPeriode.personId)),
personIdOgPeriode.periodeFra,
),
)
) {
is RestResponse.Success -> {
val husstandsmedlemmerResponseDto = restResponseHusstandsmedlemmer.body
SECURE_LOGGER.info(
"Bidrag-person ga følgende respons på husstandsmedlemmer for ${personIdOgPeriode.personId}: " +
"periode: ${personIdOgPeriode.periodeFra}:" +
tilJson(husstandsmedlemmerResponseDto),
)

Expand Down Expand Up @@ -308,9 +314,10 @@ class HentRelatertePersonerService(

private fun husstandsmedlemInnenforPeriode(personIdOgPeriode: PersonIdOgPeriodeRequest, husstandsmedlem: Husstandsmedlem): Boolean {
if (husstandsmedlem.gyldigFraOgMed == null) {
return husstandsmedlem.gyldigTilOgMed == null || husstandsmedlem.gyldigTilOgMed!!.isAfter(
personIdOgPeriode.periodeFra,
)
return husstandsmedlem.gyldigTilOgMed == null ||
husstandsmedlem.gyldigTilOgMed!!.isAfter(
personIdOgPeriode.periodeFra,
)
}

if (husstandsmedlem.gyldigTilOgMed == null) {
Expand Down
Loading

0 comments on commit f7fc4ed

Please sign in to comment.