From c6792d5d1f3527309eedf923b4d533f853c0930e Mon Sep 17 00:00:00 2001 From: "Ole Steinar L. Skrede" Date: Tue, 13 Feb 2024 09:43:36 +0100 Subject: [PATCH] =?UTF-8?q?h=C3=A5ndter=20brukerpassbytte?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/db/S\303\270knadStoreInnsender.kt" | 4 +- .../soknad/db/domain/BehovsmeldingType.kt | 2 +- .../soknad/db/domain/Brukerpassbytte.kt | 34 +++++++++++ .../soknad/db/domain/SoknadMedStatus.kt | 60 +++++++++++++++++-- .../db/domain/S\303\270knadForBruker.kt" | 49 +++++++++------ 5 files changed, 125 insertions(+), 24 deletions(-) create mode 100644 src/main/kotlin/no/nav/hjelpemidler/soknad/db/domain/Brukerpassbytte.kt diff --git "a/src/main/kotlin/no/nav/hjelpemidler/soknad/db/db/S\303\270knadStoreInnsender.kt" "b/src/main/kotlin/no/nav/hjelpemidler/soknad/db/db/S\303\270knadStoreInnsender.kt" index aaba66f4..d270094f 100644 --- "a/src/main/kotlin/no/nav/hjelpemidler/soknad/db/db/S\303\270knadStoreInnsender.kt" +++ "b/src/main/kotlin/no/nav/hjelpemidler/soknad/db/db/S\303\270knadStoreInnsender.kt" @@ -131,7 +131,9 @@ internal class SøknadStoreInnsenderPostgres(private val dataSource: DataSource) ON status.ID = ( SELECT ID FROM V1_STATUS WHERE SOKNADS_ID = soknad.SOKNADS_ID ORDER BY created DESC LIMIT 1 ) - WHERE soknad.FNR_INNSENDER = :fnrInnsender AND soknad.SOKNADS_ID = :soknadId $behovsmeldingTypeClause + WHERE soknad.FNR_INNSENDER = :fnrInnsender + AND soknad.DATA ->> 'behovsmeldingType' <> 'BRUKERPASSBYTTE' + AND soknad.SOKNADS_ID = :soknadId $behovsmeldingTypeClause AND soknad.created > :minimumDato AND ( status.STATUS NOT IN ('SLETTET', 'UTLØPT', 'VEDTAKSRESULTAT_AVSLÅTT', 'VEDTAKSRESULTAT_HENLAGTBORTFALT', 'VEDTAKSRESULTAT_ANNET', 'BESTILLING_AVVIST', 'UTSENDING_STARTET') diff --git a/src/main/kotlin/no/nav/hjelpemidler/soknad/db/domain/BehovsmeldingType.kt b/src/main/kotlin/no/nav/hjelpemidler/soknad/db/domain/BehovsmeldingType.kt index ae33c7d9..9ce08cee 100644 --- a/src/main/kotlin/no/nav/hjelpemidler/soknad/db/domain/BehovsmeldingType.kt +++ b/src/main/kotlin/no/nav/hjelpemidler/soknad/db/domain/BehovsmeldingType.kt @@ -1,5 +1,5 @@ package no.nav.hjelpemidler.soknad.db.domain enum class BehovsmeldingType { - SØKNAD, BESTILLING, BYTTE + SØKNAD, BESTILLING, BYTTE, BRUKERPASSBYTTE } diff --git a/src/main/kotlin/no/nav/hjelpemidler/soknad/db/domain/Brukerpassbytte.kt b/src/main/kotlin/no/nav/hjelpemidler/soknad/db/domain/Brukerpassbytte.kt new file mode 100644 index 00000000..7027769b --- /dev/null +++ b/src/main/kotlin/no/nav/hjelpemidler/soknad/db/domain/Brukerpassbytte.kt @@ -0,0 +1,34 @@ +package no.nav.hjelpemidler.soknad.db.domain + +import java.util.UUID + +data class Brukerpassbytte( + val id: UUID, + val hjelpemiddel: BytteHjelpemiddel, + val bytteårsak: BrukerpassBytteårsak, + val utleveringsmåte: BytteUtleveringsmåte, + val brukersNavn: String, + val folkeregistrertAdresse: BytteAdresse?, + val adresse: BytteAdresse?, + val dato: String +) + +data class BytteHjelpemiddel( + val artnr: String, + val navn: String, + val kategori: String +) + +enum class BrukerpassBytteårsak { + UTSLITT, ØDELAGT, ANNEN_ÅRSAK +} + +enum class BytteUtleveringsmåte { + FOLKEREGISTRERT_ADRESSE, OPPGITT_ADRESSE +} + +data class BytteAdresse( + val adresse: String?, + val postnr: String?, + val poststed: String?, +) \ No newline at end of file diff --git a/src/main/kotlin/no/nav/hjelpemidler/soknad/db/domain/SoknadMedStatus.kt b/src/main/kotlin/no/nav/hjelpemidler/soknad/db/domain/SoknadMedStatus.kt index 5d85d1b6..7c4cfc7a 100644 --- a/src/main/kotlin/no/nav/hjelpemidler/soknad/db/domain/SoknadMedStatus.kt +++ b/src/main/kotlin/no/nav/hjelpemidler/soknad/db/domain/SoknadMedStatus.kt @@ -18,15 +18,65 @@ class SoknadMedStatus private constructor( val valgteÅrsaker: List, ) { companion object { - fun newSøknadUtenFormidlernavn(soknadId: UUID, behovsmeldingType: BehovsmeldingType, journalpostId: String?, datoOpprettet: Date, datoOppdatert: Date, status: Status, fullmakt: Boolean, er_digital: Boolean, soknadGjelder: String?, valgteÅrsaker: List) = - SoknadMedStatus(soknadId, behovsmeldingType, journalpostId, datoOpprettet, datoOppdatert, status, fullmakt, null, er_digital, soknadGjelder, valgteÅrsaker) + fun newSøknadUtenFormidlernavn( + soknadId: UUID, + behovsmeldingType: BehovsmeldingType, + journalpostId: String?, + datoOpprettet: Date, + datoOppdatert: Date, + status: Status, + fullmakt: Boolean, + er_digital: Boolean, + soknadGjelder: String?, + valgteÅrsaker: List + ) = + SoknadMedStatus( + soknadId, + behovsmeldingType, + journalpostId, + datoOpprettet, + datoOppdatert, + status, + fullmakt, + null, + er_digital, + soknadGjelder, + valgteÅrsaker + ) - fun newSøknadMedFormidlernavn(soknadId: UUID, behovsmeldingType: BehovsmeldingType, journalpostId: String?, datoOpprettet: Date, datoOppdatert: Date, status: Status, fullmakt: Boolean, søknad: JsonNode, er_digital: Boolean, soknadGjelder: String?, valgteÅrsaker: List) = - SoknadMedStatus(soknadId, behovsmeldingType, journalpostId, datoOpprettet, datoOppdatert, status, fullmakt, formidlerNavn(søknad), er_digital, soknadGjelder, valgteÅrsaker) + fun newSøknadMedFormidlernavn( + soknadId: UUID, + behovsmeldingType: BehovsmeldingType, + journalpostId: String?, + datoOpprettet: Date, + datoOppdatert: Date, + status: Status, + fullmakt: Boolean, + søknad: JsonNode, + er_digital: Boolean, + soknadGjelder: String?, + valgteÅrsaker: List + ) = + SoknadMedStatus( + soknadId, + behovsmeldingType, + journalpostId, + datoOpprettet, + datoOppdatert, + status, + fullmakt, + formidlerNavn(søknad), + er_digital, + soknadGjelder, + valgteÅrsaker + ) } } -private fun formidlerNavn(soknad: JsonNode): String { +private fun formidlerNavn(soknad: JsonNode): String? { + if (soknad["behovsmeldingType"].textValue() == BehovsmeldingType.BRUKERPASSBYTTE.name) { + return null + } val leveringNode = soknad["soknad"]["levering"] return "${leveringNode["hmfFornavn"].textValue()} ${leveringNode["hmfEtternavn"].textValue()}" } diff --git "a/src/main/kotlin/no/nav/hjelpemidler/soknad/db/domain/S\303\270knadForBruker.kt" "b/src/main/kotlin/no/nav/hjelpemidler/soknad/db/domain/S\303\270knadForBruker.kt" index 56cb0b3c..ace8bccc 100644 --- "a/src/main/kotlin/no/nav/hjelpemidler/soknad/db/domain/S\303\270knadForBruker.kt" +++ "b/src/main/kotlin/no/nav/hjelpemidler/soknad/db/domain/S\303\270knadForBruker.kt" @@ -18,6 +18,7 @@ class SøknadForBruker private constructor( val fullmakt: Boolean, val fnrBruker: String, val søknadsdata: Søknadsdata?, + val brukerpassbytte: Brukerpassbytte?, val er_digital: Boolean, val soknadGjelder: String?, var ordrelinjer: List, @@ -43,24 +44,37 @@ class SøknadForBruker private constructor( fagsakId: String?, søknadType: String?, valgteÅrsaker: List, - ) = - SøknadForBruker( - søknadId, - behovsmeldingType, - journalpostId, - datoOpprettet, - datoOppdatert, - status, - fullmakt, - fnrBruker, - Søknadsdata(søknad, kommunenavn), - er_digital, - soknadGjelder, - ordrelinjer, - fagsakId, - søknadType, - valgteÅrsaker, + ): SøknadForBruker { + val søknadsdata = when (behovsmeldingType) { + BehovsmeldingType.SØKNAD, BehovsmeldingType.BESTILLING, BehovsmeldingType.BYTTE -> Søknadsdata(søknad, kommunenavn) + BehovsmeldingType.BRUKERPASSBYTTE -> null + } + + val brukerpassbytte = when (behovsmeldingType) { + BehovsmeldingType.SØKNAD, BehovsmeldingType.BESTILLING, BehovsmeldingType.BYTTE -> null + BehovsmeldingType.BRUKERPASSBYTTE -> objectMapper.treeToValue(søknad["brukerpassbytte"]) + } + + return SøknadForBruker( + søknadId = søknadId, + behovsmeldingType = behovsmeldingType, + journalpostId = journalpostId, + datoOpprettet = datoOpprettet, + datoOppdatert = datoOppdatert, + status = status, + fullmakt = fullmakt, + fnrBruker = fnrBruker, + søknadsdata = søknadsdata, + brukerpassbytte = brukerpassbytte, + er_digital = er_digital, + soknadGjelder = soknadGjelder, + ordrelinjer = ordrelinjer, + fagsakId = fagsakId, + søknadType = søknadType, + valgteÅrsaker = valgteÅrsaker, ) + } + fun newEmptySøknad( søknadId: UUID, @@ -88,6 +102,7 @@ class SøknadForBruker private constructor( fullmakt, fnrBruker, null, + null, er_digital, soknadGjelder, ordrelinjer,