From 857f62eae612b20c7621a8d37b0d3564d990246c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Roaldseth?= Date: Tue, 14 Jan 2025 13:28:44 +0100 Subject: [PATCH] =?UTF-8?q?Legg=20til=20utledning=20av=20utfall=20p=C3=A5?= =?UTF-8?q?=20regelsett=20som=20er=20vilk=C3=A5r?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tonje Mjøvik Myran Co-authored-by: Eivind Havnelid Røyrvik --- .../regel/TapAvArbeidsinntektOgArbeidstid.kt | 2 +- .../mediator/api/BehandlingApiMapper.kt | 25 ++++++++++++++++--- .../src/main/resources/behandling-api.yaml | 2 +- .../no/nav/dagpenger/opplysning/Regelsett.kt | 12 ++++++++- 4 files changed, 35 insertions(+), 6 deletions(-) diff --git a/dagpenger/src/main/kotlin/no/nav/dagpenger/regel/TapAvArbeidsinntektOgArbeidstid.kt b/dagpenger/src/main/kotlin/no/nav/dagpenger/regel/TapAvArbeidsinntektOgArbeidstid.kt index 8aab5f4a..b64bcf14 100644 --- a/dagpenger/src/main/kotlin/no/nav/dagpenger/regel/TapAvArbeidsinntektOgArbeidstid.kt +++ b/dagpenger/src/main/kotlin/no/nav/dagpenger/regel/TapAvArbeidsinntektOgArbeidstid.kt @@ -93,7 +93,7 @@ object TapAvArbeidsinntektOgArbeidstid { regel(beregningsregel) { enAv(beregningsregel6mnd, beregningsregel12mnd, beregningsregel36mnd) } - regel(kravTilTapAvArbeidsinntektOgArbeidstid) { + utfall(kravTilTapAvArbeidsinntektOgArbeidstid) { alle(kravTilTapAvArbeidsinntekt, kravTilTaptArbeidstid, beregningsregel, kravTilMinstTaptArbeidstid) } } diff --git a/mediator/src/main/kotlin/no/nav/dagpenger/behandling/mediator/api/BehandlingApiMapper.kt b/mediator/src/main/kotlin/no/nav/dagpenger/behandling/mediator/api/BehandlingApiMapper.kt index ea51da26..cc1bd3dd 100644 --- a/mediator/src/main/kotlin/no/nav/dagpenger/behandling/mediator/api/BehandlingApiMapper.kt +++ b/mediator/src/main/kotlin/no/nav/dagpenger/behandling/mediator/api/BehandlingApiMapper.kt @@ -100,15 +100,34 @@ private fun Regelsett.tilRegelsettDTO( avklaringer: Set, ): RegelsettDTO { val produserer = opplysninger.filter { opplysning -> opplysning.opplysningstype in produserer } - val egneAvklaringer = avklaringer() + val avklaringskoder = avklaringer() + val egneAvklaringer = avklaringer.filter { it.kode in avklaringskoder } + + val opplysningMedUtfall = opplysninger.singleOrNull { it.opplysningstype == utfall } + var status = tilStatus(opplysningMedUtfall?.verdi as Boolean?) + + if (egneAvklaringer.any { it.måAvklares() }) { + status = RegelsettDTO.Status.HarAvklaring + } return RegelsettDTO( navn, - avklaringer = avklaringer.filter { it.kode in egneAvklaringer }.map { it.tilAvklaringDTO() }, - opplysninger = produserer.map { opplysning -> opplysning.id }, + avklaringer = egneAvklaringer.map { it.tilAvklaringDTO() }, + opplysningIder = produserer.map { opplysning -> opplysning.id }, + status = status, ) } +private fun tilStatus(utfall: Boolean?): RegelsettDTO.Status { + if (utfall == null) return RegelsettDTO.Status.Info + + return if (utfall) { + RegelsettDTO.Status.Oppfylt + } else { + RegelsettDTO.Status.IkkeOppfylt + } +} + internal fun Behandling.tilBehandlingOpplysningerDTO(): BehandlingOpplysningerDTO = withLoggingContext("behandlingId" to this.behandlingId.toString()) { BehandlingOpplysningerDTO( diff --git a/openapi/src/main/resources/behandling-api.yaml b/openapi/src/main/resources/behandling-api.yaml index ee0f0dac..e737ad14 100644 --- a/openapi/src/main/resources/behandling-api.yaml +++ b/openapi/src/main/resources/behandling-api.yaml @@ -555,7 +555,7 @@ components: description: Hvilke avklaringer som skal vises i dette regelsettet items: $ref: '#/components/schemas/Avklaring' - opplysninger: + opplysningIder: type: array items: $ref: '#/components/schemas/OpplysningsId' diff --git a/opplysninger/src/main/kotlin/no/nav/dagpenger/opplysning/Regelsett.kt b/opplysninger/src/main/kotlin/no/nav/dagpenger/opplysning/Regelsett.kt index 13d1f7d4..fb409d21 100644 --- a/opplysninger/src/main/kotlin/no/nav/dagpenger/opplysning/Regelsett.kt +++ b/opplysninger/src/main/kotlin/no/nav/dagpenger/opplysning/Regelsett.kt @@ -18,6 +18,8 @@ class Regelsett( private val regler: MutableMap, TemporalCollection>> = mutableMapOf() private val avklaringer: MutableSet = mutableSetOf() + private var _utfall: Opplysningstype? = null + val utfall = _utfall init { block() @@ -27,7 +29,15 @@ class Regelsett( fun avklaring(avklaringkode: Avklaringkode) = avklaringer.add(avklaringkode) - fun avklaringer() = avklaringer.toList() + fun avklaringer() = avklaringer.toSet() + + fun utfall( + produserer: Opplysningstype, + gjelderFraOgMed: LocalDate = LocalDate.MIN, + block: Opplysningstype.() -> Regel<*>, + ) = regel(produserer, gjelderFraOgMed, block).also { + _utfall = produserer + } fun > regel( produserer: Opplysningstype,