Skip to content

Commit e363fd1

Browse files
committed
Endepunkt som returnerer klassifisert inntekt
Ny versjon av det som ligger i InntektRoute. Slår sammen aktørId og fnr til personidentifikator, og tar i tillegg inn periodeFraOgMed og periodeTilOgMed, som erstatter periodene utledet av Opptjeningsperiode gitt beregningsDato.
1 parent cec4366 commit e363fd1

File tree

6 files changed

+79
-12
lines changed

6 files changed

+79
-12
lines changed

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import no.nav.dagpenger.inntekt.api.v1.enhetsregisteret
3636
import no.nav.dagpenger.inntekt.api.v1.inntekt
3737
import no.nav.dagpenger.inntekt.api.v1.opptjeningsperiodeApi
3838
import no.nav.dagpenger.inntekt.api.v1.uklassifisertInntekt
39+
import no.nav.dagpenger.inntekt.api.v3.inntektV3
3940
import no.nav.dagpenger.inntekt.db.IllegalInntektIdException
4041
import no.nav.dagpenger.inntekt.db.InntektNotFoundException
4142
import no.nav.dagpenger.inntekt.db.InntektStore
@@ -60,7 +61,12 @@ internal fun Application.inntektApi(
6061
enhetsregisterClient: EnhetsregisterClient,
6162
healthChecks: List<HealthCheck>,
6263
collectorRegistry: PrometheusRegistry = PrometheusRegistry.defaultRegistry,
63-
meterRegistry: PrometheusMeterRegistry = PrometheusMeterRegistry(PrometheusConfig.DEFAULT, collectorRegistry, Clock.SYSTEM),
64+
meterRegistry: PrometheusMeterRegistry =
65+
PrometheusMeterRegistry(
66+
PrometheusConfig.DEFAULT,
67+
collectorRegistry,
68+
Clock.SYSTEM,
69+
),
6470
) {
6571
install(DefaultHeaders)
6672
install(MicrometerMetrics) {
@@ -231,6 +237,11 @@ internal fun Application.inntektApi(
231237
}
232238
}
233239
}
240+
authenticate("azure") {
241+
route("/v3/inntekt") {
242+
inntektV3(behandlingsInntektsGetter, personOppslag)
243+
}
244+
}
234245
naischecks(healthChecks, meterRegistry)
235246
}
236247
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ fun Route.uklassifisertInntekt(
146146
withContext(coroutineContext) {
147147
val inntektId = InntektId(call.parameters["inntektId"]!!)
148148
inntektStore
149-
.getInntektMedPersonFnr(inntektId)
149+
.getStoredInntektMedMetadata(inntektId)
150150
.let {
151151
val person = personOppslag.hentPerson(it.fødselsnummer)
152152
val inntektsmottaker = Inntektsmottaker(it.fødselsnummer, person.sammensattNavn())
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package no.nav.dagpenger.inntekt.api.v3
2+
3+
import io.ktor.http.HttpStatusCode
4+
import io.ktor.server.plugins.callid.callId
5+
import io.ktor.server.request.receive
6+
import io.ktor.server.response.respond
7+
import io.ktor.server.routing.Route
8+
import io.ktor.server.routing.post
9+
import io.ktor.server.routing.route
10+
import kotlinx.coroutines.Dispatchers.IO
11+
import kotlinx.coroutines.withContext
12+
import no.nav.dagpenger.inntekt.BehandlingsInntektsGetter
13+
import no.nav.dagpenger.inntekt.db.Inntektparametre
14+
import no.nav.dagpenger.inntekt.db.RegelKontekst
15+
import no.nav.dagpenger.inntekt.oppslag.PersonOppslag
16+
import java.time.LocalDate
17+
import java.time.YearMonth
18+
19+
fun Route.inntektV3(
20+
behandlingsInntektsGetter: BehandlingsInntektsGetter,
21+
personOppslag: PersonOppslag,
22+
) {
23+
route("/klassifisert") {
24+
post {
25+
withContext(IO) {
26+
val inntektRequestDto = call.receive<InntektRequestDto>()
27+
val person = personOppslag.hentPerson(inntektRequestDto.personIdentifikator)
28+
val inntektparametre =
29+
Inntektparametre(
30+
aktørId = person.aktørId,
31+
fødselsnummer = person.fødselsnummer,
32+
regelkontekst = inntektRequestDto.regelkontekst,
33+
beregningsdato = inntektRequestDto.beregningsDato,
34+
).apply {
35+
opptjeningsperiode.førsteMåned = inntektRequestDto.periodeFraOgMed
36+
opptjeningsperiode.sisteAvsluttendeKalenderMåned = inntektRequestDto.periodeTilOgMed
37+
}
38+
val klassifisertInntekt =
39+
behandlingsInntektsGetter.getKlassifisertInntekt(
40+
inntektparametre,
41+
call.callId,
42+
)
43+
call.respond(HttpStatusCode.OK, klassifisertInntekt)
44+
}
45+
}
46+
}
47+
}
48+
49+
data class InntektRequestDto(
50+
val personIdentifikator: String,
51+
val regelkontekst: RegelKontekst,
52+
val beregningsDato: LocalDate,
53+
val periodeFraOgMed: YearMonth,
54+
val periodeTilOgMed: YearMonth,
55+
)

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ interface InntektStore {
2929

3030
fun markerInntektBrukt(inntektId: InntektId): Int
3131

32-
fun getInntektMedPersonFnr(inntektId: InntektId): StoredInntektMedFnr
32+
fun getStoredInntektMedMetadata(inntektId: InntektId): StoredInntektMedMetadata
3333
}
3434

3535
data class Inntektparametre(
@@ -102,7 +102,7 @@ data class InntektId(
102102
}
103103
}
104104

105-
data class StoredInntektMedFnr(
105+
data class StoredInntektMedMetadata(
106106
val inntektId: InntektId,
107107
val inntekt: InntektkomponentResponse,
108108
val manueltRedigert: Boolean,

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ internal class PostgresInntektStore(
187187
return mapToSpesifisertInntekt(stored.first, Opptjeningsperiode(stored.second).sisteAvsluttendeKalenderMåned)
188188
}
189189

190-
override fun getInntektMedPersonFnr(inntektId: InntektId): StoredInntektMedFnr {
190+
override fun getStoredInntektMedMetadata(inntektId: InntektId): StoredInntektMedMetadata {
191191
@Language("sql")
192192
val statement =
193193
"""
@@ -202,7 +202,7 @@ internal class PostgresInntektStore(
202202
session.run(
203203
queryOf(statement, inntektId.id)
204204
.map {
205-
StoredInntektMedFnr(
205+
StoredInntektMedMetadata(
206206
inntektId = InntektId(it.string("id")),
207207
inntekt = it.binaryStream("inntekt").use { jacksonObjectMapper.readValue<InntektkomponentResponse>(it) },
208208
manueltRedigert = it.boolean("manuelt_redigert"),

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ import java.time.YearMonth
66
import java.time.ZoneId
77
import java.util.Date
88

9-
data class Opptjeningsperiode(val beregningsdato: LocalDate) {
9+
data class Opptjeningsperiode(
10+
val beregningsdato: LocalDate,
11+
) {
1012
private val antattRapporteringsFrist = LocalDate.of(beregningsdato.year, beregningsdato.month, 5)
1113
private val reellRapporteringsFrist: LocalDate =
1214
finnFørsteArbeidsdagEtterRapporterteringsFrist(antattRapporteringsFrist)
@@ -16,21 +18,20 @@ data class Opptjeningsperiode(val beregningsdato: LocalDate) {
1618
else -> 1
1719
}
1820

19-
val sisteAvsluttendeKalenderMåned: YearMonth = beregningsdato.minusMonths(månedSubtraksjon).toYearMonth()
20-
val førsteMåned: YearMonth = sisteAvsluttendeKalenderMåned.minusMonths(35)
21+
var sisteAvsluttendeKalenderMåned: YearMonth = beregningsdato.minusMonths(månedSubtraksjon).toYearMonth()
22+
var førsteMåned: YearMonth = sisteAvsluttendeKalenderMåned.minusMonths(35)
2123

2224
fun sammeOpptjeningsPeriode(other: Opptjeningsperiode): Boolean =
2325
this.sisteAvsluttendeKalenderMåned == other.sisteAvsluttendeKalenderMåned
2426

25-
private tailrec fun finnFørsteArbeidsdagEtterRapporterteringsFrist(rapporteringsFrist: LocalDate): LocalDate {
26-
return if (rapporteringsFrist.erArbeidsdag()) {
27+
private tailrec fun finnFørsteArbeidsdagEtterRapporterteringsFrist(rapporteringsFrist: LocalDate): LocalDate =
28+
if (rapporteringsFrist.erArbeidsdag()) {
2729
rapporteringsFrist
2830
} else {
2931
finnFørsteArbeidsdagEtterRapporterteringsFrist(
3032
rapporteringsFrist.plusDays(1),
3133
)
3234
}
33-
}
3435

3536
private fun LocalDate.erArbeidsdag(): Boolean =
3637
NorwegianDateUtil.isWorkingDay(Date.from(this.atStartOfDay(ZoneId.systemDefault()).toInstant()))

0 commit comments

Comments
 (0)