Skip to content

Commit

Permalink
Refaktorering underhold respons
Browse files Browse the repository at this point in the history
  • Loading branch information
ugur93 committed Dec 20, 2024
1 parent e3072e5 commit e6eafbd
Show file tree
Hide file tree
Showing 6 changed files with 150 additions and 170 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponses
import io.swagger.v3.oas.annotations.security.SecurityRequirement
import jakarta.validation.Valid
import no.nav.bidrag.behandling.behandlingNotFoundException
import no.nav.bidrag.behandling.database.datamodell.Underholdskostnad
import no.nav.bidrag.behandling.database.repository.BehandlingRepository
import no.nav.bidrag.behandling.dto.v2.underhold.BarnDto
import no.nav.bidrag.behandling.dto.v2.underhold.OppdatereBegrunnelseRequest
Expand All @@ -19,7 +20,7 @@ import no.nav.bidrag.behandling.dto.v2.underhold.StønadTilBarnetilsynDto
import no.nav.bidrag.behandling.service.UnderholdService
import no.nav.bidrag.behandling.transformers.Dtomapper
import no.nav.bidrag.behandling.transformers.underhold.henteOgValidereUnderholdskostnad
import no.nav.bidrag.behandling.transformers.underhold.tilStønadTilBarnetilsynDto
import no.nav.bidrag.behandling.transformers.underhold.tilStønadTilBarnetilsynDtos
import no.nav.bidrag.behandling.transformers.underhold.valider
import no.nav.bidrag.commons.util.secureLogger
import org.springframework.web.bind.annotation.DeleteMapping
Expand Down Expand Up @@ -67,7 +68,6 @@ class UnderholdController(
underholdService.sletteFraUnderhold(behandling, request)

return OppdatereUnderholdResponse(
underholdskostnad = dtomapper.run { behandling.tilBeregnetUnderholdskostnad().first().perioder },
beregnetUnderholdskostnader = dtomapper.run { behandling.tilBeregnetUnderholdskostnad() },
valideringsfeil = behandling.underholdskostnader.valider(),
)
Expand Down Expand Up @@ -107,13 +107,8 @@ class UnderholdController(

val underholdskostnad = henteOgValidereUnderholdskostnad(behandling!!, underholdsid)

val oppdatertBarnetilsyn = underholdService.oppdatereStønadTilBarnetilsynManuelt(underholdskostnad, request)
return OppdatereUnderholdResponse(
stønadTilBarnetilsyn = oppdatertBarnetilsyn.tilStønadTilBarnetilsynDto(),
underholdskostnad = dtomapper.run { behandling.tilBeregnetUnderholdskostnad().perioderForBarn(underholdskostnad.person) },
beregnetUnderholdskostnader = dtomapper.run { behandling.tilBeregnetUnderholdskostnad() },
valideringsfeil = behandling.underholdskostnader.valider(),
)
underholdService.oppdatereStønadTilBarnetilsynManuelt(underholdskostnad, request)
return underholdskostnad.tilRespons()
}

@PutMapping("/behandling/{behandlingsid}/underhold/{underholdsid}/faktisk_tilsynsutgift")
Expand Down Expand Up @@ -146,13 +141,8 @@ class UnderholdController(

val underholdskostnad = henteOgValidereUnderholdskostnad(behandling, underholdsid)

val oppdatertFaktiskTilsynsutgift = underholdService.oppdatereFaktiskeTilsynsutgifter(underholdskostnad, request)
return OppdatereUnderholdResponse(
faktiskTilsynsutgift = dtomapper.tilFaktiskTilsynsutgiftDto(oppdatertFaktiskTilsynsutgift),
underholdskostnad = dtomapper.run { behandling.tilBeregnetUnderholdskostnad().first().perioder },
beregnetUnderholdskostnader = dtomapper.run { behandling.tilBeregnetUnderholdskostnad() },
valideringsfeil = behandling.underholdskostnader.valider(),
)
underholdService.oppdatereFaktiskeTilsynsutgifter(underholdskostnad, request)
return underholdskostnad.tilRespons()
}

@PutMapping("/behandling/{behandlingsid}/underhold/{underholdsid}/tilleggsstonad")
Expand Down Expand Up @@ -184,13 +174,8 @@ class UnderholdController(

val underholdskostnad = henteOgValidereUnderholdskostnad(behandling, underholdsid)

val oppdatertTilleggsstønad = underholdService.oppdatereTilleggsstønad(underholdskostnad, request)
return OppdatereUnderholdResponse(
tilleggsstønad = dtomapper.tilTilleggsstønadDto(oppdatertTilleggsstønad),
underholdskostnad = dtomapper.run { behandling.tilBeregnetUnderholdskostnad().first().perioder },
beregnetUnderholdskostnader = dtomapper.run { behandling.tilBeregnetUnderholdskostnad() },
valideringsfeil = behandling.underholdskostnader.valider(),
)
underholdService.oppdatereTilleggsstønad(underholdskostnad, request)
return underholdskostnad.tilRespons()
}

@PutMapping("/behandling/{behandlingsid}/underhold/begrunnelse")
Expand Down Expand Up @@ -274,4 +259,15 @@ class UnderholdController(
valideringsfeil = behandling.underholdskostnader.valider(),
)
}

