diff --git a/src/main/kotlin/no/nav/familie/ef/mottak/integration/PdfClient.kt b/src/main/kotlin/no/nav/familie/ef/mottak/integration/PdfClient.kt index 36f3991b..e95ca3d6 100644 --- a/src/main/kotlin/no/nav/familie/ef/mottak/integration/PdfClient.kt +++ b/src/main/kotlin/no/nav/familie/ef/mottak/integration/PdfClient.kt @@ -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 @@ -14,7 +15,7 @@ class PdfClient( @Qualifier("restTemplateUnsecured") operations: RestOperations, private val pdfgeneratorConfig: PdfgeneratorConfig, ) : AbstractRestClient(operations, "pdf") { - fun lagPdf(labelValueJson: Map): ByteArray { + fun lagPdf(labelValueJson: FeltMap): ByteArray { val sendInnUri = DefaultUriBuilderFactory().uriString(pdfgeneratorConfig.url).path("/api/generer-soknad").build() return postForEntity(sendInnUri, labelValueJson, HttpHeaders().medContentTypeJsonUTF8()) diff --git a/src/main/kotlin/no/nav/familie/ef/mottak/integration/PdfKvitteringClient.kt b/src/main/kotlin/no/nav/familie/ef/mottak/integration/PdfKvitteringClient.kt index 3cbbb9ce..2b5c7997 100644 --- a/src/main/kotlin/no/nav/familie/ef/mottak/integration/PdfKvitteringClient.kt +++ b/src/main/kotlin/no/nav/familie/ef/mottak/integration/PdfKvitteringClient.kt @@ -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 @@ -24,7 +25,7 @@ class PdfKvitteringClient( .build() .toUri() - fun opprettPdf(feltMap: Map): ByteArray { + fun opprettPdf(feltMap: FeltMap): ByteArray { val uri = UriComponentsBuilder .fromUri(uri) diff --git a/src/main/kotlin/no/nav/familie/ef/mottak/repository/domain/FeltMap.kt b/src/main/kotlin/no/nav/familie/ef/mottak/repository/domain/FeltMap.kt new file mode 100644 index 00000000..c1bb9a47 --- /dev/null +++ b/src/main/kotlin/no/nav/familie/ef/mottak/repository/domain/FeltMap.kt @@ -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, +) + +@JsonInclude(JsonInclude.Include.NON_NULL) +data class VerdilisteElement( + val label: String, + val visningsVariant: String? = null, + val verdi: String? = null, + val verdiliste: List? = null, + val alternativer: String? = null, +) diff --git a/src/main/kotlin/no/nav/familie/ef/mottak/service/Feltformaterer.kt b/src/main/kotlin/no/nav/familie/ef/mottak/service/Feltformaterer.kt index 5d96c94d..10814b0f 100644 --- a/src/main/kotlin/no/nav/familie/ef/mottak/service/Feltformaterer.kt +++ b/src/main/kotlin/no/nav/familie/ef/mottak/service/Feltformaterer.kt @@ -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 @@ -16,44 +17,59 @@ object Feltformaterer { /** * Håndterer formatering utover vanlig toString for endenodene */ - fun mapEndenodeTilUtskriftMap(entitet: Søknadsfelt<*>): Map =feltMap(entitet.label, mapVerdi(entitet.verdi!!), entitet.alternativer) + fun mapEndenodeTilUtskriftMap(entitet: Søknadsfelt<*>): VerdilisteElement = mapTilVerdiListeElement(entitet) - fun genereltFormatMapperMapEndenode(entitet: Søknadsfelt<*>): Map { - //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): Map { - val verdi = vedleggTitler.joinToString("\n\n") - return feltMap("Vedlegg", verdi) - } + fun mapVedlegg(vedleggTitler: List): 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() } @@ -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? = null, - ): Map = - if (alternativer != null) { - mapOf("label" to label, "verdi" to verdi, "alternativer" to alternativer.joinToString(" / ")) - } else { - mapOf("label" to label, "verdi" to verdi) - } } diff --git a/src/main/kotlin/no/nav/familie/ef/mottak/service/PdfKvitteringService.kt b/src/main/kotlin/no/nav/familie/ef/mottak/service/PdfKvitteringService.kt index 3822bef1..5340e8b4 100644 --- a/src/main/kotlin/no/nav/familie/ef/mottak/service/PdfKvitteringService.kt +++ b/src/main/kotlin/no/nav/familie/ef/mottak/service/PdfKvitteringService.kt @@ -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 @@ -35,23 +36,23 @@ class PdfKvitteringService( private fun lagFeltMap( innsending: Søknad, vedleggTitler: List, - ): Map = + ): FeltMap = when (innsending.dokumenttype) { DOKUMENTTYPE_OVERGANGSSTØNAD -> { val dto = SøknadMapper.toDto(innsending) - SøknadTilGenereltFormatMapper.mapOvergangsstønad(dto, vedleggTitler) + SøknadTilFeltMap.mapOvergangsstønad(dto, vedleggTitler) } DOKUMENTTYPE_BARNETILSYN -> { val dto = SøknadMapper.toDto(innsending) - SøknadTilGenereltFormatMapper.mapBarnetilsyn(dto, vedleggTitler) + SøknadTilFeltMap.mapBarnetilsyn(dto, vedleggTitler) } DOKUMENTTYPE_SKJEMA_ARBEIDSSØKER -> { val dto = SøknadMapper.toDto(innsending) - SøknadTilGenereltFormatMapper.mapSkjemafelter(dto) + SøknadTilFeltMap.mapSkjemafelter(dto) } DOKUMENTTYPE_SKOLEPENGER -> { val dto = SøknadMapper.toDto(innsending) - SøknadTilGenereltFormatMapper.mapSkolepenger(dto, vedleggTitler) + SøknadTilFeltMap.mapSkolepenger(dto, vedleggTitler) } else -> { error("Ukjent eller manglende dokumenttype id: ${innsending.id}") diff --git a/src/main/kotlin/no/nav/familie/ef/mottak/service/PdfService.kt b/src/main/kotlin/no/nav/familie/ef/mottak/service/PdfService.kt index fbeae34f..7dbf9d6f 100644 --- a/src/main/kotlin/no/nav/familie/ef/mottak/service/PdfService.kt +++ b/src/main/kotlin/no/nav/familie/ef/mottak/service/PdfService.kt @@ -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 @@ -38,7 +39,7 @@ class PdfService( private fun lagFeltMap( innsending: Søknad, vedleggTitler: List, - ): Map = + ): FeltMap = when (innsending.dokumenttype) { DOKUMENTTYPE_OVERGANGSSTØNAD -> { val dto = SøknadMapper.toDto(innsending) diff --git "a/src/main/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTilGenereltFormatMapper.kt" "b/src/main/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTilFeltMap.kt" similarity index 57% rename from "src/main/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTilGenereltFormatMapper.kt" rename to "src/main/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTilFeltMap.kt" index aaf9a66d..5223220d 100644 --- "a/src/main/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTilGenereltFormatMapper.kt" +++ "b/src/main/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTilFeltMap.kt" @@ -1,6 +1,8 @@ package no.nav.familie.ef.mottak.service 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.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.Dokumentasjon @@ -22,7 +24,7 @@ import kotlin.reflect.KVisibility import kotlin.reflect.full.declaredMemberProperties import kotlin.reflect.full.primaryConstructor -object SøknadTilGenereltFormatMapper { +object SøknadTilFeltMap { private val endNodes = setOf>( String::class, @@ -43,56 +45,57 @@ object SøknadTilGenereltFormatMapper { fun mapOvergangsstønad( søknad: SøknadOvergangsstønad, vedleggTitler: List, - ): Map { + ): FeltMap { val finnFelter = finnFelter(søknad) - val vedlegg = feltlisteMap("Vedlegg", listOf(Feltformaterer.mapVedlegg(vedleggTitler)), VisningsVariant.VEDLEGG) - return feltlisteMap("Søknad om overgangsstønad (NAV 15-00.01)", finnFelter + vedlegg) + val vedlegg = mapTilVedlegg(vedleggTitler) + return FeltMap("Søknad om overgangsstønad (NAV 15-00.01)", finnFelter + vedlegg) } fun mapBarnetilsyn( søknad: SøknadBarnetilsyn, vedleggTitler: List, - ): Map { + ): FeltMap { val finnFelter = finnFelter(søknad) - val vedlegg = feltlisteMap("Vedlegg", listOf(Feltformaterer.mapVedlegg(vedleggTitler)), VisningsVariant.VEDLEGG) - return feltlisteMap("Søknad om stønad til barnetilsyn (NAV 15-00.02)", finnFelter + vedlegg) + val vedlegg = mapTilVedlegg(vedleggTitler) + return FeltMap("Søknad om stønad til barnetilsyn (NAV 15-00.02)", finnFelter + vedlegg) } fun mapSkolepenger( søknad: SøknadSkolepenger, vedleggTitler: List, - ): Map { + ): FeltMap { val finnFelter = finnFelter(søknad) - val vedlegg = feltlisteMap("Vedlegg", listOf(Feltformaterer.mapVedlegg(vedleggTitler)), VisningsVariant.VEDLEGG) - return feltlisteMap("Søknad om stønad til skolepenger (NAV 15-00.04)", finnFelter + vedlegg) + val vedlegg = mapTilVedlegg(vedleggTitler) + return FeltMap("Søknad om stønad til skolepenger (NAV 15-00.04)", finnFelter + vedlegg) } - fun mapSkjemafelter(skjema: SkjemaForArbeidssøker): Map { + fun mapSkjemafelter(skjema: SkjemaForArbeidssøker): FeltMap { val finnFelter = finnFelter(skjema) - return feltlisteMap("Skjema for arbeidssøker - 15-08.01", finnFelter) + return FeltMap("Skjema for arbeidssøker - 15-08.01", finnFelter) } fun mapEttersending( ettersending: Ettersending, vedleggTitler: List, - ): Map { + ): FeltMap { val infoMap = - feltlisteMap( - "Ettersending av vedlegg", - listOf( - Feltformaterer.feltMap("Stønadstype", ettersending.stønadType), - Feltformaterer.feltMap("Fødselsnummer", ettersending.fnr), - Feltformaterer.feltMap( - "Dato mottatt", - ettersending.opprettetTid.format(DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss")), + VerdilisteElement( + label = "Ettersending av vedlegg", + verdiliste = + listOf( + VerdilisteElement("Stønadstype", verdi = ettersending.stønadType), + VerdilisteElement("Fødselsnummer", verdi = ettersending.fnr), + VerdilisteElement( + "Dato mottatt", + verdi = ettersending.opprettetTid.format(DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss")), + ), ), - ), ) - val vedleggMap = feltlisteMap("Dokumenter vedlagt", listOf(Feltformaterer.mapVedlegg(vedleggTitler)), VisningsVariant.VEDLEGG) - return feltlisteMap("Ettersending", listOf(infoMap, vedleggMap)) + val vedleggMap = mapTilVedlegg(vedleggTitler, "Dokumenter vedlagt") + return FeltMap("Ettersending", listOf(infoMap, vedleggMap)) } - private fun finnFelter(entitet: Any): List> { + private fun finnFelter(entitet: Any): List { // Det går ikke å hente elementene i en liste med reflection, så vi traverserer den som vanlig. if (entitet is List) { return entitet @@ -118,53 +121,60 @@ object SøknadTilGenereltFormatMapper { return mapDokumentasjon(entitet as Søknadsfelt) } if (entitet.verdi!!::class in endNodes) { - return listOf(Feltformaterer.genereltFormatMapperMapEndenode(entitet)) + return Feltformaterer.genereltFormatMapperMapEndenode(entitet)?.let { listOf(it) } ?: emptyList() } if (entitet.label == "Barna dine") { - return listOf(feltlisteMap(entitet.label, list, VisningsVariant.TABELL_BARN)) + return listOf( + VerdilisteElement( + entitet.label, + verdiliste = list, + visningsVariant = VisningsVariant.TABELL_BARN.toString(), + ), + ) } if (entitet.label == "Om arbeidsforholdet ditt") { - return listOf(feltlisteMap(entitet.label, list, VisningsVariant.TABELL_ARBEIDSFORHOLD)) + return listOf( + VerdilisteElement( + entitet.label, + verdiliste = list, + visningsVariant = VisningsVariant.TABELL_ARBEIDSFORHOLD.toString(), + ), + ) } if (entitet.label == "Vedlegg") { - return listOf(feltlisteMap(entitet.label, list, VisningsVariant.VEDLEGG)) + return listOf( + VerdilisteElement( + entitet.label, + verdiliste = list, + visningsVariant = VisningsVariant.VEDLEGG.toString(), + ), + ) } if (entitet.verdi is List<*>) { val verdiliste = entitet.verdi as List<*> - if (verdiliste.isNotEmpty() && verdiliste.first() is String) { - return listOf(Feltformaterer.genereltFormatMapperMapEndenode(entitet)) + if (verdiliste.firstOrNull() is String) { + return Feltformaterer.genereltFormatMapperMapEndenode(entitet)?.let { listOf(it) } ?: emptyList() } } - //skal ekskluderes - if (list.size == 1 && (list[0] as Map<*, *>).isEmpty()) { + // skal ekskluderes + if (list.size == 1 && list.first().verdiliste.isNullOrEmpty() && list.first().verdi.isNullOrEmpty()) { return emptyList() } - return listOf(feltlisteMap(entitet.label, list)) + return listOf(VerdilisteElement(label = entitet.label, verdiliste = list)) } return list } - private fun mapDokumentasjon(entitet: Søknadsfelt): List> { + private fun mapDokumentasjon(entitet: Søknadsfelt): List { val list = listOf(Feltformaterer.genereltFormatMapperMapEndenode(entitet.verdi.harSendtInnTidligere)) - if (list.size == 1 && (list[0] as Map<*, *>).isEmpty()) { + if (list.size == 1 && list.first()?.verdiliste.isNullOrEmpty() && list.first()?.verdi.isNullOrEmpty()) { return emptyList() } - return listOf( feltlisteMap(entitet.label, list)) + return listOf(VerdilisteElement(label = entitet.label, verdiliste = list.filterNotNull())) } - private fun feltlisteMap( - label: String, - verdi: List<*>, - visningsVariant: VisningsVariant? = null, - ): Map = - if (visningsVariant == null) { - mapOf("label" to label, "verdiliste" to verdi) - } else { - mapOf("label" to label, "visningsVariant" to visningsVariant.toString(), "verdiliste" to verdi) - } - /** * Henter ut verdien for felt på entitet. */ @@ -185,6 +195,15 @@ object SøknadTilGenereltFormatMapper { * Konstruktørparametere er det eneste som gir oss en garantert rekkefølge for feltene, så vi henter disse først. */ private fun konstruktørparametere(entity: Any) = entity::class.primaryConstructor?.parameters ?: emptyList() + + private fun mapTilVedlegg( + vedleggTitler: List, + label: String = "Vedlegg", + ) = VerdilisteElement( + label, + verdiliste = listOf(Feltformaterer.mapVedlegg(vedleggTitler)), + visningsVariant = VisningsVariant.VEDLEGG.toString(), + ) } enum class VisningsVariant { diff --git "a/src/main/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTreeWalker.kt" "b/src/main/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTreeWalker.kt" index 9aa5c3fa..1d74b27c 100644 --- "a/src/main/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTreeWalker.kt" +++ "b/src/main/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTreeWalker.kt" @@ -1,6 +1,8 @@ package no.nav.familie.ef.mottak.service 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.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.Dokumentasjon @@ -43,56 +45,64 @@ object SøknadTreeWalker { fun mapOvergangsstønad( søknad: SøknadOvergangsstønad, vedleggTitler: List, - ): Map { + ): FeltMap { val finnFelter = finnFelter(søknad) - val vedlegg = feltlisteMap("Vedlegg", listOf(Feltformaterer.mapVedlegg(vedleggTitler))) - return feltlisteMap("Søknad om overgangsstønad (NAV 15-00.01)", finnFelter + vedlegg) + val vedlegg = + VerdilisteElement(label = "Vedlegg", verdiliste = listOf(Feltformaterer.mapVedlegg(vedleggTitler))) + return FeltMap("Søknad om overgangsstønad (NAV 15-00.01)", finnFelter + vedlegg) } fun mapBarnetilsyn( søknad: SøknadBarnetilsyn, vedleggTitler: List, - ): Map { + ): FeltMap { val finnFelter = finnFelter(søknad) - val vedlegg = feltlisteMap("Vedlegg", listOf(Feltformaterer.mapVedlegg(vedleggTitler))) - return feltlisteMap("Søknad om stønad til barnetilsyn (NAV 15-00.02)", finnFelter + vedlegg) + val vedlegg = + VerdilisteElement(label = "Vedlegg", verdiliste = listOf(Feltformaterer.mapVedlegg(vedleggTitler))) + return FeltMap("Søknad om stønad til barnetilsyn (NAV 15-00.02)", finnFelter + vedlegg) } fun mapSkolepenger( søknad: SøknadSkolepenger, vedleggTitler: List, - ): Map { + ): FeltMap { val finnFelter = finnFelter(søknad) - val vedlegg = feltlisteMap("Vedlegg", listOf(Feltformaterer.mapVedlegg(vedleggTitler))) - return feltlisteMap("Søknad om stønad til skolepenger (NAV 15-00.04)", finnFelter + vedlegg) + val vedlegg = + VerdilisteElement(label = "Vedlegg", verdiliste = listOf(Feltformaterer.mapVedlegg(vedleggTitler))) + return FeltMap("Søknad om stønad til skolepenger (NAV 15-00.04)", finnFelter + vedlegg) } - fun mapSkjemafelter(skjema: SkjemaForArbeidssøker): Map { + fun mapSkjemafelter(skjema: SkjemaForArbeidssøker): FeltMap { val finnFelter = finnFelter(skjema) - return feltlisteMap("Skjema for arbeidssøker - 15-08.01", finnFelter) + return FeltMap("Skjema for arbeidssøker - 15-08.01", finnFelter) } fun mapEttersending( ettersending: Ettersending, vedleggTitler: List, - ): Map { + ): FeltMap { val infoMap = - feltlisteMap( - "Ettersending av vedlegg", - listOf( - Feltformaterer.feltMap("Stønadstype", ettersending.stønadType), - Feltformaterer.feltMap("Fødselsnummer", ettersending.fnr), - Feltformaterer.feltMap( - "Dato mottatt", - ettersending.opprettetTid.format(DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss")), + VerdilisteElement( + label = "Ettersending av vedlegg", + verdiliste = + listOf( + VerdilisteElement("Stønadstype", verdi = ettersending.stønadType), + VerdilisteElement("Fødselsnummer", verdi = ettersending.fnr), + VerdilisteElement( + "Dato mottatt", + verdi = ettersending.opprettetTid.format(DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss")), + ), ), - ), ) - val vedleggMap = feltlisteMap("Dokumenter vedlagt", listOf(Feltformaterer.mapVedlegg(vedleggTitler))) - return feltlisteMap("Ettersending", listOf(infoMap, vedleggMap)) + val vedleggMap = + VerdilisteElement( + label = "Dokumenter vedlagt", + verdiliste = listOf(Feltformaterer.mapVedlegg(vedleggTitler)), + ) + return FeltMap("Ettersending", listOf(infoMap, vedleggMap)) } - private fun finnFelter(entitet: Any): List> { + private fun finnFelter(entitet: Any): List { // Det går ikke å hente elementene i en liste med reflection, så vi traverserer den som vanlig. if (entitet is List) { return entitet @@ -122,21 +132,20 @@ object SøknadTreeWalker { } if (entitet.verdi is List<*>) { val verdiliste = entitet.verdi as List<*> - if (verdiliste.isNotEmpty() && verdiliste.first() is String) { + if (verdiliste.firstOrNull() is String) { return listOf(Feltformaterer.mapEndenodeTilUtskriftMap(entitet)) } } - return listOf(feltlisteMap(entitet.label, list)) + return listOf(VerdilisteElement(label = entitet.label, verdiliste = list)) } return list } - private fun mapDokumentasjon(entitet: Søknadsfelt): Map = feltlisteMap(entitet.label, listOf(Feltformaterer.mapEndenodeTilUtskriftMap(entitet.verdi.harSendtInnTidligere))) - - private fun feltlisteMap( - label: String, - verdi: List<*>, - ) = mapOf("label" to label, "verdiliste" to verdi) + private fun mapDokumentasjon(entitet: Søknadsfelt): VerdilisteElement = + VerdilisteElement( + label = entitet.label, + verdiliste = listOf(Feltformaterer.mapEndenodeTilUtskriftMap(entitet.verdi.harSendtInnTidligere)), + ) /** * Henter ut verdien for felt på entitet. diff --git a/src/test/kotlin/no/nav/familie/ef/mottak/mockapi/MockConfiguration.kt b/src/test/kotlin/no/nav/familie/ef/mottak/mockapi/MockConfiguration.kt index 97f4da8a..37d99eb0 100644 --- a/src/test/kotlin/no/nav/familie/ef/mottak/mockapi/MockConfiguration.kt +++ b/src/test/kotlin/no/nav/familie/ef/mottak/mockapi/MockConfiguration.kt @@ -4,6 +4,7 @@ import io.mockk.mockk import no.nav.familie.ef.mottak.config.IntegrasjonerConfig import no.nav.familie.ef.mottak.integration.IntegrasjonerClient import no.nav.familie.ef.mottak.integration.PdfClient +import no.nav.familie.ef.mottak.repository.domain.FeltMap import no.nav.familie.kontrakter.felles.dokarkiv.ArkiverDokumentResponse import no.nav.familie.kontrakter.felles.dokarkiv.v2.ArkiverDokumentRequest import no.nav.familie.kontrakter.felles.objectMapper @@ -22,7 +23,7 @@ class MockConfiguration { @Profile("mock-pdf") fun pdfClient(): PdfClient = object : PdfClient(mockk(), mockk()) { - override fun lagPdf(labelValueJson: Map): ByteArray { + override fun lagPdf(labelValueJson: FeltMap): ByteArray { val pdf = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(labelValueJson) log.info("Creating pdf: $pdf") return labelValueJson.toString().toByteArray() diff --git a/src/test/kotlin/no/nav/familie/ef/mottak/service/FeltformatererTest.kt b/src/test/kotlin/no/nav/familie/ef/mottak/service/FeltformatererTest.kt index ccb7387e..7811adcb 100644 --- a/src/test/kotlin/no/nav/familie/ef/mottak/service/FeltformatererTest.kt +++ b/src/test/kotlin/no/nav/familie/ef/mottak/service/FeltformatererTest.kt @@ -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 @@ -19,7 +20,7 @@ internal class FeltformatererTest { val resultat = Feltformaterer.mapEndenodeTilUtskriftMap(testverdi) - assertThat(resultat).isEqualTo(mapOf("label" to "label", "verdi" to "desember")) + assertThat(resultat).isEqualTo(VerdilisteElement(label = "label", verdi = "desember")) } @Test @@ -28,7 +29,7 @@ internal class FeltformatererTest { val resultat = Feltformaterer.mapEndenodeTilUtskriftMap(testverdi) - assertThat(resultat).isEqualTo(mapOf("label" to "label", "verdi" to "Ja")) + assertThat(resultat).isEqualTo(VerdilisteElement(label = "label", verdi = "Ja")) } @Test @@ -37,7 +38,7 @@ internal class FeltformatererTest { val resultat = Feltformaterer.mapEndenodeTilUtskriftMap(testverdi) - assertThat(resultat).isEqualTo(mapOf("label" to "label", "verdi" to "Ja\n\nNei")) + assertThat(resultat).isEqualTo(VerdilisteElement(label = "label", verdi = "Ja\n\nNei")) } @Test @@ -46,7 +47,7 @@ internal class FeltformatererTest { val resultat = Feltformaterer.mapEndenodeTilUtskriftMap(testverdi) - assertThat(resultat).isEqualTo(mapOf("label" to "label", "verdi" to "Lille\n\nGrimme\n\nArne\n\nTrenger\n\nRis")) + assertThat(resultat).isEqualTo(VerdilisteElement(label = "label", verdi = "Lille\n\nGrimme\n\nArne\n\nTrenger\n\nRis")) } @Test @@ -56,7 +57,7 @@ internal class FeltformatererTest { val resultat = Feltformaterer.mapEndenodeTilUtskriftMap(testverdi) - assertThat(resultat).isEqualTo(mapOf("label" to "label", "verdi" to fnr)) + assertThat(resultat).isEqualTo(VerdilisteElement(label = "label", verdi = fnr)) } @Test @@ -65,7 +66,7 @@ internal class FeltformatererTest { val resultat = Feltformaterer.mapEndenodeTilUtskriftMap(testverdi) - assertThat(resultat).isEqualTo(mapOf("label" to "label", "verdi" to "Husebyskogen 15\n\n1572 Fet\n\nNorge")) + assertThat(resultat).isEqualTo(VerdilisteElement(label = "label", verdi = "Husebyskogen 15\n\n1572 Fet\n\nNorge")) } @Test @@ -74,7 +75,7 @@ internal class FeltformatererTest { val resultat = Feltformaterer.mapEndenodeTilUtskriftMap(testverdi) - assertThat(resultat).isEqualTo(mapOf("label" to "label", "verdi" to "05.12.2015")) + assertThat(resultat).isEqualTo(VerdilisteElement(label = "label", verdi = "05.12.2015")) } @Test @@ -83,7 +84,7 @@ internal class FeltformatererTest { val resultat = Feltformaterer.mapEndenodeTilUtskriftMap(testverdi) - assertThat(resultat).isEqualTo(mapOf("label" to "label", "verdi" to "05.12.2015 14:52:48")) + assertThat(resultat).isEqualTo(VerdilisteElement(label = "label", verdi = "05.12.2015 14:52:48")) } @Test @@ -92,7 +93,7 @@ internal class FeltformatererTest { val resultat = Feltformaterer.mapEndenodeTilUtskriftMap(testverdi) - assertThat(resultat).isEqualTo(mapOf("label" to "label", "verdi" to "Fra februar 2015 til juli 2018")) + assertThat(resultat).isEqualTo(VerdilisteElement(label = "label", verdi = "Fra februar 2015 til juli 2018")) } @Test @@ -101,6 +102,6 @@ internal class FeltformatererTest { val resultat = Feltformaterer.mapEndenodeTilUtskriftMap(testverdi) - assertThat(resultat).isEqualTo(mapOf("label" to "label", "verdi" to "Fra 01.02.2015 til 14.07.2018")) + assertThat(resultat).isEqualTo(VerdilisteElement(label = "label", verdi = "Fra 01.02.2015 til 14.07.2018")) } } diff --git "a/src/test/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTilGenereltFormatMapperTest.kt" "b/src/test/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTilFeltMapTest.kt" similarity index 61% rename from "src/test/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTilGenereltFormatMapperTest.kt" rename to "src/test/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTilFeltMapTest.kt" index 04ccd5a5..a42637ac 100644 --- "a/src/test/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTilGenereltFormatMapperTest.kt" +++ "b/src/test/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTilFeltMapTest.kt" @@ -3,22 +3,23 @@ package no.nav.familie.ef.mottak.service import no.nav.familie.ef.mottak.encryption.EncryptedString import no.nav.familie.ef.mottak.no.nav.familie.ef.mottak.util.IOTestUtil import no.nav.familie.ef.mottak.repository.domain.Ettersending +import no.nav.familie.ef.mottak.repository.domain.FeltMap import no.nav.familie.kontrakter.felles.objectMapper import org.assertj.core.api.Assertions import org.junit.jupiter.api.Test import java.time.LocalDateTime -class SøknadTilGenereltFormatMapperTest { +class SøknadTilFeltMapTest { @Test fun `mapSøknadsfelter returnerer en map-struktur med feltene fra søknaden`() { val søknad = Testdata.søknadOvergangsstønad - val mapSøknadsfelter = SøknadTilGenereltFormatMapper.mapOvergangsstønad(søknad, emptyList()) + val mapSøknadsfelter = SøknadTilFeltMap.mapOvergangsstønad(søknad, emptyList()) - Assertions.assertThat(mapSøknadsfelter).isNotEmpty - Assertions.assertThat(mapSøknadsfelter["label"]).isEqualTo("Søknad om overgangsstønad (NAV 15-00.01)") + Assertions.assertThat(mapSøknadsfelter.verdiliste).isNotEmpty + Assertions.assertThat(mapSøknadsfelter.label).isEqualTo("Søknad om overgangsstønad (NAV 15-00.01)") - val verdiliste = mapSøknadsfelter["verdiliste"] as List<*> + val verdiliste = mapSøknadsfelter.verdiliste Assertions.assertThat(verdiliste).hasSize(12) } @@ -26,11 +27,9 @@ class SøknadTilGenereltFormatMapperTest { fun `mapSøknadsfelter returnerer en map-struktur med typen TABELL_BARN`() { val søknad = Testdata.søknadOvergangsstønad - val mapSøknadsfelter = SøknadTilGenereltFormatMapper.mapOvergangsstønad(søknad, emptyList()) + val mapSøknadsfelter = SøknadTilFeltMap.mapOvergangsstønad(søknad, emptyList()) - val verdiliste = mapSøknadsfelter["verdiliste"] as List> - - val harVisningsVariantBarn = verdiliste.any { it["visningsVariant"] == VisningsVariant.TABELL_BARN.toString() } + val harVisningsVariantBarn = mapSøknadsfelter.verdiliste.any { it.visningsVariant == VisningsVariant.TABELL_BARN.toString() } Assertions.assertThat(harVisningsVariantBarn).isTrue } @@ -44,11 +43,9 @@ class SøknadTilGenereltFormatMapperTest { "Dokumentasjon på at du er syk", "Dokumentasjon på at kan arbeide", ) - val mapSøknadsfelter = SøknadTilGenereltFormatMapper.mapOvergangsstønad(søknad, vedlegg) - - val verdiliste = mapSøknadsfelter["verdiliste"] as List> + val mapSøknadsfelter = SøknadTilFeltMap.mapOvergangsstønad(søknad, vedlegg) - val harVisningsVariantVedlegg = verdiliste.any { it["visningsVariant"] == VisningsVariant.VEDLEGG.toString() } + val harVisningsVariantVedlegg = mapSøknadsfelter.verdiliste.any { it.visningsVariant == VisningsVariant.VEDLEGG.toString() } Assertions.assertThat(harVisningsVariantVedlegg).isTrue } @@ -57,11 +54,11 @@ class SøknadTilGenereltFormatMapperTest { val søknad = Testdata.søknadOvergangsstønad val vedlegg = listOf("Dokumentasjon på at du er syk") - val mapSøknadsfelter = SøknadTilGenereltFormatMapper.mapOvergangsstønad(søknad, vedlegg) + val mapSøknadsfelter = SøknadTilFeltMap.mapOvergangsstønad(søknad, vedlegg) - Assertions.assertThat(mapSøknadsfelter).isNotEmpty - Assertions.assertThat(mapSøknadsfelter["label"]).isEqualTo("Søknad om overgangsstønad (NAV 15-00.01)") - Assertions.assertThat(mapSøknadsfelter["verdiliste"] as List).hasSize(12) + Assertions.assertThat(mapSøknadsfelter.verdiliste).isNotEmpty + Assertions.assertThat(mapSøknadsfelter.label).isEqualTo("Søknad om overgangsstønad (NAV 15-00.01)") + Assertions.assertThat(mapSøknadsfelter.verdiliste).hasSize(12) } @Test @@ -69,22 +66,22 @@ class SøknadTilGenereltFormatMapperTest { val søknad = Testdata.søknadSkolepenger val vedlegg = listOf("Dokumentasjon på at du er syk") - val mapSøknadsfelter = SøknadTilGenereltFormatMapper.mapSkolepenger(søknad, vedlegg) + val mapSøknadsfelter = SøknadTilFeltMap.mapSkolepenger(søknad, vedlegg) - Assertions.assertThat(mapSøknadsfelter).isNotEmpty - Assertions.assertThat(mapSøknadsfelter["label"]).isEqualTo("Søknad om stønad til skolepenger (NAV 15-00.04)") - Assertions.assertThat(mapSøknadsfelter["verdiliste"] as List).hasSize(9) + Assertions.assertThat(mapSøknadsfelter.verdiliste).isNotEmpty + Assertions.assertThat(mapSøknadsfelter.label).isEqualTo("Søknad om stønad til skolepenger (NAV 15-00.04)") + Assertions.assertThat(mapSøknadsfelter.verdiliste).hasSize(9) } @Test fun `mapSkjemafelter returnerer en map-struktur med feltene fra skjema`() { val skjemaForArbeidssøker = Testdata.skjemaForArbeidssøker - val mapSøknadsfelter = SøknadTilGenereltFormatMapper.mapSkjemafelter(skjemaForArbeidssøker) + val mapSøknadsfelter = SøknadTilFeltMap.mapSkjemafelter(skjemaForArbeidssøker) - Assertions.assertThat(mapSøknadsfelter).isNotEmpty - Assertions.assertThat(mapSøknadsfelter["label"]).isEqualTo("Skjema for arbeidssøker - 15-08.01") - Assertions.assertThat(mapSøknadsfelter["verdiliste"] as List).hasSize(3) + Assertions.assertThat(mapSøknadsfelter.verdiliste).isNotEmpty + Assertions.assertThat(mapSøknadsfelter.label).isEqualTo("Skjema for arbeidssøker - 15-08.01") + Assertions.assertThat(mapSøknadsfelter.verdiliste).hasSize(3) } @Test @@ -97,7 +94,7 @@ class SøknadTilGenereltFormatMapperTest { "Dokumentasjon på at du er syk", "Dokumentasjon på at kan arbeide", ) - val mapSøknadsfelter = SøknadTilGenereltFormatMapper.mapOvergangsstønad(søknad, vedlegg) + val mapSøknadsfelter = SøknadTilFeltMap.mapOvergangsstønad(søknad, vedlegg) generatePdfAndAssert(mapSøknadsfelter, "pdf_generated_overgangsstønad_med_typer.json") } @@ -106,7 +103,7 @@ class SøknadTilGenereltFormatMapperTest { val søknad = Testdata.søknadSkolepenger val vedlegg = listOf("Utgifter til utdanning") - val mapSøknadsfelter = SøknadTilGenereltFormatMapper.mapSkolepenger(søknad, vedlegg) + val mapSøknadsfelter = SøknadTilFeltMap.mapSkolepenger(søknad, vedlegg) generatePdfAndAssert(mapSøknadsfelter, "pdf_generated_skolepenger_med_typer.json") } @@ -120,14 +117,14 @@ class SøknadTilGenereltFormatMapperTest { "Dokumentasjon på at du er syk", "Dokumentasjon på at kan arbeide", ) - val mapSøknadsfelter = SøknadTilGenereltFormatMapper.mapBarnetilsyn(søknad, vedlegg) + val mapSøknadsfelter = SøknadTilFeltMap.mapBarnetilsyn(søknad, vedlegg) generatePdfAndAssert(mapSøknadsfelter, "pdf_generated_barnetilsyn_med_typer.json") } @Test fun `map ettersending med vedlegg`() { val mapEttersending = - SøknadTilGenereltFormatMapper.mapEttersending( + SøknadTilFeltMap.mapEttersending( Ettersending( stønadType = "OVERGANGSSTØNAD", fnr = "23118612345", @@ -144,21 +141,19 @@ class SøknadTilGenereltFormatMapperTest { fun `ekskluderer verdiliste når skalEkskluderes matcher`() { val søknad = Testdata.søknadOvergangsstønad - val vedlegg = listOf("Dokumentasjon på at du er syk") - val mapSøknadsfelter = SøknadTilGenereltFormatMapper.mapOvergangsstønad(søknad, vedlegg) + val mapSøknadsfelter = SøknadTilFeltMap.mapOvergangsstønad(søknad, vedlegg) - val verdiliste = mapSøknadsfelter["verdiliste"] as List> - val harEkskludertElement = verdiliste.any { - it["label"] == "harSendtInn" && - it["verdi"] == "Nei" - } + val harEkskludertElement = + mapSøknadsfelter.verdiliste.any { + it.label == "harSendtInn" && + it.verdi == "Nei" + } Assertions.assertThat(harEkskludertElement).isFalse } - private fun generatePdfAndAssert( - mapSøknadsfelter: Map, + mapSøknadsfelter: FeltMap, filename: String, ) { val pdf = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(mapSøknadsfelter) diff --git "a/src/test/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTreeWalkerTest.kt" "b/src/test/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTreeWalkerTest.kt" index 6c50bb6a..f19047dd 100644 --- "a/src/test/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTreeWalkerTest.kt" +++ "b/src/test/kotlin/no/nav/familie/ef/mottak/service/S\303\270knadTreeWalkerTest.kt" @@ -3,6 +3,7 @@ package no.nav.familie.ef.mottak.service import no.nav.familie.ef.mottak.encryption.EncryptedString import no.nav.familie.ef.mottak.no.nav.familie.ef.mottak.util.IOTestUtil.readFile import no.nav.familie.ef.mottak.repository.domain.Ettersending +import no.nav.familie.ef.mottak.repository.domain.FeltMap import no.nav.familie.kontrakter.felles.objectMapper import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Test @@ -15,11 +16,9 @@ class SøknadTreeWalkerTest { val mapSøknadsfelter = SøknadTreeWalker.mapOvergangsstønad(søknad, emptyList()) - assertThat(mapSøknadsfelter).isNotEmpty - assertThat(mapSøknadsfelter["label"]).isEqualTo("Søknad om overgangsstønad (NAV 15-00.01)") - - val verdiliste = mapSøknadsfelter["verdiliste"] as List<*> - assertThat(verdiliste).hasSize(12) + assertThat(mapSøknadsfelter.verdiliste).isNotEmpty + assertThat(mapSøknadsfelter.label).isEqualTo("Søknad om overgangsstønad (NAV 15-00.01)") + assertThat(mapSøknadsfelter.verdiliste).hasSize(12) } @Test @@ -29,9 +28,9 @@ class SøknadTreeWalkerTest { val vedlegg = listOf("Dokumentasjon på at du er syk") val mapSøknadsfelter = SøknadTreeWalker.mapOvergangsstønad(søknad, vedlegg) - assertThat(mapSøknadsfelter).isNotEmpty - assertThat(mapSøknadsfelter["label"]).isEqualTo("Søknad om overgangsstønad (NAV 15-00.01)") - assertThat(mapSøknadsfelter["verdiliste"] as List).hasSize(12) + assertThat(mapSøknadsfelter.verdiliste).isNotEmpty + assertThat(mapSøknadsfelter.label).isEqualTo("Søknad om overgangsstønad (NAV 15-00.01)") + assertThat(mapSøknadsfelter.verdiliste).hasSize(12) } @Test @@ -41,9 +40,9 @@ class SøknadTreeWalkerTest { val vedlegg = listOf("Dokumentasjon på at du er syk") val mapSøknadsfelter = SøknadTreeWalker.mapSkolepenger(søknad, vedlegg) - assertThat(mapSøknadsfelter).isNotEmpty - assertThat(mapSøknadsfelter["label"]).isEqualTo("Søknad om stønad til skolepenger (NAV 15-00.04)") - assertThat(mapSøknadsfelter["verdiliste"] as List).hasSize(9) + assertThat(mapSøknadsfelter.verdiliste).isNotEmpty + assertThat(mapSøknadsfelter.label).isEqualTo("Søknad om stønad til skolepenger (NAV 15-00.04)") + assertThat(mapSøknadsfelter.verdiliste).hasSize(9) } @Test @@ -52,9 +51,9 @@ class SøknadTreeWalkerTest { val mapSøknadsfelter = SøknadTreeWalker.mapSkjemafelter(skjemaForArbeidssøker) - assertThat(mapSøknadsfelter).isNotEmpty - assertThat(mapSøknadsfelter["label"]).isEqualTo("Skjema for arbeidssøker - 15-08.01") - assertThat(mapSøknadsfelter["verdiliste"] as List).hasSize(3) + assertThat(mapSøknadsfelter.verdiliste).isNotEmpty + assertThat(mapSøknadsfelter.label).isEqualTo("Skjema for arbeidssøker - 15-08.01") + assertThat(mapSøknadsfelter.verdiliste).hasSize(3) } @Test @@ -111,7 +110,7 @@ class SøknadTreeWalkerTest { } private fun generatePdfAndAssert( - mapSøknadsfelter: Map, + mapSøknadsfelter: FeltMap, filename: String, ) { val pdf = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(mapSøknadsfelter)