Skip to content

Commit

Permalink
IS-2651: Preparatory refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
vetlesolgaard committed Oct 2, 2024
1 parent c5da4ee commit 1531b3f
Show file tree
Hide file tree
Showing 6 changed files with 188 additions and 118 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,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 +59,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
52 changes: 44 additions & 8 deletions src/main/kotlin/no/nav/syfo/api/model/NewVurderingRequestDTO.kt
Original file line number Diff line number Diff line change
@@ -1,13 +1,49 @@
package no.nav.syfo.api.model

import no.nav.syfo.domain.VurderingType
import com.fasterxml.jackson.annotation.JsonTypeInfo
import com.fasterxml.jackson.annotation.JsonTypeName
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<DocumentComponent>,
val varselSvarfrist: LocalDate?,
)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
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("ikkeAktuell")
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()
}
56 changes: 40 additions & 16 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.api.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 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,
)
val newVurdering = when (newVurdering) {
is NewVurderingRequestDTO.Forhandsvarsel ->
ManglendeMedvirkningVurdering.createForhandsvarsel(
personident = Personident(newVurdering.personident),
veilederident = veilederident,
begrunnelse = newVurdering.begrunnelse,
document = newVurdering.document,
varselSvarfrist = newVurdering.varselSvarfrist,
)
is NewVurderingRequestDTO.Oppfylt ->
ManglendeMedvirkningVurdering.createOppfylt(
personident = Personident(newVurdering.personident),
veilederident = veilederident,
begrunnelse = newVurdering.begrunnelse,
document = newVurdering.document,
)
is NewVurderingRequestDTO.Stans ->
ManglendeMedvirkningVurdering.createStans(
personident = Personident(newVurdering.personident),
veilederident = veilederident,
begrunnelse = newVurdering.begrunnelse,
document = newVurdering.document,
)
is NewVurderingRequestDTO.IkkeAktuell ->
ManglendeMedvirkningVurdering.createIkkeAktuell(
personident = Personident(newVurdering.personident),
veilederident = veilederident,
begrunnelse = newVurdering.begrunnelse,
document = newVurdering.document,
)
is NewVurderingRequestDTO.Unntak ->
ManglendeMedvirkningVurdering.createUnntak(
personident = Personident(newVurdering.personident),
veilederident = veilederident,
begrunnelse = newVurdering.begrunnelse,
document = newVurdering.document,
)
}

val pdf = vurderingPdfService.createVurderingPdf(
vurdering = newVurdering,
Expand Down
128 changes: 74 additions & 54 deletions src/main/kotlin/no/nav/syfo/domain/ManglendeMedvirkningVurdering.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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<DocumentComponent>,
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<DocumentComponent>,
) = 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<DocumentComponent>,
) = 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<DocumentComponent>,
) = 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<DocumentComponent>,
) = Unntak(
uuid = UUID.randomUUID(),
personident = personident,
veilederident = veilederident,
createdAt = OffsetDateTime.now(),
begrunnelse = begrunnelse,
document = document,
journalpostId = null,
)
}
}

Expand Down
Loading

0 comments on commit 1531b3f

Please sign in to comment.