Skip to content

Commit

Permalink
Merge branch 'main' into deadlock-protection
Browse files Browse the repository at this point in the history
  • Loading branch information
s148719 authored Oct 18, 2023
2 parents 1771442 + b1a76bb commit 7f2bfba
Show file tree
Hide file tree
Showing 16 changed files with 108 additions and 35 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
name: Deploy to dev
on:
workflow_dispatch:
pull_request:
types: [ ready_for_review, opened, synchronize ]
branches:
- '**'
- '!dependabot/**'

env:
Expand Down
6 changes: 5 additions & 1 deletion .nais/feature.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ name: bidrag-behandling-feature
ingresses:
- https://bidrag-behandling-feature.intern.dev.nav.no
env:
BIDRAG_PERSON_URL: https://bidrag-person-feature.dev-fss-pub.nais.io/bidrag-person
BIDRAG_PERSON_SCOPE: dev-fss.bidrag.bidrag-person-feature
BIDRAG_BEREGN_FORSKUDD_URL: http://bidrag-beregn-forskudd-rest-feature
BIDRAG_BEREGN_FORSKUDD_SCOPE: dev-gcp.bidrag.bidrag-beregn-forskudd-rest-feature
BIDRAG_GRUNNLAG_URL: http://bidrag-grunnlag-feature
Expand Down Expand Up @@ -35,4 +37,6 @@ outbound-access-apps:
- bidrag-beregn-forskudd-rest-feature
- bidrag-grunnlag-feature
- bidrag-dokument-forsendelse-feature
- bidrag-tilgangskontroll-feature
- bidrag-tilgangskontroll-feature
outbound-access-hosts:
- bidrag-person-feature.dev-fss-pub.nais.io
6 changes: 5 additions & 1 deletion .nais/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ name: bidrag-behandling
ingresses:
- https://bidrag-behandling.intern.dev.nav.no
env:
BIDRAG_PERSON_URL: https://bidrag-person.dev-fss-pub.nais.io/bidrag-person
BIDRAG_PERSON_SCOPE: dev-fss.bidrag.bidrag-person
BIDRAG_BEREGN_FORSKUDD_URL: http://bidrag-beregn-forskudd-rest
BIDRAG_BEREGN_FORSKUDD_SCOPE: dev-gcp.bidrag.bidrag-beregn-forskudd-rest
BIDRAG_GRUNNLAG_URL: http://bidrag-grunnlag
Expand Down Expand Up @@ -35,4 +37,6 @@ outbound-access-apps:
- bidrag-beregn-forskudd-rest
- bidrag-grunnlag
- bidrag-dokument-forsendelse
- bidrag-tilgangskontroll
- bidrag-tilgangskontroll
outbound-access-hosts:
- bidrag-person.dev-fss-pub.nais.io
6 changes: 5 additions & 1 deletion .nais/prod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ name: bidrag-behandling
ingresses:
- https://bidrag-behandling.intern.nav.no
env:
BIDRAG_PERSON_URL: https://bidrag-person.prod-fss-pub.nais.io/bidrag-person
BIDRAG_PERSON_SCOPE: prod-fss.bidrag.bidrag-person
BIDRAG_BEREGN_FORSKUDD_URL: http://bidrag-beregn-forskudd-rest
BIDRAG_BEREGN_FORSKUDD_SCOPE: prod-gcp.bidrag.bidrag-beregn-forskudd-rest
BIDRAG_GRUNNLAG_URL: http://bidrag-grunnlag
Expand Down Expand Up @@ -34,4 +36,6 @@ outbound-access-apps:
- bidrag-beregn-forskudd-rest
- bidrag-grunnlag
- bidrag-dokument-forsendelse
- bidrag-tilgangskontroll
- bidrag-tilgangskontroll
outbound-access-hosts:
- bidrag-person.prod-fss-pub.nais.io
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Et lokalt Dockermiljø må være tilgjengelig for lokal kjøring. Forebredelsess
Profil: local (angis i program arguments)

Start opp applikasjonen ved å kjøre [BidragTemplateLocal.kt](src/test/kotlin/no/nav/bidrag/behandling/BidragSpringAppLocal.kt).

Dette starter applikasjonen med profil `local` og henter miljøvariabler for Q1 miljøet fra filen [application-local.yaml](src/test/resources/application-local.yaml).

