Skip to content

Commit

Permalink
Typedefinert felt map (#1194)
Browse files Browse the repository at this point in the history
  • Loading branch information
fredrikmork authored Jan 3, 2025
1 parent 4ef794d commit 575235f
Show file tree
Hide file tree
Showing 12 changed files with 226 additions and 173 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package no.nav.familie.ef.mottak.integration

import no.nav.familie.ef.mottak.config.PdfgeneratorConfig
import no.nav.familie.ef.mottak.repository.domain.FeltMap
import no.nav.familie.ef.mottak.util.medContentTypeJsonUTF8
import no.nav.familie.http.client.AbstractRestClient
import org.springframework.beans.factory.annotation.Qualifier
Expand All @@ -14,7 +15,7 @@ class PdfClient(
@Qualifier("restTemplateUnsecured") operations: RestOperations,
private val pdfgeneratorConfig: PdfgeneratorConfig,
) : AbstractRestClient(operations, "pdf") {
fun lagPdf(labelValueJson: Map<String, Any>): ByteArray {
fun lagPdf(labelValueJson: FeltMap): ByteArray {
val sendInnUri =
DefaultUriBuilderFactory().uriString(pdfgeneratorConfig.url).path("/api/generer-soknad").build()
return postForEntity(sendInnUri, labelValueJson, HttpHeaders().medContentTypeJsonUTF8())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package no.nav.familie.ef.mottak.integration

import no.nav.familie.ef.mottak.repository.domain.FeltMap
import no.nav.familie.ef.mottak.util.medContentTypeJsonUTF8
import no.nav.familie.http.client.AbstractPingableRestClient
import org.springframework.beans.factory.annotation.Qualifier
Expand All @@ -24,7 +25,7 @@ class PdfKvitteringClient(
.build()
.toUri()

fun opprettPdf(feltMap: Map<String, Any>): ByteArray {
fun opprettPdf(feltMap: FeltMap): ByteArray {
val uri =
UriComponentsBuilder
.fromUri(uri)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package no.nav.familie.ef.mottak.repository.domain

import com.fasterxml.jackson.annotation.JsonInclude
import jakarta.validation.constraints.NotNull

data class FeltMap(
@field:NotNull(message = "Label kan ikke være null")
val label: String,
@field:NotNull(message = "Verdiliste kan ikke være null")
val verdiliste: List<VerdilisteElement>,
)

@JsonInclude(JsonInclude.Include.NON_NULL)
data class VerdilisteElement(
val label: String,
val visningsVariant: String? = null,
val verdi: String? = null,
val verdiliste: List<VerdilisteElement>? = null,
val alternativer: String? = null,
)
47 changes: 26 additions & 21 deletions src/main/kotlin/no/nav/familie/ef/mottak/service/Feltformaterer.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package no.nav.familie.ef.mottak.service

import no.nav.familie.ef.mottak.repository.domain.VerdilisteElement
import no.nav.familie.kontrakter.ef.søknad.Adresse
import no.nav.familie.kontrakter.ef.søknad.Datoperiode
import no.nav.familie.kontrakter.ef.søknad.MånedÅrPeriode
Expand All @@ -16,44 +17,59 @@ object Feltformaterer {
/**
* Håndterer formatering utover vanlig toString for endenodene
*/
fun mapEndenodeTilUtskriftMap(entitet: Søknadsfelt<*>): Map<String, String> =feltMap(entitet.label, mapVerdi(entitet.verdi!!), entitet.alternativer)
fun mapEndenodeTilUtskriftMap(entitet: Søknadsfelt<*>): VerdilisteElement = mapTilVerdiListeElement(entitet)

fun genereltFormatMapperMapEndenode(entitet: Søknadsfelt<*>): Map<String, String> {
//skal ekskluderes
fun genereltFormatMapperMapEndenode(entitet: Søknadsfelt<*>): VerdilisteElement? {
// skal ekskluderes
if (entitet.label == "Jeg har sendt inn denne dokumentasjonen til Nav tidligere" &&
entitet.verdi.toString() == "false") {
return emptyMap()
entitet.verdi.toString() == "false"
) {
return null
}
return feltMap(entitet.label, mapVerdi(entitet.verdi!!), entitet.alternativer)
return mapTilVerdiListeElement(entitet)
}

fun mapVedlegg(vedleggTitler: List<String>): Map<String, String> {
val verdi = vedleggTitler.joinToString("\n\n")
return feltMap("Vedlegg", verdi)
}
fun mapVedlegg(vedleggTitler: List<String>): VerdilisteElement = VerdilisteElement("Vedlegg", verdi = vedleggTitler.joinToString("\n\n"))

private fun mapTilVerdiListeElement(entitet: Søknadsfelt<*>) =
VerdilisteElement(
entitet.label,
verdi = mapVerdi(entitet.verdi!!),
alternativer = entitet.alternativer?.joinToString(" / "),
)

private fun mapVerdi(verdi: Any): String =
when (verdi) {
is Month ->
tilUtskriftsformat(verdi)

is Boolean ->
tilUtskriftsformat(verdi)

is Double ->
tilUtskriftsformat(verdi)

is List<*> ->
verdi.joinToString("\n\n") { mapVerdi(it!!) }

is Fødselsnummer ->
verdi.verdi

is Adresse ->
tilUtskriftsformat(verdi)

is LocalDate ->
tilUtskriftsformat(verdi)

is LocalDateTime ->
tilUtskriftsformat(verdi)

is MånedÅrPeriode ->
tilUtskriftsformat(verdi)

is Datoperiode ->
tilUtskriftsformat(verdi)

else ->
verdi.toString()
}
Expand All @@ -78,15 +94,4 @@ object Feltformaterer {
listOf(adresse.postnummer, adresse.poststedsnavn).joinToString(" "),
adresse.land,
).joinToString("\n\n")

fun feltMap(
label: String,
verdi: String,
alternativer: List<String>? = null,
): Map<String, String> =
if (alternativer != null) {
mapOf("label" to label, "verdi" to verdi, "alternativer" to alternativer.joinToString(" / "))
} else {
mapOf("label" to label, "verdi" to verdi)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import no.nav.familie.ef.mottak.mapper.SøknadMapper
import no.nav.familie.ef.mottak.repository.SøknadRepository
import no.nav.familie.ef.mottak.repository.VedleggRepository
import no.nav.familie.ef.mottak.repository.domain.EncryptedFile
import no.nav.familie.ef.mottak.repository.domain.FeltMap
import no.nav.familie.ef.mottak.repository.domain.Søknad
import no.nav.familie.kontrakter.ef.søknad.SkjemaForArbeidssøker
import no.nav.familie.kontrakter.ef.søknad.SøknadBarnetilsyn
Expand All @@ -35,23 +36,23 @@ class PdfKvitteringService(
private fun lagFeltMap(
innsending: Søknad,
vedleggTitler: List<String>,
): Map<String, Any> =
): FeltMap =
when (innsending.dokumenttype) {
DOKUMENTTYPE_OVERGANGSSTØNAD -> {
val dto = SøknadMapper.toDto<SøknadOvergangsstønad>(innsending)
SøknadTilGenereltFormatMapper.mapOvergangsstønad(dto, vedleggTitler)
SøknadTilFeltMap.mapOvergangsstønad(dto, vedleggTitler)
}
DOKUMENTTYPE_BARNETILSYN -> {
val dto = SøknadMapper.toDto<SøknadBarnetilsyn>(innsending)
SøknadTilGenereltFormatMapper.mapBarnetilsyn(dto, vedleggTitler)
SøknadTilFeltMap.mapBarnetilsyn(dto, vedleggTitler)
}
DOKUMENTTYPE_SKJEMA_ARBEIDSSØKER -> {
val dto = SøknadMapper.toDto<SkjemaForArbeidssøker>(innsending)
SøknadTilGenereltFormatMapper.mapSkjemafelter(dto)
SøknadTilFeltMap.mapSkjemafelter(dto)
}
DOKUMENTTYPE_SKOLEPENGER -> {
val dto = SøknadMapper.toDto<SøknadSkolepenger>(innsending)
SøknadTilGenereltFormatMapper.mapSkolepenger(dto, vedleggTitler)
SøknadTilFeltMap.mapSkolepenger(dto, vedleggTitler)
}
else -> {
error("Ukjent eller manglende dokumenttype id: ${innsending.id}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import no.nav.familie.ef.mottak.repository.SøknadRepository
import no.nav.familie.ef.mottak.repository.VedleggRepository
import no.nav.familie.ef.mottak.repository.domain.EncryptedFile
import no.nav.familie.ef.mottak.repository.domain.Ettersending
import no.nav.familie.ef.mottak.repository.domain.FeltMap
import no.nav.familie.ef.mottak.repository.domain.Søknad
import no.nav.familie.kontrakter.ef.søknad.SkjemaForArbeidssøker
import no.nav.familie.kontrakter.ef.søknad.SøknadBarnetilsyn
Expand Down Expand Up @@ -38,7 +39,7 @@ class PdfService(
private fun lagFeltMap(
innsending: Søknad,
vedleggTitler: List<String>,
): Map<String, Any> =
): FeltMap =
when (innsending.dokumenttype) {
DOKUMENTTYPE_OVERGANGSSTØNAD -> {
val dto = SøknadMapper.toDto<SøknadOvergangsstønad>(innsending)
Expand Down
Loading

0 comments on commit 575235f

Please sign in to comment.