Skip to content

Commit

Permalink
Legg til utledning av utfall på regelsett som er vilkår
Browse files Browse the repository at this point in the history
Co-authored-by: Tonje Mjøvik Myran <[email protected]>
Co-authored-by: Eivind Havnelid Røyrvik <[email protected]>
  • Loading branch information
3 people committed Jan 14, 2025
1 parent 1f86ecc commit 857f62e
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ object TapAvArbeidsinntektOgArbeidstid {

regel(beregningsregel) { enAv(beregningsregel6mnd, beregningsregel12mnd, beregningsregel36mnd) }

regel(kravTilTapAvArbeidsinntektOgArbeidstid) {
utfall(kravTilTapAvArbeidsinntektOgArbeidstid) {
alle(kravTilTapAvArbeidsinntekt, kravTilTaptArbeidstid, beregningsregel, kravTilMinstTaptArbeidstid)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,15 +100,34 @@ private fun Regelsett.tilRegelsettDTO(
avklaringer: Set<Avklaring>,
): 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(
Expand Down
2 changes: 1 addition & 1 deletion openapi/src/main/resources/behandling-api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ class Regelsett(

private val regler: MutableMap<Opplysningstype<*>, TemporalCollection<Regel<*>>> = mutableMapOf()
private val avklaringer: MutableSet<Avklaringkode> = mutableSetOf()
private var _utfall: Opplysningstype<Boolean>? = null
val utfall = _utfall

init {
block()
Expand All @@ -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<Boolean>,
gjelderFraOgMed: LocalDate = LocalDate.MIN,
block: Opplysningstype<Boolean>.() -> Regel<*>,
) = regel(produserer, gjelderFraOgMed, block).also {
_utfall = produserer
}

fun <T : Comparable<T>> regel(
produserer: Opplysningstype<T>,
Expand Down

0 comments on commit 857f62e

Please sign in to comment.