diff --git a/src/main/kotlin/no/nav/syfo/api/endpoints/ManglendeMedvirkningEndpoints.kt b/src/main/kotlin/no/nav/syfo/api/endpoints/ManglendeMedvirkningEndpoints.kt index 7ac3c84..cd3b459 100644 --- a/src/main/kotlin/no/nav/syfo/api/endpoints/ManglendeMedvirkningEndpoints.kt +++ b/src/main/kotlin/no/nav/syfo/api/endpoints/ManglendeMedvirkningEndpoints.kt @@ -10,6 +10,7 @@ import io.ktor.server.routing.post import io.ktor.server.routing.route import no.nav.syfo.api.model.* import no.nav.syfo.application.VurderingService +import no.nav.syfo.application.model.NewVurderingRequestDTO import no.nav.syfo.domain.Personident import no.nav.syfo.infrastructure.NAV_PERSONIDENT_HEADER import no.nav.syfo.infrastructure.clients.veiledertilgang.VeilederTilgangskontrollClient @@ -47,11 +48,10 @@ fun Route.registerManglendeMedvirkningEndpoints( post("/vurderinger") { val requestDTO = call.receive() - val personident = Personident(requestDTO.personident) validateVeilederAccess( action = "POST /vurderinger", - personident = personident, + personident = Personident(requestDTO.personident), veilederTilgangskontrollClient = veilederTilgangskontrollClient, ) { val callId = call.getCallId() @@ -60,12 +60,8 @@ fun Route.registerManglendeMedvirkningEndpoints( } val newVurdering = vurderingService.createNewVurdering( - personident = personident, veilederident = call.getNAVIdent(), - vurderingType = requestDTO.vurderingType, - begrunnelse = requestDTO.begrunnelse, - document = requestDTO.document, - varselSvarfrist = requestDTO.varselSvarfrist, + newVurdering = requestDTO, callId = callId, ) diff --git a/src/main/kotlin/no/nav/syfo/api/model/NewVurderingRequestDTO.kt b/src/main/kotlin/no/nav/syfo/api/model/NewVurderingRequestDTO.kt deleted file mode 100644 index d7c645f..0000000 --- a/src/main/kotlin/no/nav/syfo/api/model/NewVurderingRequestDTO.kt +++ /dev/null @@ -1,13 +0,0 @@ -package no.nav.syfo.api.model - -import no.nav.syfo.domain.VurderingType -import no.nav.syfo.domain.DocumentComponent -import java.time.LocalDate - -data class NewVurderingRequestDTO( - val personident: String, - val vurderingType: VurderingType, - val begrunnelse: String, - val document: List, - val varselSvarfrist: LocalDate?, -) diff --git a/src/main/kotlin/no/nav/syfo/api/model/VurderingResponseDTO.kt b/src/main/kotlin/no/nav/syfo/api/model/VurderingResponseDTO.kt index 41b76df..e90831f 100644 --- a/src/main/kotlin/no/nav/syfo/api/model/VurderingResponseDTO.kt +++ b/src/main/kotlin/no/nav/syfo/api/model/VurderingResponseDTO.kt @@ -17,7 +17,7 @@ data class VurderingResponseDTO private constructor( val varsel: VarselDTO?, ) { companion object { - fun fromVurdering(vurdering: ManglendeMedvirkningVurdering) = VurderingResponseDTO( + fun fromVurdering(vurdering: Vurdering) = VurderingResponseDTO( uuid = vurdering.uuid, personident = vurdering.personident.value, createdAt = vurdering.createdAt.toLocalDateTimeOslo(), @@ -25,7 +25,7 @@ data class VurderingResponseDTO private constructor( veilederident = vurdering.veilederident.value, begrunnelse = vurdering.begrunnelse, document = vurdering.document, - varsel = if (vurdering is ManglendeMedvirkningVurdering.Forhandsvarsel) VarselDTO.fromVarsel(vurdering.varsel) else null, + varsel = if (vurdering is Vurdering.Forhandsvarsel) VarselDTO.fromVarsel(vurdering.varsel) else null, ) } } diff --git a/src/main/kotlin/no/nav/syfo/application/IJournalforingService.kt b/src/main/kotlin/no/nav/syfo/application/IJournalforingService.kt index 498f3a6..0e23570 100644 --- a/src/main/kotlin/no/nav/syfo/application/IJournalforingService.kt +++ b/src/main/kotlin/no/nav/syfo/application/IJournalforingService.kt @@ -1,12 +1,12 @@ package no.nav.syfo.application -import no.nav.syfo.domain.ManglendeMedvirkningVurdering import no.nav.syfo.domain.Personident +import no.nav.syfo.domain.Vurdering interface IJournalforingService { suspend fun journalfor( personident: Personident, pdf: ByteArray, - vurdering: ManglendeMedvirkningVurdering, + vurdering: Vurdering, ): Int } diff --git a/src/main/kotlin/no/nav/syfo/application/IVurderingPdfService.kt b/src/main/kotlin/no/nav/syfo/application/IVurderingPdfService.kt index 56399bc..521aa12 100644 --- a/src/main/kotlin/no/nav/syfo/application/IVurderingPdfService.kt +++ b/src/main/kotlin/no/nav/syfo/application/IVurderingPdfService.kt @@ -1,10 +1,10 @@ package no.nav.syfo.application -import no.nav.syfo.domain.ManglendeMedvirkningVurdering +import no.nav.syfo.domain.Vurdering interface IVurderingPdfService { suspend fun createVurderingPdf( - vurdering: ManglendeMedvirkningVurdering, + vurdering: Vurdering, callId: String, ): ByteArray } diff --git a/src/main/kotlin/no/nav/syfo/application/IVurderingProducer.kt b/src/main/kotlin/no/nav/syfo/application/IVurderingProducer.kt index 2876529..cff9a8c 100644 --- a/src/main/kotlin/no/nav/syfo/application/IVurderingProducer.kt +++ b/src/main/kotlin/no/nav/syfo/application/IVurderingProducer.kt @@ -1,8 +1,8 @@ package no.nav.syfo.application -import no.nav.syfo.domain.ManglendeMedvirkningVurdering +import no.nav.syfo.domain.Vurdering interface IVurderingProducer { - fun publishVurdering(vurdering: ManglendeMedvirkningVurdering): Result + fun publishVurdering(vurdering: Vurdering): Result } diff --git a/src/main/kotlin/no/nav/syfo/application/IVurderingRepository.kt b/src/main/kotlin/no/nav/syfo/application/IVurderingRepository.kt index fee6dad..1910266 100644 --- a/src/main/kotlin/no/nav/syfo/application/IVurderingRepository.kt +++ b/src/main/kotlin/no/nav/syfo/application/IVurderingRepository.kt @@ -1,22 +1,22 @@ package no.nav.syfo.application -import no.nav.syfo.domain.ManglendeMedvirkningVurdering import no.nav.syfo.domain.Personident +import no.nav.syfo.domain.Vurdering import java.util.UUID interface IVurderingRepository { fun saveManglendeMedvirkningVurdering( - vurdering: ManglendeMedvirkningVurdering, + vurdering: Vurdering, vurderingPdf: ByteArray, - ): ManglendeMedvirkningVurdering + ): Vurdering - fun setJournalpostId(vurdering: ManglendeMedvirkningVurdering) + fun setJournalpostId(vurdering: Vurdering) - fun getNotJournalforteVurderinger(): List> + fun getNotJournalforteVurderinger(): List> fun updatePublishedAt(vurderingUuid: UUID) - fun getVurderinger(personident: Personident): List + fun getVurderinger(personident: Personident): List - fun getLatestVurderingForPersoner(personidenter: List): Map + fun getLatestVurderingForPersoner(personidenter: List): Map } diff --git a/src/main/kotlin/no/nav/syfo/application/VurderingService.kt b/src/main/kotlin/no/nav/syfo/application/VurderingService.kt index cfbca56..2637ad5 100644 --- a/src/main/kotlin/no/nav/syfo/application/VurderingService.kt +++ b/src/main/kotlin/no/nav/syfo/application/VurderingService.kt @@ -1,13 +1,11 @@ package no.nav.syfo.application +import no.nav.syfo.application.model.NewVurderingRequestDTO import no.nav.syfo.domain.* -import no.nav.syfo.domain.DocumentComponent -import no.nav.syfo.domain.ManglendeMedvirkningVurdering import no.nav.syfo.domain.Personident import no.nav.syfo.domain.Veilederident -import no.nav.syfo.domain.VurderingType +import no.nav.syfo.domain.Vurdering import org.slf4j.LoggerFactory -import java.time.LocalDate class VurderingService( private val journalforingService: IJournalforingService, @@ -17,22 +15,48 @@ class VurderingService( ) { suspend fun createNewVurdering( - personident: Personident, veilederident: Veilederident, - vurderingType: VurderingType, - begrunnelse: String, - document: List, - varselSvarfrist: LocalDate?, + newVurdering: NewVurderingRequestDTO, callId: String, - ): ManglendeMedvirkningVurdering { - val newVurdering = ManglendeMedvirkningVurdering.create( - personident = personident, - veilederident = veilederident, - begrunnelse = begrunnelse, - document = document, - varselSvarfrist = varselSvarfrist, - type = vurderingType, - ) + ): Vurdering { + val newVurdering = when (newVurdering) { + is NewVurderingRequestDTO.Forhandsvarsel -> + Vurdering.createForhandsvarsel( + personident = Personident(newVurdering.personident), + veilederident = veilederident, + begrunnelse = newVurdering.begrunnelse, + document = newVurdering.document, + varselSvarfrist = newVurdering.varselSvarfrist, + ) + is NewVurderingRequestDTO.Oppfylt -> + Vurdering.createOppfylt( + personident = Personident(newVurdering.personident), + veilederident = veilederident, + begrunnelse = newVurdering.begrunnelse, + document = newVurdering.document, + ) + is NewVurderingRequestDTO.Stans -> + Vurdering.createStans( + personident = Personident(newVurdering.personident), + veilederident = veilederident, + begrunnelse = newVurdering.begrunnelse, + document = newVurdering.document, + ) + is NewVurderingRequestDTO.IkkeAktuell -> + Vurdering.createIkkeAktuell( + personident = Personident(newVurdering.personident), + veilederident = veilederident, + begrunnelse = newVurdering.begrunnelse, + document = newVurdering.document, + ) + is NewVurderingRequestDTO.Unntak -> + Vurdering.createUnntak( + personident = Personident(newVurdering.personident), + veilederident = veilederident, + begrunnelse = newVurdering.begrunnelse, + document = newVurdering.document, + ) + } val pdf = vurderingPdfService.createVurderingPdf( vurdering = newVurdering, @@ -53,10 +77,10 @@ class VurderingService( fun getVurderinger( personident: Personident, - ): List = + ): List = vurderingRepository.getVurderinger(personident) - suspend fun journalforVurderinger(): List> { + suspend fun journalforVurderinger(): List> { val notJournalforteVurderinger = vurderingRepository.getNotJournalforteVurderinger() return notJournalforteVurderinger.map { (vurdering, pdf) -> @@ -78,7 +102,7 @@ class VurderingService( fun getLatestVurderingForPersoner( personidenter: List, - ): Map = + ): Map = vurderingRepository.getLatestVurderingForPersoner(personidenter) companion object { diff --git a/src/main/kotlin/no/nav/syfo/application/model/NewVurderingRequestDTO.kt b/src/main/kotlin/no/nav/syfo/application/model/NewVurderingRequestDTO.kt new file mode 100644 index 0000000..1fa0325 --- /dev/null +++ b/src/main/kotlin/no/nav/syfo/application/model/NewVurderingRequestDTO.kt @@ -0,0 +1,49 @@ +package no.nav.syfo.application.model + +import com.fasterxml.jackson.annotation.JsonTypeInfo +import com.fasterxml.jackson.annotation.JsonTypeName +import no.nav.syfo.domain.DocumentComponent +import java.time.LocalDate + +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "vurderingType") +sealed class NewVurderingRequestDTO { + abstract val personident: String + abstract val begrunnelse: String + abstract val document: List + + @JsonTypeName("FORHANDSVARSEL") + data class Forhandsvarsel( + override val personident: String, + override val begrunnelse: String, + override val document: List, + val varselSvarfrist: LocalDate, + ) : NewVurderingRequestDTO() + + @JsonTypeName("OPPFYLT") + data class Oppfylt( + override val personident: String, + override val begrunnelse: String, + override val document: List, + ) : NewVurderingRequestDTO() + + @JsonTypeName("STANS") + data class Stans( + override val personident: String, + override val begrunnelse: String, + override val document: List, + ) : NewVurderingRequestDTO() + + @JsonTypeName("IKKE_AKTUELL") + data class IkkeAktuell( + override val personident: String, + override val begrunnelse: String, + override val document: List, + ) : NewVurderingRequestDTO() + + @JsonTypeName("UNNTAK") + data class Unntak( + override val personident: String, + override val begrunnelse: String, + override val document: List, + ) : NewVurderingRequestDTO() +} diff --git a/src/main/kotlin/no/nav/syfo/domain/ManglendeMedvirkningVurdering.kt b/src/main/kotlin/no/nav/syfo/domain/Vurdering.kt similarity index 51% rename from src/main/kotlin/no/nav/syfo/domain/ManglendeMedvirkningVurdering.kt rename to src/main/kotlin/no/nav/syfo/domain/Vurdering.kt index 0314fd1..527a902 100644 --- a/src/main/kotlin/no/nav/syfo/domain/ManglendeMedvirkningVurdering.kt +++ b/src/main/kotlin/no/nav/syfo/domain/Vurdering.kt @@ -4,7 +4,7 @@ import java.time.LocalDate import java.time.OffsetDateTime import java.util.UUID -interface IManglendeMedvirkningsVurdering { +interface IVurdering { val uuid: UUID val personident: Personident val veilederident: Veilederident @@ -14,7 +14,7 @@ interface IManglendeMedvirkningsVurdering { val journalpostId: JournalpostId? } -sealed class ManglendeMedvirkningVurdering(val vurderingType: VurderingType) : IManglendeMedvirkningsVurdering { +sealed class Vurdering(val vurderingType: VurderingType) : IVurdering { data class Forhandsvarsel( override val uuid: UUID, @@ -25,7 +25,7 @@ sealed class ManglendeMedvirkningVurdering(val vurderingType: VurderingType) : I override val document: List, override val journalpostId: JournalpostId?, val varsel: Varsel, - ) : ManglendeMedvirkningVurdering(VurderingType.FORHANDSVARSEL) + ) : Vurdering(VurderingType.FORHANDSVARSEL) data class Oppfylt( override val uuid: UUID, @@ -35,7 +35,7 @@ sealed class ManglendeMedvirkningVurdering(val vurderingType: VurderingType) : I override val begrunnelse: String, override val document: List, override val journalpostId: JournalpostId?, - ) : ManglendeMedvirkningVurdering(VurderingType.OPPFYLT) + ) : Vurdering(VurderingType.OPPFYLT) data class Stans( override val uuid: UUID, @@ -45,7 +45,7 @@ sealed class ManglendeMedvirkningVurdering(val vurderingType: VurderingType) : I override val begrunnelse: String, override val document: List, override val journalpostId: JournalpostId?, - ) : ManglendeMedvirkningVurdering(VurderingType.STANS) + ) : Vurdering(VurderingType.STANS) data class IkkeAktuell( override val uuid: UUID, @@ -55,7 +55,7 @@ sealed class ManglendeMedvirkningVurdering(val vurderingType: VurderingType) : I override val begrunnelse: String, override val document: List, override val journalpostId: JournalpostId?, - ) : ManglendeMedvirkningVurdering(VurderingType.IKKE_AKTUELL) + ) : Vurdering(VurderingType.IKKE_AKTUELL) data class Unntak( override val uuid: UUID, @@ -65,9 +65,9 @@ sealed class ManglendeMedvirkningVurdering(val vurderingType: VurderingType) : I override val begrunnelse: String, override val document: List, override val journalpostId: JournalpostId?, - ) : ManglendeMedvirkningVurdering(VurderingType.UNNTAK) + ) : Vurdering(VurderingType.UNNTAK) - fun journalfor(journalpostId: JournalpostId): ManglendeMedvirkningVurdering = when (this) { + fun journalfor(journalpostId: JournalpostId): Vurdering = when (this) { is Forhandsvarsel -> this.copy(journalpostId = journalpostId) is Oppfylt -> this.copy(journalpostId = journalpostId) is Stans -> this.copy(journalpostId = journalpostId) @@ -76,67 +76,87 @@ sealed class ManglendeMedvirkningVurdering(val vurderingType: VurderingType) : I } companion object { - - fun create( + fun createForhandsvarsel( personident: Personident, veilederident: Veilederident, begrunnelse: String, document: List, varselSvarfrist: LocalDate?, - type: VurderingType, - ): ManglendeMedvirkningVurdering = - when (type) { - VurderingType.FORHANDSVARSEL -> Forhandsvarsel( - uuid = UUID.randomUUID(), - personident = personident, - veilederident = veilederident, - createdAt = OffsetDateTime.now(), - begrunnelse = begrunnelse, - document = document, - journalpostId = null, - varsel = Varsel( - uuid = UUID.randomUUID(), - createdAt = OffsetDateTime.now(), - svarfrist = varselSvarfrist!!, - ), - ) - VurderingType.IKKE_AKTUELL -> IkkeAktuell( - uuid = UUID.randomUUID(), - personident = personident, - veilederident = veilederident, - createdAt = OffsetDateTime.now(), - begrunnelse = begrunnelse, - document = document, - journalpostId = null, - ) - VurderingType.STANS -> Stans( - uuid = UUID.randomUUID(), - personident = personident, - veilederident = veilederident, - createdAt = OffsetDateTime.now(), - begrunnelse = begrunnelse, - document = document, - journalpostId = null, - ) - VurderingType.OPPFYLT -> Oppfylt( + ): Forhandsvarsel = + Forhandsvarsel( + uuid = UUID.randomUUID(), + personident = personident, + veilederident = veilederident, + createdAt = OffsetDateTime.now(), + begrunnelse = begrunnelse, + document = document, + journalpostId = null, + varsel = Varsel( uuid = UUID.randomUUID(), - personident = personident, - veilederident = veilederident, createdAt = OffsetDateTime.now(), - begrunnelse = begrunnelse, - document = document, - journalpostId = null, - ) - VurderingType.UNNTAK -> Unntak( - uuid = UUID.randomUUID(), - personident = personident, - veilederident = veilederident, - createdAt = OffsetDateTime.now(), - begrunnelse = begrunnelse, - document = document, - journalpostId = null, - ) - } + svarfrist = varselSvarfrist!!, + ), + ) + + fun createIkkeAktuell( + personident: Personident, + veilederident: Veilederident, + begrunnelse: String, + document: List, + ) = IkkeAktuell( + uuid = UUID.randomUUID(), + personident = personident, + veilederident = veilederident, + createdAt = OffsetDateTime.now(), + begrunnelse = begrunnelse, + document = document, + journalpostId = null, + ) + + fun createOppfylt( + personident: Personident, + veilederident: Veilederident, + begrunnelse: String, + document: List, + ) = Oppfylt( + uuid = UUID.randomUUID(), + personident = personident, + veilederident = veilederident, + createdAt = OffsetDateTime.now(), + begrunnelse = begrunnelse, + document = document, + journalpostId = null, + ) + + fun createStans( + personident: Personident, + veilederident: Veilederident, + begrunnelse: String, + document: List, + ) = Stans( + uuid = UUID.randomUUID(), + personident = personident, + veilederident = veilederident, + createdAt = OffsetDateTime.now(), + begrunnelse = begrunnelse, + document = document, + journalpostId = null, + ) + + fun createUnntak( + personident: Personident, + veilederident: Veilederident, + begrunnelse: String, + document: List, + ) = Unntak( + uuid = UUID.randomUUID(), + personident = personident, + veilederident = veilederident, + createdAt = OffsetDateTime.now(), + begrunnelse = begrunnelse, + document = document, + journalpostId = null, + ) } } diff --git a/src/main/kotlin/no/nav/syfo/infrastructure/clients/pdfgen/VurderingPdfService.kt b/src/main/kotlin/no/nav/syfo/infrastructure/clients/pdfgen/VurderingPdfService.kt index 2013967..81a2f30 100644 --- a/src/main/kotlin/no/nav/syfo/infrastructure/clients/pdfgen/VurderingPdfService.kt +++ b/src/main/kotlin/no/nav/syfo/infrastructure/clients/pdfgen/VurderingPdfService.kt @@ -1,7 +1,7 @@ package no.nav.syfo.infrastructure.clients.pdfgen import no.nav.syfo.application.IVurderingPdfService -import no.nav.syfo.domain.ManglendeMedvirkningVurdering +import no.nav.syfo.domain.Vurdering import no.nav.syfo.domain.VurderingType import no.nav.syfo.infrastructure.clients.pdl.PdlClient @@ -11,7 +11,7 @@ class VurderingPdfService( ) : IVurderingPdfService { override suspend fun createVurderingPdf( - vurdering: ManglendeMedvirkningVurdering, + vurdering: Vurdering, callId: String, ): ByteArray { val personNavn = pdlClient.getPerson(vurdering.personident).fullName diff --git a/src/main/kotlin/no/nav/syfo/infrastructure/database/repository/PVurdering.kt b/src/main/kotlin/no/nav/syfo/infrastructure/database/repository/PVurdering.kt index 0706595..3990f7a 100644 --- a/src/main/kotlin/no/nav/syfo/infrastructure/database/repository/PVurdering.kt +++ b/src/main/kotlin/no/nav/syfo/infrastructure/database/repository/PVurdering.kt @@ -1,11 +1,11 @@ package no.nav.syfo.infrastructure.database.repository +import no.nav.syfo.domain.DocumentComponent import no.nav.syfo.domain.JournalpostId -import no.nav.syfo.domain.ManglendeMedvirkningVurdering import no.nav.syfo.domain.Personident import no.nav.syfo.domain.Veilederident +import no.nav.syfo.domain.Vurdering import no.nav.syfo.domain.VurderingType -import no.nav.syfo.domain.DocumentComponent import java.time.OffsetDateTime import java.util.UUID @@ -25,7 +25,7 @@ data class PVurdering( fun toManglendeMedvirkningVurdering(pVarsel: PVarsel?) = when (type) { - VurderingType.FORHANDSVARSEL -> ManglendeMedvirkningVurdering.Forhandsvarsel( + VurderingType.FORHANDSVARSEL -> Vurdering.Forhandsvarsel( uuid = uuid, personident = personident, veilederident = veilederident, @@ -35,7 +35,7 @@ data class PVurdering( journalpostId = journalpostId, varsel = pVarsel!!.toVarsel(), ) - VurderingType.OPPFYLT -> ManglendeMedvirkningVurdering.Oppfylt( + VurderingType.OPPFYLT -> Vurdering.Oppfylt( uuid = uuid, personident = personident, veilederident = veilederident, @@ -44,7 +44,7 @@ data class PVurdering( document = document, journalpostId = journalpostId, ) - VurderingType.STANS -> ManglendeMedvirkningVurdering.Stans( + VurderingType.STANS -> Vurdering.Stans( uuid = uuid, personident = personident, veilederident = veilederident, @@ -53,7 +53,7 @@ data class PVurdering( document = document, journalpostId = journalpostId, ) - VurderingType.IKKE_AKTUELL -> ManglendeMedvirkningVurdering.IkkeAktuell( + VurderingType.IKKE_AKTUELL -> Vurdering.IkkeAktuell( uuid = uuid, personident = personident, veilederident = veilederident, @@ -62,7 +62,7 @@ data class PVurdering( document = document, journalpostId = journalpostId, ) - VurderingType.UNNTAK -> ManglendeMedvirkningVurdering.Unntak( + VurderingType.UNNTAK -> Vurdering.Unntak( uuid = uuid, personident = personident, veilederident = veilederident, diff --git a/src/main/kotlin/no/nav/syfo/infrastructure/database/repository/VurderingRepository.kt b/src/main/kotlin/no/nav/syfo/infrastructure/database/repository/VurderingRepository.kt index 8b68605..01507d5 100644 --- a/src/main/kotlin/no/nav/syfo/infrastructure/database/repository/VurderingRepository.kt +++ b/src/main/kotlin/no/nav/syfo/infrastructure/database/repository/VurderingRepository.kt @@ -4,10 +4,10 @@ import com.fasterxml.jackson.core.type.TypeReference import no.nav.syfo.application.IVurderingRepository import no.nav.syfo.domain.DocumentComponent import no.nav.syfo.domain.JournalpostId -import no.nav.syfo.domain.ManglendeMedvirkningVurdering import no.nav.syfo.domain.Personident import no.nav.syfo.domain.Varsel import no.nav.syfo.domain.Veilederident +import no.nav.syfo.domain.Vurdering import no.nav.syfo.domain.VurderingType import no.nav.syfo.infrastructure.database.DatabaseInterface import no.nav.syfo.infrastructure.database.toList @@ -26,13 +26,13 @@ class VurderingRepository(private val database: DatabaseInterface) : IVurderingR private val mapper = configuredJacksonMapper() override fun saveManglendeMedvirkningVurdering( - vurdering: ManglendeMedvirkningVurdering, + vurdering: Vurdering, vurderingPdf: ByteArray, - ): ManglendeMedvirkningVurdering = + ): Vurdering = database.connection.use { connection -> val pVurdering = connection.saveVurdering(vurdering) val pVarsel = when (vurdering) { - is ManglendeMedvirkningVurdering.Forhandsvarsel -> connection.saveVarsel(pVurdering.id, vurdering.varsel) + is Vurdering.Forhandsvarsel -> connection.saveVarsel(pVurdering.id, vurdering.varsel) else -> null } connection.saveVurderingPdf(pVurdering.id, pVurdering.createdAt, vurderingPdf) @@ -68,7 +68,7 @@ class VurderingRepository(private val database: DatabaseInterface) : IVurderingR connection.commit() } - override fun setJournalpostId(vurdering: ManglendeMedvirkningVurdering) = database.connection.use { connection -> + override fun setJournalpostId(vurdering: Vurdering) = database.connection.use { connection -> connection.prepareStatement(UPDATE_JOURNALPOST_ID).use { it.setString(1, vurdering.journalpostId?.value) it.setObject(2, nowUTC()) @@ -81,7 +81,7 @@ class VurderingRepository(private val database: DatabaseInterface) : IVurderingR connection.commit() } - override fun getNotJournalforteVurderinger(): List> = + override fun getNotJournalforteVurderinger(): List> = database.connection.use { connection -> connection.prepareStatement(GET_NOT_JOURNALFORT_VURDERING).use { it.executeQuery().toList { @@ -98,7 +98,7 @@ class VurderingRepository(private val database: DatabaseInterface) : IVurderingR override fun getLatestVurderingForPersoner( personidenter: List, - ): Map = + ): Map = database.connection.use { connection -> connection.prepareStatement(GET_VURDERINGER).use { preparedStatement -> preparedStatement.setString(1, personidenter.joinToString(",") { it.value }) @@ -123,7 +123,7 @@ class VurderingRepository(private val database: DatabaseInterface) : IVurderingR } } - private fun Connection.saveVurdering(vurdering: ManglendeMedvirkningVurdering): PVurdering { + private fun Connection.saveVurdering(vurdering: Vurdering): PVurdering { val pVurdering = this.prepareStatement(INSERT_INTO_VURDERING).use { it.setString(1, vurdering.uuid.toString()) it.setString(2, vurdering.personident.value) diff --git a/src/main/kotlin/no/nav/syfo/infrastructure/journalforing/JournalforingService.kt b/src/main/kotlin/no/nav/syfo/infrastructure/journalforing/JournalforingService.kt index 1b73a0a..ca3fbc2 100644 --- a/src/main/kotlin/no/nav/syfo/infrastructure/journalforing/JournalforingService.kt +++ b/src/main/kotlin/no/nav/syfo/infrastructure/journalforing/JournalforingService.kt @@ -13,7 +13,7 @@ class JournalforingService( override suspend fun journalfor( personident: Personident, pdf: ByteArray, - vurdering: ManglendeMedvirkningVurdering, + vurdering: Vurdering, ): Int { val navn = pdlClient.getPerson(personident).fullName val journalpostRequest = createJournalpostRequest( @@ -30,7 +30,7 @@ class JournalforingService( personIdent: Personident, navn: String, pdf: ByteArray, - vurdering: ManglendeMedvirkningVurdering, + vurdering: Vurdering, ): JournalpostRequest { val journalpostType = JournalpostType.fromVurderingType(vurdering.vurderingType) val avsenderMottaker = if (journalpostType == JournalpostType.NOTAT) { diff --git a/src/main/kotlin/no/nav/syfo/infrastructure/kafka/VurderingProducer.kt b/src/main/kotlin/no/nav/syfo/infrastructure/kafka/VurderingProducer.kt index 015b30b..d49610b 100644 --- a/src/main/kotlin/no/nav/syfo/infrastructure/kafka/VurderingProducer.kt +++ b/src/main/kotlin/no/nav/syfo/infrastructure/kafka/VurderingProducer.kt @@ -1,10 +1,10 @@ package no.nav.syfo.infrastructure.kafka import no.nav.syfo.application.IVurderingProducer -import no.nav.syfo.domain.ManglendeMedvirkningVurdering import no.nav.syfo.domain.Personident import no.nav.syfo.domain.Varsel import no.nav.syfo.domain.Veilederident +import no.nav.syfo.domain.Vurdering import no.nav.syfo.domain.VurderingType import no.nav.syfo.util.configuredJacksonMapper import org.apache.kafka.clients.producer.KafkaProducer @@ -16,7 +16,7 @@ import java.util.UUID class VurderingProducer(private val producer: KafkaProducer) : IVurderingProducer { - override fun publishVurdering(vurdering: ManglendeMedvirkningVurdering): Result = + override fun publishVurdering(vurdering: Vurdering): Result = try { producer.send( ProducerRecord( @@ -49,7 +49,7 @@ data class VurderingRecord( val vurderingType: VurderingTypeDTO, ) { companion object { - fun fromVurdering(vurdering: ManglendeMedvirkningVurdering): VurderingRecord = + fun fromVurdering(vurdering: Vurdering): VurderingRecord = VurderingRecord( uuid = vurdering.uuid, personident = vurdering.personident, @@ -57,7 +57,7 @@ data class VurderingRecord( createdAt = vurdering.createdAt, begrunnelse = vurdering.begrunnelse, varsel = when (vurdering) { - is ManglendeMedvirkningVurdering.Forhandsvarsel -> vurdering.varsel + is Vurdering.Forhandsvarsel -> vurdering.varsel else -> null }, vurderingType = VurderingTypeDTO( diff --git a/src/test/kotlin/no/nav/syfo/api/endpoints/ManglendeMedvirkningEndpointsSpek.kt b/src/test/kotlin/no/nav/syfo/api/endpoints/ManglendeMedvirkningEndpointsSpek.kt index f3716bd..8f1e7ca 100644 --- a/src/test/kotlin/no/nav/syfo/api/endpoints/ManglendeMedvirkningEndpointsSpek.kt +++ b/src/test/kotlin/no/nav/syfo/api/endpoints/ManglendeMedvirkningEndpointsSpek.kt @@ -16,6 +16,7 @@ import no.nav.syfo.api.model.* import no.nav.syfo.api.testApiModule import no.nav.syfo.api.testDeniedPersonAccess import no.nav.syfo.api.testMissingToken +import no.nav.syfo.application.model.NewVurderingRequestDTO import no.nav.syfo.domain.Personident import no.nav.syfo.domain.VurderingType import no.nav.syfo.generator.generateDocumentComponent @@ -63,9 +64,8 @@ object ManglendeMedvirkningEndpointsSpek : Spek({ val begrunnelse = "Dette er en begrunnelse for vurdering av 8-8" it("Successfully creates a new forhandsvarsel with varsel and pdf") { - val forhandsvarselRequestDTO = NewVurderingRequestDTO( + val forhandsvarselRequestDTO = NewVurderingRequestDTO.Forhandsvarsel( personident = ARBEIDSTAKER_PERSONIDENT.value, - vurderingType = VurderingType.FORHANDSVARSEL, begrunnelse = "Fin begrunnelse", document = generateDocumentComponent( fritekst = begrunnelse, @@ -73,6 +73,7 @@ object ManglendeMedvirkningEndpointsSpek : Spek({ ), varselSvarfrist = LocalDate.now().plusDays(14), ) + val json = objectMapper.writeValueAsString(forhandsvarselRequestDTO) with( handleRequest(HttpMethod.Post, "$urlVurderinger/vurderinger") { addHeader(HttpHeaders.ContentType, ContentType.Application.Json.toString()) @@ -83,7 +84,7 @@ object ManglendeMedvirkningEndpointsSpek : Spek({ response.status() shouldBeEqualTo HttpStatusCode.Created val responseDTO = objectMapper.readValue(response.content!!) responseDTO.personident shouldBeEqualTo forhandsvarselRequestDTO.personident - responseDTO.vurderingType shouldBeEqualTo forhandsvarselRequestDTO.vurderingType + responseDTO.vurderingType shouldBeEqualTo VurderingType.FORHANDSVARSEL responseDTO.begrunnelse shouldBeEqualTo forhandsvarselRequestDTO.begrunnelse responseDTO.veilederident shouldBeEqualTo VEILEDER_IDENT.value responseDTO.document shouldBeEqualTo forhandsvarselRequestDTO.document @@ -97,16 +98,15 @@ object ManglendeMedvirkningEndpointsSpek : Spek({ } it("Successfully creates an STANS vurdering with pdf") { - val stansVurdering = NewVurderingRequestDTO( + val stansVurdering = NewVurderingRequestDTO.Stans( personident = ARBEIDSTAKER_PERSONIDENT.value, - vurderingType = VurderingType.STANS, begrunnelse = "Fin begrunnelse", document = generateDocumentComponent( fritekst = begrunnelse, header = "Stans" ), - varselSvarfrist = null, ) + val json = objectMapper.writeValueAsString(stansVurdering) with( handleRequest(HttpMethod.Post, "$urlVurderinger/vurderinger") { addHeader(HttpHeaders.ContentType, ContentType.Application.Json.toString()) @@ -117,7 +117,7 @@ object ManglendeMedvirkningEndpointsSpek : Spek({ response.status() shouldBeEqualTo HttpStatusCode.Created val responseDTO = objectMapper.readValue(response.content!!) responseDTO.personident shouldBeEqualTo stansVurdering.personident - responseDTO.vurderingType shouldBeEqualTo stansVurdering.vurderingType + responseDTO.vurderingType shouldBeEqualTo VurderingType.STANS responseDTO.begrunnelse shouldBeEqualTo stansVurdering.begrunnelse responseDTO.veilederident shouldBeEqualTo VEILEDER_IDENT.value responseDTO.document shouldBeEqualTo stansVurdering.document @@ -131,15 +131,13 @@ object ManglendeMedvirkningEndpointsSpek : Spek({ } it("Successfully creates an OPPFYLT vurdering with pdf") { - val oppfyltVurdering = NewVurderingRequestDTO( + val oppfyltVurdering = NewVurderingRequestDTO.Oppfylt( personident = ARBEIDSTAKER_PERSONIDENT.value, - vurderingType = VurderingType.OPPFYLT, begrunnelse = "Fin begrunnelse", document = generateDocumentComponent( fritekst = begrunnelse, header = "Oppfylt" ), - varselSvarfrist = null, ) with( handleRequest(HttpMethod.Post, "$urlVurderinger/vurderinger") { @@ -151,7 +149,7 @@ object ManglendeMedvirkningEndpointsSpek : Spek({ response.status() shouldBeEqualTo HttpStatusCode.Created val responseDTO = objectMapper.readValue(response.content!!) responseDTO.personident shouldBeEqualTo oppfyltVurdering.personident - responseDTO.vurderingType shouldBeEqualTo oppfyltVurdering.vurderingType + responseDTO.vurderingType shouldBeEqualTo VurderingType.OPPFYLT responseDTO.begrunnelse shouldBeEqualTo oppfyltVurdering.begrunnelse responseDTO.veilederident shouldBeEqualTo VEILEDER_IDENT.value responseDTO.document shouldBeEqualTo oppfyltVurdering.document @@ -165,15 +163,13 @@ object ManglendeMedvirkningEndpointsSpek : Spek({ } it("Successfully creates an UNNTAK vurdering with pdf") { - val unntakVurdering = NewVurderingRequestDTO( + val unntakVurdering = NewVurderingRequestDTO.Unntak( personident = ARBEIDSTAKER_PERSONIDENT.value, - vurderingType = VurderingType.UNNTAK, begrunnelse = "Unntak fordi...", document = generateDocumentComponent( fritekst = begrunnelse, header = "Unntak" ), - varselSvarfrist = null, ) with( handleRequest(HttpMethod.Post, "$urlVurderinger/vurderinger") { @@ -185,7 +181,7 @@ object ManglendeMedvirkningEndpointsSpek : Spek({ response.status() shouldBeEqualTo HttpStatusCode.Created val responseDTO = objectMapper.readValue(response.content!!) responseDTO.personident shouldBeEqualTo unntakVurdering.personident - responseDTO.vurderingType shouldBeEqualTo unntakVurdering.vurderingType + responseDTO.vurderingType shouldBeEqualTo VurderingType.UNNTAK responseDTO.begrunnelse shouldBeEqualTo unntakVurdering.begrunnelse responseDTO.veilederident shouldBeEqualTo VEILEDER_IDENT.value responseDTO.document shouldBeEqualTo unntakVurdering.document @@ -199,15 +195,13 @@ object ManglendeMedvirkningEndpointsSpek : Spek({ } it("Successfully creates an IKKE AKTUELL vurdering with pdf") { - val ikkeAktuellVurdering = NewVurderingRequestDTO( + val ikkeAktuellVurdering = NewVurderingRequestDTO.IkkeAktuell( personident = ARBEIDSTAKER_PERSONIDENT.value, - vurderingType = VurderingType.IKKE_AKTUELL, begrunnelse = "Fin begrunnelse", document = generateDocumentComponent( fritekst = begrunnelse, header = "Oppfylt" ), - varselSvarfrist = null, ) with( handleRequest(HttpMethod.Post, "$urlVurderinger/vurderinger") { @@ -219,7 +213,7 @@ object ManglendeMedvirkningEndpointsSpek : Spek({ response.status() shouldBeEqualTo HttpStatusCode.Created val responseDTO = objectMapper.readValue(response.content!!) responseDTO.personident shouldBeEqualTo ikkeAktuellVurdering.personident - responseDTO.vurderingType shouldBeEqualTo ikkeAktuellVurdering.vurderingType + responseDTO.vurderingType shouldBeEqualTo VurderingType.IKKE_AKTUELL responseDTO.begrunnelse shouldBeEqualTo ikkeAktuellVurdering.begrunnelse responseDTO.veilederident shouldBeEqualTo VEILEDER_IDENT.value responseDTO.document shouldBeEqualTo ikkeAktuellVurdering.document @@ -233,9 +227,8 @@ object ManglendeMedvirkningEndpointsSpek : Spek({ } it("Fails to create a new forhandsvarsel when document is missing") { - val forhandsvarselRequestDTO = NewVurderingRequestDTO( + val forhandsvarselRequestDTO = NewVurderingRequestDTO.Forhandsvarsel( personident = ARBEIDSTAKER_PERSONIDENT.value, - vurderingType = VurderingType.FORHANDSVARSEL, begrunnelse = "Fin begrunnelse", document = emptyList(), varselSvarfrist = LocalDate.now().plusDays(14), @@ -255,9 +248,8 @@ object ManglendeMedvirkningEndpointsSpek : Spek({ testMissingToken("$urlVurderinger/vurderinger", HttpMethod.Post) } it("returns status Forbidden if denied access to person") { - val forhandsvarselRequestDTO = NewVurderingRequestDTO( + val forhandsvarselRequestDTO = NewVurderingRequestDTO.Forhandsvarsel( personident = ARBEIDSTAKER_PERSONIDENT_VEILEDER_NO_ACCESS.value, - vurderingType = VurderingType.FORHANDSVARSEL, begrunnelse = "Fin begrunnelse", document = emptyList(), varselSvarfrist = LocalDate.now().plusDays(14), diff --git a/src/test/kotlin/no/nav/syfo/application/VarselServiceSpek.kt b/src/test/kotlin/no/nav/syfo/application/VarselServiceSpek.kt index 98055cd..a148c89 100644 --- a/src/test/kotlin/no/nav/syfo/application/VarselServiceSpek.kt +++ b/src/test/kotlin/no/nav/syfo/application/VarselServiceSpek.kt @@ -4,8 +4,8 @@ import io.mockk.* import no.nav.syfo.ExternalMockEnvironment import no.nav.syfo.UserConstants import no.nav.syfo.domain.JournalpostId -import no.nav.syfo.domain.ManglendeMedvirkningVurdering import no.nav.syfo.domain.Varsel +import no.nav.syfo.domain.Vurdering import no.nav.syfo.domain.VurderingType import no.nav.syfo.generator.generateVurdering import no.nav.syfo.infrastructure.database.dropData @@ -55,7 +55,7 @@ class VarselServiceSpek : Spek({ val vurderingForhandsvarsel = generateVurdering( type = VurderingType.FORHANDSVARSEL, - ) as ManglendeMedvirkningVurdering.Forhandsvarsel + ) as Vurdering.Forhandsvarsel fun createUnpublishedVarsel(): Varsel { vurderingRepository.saveManglendeMedvirkningVurdering( diff --git a/src/test/kotlin/no/nav/syfo/application/VurderingServiceSpek.kt b/src/test/kotlin/no/nav/syfo/application/VurderingServiceSpek.kt index 935ae33..c30741a 100644 --- a/src/test/kotlin/no/nav/syfo/application/VurderingServiceSpek.kt +++ b/src/test/kotlin/no/nav/syfo/application/VurderingServiceSpek.kt @@ -9,8 +9,9 @@ import no.nav.syfo.UserConstants.PDF_FORHANDSVARSEL import no.nav.syfo.UserConstants.PDF_STANS import no.nav.syfo.UserConstants.PDF_VURDERING import no.nav.syfo.UserConstants.VEILEDER_IDENT +import no.nav.syfo.application.model.NewVurderingRequestDTO import no.nav.syfo.domain.JournalpostId -import no.nav.syfo.domain.ManglendeMedvirkningVurdering.Forhandsvarsel +import no.nav.syfo.domain.Vurdering.Forhandsvarsel import no.nav.syfo.domain.VurderingType import no.nav.syfo.generator.generateVurdering import no.nav.syfo.infrastructure.clients.pdfgen.VurderingPdfService @@ -76,12 +77,13 @@ class VurderingServiceSpek : Spek({ it("Lagrer vurdering") { val savedVurdering = runBlocking { vurderingService.createNewVurdering( - personident = ARBEIDSTAKER_PERSONIDENT, veilederident = VEILEDER_IDENT, - vurderingType = VurderingType.FORHANDSVARSEL, - begrunnelse = "Begrunnelse", - document = emptyList(), - varselSvarfrist = LocalDate.now().plusDays(14), + newVurdering = NewVurderingRequestDTO.Forhandsvarsel( + personident = ARBEIDSTAKER_PERSONIDENT.value, + begrunnelse = "Begrunnelse", + document = emptyList(), + varselSvarfrist = LocalDate.now().plusDays(14), + ), callId = "callId", ) } @@ -106,12 +108,13 @@ class VurderingServiceSpek : Spek({ val savedVurdering = runBlocking { vurderingService.createNewVurdering( - personident = ARBEIDSTAKER_PERSONIDENT, veilederident = VEILEDER_IDENT, - vurderingType = VurderingType.FORHANDSVARSEL, - begrunnelse = "Begrunnelse", - document = emptyList(), - varselSvarfrist = LocalDate.now().plusDays(14), + newVurdering = NewVurderingRequestDTO.Forhandsvarsel( + personident = ARBEIDSTAKER_PERSONIDENT.value, + begrunnelse = "Begrunnelse", + document = emptyList(), + varselSvarfrist = LocalDate.now().plusDays(14), + ), callId = "callId", ) } diff --git a/src/test/kotlin/no/nav/syfo/generator/VurderingGenerator.kt b/src/test/kotlin/no/nav/syfo/generator/VurderingGenerator.kt index 8078b0a..76a1ad2 100644 --- a/src/test/kotlin/no/nav/syfo/generator/VurderingGenerator.kt +++ b/src/test/kotlin/no/nav/syfo/generator/VurderingGenerator.kt @@ -13,7 +13,7 @@ fun generateVurdering( type: VurderingType, createdAt: OffsetDateTime = OffsetDateTime.now(), ) = when (type) { - VurderingType.FORHANDSVARSEL -> ManglendeMedvirkningVurdering.Forhandsvarsel( + VurderingType.FORHANDSVARSEL -> Vurdering.Forhandsvarsel( uuid = UUID.randomUUID(), createdAt = createdAt, personident = personident, @@ -27,7 +27,7 @@ fun generateVurdering( svarfrist = LocalDate.now().plusWeeks(3), ), ) - VurderingType.OPPFYLT -> ManglendeMedvirkningVurdering.Oppfylt( + VurderingType.OPPFYLT -> Vurdering.Oppfylt( uuid = UUID.randomUUID(), createdAt = createdAt, personident = personident, @@ -36,7 +36,7 @@ fun generateVurdering( document = document, journalpostId = null, ) - VurderingType.IKKE_AKTUELL -> ManglendeMedvirkningVurdering.IkkeAktuell( + VurderingType.IKKE_AKTUELL -> Vurdering.IkkeAktuell( uuid = UUID.randomUUID(), createdAt = createdAt, personident = personident, @@ -45,7 +45,7 @@ fun generateVurdering( document = document, journalpostId = null, ) - VurderingType.STANS -> ManglendeMedvirkningVurdering.Stans( + VurderingType.STANS -> Vurdering.Stans( uuid = UUID.randomUUID(), createdAt = createdAt, personident = personident, @@ -54,7 +54,7 @@ fun generateVurdering( document = document, journalpostId = null, ) - VurderingType.UNNTAK -> ManglendeMedvirkningVurdering.Unntak( + VurderingType.UNNTAK -> Vurdering.Unntak( uuid = UUID.randomUUID(), createdAt = createdAt, personident = personident, diff --git a/src/test/kotlin/no/nav/syfo/infrastructure/database/VurderingRepositorySpek.kt b/src/test/kotlin/no/nav/syfo/infrastructure/database/VurderingRepositorySpek.kt index 80f38ad..e30cf24 100644 --- a/src/test/kotlin/no/nav/syfo/infrastructure/database/VurderingRepositorySpek.kt +++ b/src/test/kotlin/no/nav/syfo/infrastructure/database/VurderingRepositorySpek.kt @@ -4,8 +4,8 @@ import io.ktor.server.testing.TestApplicationEngine import no.nav.syfo.ExternalMockEnvironment import no.nav.syfo.UserConstants.ARBEIDSTAKER_PERSONIDENT import no.nav.syfo.UserConstants.VEILEDER_IDENT -import no.nav.syfo.domain.ManglendeMedvirkningVurdering import no.nav.syfo.domain.Varsel +import no.nav.syfo.domain.Vurdering import no.nav.syfo.infrastructure.database.repository.VurderingRepository import no.nav.syfo.util.nowUTC import org.amshove.kluent.shouldBeEqualTo @@ -27,7 +27,7 @@ class VurderingRepositorySpek : Spek({ describe("saveVurdering") { it("saves a vurdering") { - val vurdering = ManglendeMedvirkningVurdering.Oppfylt( + val vurdering = Vurdering.Oppfylt( uuid = UUID.randomUUID(), personident = ARBEIDSTAKER_PERSONIDENT, veilederident = VEILEDER_IDENT, @@ -46,7 +46,7 @@ class VurderingRepositorySpek : Spek({ it("saves a vurdering with a varsel") { val now = nowUTC() - val vurdering = ManglendeMedvirkningVurdering.Forhandsvarsel( + val vurdering = Vurdering.Forhandsvarsel( uuid = UUID.randomUUID(), personident = ARBEIDSTAKER_PERSONIDENT, veilederident = VEILEDER_IDENT, @@ -62,7 +62,7 @@ class VurderingRepositorySpek : Spek({ ) val savedVurdering = vurderingRepository.saveManglendeMedvirkningVurdering(vurdering, pdf) when (savedVurdering) { - is ManglendeMedvirkningVurdering.Forhandsvarsel -> { + is Vurdering.Forhandsvarsel -> { savedVurdering.personident shouldBeEqualTo vurdering.personident savedVurdering.veilederident shouldBeEqualTo vurdering.veilederident savedVurdering.begrunnelse shouldBeEqualTo vurdering.begrunnelse