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 e90831f..51c340c 100644 --- a/src/main/kotlin/no/nav/syfo/api/model/VurderingResponseDTO.kt +++ b/src/main/kotlin/no/nav/syfo/api/model/VurderingResponseDTO.kt @@ -13,6 +13,7 @@ data class VurderingResponseDTO private constructor( val vurderingType: VurderingType, val veilederident: String, val begrunnelse: String, + val stansdato: LocalDate?, val document: List, val varsel: VarselDTO?, ) { @@ -24,6 +25,7 @@ data class VurderingResponseDTO private constructor( vurderingType = vurdering.vurderingType, veilederident = vurdering.veilederident.value, begrunnelse = vurdering.begrunnelse, + stansdato = if (vurdering is Vurdering.Stans) vurdering.stansdato else null, document = vurdering.document, varsel = if (vurdering is Vurdering.Forhandsvarsel) VarselDTO.fromVarsel(vurdering.varsel) else null, ) diff --git a/src/main/kotlin/no/nav/syfo/application/VurderingService.kt b/src/main/kotlin/no/nav/syfo/application/VurderingService.kt index 2637ad5..cbf81b5 100644 --- a/src/main/kotlin/no/nav/syfo/application/VurderingService.kt +++ b/src/main/kotlin/no/nav/syfo/application/VurderingService.kt @@ -40,6 +40,7 @@ class VurderingService( personident = Personident(newVurdering.personident), veilederident = veilederident, begrunnelse = newVurdering.begrunnelse, + stansdato = newVurdering.stansdato, document = newVurdering.document, ) is NewVurderingRequestDTO.IkkeAktuell -> diff --git a/src/main/kotlin/no/nav/syfo/application/model/NewVurderingRequestDTO.kt b/src/main/kotlin/no/nav/syfo/application/model/NewVurderingRequestDTO.kt index 1fa0325..7e3684b 100644 --- a/src/main/kotlin/no/nav/syfo/application/model/NewVurderingRequestDTO.kt +++ b/src/main/kotlin/no/nav/syfo/application/model/NewVurderingRequestDTO.kt @@ -31,6 +31,7 @@ sealed class NewVurderingRequestDTO { override val personident: String, override val begrunnelse: String, override val document: List, + val stansdato: LocalDate, ) : NewVurderingRequestDTO() @JsonTypeName("IKKE_AKTUELL") diff --git a/src/main/kotlin/no/nav/syfo/domain/Vurdering.kt b/src/main/kotlin/no/nav/syfo/domain/Vurdering.kt index 527a902..7be16dc 100644 --- a/src/main/kotlin/no/nav/syfo/domain/Vurdering.kt +++ b/src/main/kotlin/no/nav/syfo/domain/Vurdering.kt @@ -45,6 +45,7 @@ sealed class Vurdering(val vurderingType: VurderingType) : IVurdering { override val begrunnelse: String, override val document: List, override val journalpostId: JournalpostId?, + val stansdato: LocalDate, ) : Vurdering(VurderingType.STANS) data class IkkeAktuell( @@ -132,6 +133,7 @@ sealed class Vurdering(val vurderingType: VurderingType) : IVurdering { personident: Personident, veilederident: Veilederident, begrunnelse: String, + stansdato: LocalDate, document: List, ) = Stans( uuid = UUID.randomUUID(), @@ -139,6 +141,7 @@ sealed class Vurdering(val vurderingType: VurderingType) : IVurdering { veilederident = veilederident, createdAt = OffsetDateTime.now(), begrunnelse = begrunnelse, + stansdato = stansdato, document = document, journalpostId = null, ) 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 3990f7a..09b104a 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 @@ -6,6 +6,7 @@ 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 java.time.LocalDate import java.time.OffsetDateTime import java.util.UUID @@ -18,6 +19,7 @@ data class PVurdering( val veilederident: Veilederident, val type: VurderingType, val begrunnelse: String, + val stansdato: LocalDate?, val document: List, val journalpostId: JournalpostId?, val publishedAt: OffsetDateTime?, @@ -50,6 +52,7 @@ data class PVurdering( veilederident = veilederident, createdAt = createdAt, begrunnelse = begrunnelse, + stansdato = stansdato!!, document = document, journalpostId = journalpostId, ) 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 01507d5..bd4c215 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 @@ -135,6 +135,10 @@ class VurderingRepository(private val database: DatabaseInterface) : IVurderingR it.setObject(8, mapper.writeValueAsString(vurdering.document)) it.setNull(9, Types.VARCHAR) it.setNull(10, Types.TIMESTAMP_WITH_TIMEZONE) + when (vurdering) { + is Vurdering.Stans -> it.setDate(11, Date.valueOf(vurdering.stansdato)) + else -> it.setNull(11, Types.DATE) + } it.executeQuery().toList { toPVurdering() }.firstOrNull() } if (pVurdering == null) { @@ -196,8 +200,9 @@ class VurderingRepository(private val database: DatabaseInterface) : IVurderingR begrunnelse, document, journalpost_id, - published_at - ) values (DEFAULT, ?, ?, ?, ?, ?, ?, ?, ?::jsonb, ?, ?) + published_at, + stansdato + ) values (DEFAULT, ?, ?, ?, ?, ?, ?, ?, ?::jsonb, ?, ?, ?) RETURNING * """ @@ -286,6 +291,7 @@ internal fun ResultSet.toPVurdering(): PVurdering = veilederident = Veilederident(getString("veilederident")), type = VurderingType.valueOf(getString("type")), begrunnelse = getString("begrunnelse"), + stansdato = getDate("stansdato")?.toLocalDate(), document = configuredJacksonMapper().readValue( getString("document"), object : TypeReference>() {} 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 8f1e7ca..3dfb3f7 100644 --- a/src/test/kotlin/no/nav/syfo/api/endpoints/ManglendeMedvirkningEndpointsSpek.kt +++ b/src/test/kotlin/no/nav/syfo/api/endpoints/ManglendeMedvirkningEndpointsSpek.kt @@ -101,12 +101,12 @@ object ManglendeMedvirkningEndpointsSpek : Spek({ val stansVurdering = NewVurderingRequestDTO.Stans( personident = ARBEIDSTAKER_PERSONIDENT.value, begrunnelse = "Fin begrunnelse", + stansdato = LocalDate.now().plusDays(5), document = generateDocumentComponent( fritekst = begrunnelse, header = "Stans" ), ) - val json = objectMapper.writeValueAsString(stansVurdering) with( handleRequest(HttpMethod.Post, "$urlVurderinger/vurderinger") { addHeader(HttpHeaders.ContentType, ContentType.Application.Json.toString()) @@ -119,6 +119,7 @@ object ManglendeMedvirkningEndpointsSpek : Spek({ responseDTO.personident shouldBeEqualTo stansVurdering.personident responseDTO.vurderingType shouldBeEqualTo VurderingType.STANS responseDTO.begrunnelse shouldBeEqualTo stansVurdering.begrunnelse + responseDTO.stansdato shouldBeEqualTo stansVurdering.stansdato responseDTO.veilederident shouldBeEqualTo VEILEDER_IDENT.value responseDTO.document shouldBeEqualTo stansVurdering.document responseDTO.varsel?.svarfrist shouldBeEqualTo null diff --git a/src/test/kotlin/no/nav/syfo/generator/VurderingGenerator.kt b/src/test/kotlin/no/nav/syfo/generator/VurderingGenerator.kt index 76a1ad2..ede07a9 100644 --- a/src/test/kotlin/no/nav/syfo/generator/VurderingGenerator.kt +++ b/src/test/kotlin/no/nav/syfo/generator/VurderingGenerator.kt @@ -51,6 +51,7 @@ fun generateVurdering( personident = personident, veilederident = UserConstants.VEILEDER_IDENT, begrunnelse = begrunnelse, + stansdato = LocalDate.now().plusDays(5), document = document, journalpostId = null, ) 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 e30cf24..3d5f60d 100644 --- a/src/test/kotlin/no/nav/syfo/infrastructure/database/VurderingRepositorySpek.kt +++ b/src/test/kotlin/no/nav/syfo/infrastructure/database/VurderingRepositorySpek.kt @@ -44,6 +44,32 @@ class VurderingRepositorySpek : Spek({ savedVurdering.journalpostId shouldBeEqualTo vurdering.journalpostId } + it("saves a vurdering of type STANS") { + val vurdering = Vurdering.Stans( + uuid = UUID.randomUUID(), + personident = ARBEIDSTAKER_PERSONIDENT, + veilederident = VEILEDER_IDENT, + createdAt = nowUTC(), + begrunnelse = "Begrunnelse", + stansdato = nowUTC().toLocalDate(), + document = emptyList(), + journalpostId = null, + ) + val savedVurdering = vurderingRepository.saveManglendeMedvirkningVurdering(vurdering, pdf) + when (savedVurdering) { + is Vurdering.Stans -> { + savedVurdering.personident shouldBeEqualTo vurdering.personident + savedVurdering.veilederident shouldBeEqualTo vurdering.veilederident + savedVurdering.begrunnelse shouldBeEqualTo vurdering.begrunnelse + savedVurdering.stansdato shouldBeEqualTo vurdering.stansdato + savedVurdering.document shouldBeEqualTo vurdering.document + savedVurdering.journalpostId shouldBeEqualTo vurdering.journalpostId + } + else -> + throw IllegalStateException("Expected Vurdering.Stans, got $savedVurdering") + } + } + it("saves a vurdering with a varsel") { val now = nowUTC() val vurdering = Vurdering.Forhandsvarsel(