private fun Underholdskostnad.tilRespons() =
dtomapper.run {
OppdatereUnderholdResponse(
faktiskTilsynsutgift = faktiskeTilsynsutgifter.tilFaktiskeTilsynsutgiftDtos(),
stønadTilBarnetilsyn = barnetilsyn.tilStønadTilBarnetilsynDtos(),
tilleggsstønad = tilleggsstønad.tilTilleggsstønadDtos(),
beregnetUnderholdskostnader = dtomapper.run { behandling.tilBeregnetUnderholdskostnad() },
valideringsfeil = behandling.underholdskostnader.valider(),
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,9 @@ data class OpprettUnderholdskostnadBarnResponse(
)

data class OppdatereUnderholdResponse(
val stønadTilBarnetilsyn: StønadTilBarnetilsynDto? = null,
val faktiskTilsynsutgift: FaktiskTilsynsutgiftDto? = null,
val tilleggsstønad: TilleggsstønadDto? = null,
@Deprecated("Bruk beregnetUnderholdskostnader")
val underholdskostnad: Set<UnderholdskostnadDto>,
val stønadTilBarnetilsyn: Set<StønadTilBarnetilsynDto> = emptySet(),
val faktiskTilsynsutgift: Set<FaktiskTilsynsutgiftDto> = emptySet(),
val tilleggsstønad: Set<TilleggsstønadDto> = emptySet(),
val valideringsfeil: Set<UnderholdskostnadValideringsfeil>? = null,
val beregnetUnderholdskostnader: Set<BeregnetUnderholdskostnad>,
)
Expand Down Expand Up @@ -85,7 +83,7 @@ data class Underholdsperiode(

data class UnderholdskostnadValideringsfeil(
@JsonIgnore
val gjelderUnderholdskostnad: Underholdskostnad,
val gjelderUnderholdskostnad: Underholdskostnad? = null,
val tilleggsstønad: UnderholdskostnadValideringsfeilTabell? = null,
val faktiskTilsynsutgift: UnderholdskostnadValideringsfeilTabell? = null,
val stønadTilBarnetilsyn: UnderholdskostnadValideringsfeilTabell? = null,
Expand All @@ -102,15 +100,17 @@ data class UnderholdskostnadValideringsfeil(
stønadTilBarnetilsyn?.harFeil == true ||
tilleggsstønadsperioderUtenFaktiskTilsynsutgift.isNotEmpty() ||
manglerPerioderForTilsynsordning
val underholdskostnadsid get() = gjelderUnderholdskostnad.id
val underholdskostnadsid get() = gjelderUnderholdskostnad?.id ?: -1
val barn
get() =
UnderholdBarnDto(
navn = gjelderUnderholdskostnad.person.navn,
ident = gjelderUnderholdskostnad.person.personident?.verdi,
fødselsdato = gjelderUnderholdskostnad.person.henteFødselsdato!!,
medIBehandling = gjelderUnderholdskostnad.barnetsRolleIBehandlingen != null,
)
gjelderUnderholdskostnad?.let {
UnderholdBarnDto(
navn = gjelderUnderholdskostnad.person.navn,
ident = gjelderUnderholdskostnad.person.personident?.verdi,
fødselsdato = gjelderUnderholdskostnad.person.henteFødselsdato!!,
medIBehandling = gjelderUnderholdskostnad.barnetsRolleIBehandlingen != null,
)
} ?: UnderholdBarnDto(null, null, LocalDate.now(), false)

data class UnderholdBarnDto(
val navn: String?,
Expand Down
182 changes: 82 additions & 100 deletions src/main/kotlin/no/nav/bidrag/behandling/service/UnderholdService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -142,54 +142,51 @@ class UnderholdService(
fun oppdatereStønadTilBarnetilsynManuelt(
underholdskostnad: Underholdskostnad,
request: StønadTilBarnetilsynDto,
): Barnetilsyn {
) {
request.validerePerioderStønadTilBarnetilsyn(underholdskostnad)

val oppdatertBarnetilsyn: Barnetilsyn =
request.id?.let { id ->
val barnetilsyn = underholdskostnad.barnetilsyn.find { id == it.id }!!

// dersom periode endres skal kilde alltid være manuell
if (barnetilsyn.fom != request.periode.fom || barnetilsyn.tom != request.periode.tom) {
barnetilsyn.kilde = Kilde.MANUELL
}
request.id?.let { id ->
val barnetilsyn = underholdskostnad.barnetilsyn.find { id == it.id }!!

barnetilsyn.fom = request.periode.fom
barnetilsyn.tom = request.periode.tom
barnetilsyn.under_skolealder =
when (request.skolealder) {
Skolealder.UNDER -> true
Skolealder.OVER -> false
else -> null
}
barnetilsyn.omfang = request.tilsynstype ?: Tilsynstype.IKKE_ANGITT

barnetilsyn
} ?: run {
val barnetilsyn =
Barnetilsyn(
fom = request.periode.fom,
tom = request.periode.tom,
under_skolealder =
when (request.skolealder) {
Skolealder.UNDER -> true
Skolealder.OVER -> false
else -> null
},
omfang = request.tilsynstype ?: Tilsynstype.IKKE_ANGITT,
kilde = Kilde.MANUELL,
underholdskostnad = underholdskostnad,
)
underholdskostnad.barnetilsyn.add(barnetilsyn)
underholdskostnad.harTilsynsordning = true
underholdskostnadRepository
.save(underholdskostnad)
.barnetilsyn
.sortedBy { it.id }
.last()
// dersom periode endres skal kilde alltid være manuell
if (barnetilsyn.fom != request.periode.fom || barnetilsyn.tom != request.periode.tom) {
barnetilsyn.kilde = Kilde.MANUELL
}

return oppdatertBarnetilsyn
barnetilsyn.fom = request.periode.fom
barnetilsyn.tom = request.periode.tom
barnetilsyn.under_skolealder =
when (request.skolealder) {
Skolealder.UNDER -> true
Skolealder.OVER -> false
else -> null
}
barnetilsyn.omfang = request.tilsynstype ?: Tilsynstype.IKKE_ANGITT

barnetilsyn
} ?: run {
val barnetilsyn =
Barnetilsyn(
fom = request.periode.fom,
tom = request.periode.tom,
under_skolealder =
when (request.skolealder) {
Skolealder.UNDER -> true
Skolealder.OVER -> false
else -> null
},
omfang = request.tilsynstype ?: Tilsynstype.IKKE_ANGITT,
kilde = Kilde.MANUELL,
underholdskostnad = underholdskostnad,
)
underholdskostnad.barnetilsyn.add(barnetilsyn)
underholdskostnad.harTilsynsordning = true
underholdskostnadRepository
.save(underholdskostnad)
.barnetilsyn
.sortedBy { it.id }
.last()
}
}

fun oppdatereAutomatiskInnhentaStønadTilBarnetilsyn(
Expand Down Expand Up @@ -262,73 +259,58 @@ class UnderholdService(
fun oppdatereFaktiskeTilsynsutgifter(
underholdskostnad: Underholdskostnad,
request: OppdatereFaktiskTilsynsutgiftRequest,
): FaktiskTilsynsutgift {
) {
request.validere(underholdskostnad)

val oppdatertFaktiskTilsynsutgift =
request.id?.let { id ->
underholdskostnad.faktiskeTilsynsutgifter.find { id == it.id }
val faktiskTilsynsutgift = underholdskostnad.faktiskeTilsynsutgifter.find { id == it.id }!!
faktiskTilsynsutgift.fom = request.periode.fom
faktiskTilsynsutgift.tom = request.periode.tom
faktiskTilsynsutgift.kostpenger = request.kostpenger
faktiskTilsynsutgift.tilsynsutgift = request.utgift
faktiskTilsynsutgift.kommentar = request.kommentar
faktiskTilsynsutgift
} ?: run {
val faktiskTilsynsutgift =
FaktiskTilsynsutgift(
fom = request.periode.fom,
tom = request.periode.tom,
kostpenger = request.kostpenger,
tilsynsutgift = request.utgift,
kommentar = request.kommentar,
underholdskostnad = underholdskostnad,
)
underholdskostnad.faktiskeTilsynsutgifter.add(faktiskTilsynsutgift)
underholdskostnad.harTilsynsordning = true
underholdskostnadRepository
.save(underholdskostnad)
.faktiskeTilsynsutgifter
.sortedBy { it.id }
.last()
}
return oppdatertFaktiskTilsynsutgift
request.id?.let { id ->
underholdskostnad.faktiskeTilsynsutgifter.find { id == it.id }
val faktiskTilsynsutgift = underholdskostnad.faktiskeTilsynsutgifter.find { id == it.id }!!
faktiskTilsynsutgift.fom = request.periode.fom
faktiskTilsynsutgift.tom = request.periode.tom
faktiskTilsynsutgift.kostpenger = request.kostpenger
faktiskTilsynsutgift.tilsynsutgift = request.utgift
faktiskTilsynsutgift.kommentar = request.kommentar
faktiskTilsynsutgift
} ?: run {
val faktiskTilsynsutgift =
FaktiskTilsynsutgift(
fom = request.periode.fom,
tom = request.periode.tom,
kostpenger = request.kostpenger,
tilsynsutgift = request.utgift,
kommentar = request.kommentar,
underholdskostnad = underholdskostnad,
)
underholdskostnad.faktiskeTilsynsutgifter.add(faktiskTilsynsutgift)
underholdskostnad.harTilsynsordning = true
}
}

@Transactional
fun oppdatereTilleggsstønad(
underholdskostnad: Underholdskostnad,
request: OppdatereTilleggsstønadRequest,
): Tilleggsstønad {
) {
request.validere(underholdskostnad)

val oppdatertTilleggsstønad =
request.id?.let { id ->
val tilleggsstønad = underholdskostnad.tilleggsstønad.find { id == it.id }!!
tilleggsstønad.fom = request.periode.fom
tilleggsstønad.tom = request.periode.tom
tilleggsstønad.dagsats = request.dagsats
tilleggsstønad.underholdskostnad = underholdskostnad
tilleggsstønad
} ?: run {
val tilleggsstønad =
Tilleggsstønad(
fom = request.periode.fom,
tom = request.periode.tom,
dagsats = request.dagsats,
underholdskostnad = underholdskostnad,
)
underholdskostnad.tilleggsstønad.add(tilleggsstønad)
underholdskostnad.harTilsynsordning = true
underholdskostnadRepository
.save(underholdskostnad)
.tilleggsstønad
.sortedBy { it.id }
.last()
}

return oppdatertTilleggsstønad
request.id?.let { id ->
val tilleggsstønad = underholdskostnad.tilleggsstønad.find { id == it.id }!!
tilleggsstønad.fom = request.periode.fom
tilleggsstønad.tom = request.periode.tom
tilleggsstønad.dagsats = request.dagsats
tilleggsstønad.underholdskostnad = underholdskostnad
tilleggsstønad
} ?: run {
val tilleggsstønad =
Tilleggsstønad(
fom = request.periode.fom,
tom = request.periode.tom,
dagsats = request.dagsats,
underholdskostnad = underholdskostnad,
)
underholdskostnad.tilleggsstønad.add(tilleggsstønad)
underholdskostnad.harTilsynsordning = true
}
}

@Transactional
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,13 +183,9 @@ class Dtomapper(
id = this.id!!,
harTilsynsordning = this.harTilsynsordning,
gjelderBarn = this.person.tilPersoninfoDto(rolleSøknadsbarn),
faktiskTilsynsutgift = this.faktiskeTilsynsutgifter.sortedBy { it.fom }.tilFaktiskeTilsynsutgiftDtos(),
stønadTilBarnetilsyn =
this.barnetilsyn
.sortedBy { it.fom }
.toSet()
.tilStønadTilBarnetilsynDtos(),
tilleggsstønad = this.tilleggsstønad.sortedBy { it.fom }.tilTilleggsstønadDtos(),
faktiskTilsynsutgift = this.faktiskeTilsynsutgifter.tilFaktiskeTilsynsutgiftDtos(),
stønadTilBarnetilsyn = this.barnetilsyn.tilStønadTilBarnetilsynDtos(),
tilleggsstønad = this.tilleggsstønad.tilTilleggsstønadDtos(),
underholdskostnad = beregnetUnderholdskostnad,
beregnetUnderholdskostnad = beregnetUnderholdskostnad,
begrunnelse =
Expand Down Expand Up @@ -356,7 +352,7 @@ class Dtomapper(
total = beregnBarnebidragApi.beregnMånedsbeløpTilleggsstønad(this.dagsats),
)

fun List<Tilleggsstønad>.tilTilleggsstønadDtos() = this.sortedBy { it.fom }.map { it.tilDto() }.toSet()
fun Set<Tilleggsstønad>.tilTilleggsstønadDtos() = this.sortedBy { it.fom }.map { it.tilDto() }.toSet()

fun FaktiskTilsynsutgift.tilDto() =
FaktiskTilsynsutgiftDto(
Expand All @@ -372,7 +368,7 @@ class Dtomapper(
) ?: BigDecimal.ZERO,
)

fun List<FaktiskTilsynsutgift>.tilFaktiskeTilsynsutgiftDtos() = this.map { it.tilDto() }.toSet()
fun Set<FaktiskTilsynsutgift>.tilFaktiskeTilsynsutgiftDtos() = sortedBy { it.fom }.map { it.tilDto() }.toSet()

private fun Husstandsmedlem.boforholdBarn(opplysningerBoforhold: List<BoforholdResponseV2>): BoforholdBarn {
val tilgangskontrollertPersoninfo =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ fun Barnetilsyn.tilStønadTilBarnetilsynDto(): StønadTilBarnetilsynDto =
kilde = this.kilde,
)

fun Set<Barnetilsyn>.tilStønadTilBarnetilsynDtos() = map { it.tilStønadTilBarnetilsynDto() }.toSet()
fun Set<Barnetilsyn>.tilStønadTilBarnetilsynDtos() = sortedBy { it.fom }.map { it.tilStønadTilBarnetilsynDto() }.toSet()

fun Behandling.harAndreBarnIUnderhold() = this.underholdskostnader.find { it.barnetsRolleIBehandlingen == null } != null

Expand Down
Loading

0 comments on commit e6eafbd

Please sign in to comment.