Skip to content

Commit

Permalink
IS-2651: Preparatory refactoring (#33)
Browse files Browse the repository at this point in the history
  • Loading branch information
vetlesolgaard authored Oct 3, 2024
1 parent dcf1f0b commit 55b9888
Show file tree
Hide file tree
Showing 20 changed files with 257 additions and 186 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -47,11 +48,10 @@ fun Route.registerManglendeMedvirkningEndpoints(

post("/vurderinger") {
val requestDTO = call.receive<NewVurderingRequestDTO>()
val personident = Personident(requestDTO.personident)

validateVeilederAccess(
action = "POST /vurderinger",
personident = personident,
personident = Personident(requestDTO.personident),
veilederTilgangskontrollClient = veilederTilgangskontrollClient,
) {
val callId = call.getCallId()
Expand All @@ -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,
)

Expand Down
13 changes: 0 additions & 13 deletions src/main/kotlin/no/nav/syfo/api/model/NewVurderingRequestDTO.kt

This file was deleted.

4 changes: 2 additions & 2 deletions src/main/kotlin/no/nav/syfo/api/model/VurderingResponseDTO.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ 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(),
vurderingType = vurdering.vurderingType,
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,
)
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -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
}
Original file line number Diff line number Diff line change
@@ -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
}
4 changes: 2 additions & 2 deletions src/main/kotlin/no/nav/syfo/application/IVurderingProducer.kt
Original file line number Diff line number Diff line change
@@ -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<ManglendeMedvirkningVurdering>
fun publishVurdering(vurdering: Vurdering): Result<Vurdering>
}
14 changes: 7 additions & 7 deletions src/main/kotlin/no/nav/syfo/application/IVurderingRepository.kt
Original file line number Diff line number Diff line change
@@ -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<Pair<ManglendeMedvirkningVurdering, ByteArray>>
fun getNotJournalforteVurderinger(): List<Pair<Vurdering, ByteArray>>

fun updatePublishedAt(vurderingUuid: UUID)

fun getVurderinger(personident: Personident): List<ManglendeMedvirkningVurdering>
fun getVurderinger(personident: Personident): List<Vurdering>

fun getLatestVurderingForPersoner(personidenter: List<Personident>): Map<Personident, ManglendeMedvirkningVurdering>
fun getLatestVurderingForPersoner(personidenter: List<Personident>): Map<Personident, Vurdering>
}
66 changes: 45 additions & 21 deletions src/main/kotlin/no/nav/syfo/application/VurderingService.kt
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -17,22 +15,48 @@ class VurderingService(
) {

suspend fun createNewVurdering(
personident: Personident,
veilederident: Veilederident,
vurderingType: VurderingType,
begrunnelse: String,
document: List<DocumentComponent>,
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,
Expand All @@ -53,10 +77,10 @@ class VurderingService(

fun getVurderinger(
personident: Personident,
): List<ManglendeMedvirkningVurdering> =
): List<Vurdering> =
vurderingRepository.getVurderinger(personident)

suspend fun journalforVurderinger(): List<Result<ManglendeMedvirkningVurdering>> {
suspend fun journalforVurderinger(): List<Result<Vurdering>> {
val notJournalforteVurderinger = vurderingRepository.getNotJournalforteVurderinger()

return notJournalforteVurderinger.map { (vurdering, pdf) ->
Expand All @@ -78,7 +102,7 @@ class VurderingService(

fun getLatestVurderingForPersoner(
personidenter: List<Personident>,
): Map<Personident, ManglendeMedvirkningVurdering> =
): Map<Personident, Vurdering> =
vurderingRepository.getLatestVurderingForPersoner(personidenter)

companion object {
Expand Down
Original file line number Diff line number Diff line change
@@ -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<DocumentComponent>

@JsonTypeName("FORHANDSVARSEL")
data class Forhandsvarsel(
override val personident: String,
override val begrunnelse: String,
override val document: List<DocumentComponent>,
val varselSvarfrist: LocalDate,
) : NewVurderingRequestDTO()

@JsonTypeName("OPPFYLT")
data class Oppfylt(
override val personident: String,
override val begrunnelse: String,
override val document: List<DocumentComponent>,
) : NewVurderingRequestDTO()

@JsonTypeName("STANS")
data class Stans(
override val personident: String,
override val begrunnelse: String,
override val document: List<DocumentComponent>,
) : NewVurderingRequestDTO()

@JsonTypeName("IKKE_AKTUELL")
data class IkkeAktuell(
override val personident: String,
override val begrunnelse: String,
override val document: List<DocumentComponent>,
) : NewVurderingRequestDTO()

@JsonTypeName("UNNTAK")
data class Unntak(
override val personident: String,
override val begrunnelse: String,
override val document: List<DocumentComponent>,
) : NewVurderingRequestDTO()
}
Loading

0 comments on commit 55b9888

Please sign in to comment.