|
1 | 1 | package no.nav.dagpenger.inntekt
|
2 | 2 |
|
3 | 3 | import no.nav.dagpenger.inntekt.db.InntektStore
|
| 4 | +import no.nav.dagpenger.inntekt.db.Inntektparametre |
| 5 | +import no.nav.dagpenger.inntekt.db.StoreInntektCommand |
4 | 6 | import no.nav.dagpenger.inntekt.db.StoredInntekt
|
5 | 7 | import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektkomponentRequest
|
6 | 8 | import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektskomponentClient
|
7 | 9 | import no.nav.dagpenger.inntekt.opptjeningsperiode.Opptjeningsperiode
|
8 | 10 |
|
9 |
| -class BehandlingsInntektsGetter(private val inntektskomponentClient: InntektskomponentClient, private val inntektStore: InntektStore) { |
| 11 | +class BehandlingsInntektsGetter( |
| 12 | + private val inntektskomponentClient: InntektskomponentClient, |
| 13 | + private val inntektStore: InntektStore |
| 14 | +) { |
10 | 15 |
|
11 |
| - suspend fun getBehandlingsInntekt(behandlingsKey: BehandlingsKey): StoredInntekt { |
12 |
| - |
13 |
| - val opptjeningsperiode = Opptjeningsperiode(behandlingsKey.beregningsDato) |
| 16 | + suspend fun getBehandlingsInntekt(inntektparametre: Inntektparametre): StoredInntekt { |
| 17 | + val opptjeningsperiode = Opptjeningsperiode(inntektparametre.beregningsdato) |
14 | 18 |
|
15 | 19 | val inntektkomponentRequest = InntektkomponentRequest(
|
16 |
| - behandlingsKey.aktørId, |
| 20 | + inntektparametre.aktørId, |
17 | 21 | opptjeningsperiode.førsteMåned,
|
18 | 22 | opptjeningsperiode.sisteAvsluttendeKalenderMåned
|
19 | 23 | )
|
20 | 24 |
|
21 |
| - val storedInntekt = inntektStore.getInntektId(behandlingsKey)?.let { inntektStore.getInntekt(it) } |
22 |
| - ?: inntektStore.insertInntekt( |
23 |
| - behandlingsKey, |
24 |
| - inntektskomponentClient.getInntekt(inntektkomponentRequest) |
| 25 | + return isInntektStored(inntektparametre)?.let { inntektStore.getInntekt(it) } |
| 26 | + ?: fetchAndStoreInntekt(inntektparametre, inntektkomponentRequest) |
| 27 | + } |
| 28 | + |
| 29 | + private suspend fun fetchAndStoreInntekt( |
| 30 | + inntektparametre: Inntektparametre, |
| 31 | + inntektkomponentRequest: InntektkomponentRequest |
| 32 | + ): StoredInntekt { |
| 33 | + return inntektStore.storeInntekt( |
| 34 | + StoreInntektCommand( |
| 35 | + inntektparametre = inntektparametre, |
| 36 | + inntekt = inntektskomponentClient.getInntekt(inntektkomponentRequest) |
25 | 37 | )
|
26 | 38 |
|
27 |
| - return storedInntekt |
| 39 | + ) |
28 | 40 | }
|
| 41 | + |
| 42 | + private fun isInntektStored(inntektparametre: Inntektparametre) = inntektStore.getInntektId(inntektparametre) |
29 | 43 | }
|
0 commit comments