Skip to content

Commit

Permalink
Ny endepunkt for å hente notat opplysninger og ainntekt lenke (#105)
Browse files Browse the repository at this point in the history
  • Loading branch information
ugur93 authored Dec 11, 2023
1 parent 9de0c57 commit 8072db8
Show file tree
Hide file tree
Showing 29 changed files with 912 additions and 148 deletions.
2 changes: 0 additions & 2 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,3 @@ jobs:
with:
nais_variabler_filnavn: main.yaml
maven_options: -B -q -fae -Pit


4 changes: 3 additions & 1 deletion .nais/feature.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ env:
TOPIC_VEDTAK: bidrag.vedtak-feature
BIDRAG_ORGANISASJON_SCOPE: dev-fss.bidrag.bidrag-organisasjon
BIDRAG_ORGANISASJON_URL: https://bidrag-organisasjon-feature.dev-fss-pub.nais.io/bidrag-organisasjon
ARBEID_OG_INNTEKT_URL: https://arbeid-og-inntekt-q1.dev-fss-pub.nais.io/api/v2
JAVA_TOOL_OPTIONS: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
kafka:
pool: nav-dev
Expand Down Expand Up @@ -42,4 +43,5 @@ outbound-access-apps:
- bidrag-tilgangskontroll-feature
outbound-access-hosts:
- bidrag-person-feature.dev-fss-pub.nais.io
- bidrag-organisasjon-feature.dev-fss-pub.nais.io
- bidrag-organisasjon-feature.dev-fss-pub.nais.io
- arbeid-og-inntekt-q1.dev-fss-pub.nais.io
4 changes: 3 additions & 1 deletion .nais/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ env:
BIDRAG_ORGANISASJON_SCOPE: dev-fss.bidrag.bidrag-organisasjon
BIDRAG_ORGANISASJON_URL: https://bidrag-organisasjon.dev-fss-pub.nais.io/bidrag-organisasjon
TOPIC_VEDTAK: bidrag.vedtak-syntetisk
ARBEID_OG_INNTEKT_URL: https://arbeid-og-inntekt.dev-fss-pub.nais.io/api/v2
JAVA_TOOL_OPTIONS: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
kafka:
pool: nav-dev
Expand Down Expand Up @@ -42,4 +43,5 @@ outbound-access-apps:
- bidrag-tilgangskontroll
outbound-access-hosts:
- bidrag-person.dev-fss-pub.nais.io
- bidrag-organisasjon.dev-fss-pub.nais.io
- bidrag-organisasjon.dev-fss-pub.nais.io
- arbeid-og-inntekt.dev-fss-pub.nais.io
4 changes: 3 additions & 1 deletion .nais/prod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ env:
BIDRAG_TILGANGGSKONTROLL_SCOPE: prod-gcp.bidrag.bidrag-tilgangskontroll
BIDRAG_ORGANISASJON_SCOPE: prod-fss.bidrag.bidrag-organisasjon
BIDRAG_ORGANISASJON_URL: https://bidrag-organisasjon.prod-fss-pub.nais.io/bidrag-organisasjon
ARBEID_OG_INNTEKT_URL: https://arbeid-og-inntekt.prod-fss-pub.nais.io/api/v2
TOPIC_VEDTAK: bidrag.vedtak
kafka:
pool: nav-prod
Expand Down Expand Up @@ -41,4 +42,5 @@ outbound-access-apps:
- bidrag-tilgangskontroll
outbound-access-hosts:
- bidrag-person.prod-fss-pub.nais.io
- bidrag-organisasjon.prod-fss-pub.nais.io
- bidrag-organisasjon.prod-fss-pub.nais.io
- arbeid-og-inntekt.prod-fss-pub.nais.io
6 changes: 5 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,11 @@
<artifactId>jackson-module-kotlin</artifactId>
<version>${jackson.version}</version>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
<version>${jackson.version}</version>
</dependency>

<!--SpringDoc-->
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ package no.nav.bidrag.behandling.consumer

import no.nav.bidrag.behandling.config.CacheConfig.Companion.PERSON_CACHE
import no.nav.bidrag.behandling.dto.HentPersonRequest
import no.nav.bidrag.behandling.dto.HentPersonResponse
import no.nav.bidrag.commons.cache.BrukerCacheable
import no.nav.bidrag.commons.web.client.AbstractRestClient
import no.nav.bidrag.transport.person.PersonDto
import org.springframework.beans.factory.annotation.Qualifier
import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Service
Expand All @@ -21,7 +21,7 @@ class BidragPersonConsumer(
UriComponentsBuilder.fromUri(bidragPersonUrl).pathSegment("informasjon").build().toUri()

@BrukerCacheable(PERSON_CACHE)
fun hentPerson(ident: String): HentPersonResponse {
fun hentPerson(ident: String): PersonDto {
return postForNonNullEntity(hentPersonUri, HentPersonRequest(ident))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,12 @@ class DeprecatedOpplysningerController(val opplysningerService: OpplysningerServ
@RequestBody(required = true) addOpplysningerRequest: AddOpplysningerRequest,
): OpplysningerDto {
val (_, _, opplysningerType, data, hentetDato) = addOpplysningerRequest
return opplysningerService.opprett(behandlingId, opplysningerType, data, hentetDato.toDate())
return opplysningerService.opprett(
behandlingId,
opplysningerType,
data,
hentetDato.toDate(),
)
.toDto()
}

Expand Down Expand Up @@ -69,6 +74,6 @@ class DeprecatedOpplysningerController(val opplysningerService: OpplysningerServ
return opplysningerService.hentSistAktiv(
behandlingId,
opplysningerType,
).orElseThrow { behandlingNotFoundException(behandlingId) }.toDto()
)?.toDto() ?: behandlingNotFoundException(behandlingId)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package no.nav.bidrag.behandling.controller.v1

import mu.KotlinLogging
import no.nav.bidrag.behandling.database.datamodell.Behandlingstype
import no.nav.bidrag.behandling.service.BehandlingService
import org.springframework.beans.factory.annotation.Value
import org.springframework.boot.web.client.RestTemplateBuilder
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.client.RestTemplate
import org.springframework.web.client.getForEntity

private val log = KotlinLogging.logger {}

data class ArbeidOgInntektLenkeRequest(
val behandlingId: Long,
val ident: String,
)

@BehandlingRestControllerV1
class ArbeidOgInntektController(
@Value("\${ARBEID_OG_INNTEKT_URL}") private val ainntektUrl: String,
private val behandlingService: BehandlingService,
) {
@PostMapping("/arbeidOgInntekt/ainntekt")
fun ainntektLenke(
@RequestBody request: ArbeidOgInntektLenkeRequest,
): String {
return hentAinntektLenke(request)
}

@PostMapping("/arbeidOgInntekt/arbeidsforhold")
fun arbeidsforholdLenke(
@RequestBody request: ArbeidOgInntektLenkeRequest,
): String {
return hentArbeidsforholdLenke(request)
}

private fun hentAinntektLenke(request: ArbeidOgInntektLenkeRequest): String {
val behandling = behandlingService.hentBehandlingById(request.behandlingId)
val kodeverkContext =
"$ainntektUrl/redirect/sok/a-inntekt"
val restTemplate: RestTemplate =
RestTemplateBuilder()
.defaultHeader(
"Nav-A-inntekt-Filter",
if (behandling.behandlingstype == Behandlingstype.FORSKUDD) "BidragsforskuddA-Inntekt" else "BidragA-Inntekt",
)
.defaultHeader("Nav-Enhet", behandling.behandlerEnhet)
.defaultHeader("Nav-FagsakId", behandling.saksnummer)
.defaultHeader("Nav-Personident", request.ident)
.build()
return restTemplate.getForEntity<String>(kodeverkContext).body!!
}

private fun hentArbeidsforholdLenke(request: ArbeidOgInntektLenkeRequest): String {
val kodeverkContext =
"$ainntektUrl/redirect/sok/arbeidstaker"
val restTemplate: RestTemplate =
RestTemplateBuilder()
.defaultHeader("Nav-Personident", request.ident)
.build()
return restTemplate.getForEntity<String>(kodeverkContext).body!!
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package no.nav.bidrag.behandling.controller.v1

import no.nav.bidrag.behandling.dto.notat.NotatDto
import no.nav.bidrag.behandling.service.NotatOpplysningerService
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable

@BehandlingRestControllerV1
class NotatOpplysningerController(
private val notatOpplysningerService: NotatOpplysningerService,
) {
@GetMapping("/notat/{behandlingId}")
fun hentNotatOpplysninger(
@PathVariable behandlingId: Long,
): NotatDto {
return notatOpplysningerService.hentNotatOpplysninger(behandlingId)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,12 @@ class OpplysningerController(val opplysningerService: OpplysningerService) {
@RequestBody(required = true) addOpplysningerRequest: AddOpplysningerRequest,
): OpplysningerDto {
val (_, _, opplysningerType, data, hentetDato) = addOpplysningerRequest
return opplysningerService.opprett(behandlingId, opplysningerType, data, hentetDato.toDate())
return opplysningerService.opprett(
behandlingId,
opplysningerType,
data,
hentetDato.toDate(),
)
.toDto()
}

Expand Down Expand Up @@ -68,6 +73,6 @@ class OpplysningerController(val opplysningerService: OpplysningerService) {
return opplysningerService.hentSistAktiv(
behandlingId,
opplysningerType,
).orElseThrow { behandlingNotFoundException(behandlingId) }.toDto()
)?.toDto() ?: behandlingNotFoundException(behandlingId)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import jakarta.persistence.GenerationType
import jakarta.persistence.Id
import jakarta.persistence.JoinColumn
import jakarta.persistence.ManyToOne
import no.nav.bidrag.domene.enums.person.Sivilstandskode
import java.time.LocalDate

// TODO: koble sammen med rolletabellen
Expand All @@ -19,7 +20,8 @@ class Sivilstand(
val behandling: Behandling,
val datoFom: LocalDate? = null,
val datoTom: LocalDate? = null,
val sivilstand: String,
@Enumerated(EnumType.STRING)
val sivilstand: Sivilstandskode,
@Enumerated(EnumType.STRING)
val kilde: Kilde,
@Id
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@ package no.nav.bidrag.behandling.database.repository
import no.nav.bidrag.behandling.database.datamodell.Opplysninger
import no.nav.bidrag.behandling.database.datamodell.OpplysningerType
import org.springframework.data.repository.CrudRepository
import java.util.Optional

interface OpplysningerRepository : CrudRepository<Opplysninger, Long> {
fun findTopByBehandlingIdAndOpplysningerTypeOrderByTsDescIdDesc(
behandlingId: Long,
opplysningerType: OpplysningerType,
): Optional<Opplysninger>
): Opplysninger?
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ data class HusstandsbarnDto(
@Schema(type = "string", format = "date", example = "2025-01-25")
@JsonFormat(pattern = "yyyy-MM-dd")
valdselsdato: LocalDate,
val foedselsdato: LocalDate = fødselsdato,
)
124 changes: 124 additions & 0 deletions src/main/kotlin/no/nav/bidrag/behandling/dto/notat/NotatDto.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
package no.nav.bidrag.behandling.dto.notat

import no.nav.bidrag.domene.enums.inntekt.Inntektsrapportering
import no.nav.bidrag.domene.enums.person.Bostatuskode
import no.nav.bidrag.domene.enums.person.Sivilstandskode
import no.nav.bidrag.domene.enums.rolle.Rolletype
import no.nav.bidrag.domene.enums.rolle.SøktAvType
import no.nav.bidrag.domene.ident.Personident
import no.nav.bidrag.domene.tid.ÅrMånedsperiode
import java.math.BigDecimal
import java.time.LocalDate
import java.time.YearMonth

data class NotatDto(
val saksnummer: String,
val saksbehandlerNavn: String?,
val virkningstidspunkt: Virkningstidspunkt,
val boforhold: Boforhold,
val parterISøknad: List<ParterISøknad>,
val inntekter: Inntekter,
val vedtak: List<Vedtak>,
)

data class Virkningstidspunkt(
valknadstype: String?,
valktAv: SøktAvType?,
val mottattDato: YearMonth?,
valktFraDato: YearMonth?,
val virkningstidspunkt: LocalDate?,
val notat: Notat,
)

data class Notat(
val medIVedtaket: String?,
val intern: String?,
)

data class Boforhold(
val barn: List<BoforholdBarn> = emptyList(),
val sivilstand: SivilstandNotat,
val notat: Notat,
)

data class SivilstandNotat(
val opplysningerFraFolkeregisteret: List<OpplysningerFraFolkeregisteret<Sivilstandskode>> = emptyList(),
val opplysningerBruktTilBeregning: List<OpplysningerBruktTilBeregning<Sivilstandskode>> = emptyList(),
)

data class BoforholdBarn(
val navn: String,
valdselsdato: LocalDate?,
val opplysningerFraFolkeregisteret: List<OpplysningerFraFolkeregisteret<Bostatuskode>> = emptyList(),
val opplysningerBruktTilBeregning: List<OpplysningerBruktTilBeregning<Bostatuskode>> = emptyList(),
)

data class OpplysningerFraFolkeregisteret<T>(
val periode: ÅrMånedsperiode,
val status: T?,
)

data class OpplysningerBruktTilBeregning<T>(
val periode: ÅrMånedsperiode,
val status: T,
val kilde: String,
)

data class ParterISøknad(
val rolle: Rolletype,
val navn: String?,
valdselsdato: LocalDate?,
val personident: Personident?,
)

data class Inntekter(
val inntekterPerRolle: List<InntekterPerRolle>,
val notat: Notat,
)

data class InntekterPerRolle(
val rolle: Rolletype,
val arbeidsforhold: List<Arbeidsforhold>,
val inntekterSomLeggesTilGrunn: List<InntekterSomLeggesTilGrunn>,
val barnetillegg: List<Barnetillegg>,
val utvidetBarnetrygd: List<UtvidetBarnetrygd>,
)

data class Arbeidsforhold(
val periode: ÅrMånedsperiode,
val arbeidsgiver: String,
val stillingProsent: String?,
valnnsendringDato: LocalDate?,
)

data class InntekterSomLeggesTilGrunn(
val inntektType: Inntektsrapportering?,
val beskrivelse: String?,
val periode: ÅrMånedsperiode?,
val beløp: BigDecimal,
)

data class Barnetillegg(
val periode: ÅrMånedsperiode,
val beløp: BigDecimal,
)

data class UtvidetBarnetrygd(
val periode: ÅrMånedsperiode,
val beløp: BigDecimal,
)

data class Vedtak(
val navn: String,
valdselsdato: LocalDate,
val resultat: List<Resultat>,
)

data class Resultat(
val type: String,
val periode: ÅrMånedsperiode,
val inntekt: BigDecimal,
val sivilstand: String,
val antallBarn: Int,
val resultat: String,
)
Loading

0 comments on commit 8072db8

Please sign in to comment.