Skip to content

Commit c4d1b55

Browse files
ArselanSultaniJMLindseth
authored andcommitted
Legg til henting av orgnavn fra enhetsregister og map i response til frontend
1 parent 0b53ec2 commit c4d1b55

File tree

5 files changed

+73
-16
lines changed

5 files changed

+73
-16
lines changed

dp-inntekt-api/src/main/kotlin/no/nav/dagpenger/inntekt/InntektApi.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,8 @@ internal fun Application.inntektApi(
107107
}
108108
exception<InntektskomponentenHttpClientException> { call, cause ->
109109
val statusCode =
110-
if (HttpStatusCode.fromValue(cause.status)
110+
if (HttpStatusCode
111+
.fromValue(cause.status)
111112
.isSuccess()
112113
) {
113114
HttpStatusCode.InternalServerError
@@ -218,7 +219,7 @@ internal fun Application.inntektApi(
218219
routing {
219220
route("/v1") {
220221
route("/inntekt") {
221-
uklassifisertInntekt(inntektskomponentHttpClient, inntektStore, personOppslag)
222+
uklassifisertInntekt(inntektskomponentHttpClient, inntektStore, personOppslag, enhetsregisterClient)
222223
}
223224
opptjeningsperiodeApi(inntektStore)
224225
enhetsregisteret(enhetsregisterClient)

dp-inntekt-api/src/main/kotlin/no/nav/dagpenger/inntekt/mapping/GUIInntektsKomponentResponse.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ data class GUIInntekt(
2020
val inntektsmottaker: Inntektsmottaker? = null,
2121
)
2222

23-
data class Inntektsmottaker(val pnr: String?, val navn: String?)
23+
data class Inntektsmottaker(
24+
val pnr: String?,
25+
val navn: String?,
26+
)
2427

2528
data class GUIInntektsKomponentResponse(
2629
val fraDato: YearMonth?,
@@ -62,3 +65,8 @@ data class InntektMedVerdikode(
6265
val tilleggsinformasjon: TilleggInformasjon? = null,
6366
val verdikode: String,
6467
)
68+
69+
data class OrganisasjonNavnOgIdMapping(
70+
val organisasjonsnummer: String,
71+
val organisasjonNavn: String,
72+
)

dp-inntekt-api/src/main/kotlin/no/nav/dagpenger/inntekt/mapping/MapToInntektFrontend.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,20 @@ import no.nav.dagpenger.inntekt.inntektskomponenten.v1.TilleggInformasjon
99
import java.math.BigDecimal
1010
import java.time.YearMonth
1111

12-
fun mapToInntektFrontend(
13-
inntektResponse: InntektkomponentResponse,
12+
fun InntektkomponentResponse.mapToFrontend(
1413
person: Inntektsmottaker,
14+
organisasjonsInfoListe: MutableList<OrganisasjonNavnOgIdMapping>,
1515
): InntektForVirksomhetMedPersonInformasjon {
16-
val inntekt = inntektResponse.arbeidsInntektMaaned
17-
var virksomhetListe: MutableList<InntektForVirksomhet> = mutableListOf()
16+
val inntekt = arbeidsInntektMaaned
17+
val virksomhetListe: MutableList<InntektForVirksomhet> = mutableListOf()
1818

1919
inntekt?.forEach { arbeidsInntektMaaned ->
2020
val inntektsInformasjon = arbeidsInntektMaaned.arbeidsInntektInformasjon
2121
inntektsInformasjon?.inntektListe?.forEach { inntekt ->
2222
val virksomhet = inntekt.virksomhet
23-
// TODO: Replace with actual logic to get virksomhetNavn
24-
val virksomhetNavn = "testNavn"
23+
val virksomhetNavn =
24+
organisasjonsInfoListe.find { it.organisasjonsnummer == virksomhet?.identifikator }?.organisasjonNavn
25+
?: ""
2526
val inntekter = mutableListOf<InntektVirksomhetMaaned>()
2627
inntekter.add(
2728
InntektVirksomhetMaaned(
@@ -62,7 +63,7 @@ fun mapToInntektFrontend(
6263
} else {
6364
virksomhetListe.add(
6465
InntektForVirksomhet(
65-
virksomhet = virksomhet!!.identifikator,
66+
virksomhet = virksomhet?.identifikator ?: "",
6667
virksomhetNavn = virksomhetNavn,
6768
periode =
6869
InntektForVirksomhetPeriode(
@@ -71,7 +72,7 @@ fun mapToInntektFrontend(
7172
),
7273
inntekter = inntekter,
7374
avvikListe =
74-
arbeidsInntektMaaned.avvikListe?.filter { it.virksomhet?.identifikator == virksomhet.identifikator }
75+
arbeidsInntektMaaned.avvikListe?.filter { it.virksomhet?.identifikator == virksomhet?.identifikator }
7576
?: emptyList(),
7677
),
7778
)

dp-inntekt-api/src/main/kotlin/no/nav/dagpenger/inntekt/v1/UklassifisertInntektRoute.kt

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,15 @@ import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektkomponentRequest
2828
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektskomponentClient
2929
import no.nav.dagpenger.inntekt.mapping.GUIInntekt
3030
import no.nav.dagpenger.inntekt.mapping.Inntektsmottaker
31+
import no.nav.dagpenger.inntekt.mapping.OrganisasjonNavnOgIdMapping
3132
import no.nav.dagpenger.inntekt.mapping.dataGrunnlagKlassifiseringToVerdikode
3233
import no.nav.dagpenger.inntekt.mapping.mapToDetachedInntekt
34+
import no.nav.dagpenger.inntekt.mapping.mapToFrontend
3335
import no.nav.dagpenger.inntekt.mapping.mapToGUIInntekt
34-
import no.nav.dagpenger.inntekt.mapping.mapToInntektFrontend
3536
import no.nav.dagpenger.inntekt.mapping.mapToStoredInntekt
3637
import no.nav.dagpenger.inntekt.oppslag.Person
3738
import no.nav.dagpenger.inntekt.oppslag.PersonOppslag
39+
import no.nav.dagpenger.inntekt.oppslag.enhetsregister.EnhetsregisterClient
3840
import no.nav.dagpenger.inntekt.opptjeningsperiode.Opptjeningsperiode
3941
import java.time.LocalDate
4042

@@ -65,6 +67,7 @@ fun Route.uklassifisertInntekt(
6567
inntektskomponentClient: InntektskomponentClient,
6668
inntektStore: InntektStore,
6769
personOppslag: PersonOppslag,
70+
enhetsregisterClient: EnhetsregisterClient,
6871
) {
6972
authenticate("azure") {
7073
route("/uklassifisert/{aktørId}/{kontekstType}/{kontekstId}/{beregningsDato}") {
@@ -145,8 +148,17 @@ fun Route.uklassifisertInntekt(
145148
.let {
146149
val person = personOppslag.hentPerson(it.fødselsnummer)
147150
val inntektsmottaker = Inntektsmottaker(it.fødselsnummer, person.sammensattNavn())
148-
mapToInntektFrontend(it.inntekt, inntektsmottaker)
149-
}?.let {
151+
val hentOrganisasjonsInfoListe =
152+
hentOrganisasjonNavn(
153+
enhetsregisterClient,
154+
it.inntekt.arbeidsInntektMaaned
155+
?.flatMap { it.arbeidsInntektInformasjon?.inntektListe.orEmpty() }
156+
?.mapNotNull { it.virksomhet?.identifikator }
157+
?.toTypedArray()
158+
?.toList() ?: emptyList(),
159+
)
160+
it.inntekt.mapToFrontend(inntektsmottaker, hentOrganisasjonsInfoListe)
161+
}.let {
150162
call.respond(HttpStatusCode.OK, it)
151163
}
152164
}
@@ -228,6 +240,29 @@ fun Route.uklassifisertInntekt(
228240
}
229241
}
230242

243+
private suspend fun hentOrganisasjonNavn(
244+
enhetsregisterClient: EnhetsregisterClient,
245+
organisasjonsNummerListe: List<String>?,
246+
): MutableList<OrganisasjonNavnOgIdMapping> {
247+
val organisasjonNavnOgIdMappingListe = mutableListOf<OrganisasjonNavnOgIdMapping>()
248+
organisasjonsNummerListe?.forEach { orgNr ->
249+
runCatching {
250+
enhetsregisterClient.hentEnhet(orgNr)
251+
}.onFailure {
252+
logger.error(it) { "Feil ved henting av organisasjonsnavn for $it" }
253+
}.onSuccess {
254+
val organisasjonsNavnOgIdMapping =
255+
OrganisasjonNavnOgIdMapping(
256+
organisasjonsnummer = it,
257+
organisasjonNavn = it,
258+
)
259+
organisasjonNavnOgIdMappingListe.add(organisasjonsNavnOgIdMapping)
260+
}
261+
}
262+
263+
return organisasjonNavnOgIdMappingListe
264+
}
265+
231266
private fun ApplicationCall.getSubject(): String {
232267
return runCatching {
233268
this.authentication

dp-inntekt-api/src/test/kotlin/no/nav/dagpenger/inntekt/mapping/MapToInntektFrontendTest.kt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,13 +169,25 @@ val mottaker =
169169
navn = "Ola Nordmann",
170170
)
171171

172+
val organisasjonNavnOgIdMappingForTesting =
173+
mutableListOf(
174+
OrganisasjonNavnOgIdMapping(
175+
organisasjonsnummer = "896929119",
176+
organisasjonNavn = "Test Org 119",
177+
),
178+
OrganisasjonNavnOgIdMapping(
179+
organisasjonsnummer = "896929120",
180+
organisasjonNavn = "Test Org 120",
181+
),
182+
)
183+
172184
class MapToInntektFrontendTest {
173185
@Test
174186
fun `Map inntekt til InntektForVirksomhetMedPersonInformasjon`() {
175187
val mappedToInntektFrontend =
176-
mapToInntektFrontend(
177-
inntektkomponentResponse,
188+
inntektkomponentResponse.mapToFrontend(
178189
mottaker,
190+
organisasjonNavnOgIdMappingForTesting,
179191
)
180192

181193
assertEquals(2, mappedToInntektFrontend.inntektVirksomhetMaaned.size)

0 commit comments

Comments
 (0)