Her mangler det noen miljøvariabler som ikke bør committes til Git (Miljøvariabler for passord/secret osv).<br/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,6 @@ class DefaultRestControllerAdvice {
val (objectName, field) = it.destructured
"$objectName.$field"
}
return "${paths.joinToString("->")} kan ikke være null"
return "${paths.joinToString("->")} må fylles ut"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import no.nav.bidrag.behandling.database.datamodell.Rolle
import no.nav.bidrag.behandling.database.datamodell.SivilstandType
import no.nav.bidrag.behandling.transformers.INFINITY
import no.nav.bidrag.behandling.transformers.toCompactString
import no.nav.bidrag.behandling.transformers.toLocalDate
import no.nav.bidrag.behandling.transformers.toNoString
import no.nav.bidrag.beregn.felles.enums.BostatusKode
import no.nav.bidrag.beregn.felles.enums.SivilstandKode
Expand All @@ -28,16 +27,15 @@ import java.time.LocalDate

@Service
class ForskuddBeregning {

private fun prepareSoknadsBarn(soknadBarn: Rolle): List<Grunnlag> =
private fun prepareSoknadsBarn(soknadBarn: Rolle, fDato: String): List<Grunnlag> =
listOf(
Grunnlag(
referanse = "Mottatt_SoknadsbarnInfo_SB" + soknadBarn.id,
type = GrunnlagType.SOKNADSBARN_INFO,
innhold = POJONode(
SoknadsBarnNode(
soknadsbarnId = soknadBarn.id!!.toInt(),
fodselsdato = soknadBarn.fodtDato?.toLocalDate()?.toNoString(),
fodselsdato = fDato,
),
),
),
Expand All @@ -52,7 +50,11 @@ class ForskuddBeregning {
BostatusKode.BOR_IKKE_MED_FORELDRE
}

private fun prepareBostatus(husstandsBarnPerioder: List<HusstandsBarnPeriodeModel>, soknadsBarnIdent: String, soknadBarn: Rolle): List<Grunnlag> =
private fun prepareBostatus(
husstandsBarnPerioder: List<HusstandsBarnPeriodeModel>,
soknadsBarnIdent: String,
soknadBarn: Rolle
): List<Grunnlag> =
husstandsBarnPerioder
.filter { soknadsBarnIdent == it.ident }
.map {
Expand Down Expand Up @@ -211,20 +213,19 @@ class ForskuddBeregning {
roller = behandling.roller,
)

fun toPayload(b: BehandlingBeregningModel, soknadsBarn: Rolle): BeregnGrunnlag =
fun toPayload(b: BehandlingBeregningModel, soknadsBarn: Rolle, fDato: String): BeregnGrunnlag =
BeregnGrunnlag(
beregnDatoFra = b.virkningsDato,
beregnDatoTil = b.datoTom,
grunnlagListe = prepareSoknadsBarn(soknadsBarn) +
prepareBarnIHusstand(b) +
prepareBostatus(b.husstandsBarnPerioder, soknadsBarn.ident, soknadsBarn) +
prepareInntekterForBeregning(
b.inntekter,
b.barnetillegg,
b.utvidetbarnetrygd,
) +
prepareSivilstand(b.sivilstand),

grunnlagListe = prepareSoknadsBarn(soknadsBarn, fDato) +
prepareBarnIHusstand(b) +
prepareBostatus(b.husstandsBarnPerioder, soknadsBarn.ident, soknadsBarn) +
prepareInntekterForBeregning(
b.inntekter,
b.barnetillegg,
b.utvidetbarnetrygd,
) +
prepareSivilstand(b.sivilstand),
)
}

Expand Down Expand Up @@ -254,7 +255,7 @@ data class BostatusNode(

data class SoknadsBarnNode(
val soknadsbarnId: Int,
val fodselsdato: String?,
val fodselsdato: String,
)

data class InntektNode(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,17 +57,17 @@ data class BehandlingBeregningModel private constructor(
behandlingId
},
{
ensure(virkningsDato != null) { raise("Behandling virkningsDato kan ikke være null") }
ensure(virkningsDato != null) { raise("Behandling virkningsDato må fylles ut") }
virkningsDato.toLocalDate()
},
{
ensure(datoTom != null) { raise("Behandling datoTom kan ikke være null") }
ensure(datoTom != null) { raise("Behandling Dato Til må fylles ut") }
datoTom.toLocalDate()
},
{
mapOrAccumulate(sivilstand) {
SivilstandModel(
it.datoFom?.toLocalDate() ?: raise("Sivilstands datoFom kan ikke være null"),
it.datoFom?.toLocalDate() ?: raise("Sivilstand Dato Fra må fylles ut"),
it.datoTom?.toLocalDate(),
it.sivilstandType,
)
Expand All @@ -76,19 +76,18 @@ data class BehandlingBeregningModel private constructor(
{
mapOrAccumulate(inntekter.filter { it.taMed }) {
InntektModel(
inntektType = it.inntektType ?: "INNTEKTSOPPLYSNINGER_ARBEIDSGIVER", // TODO -> DETTE ER KUN MIDLERTIDIG
// inntektType = it.inntektType ?: raise("InntektType kan ikke være null"),
inntektType = it.inntektType ?: raise("InntektType kan ikke være null"),
belop = it.belop,
rolle = roller.rolleType(it.ident),
datoFom = it.datoFom?.toLocalDate() ?: raise("Inntekts datoFom kan ikke være null"),
datoFom = it.datoFom?.toLocalDate() ?: raise("Inntekts Dato Fra må fylles ut"),
datoTom = it.datoTom?.toLocalDate(),
)
}
},
{
mapOrAccumulate(barnetillegg) {
BarnetilleggModel(
datoFom = it.datoFom?.toLocalDate() ?: raise("Barnetillegg datoFom kan ikke være null"),
datoFom = it.datoFom?.toLocalDate() ?: raise("Barnetillegg Dato Fra må fylles ut"),
datoTom = it.datoTom?.toLocalDate(),
belop = it.barnetillegg,
)
Expand All @@ -97,7 +96,7 @@ data class BehandlingBeregningModel private constructor(
{
mapOrAccumulate(utvidetbarnetrygd) {
UtvidetbarnetrygdModel(
datoFom = it.datoFom?.toLocalDate() ?: raise("Utvidetbarnetrygd datoFom kan ikke være null"),
datoFom = it.datoFom?.toLocalDate() ?: raise("Utvidetbarnetrygd Dato Fra må fylles ut"),
datoTom = it.datoTom?.toLocalDate(),
belop = it.belop,
)
Expand All @@ -109,7 +108,7 @@ data class BehandlingBeregningModel private constructor(
.flatMap { it.perioder },
) {
HusstandsBarnPeriodeModel(
datoFom = it.datoFom?.toLocalDate() ?: raise("HusstandsBarnPeriode datoFom kan ikke være null"),
datoFom = it.datoFom?.toLocalDate() ?: raise("HusstandsBarnPeriode Dato Fra må fylles ut"),
datoTom = it.datoTom?.toLocalDate(),
ident = it.husstandsBarn.ident,
boStatus = it.boStatus,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import java.util.concurrent.TimeUnit
@EnableUserCache
class CacheConfig {
companion object {
const val PERSON_CACHE = "PERSON_CACHE"
const val SAK_CACHE = "SAK_CACHE"
const val TILGANG_TEMA_CACHE = "TILGANG_TEMA_CACHE"
const val TILGANG_PERSON_CACHE = "TILGANG_PERSON_CACHE"
Expand All @@ -26,6 +27,7 @@ class CacheConfig {
@Bean
fun cacheManager(): CacheManager {
val caffeineCacheManager = CaffeineCacheManager()
caffeineCacheManager.registerCustomCache(PERSON_CACHE, Caffeine.newBuilder().expireAfter(InvaliderCacheFørStartenAvArbeidsdag()).build())
caffeineCacheManager.registerCustomCache(TILGANG_TEMA_CACHE, Caffeine.newBuilder().expireAfterWrite(1, TimeUnit.HOURS).build())
caffeineCacheManager.registerCustomCache(TILGANG_PERSON_CACHE, Caffeine.newBuilder().expireAfterWrite(1, TimeUnit.HOURS).build())
caffeineCacheManager.registerCustomCache(TILGANG_SAK_CACHE, Caffeine.newBuilder().expireAfterWrite(1, TimeUnit.HOURS).build())
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
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 org.springframework.beans.factory.annotation.Qualifier
import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Service
import org.springframework.web.client.RestTemplate
import org.springframework.web.util.UriComponentsBuilder
import java.net.URI

@Service
class BidragPersonConsumer(
@Value("\${BIDRAG_PERSON_URL}") bidragPersonUrl: URI,
@Qualifier("azure") restTemplate: RestTemplate,
) : AbstractRestClient(restTemplate, "bidrag-person") {

private val hentPersonUri =
UriComponentsBuilder.fromUri(bidragPersonUrl).pathSegment("informasjon").build().toUri()

@BrukerCacheable(PERSON_CACHE)
fun hentPerson(ident: String): HentPersonResponse {
return postForNonNullEntity(hentPersonUri, HentPersonRequest(ident))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirement
import mu.KotlinLogging
import no.nav.bidrag.behandling.beregning.ForskuddBeregning
import no.nav.bidrag.behandling.consumer.BidragBeregnForskuddConsumer
import no.nav.bidrag.behandling.consumer.BidragPersonConsumer
import no.nav.bidrag.behandling.dto.beregning.ForskuddBeregningPerBarn
import no.nav.bidrag.behandling.dto.beregning.ForskuddBeregningRespons
import no.nav.bidrag.behandling.service.BehandlingService
import no.nav.bidrag.domain.enums.Rolletype
import no.nav.bidrag.behandling.transformers.toLocalDate
import no.nav.bidrag.behandling.transformers.toNoString
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.client.HttpClientErrorException
Expand All @@ -23,6 +25,7 @@ class BehandlingBeregnForskuddController(
private val behandlingService: BehandlingService,
private val bidragBeregnForskuddConsumer: BidragBeregnForskuddConsumer,
private val forskuddBeregning: ForskuddBeregning,
private val bidragPersonConsumer: BidragPersonConsumer
) {
private fun isPeriodOneWithinPeriodTwo(
datoFom1: LocalDate?,
Expand All @@ -49,10 +52,13 @@ class BehandlingBeregnForskuddController(
val behandlingModel = forskuddBeregning.toBehandlingBeregningModel(behandling).bind()
val results =
behandling
.roller
.filter { Rolletype.BARN == it.rolleType }
.getSøknadsBarn()
.mapOrAccumulate {
val payload = forskuddBeregning.toPayload(behandlingModel, it)
val fDato = if (it.fodtDato == null) {
bidragPersonConsumer.hentPerson(it.ident).fødselsdato
} else it.fodtDato.toLocalDate().toNoString()

val payload = forskuddBeregning.toPayload(behandlingModel, it, fDato)

try {
val respons =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import jakarta.persistence.GenerationType
import jakarta.persistence.Id
import jakarta.persistence.OneToMany
import no.nav.bidrag.domain.enums.EngangsbelopType
import no.nav.bidrag.domain.enums.Rolletype
import no.nav.bidrag.domain.enums.StonadType
import org.hibernate.annotations.SQLDelete
import org.hibernate.annotations.Where
Expand Down Expand Up @@ -70,4 +71,6 @@ class Behandling(
@OneToMany(fetch = FetchType.EAGER, mappedBy = "behandling", cascade = [CascadeType.ALL], orphanRemoval = true)
var utvidetbarnetrygd: MutableSet<Utvidetbarnetrygd> = mutableSetOf(),
var deleted: Boolean = false,
)
) {
fun getSøknadsBarn() = roller.filter { it.rolleType == Rolletype.BARN }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package no.nav.bidrag.behandling.dto

data class HentPersonRequest(val ident: String)
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package no.nav.bidrag.behandling.dto

data class HentPersonResponse(
val ident: String,
valdselsdato: String,
)
9 changes: 9 additions & 0 deletions src/main/resources/application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,15 @@ spring.config.activate.on-profile: nais,lokal-nais
no.nav.security.jwt:
client:
registration:
bidrag-person:
resource-url: ${BIDRAG_PERSON_URL}
token-endpoint-url: https://login.microsoftonline.com/${AZURE_APP_TENANT_ID}/oauth2/v2.0/token
grant-type: urn:ietf:params:oauth:grant-type:jwt-bearer
scope: api://${BIDRAG_PERSON_SCOPE}/.default
authentication:
client-id: ${AZURE_APP_CLIENT_ID}
client-secret: ${AZURE_APP_CLIENT_SECRET}
client-auth-method: client_secret_post
bidrag-beregn-forskudd-rest:
resource-url: ${BIDRAG_BEREGN_FORSKUDD_URL}
token-endpoint-url: https://login.microsoftonline.com/${AZURE_APP_TENANT_ID}/oauth2/v2.0/token
Expand Down
1 change: 1 addition & 0 deletions src/test/resources/application-test.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
BIDRAG_PERSON_URL: http://localhost:${wiremock.server.port}/bidrag-person
BIDRAG_BEREGN_FORSKUDD_URL: http://localhost:${wiremock.server.port}/beregn-forskudd
BIDRAG_FORSENDELSE_URL: http://localhost:${wiremock.server.port}/forsendelse
BIDRAG_TILGANGSKONTROLL_URL: http://localhost:${wiremock.server.port}/tilgangskontroll
Expand Down

0 comments on commit 7f2bfba

Please sign in to comment.