-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
kan forhåndsvise vedtaksbrev for tilbakekrevingsbehandling. Sender pe…
…r nå kun personalia til pdfgen
- Loading branch information
Showing
17 changed files
with
300 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
39 changes: 39 additions & 0 deletions
39
...v/su/se/bakover/domain/brev/jsonRequest/VedtaksbrevTilbakekrevingsbehandlingPdfInnhold.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
package no.nav.su.se.bakover.domain.brev.jsonRequest | ||
|
||
import dokument.domain.pdf.PdfInnhold | ||
import dokument.domain.pdf.PdfTemplateMedDokumentNavn | ||
import dokument.domain.pdf.PersonaliaPdfInnhold | ||
import no.nav.su.se.bakover.common.extensions.toBrevformat | ||
import tilbakekreving.domain.forhåndsvarsel.VedtaksbrevTilbakekrevingsbehandlingDokumentCommand | ||
import java.time.Clock | ||
import java.time.LocalDate | ||
|
||
/** | ||
* TODO - her må vi fylle inn med mer info | ||
*/ | ||
data class VedtaksbrevTilbakekrevingsbehandlingPdfInnhold( | ||
val personalia: PersonaliaPdfInnhold, | ||
val saksbehandlerNavn: String, | ||
val fritekst: String?, | ||
val dato: String, | ||
) : PdfInnhold() { | ||
override val pdfTemplate = PdfTemplateMedDokumentNavn.VedtaksbrevTilbakekrevingsbehandling | ||
|
||
companion object { | ||
fun fromBrevCommand( | ||
command: VedtaksbrevTilbakekrevingsbehandlingDokumentCommand, | ||
personalia: PersonaliaPdfInnhold, | ||
saksbehandlerNavn: String, | ||
clock: Clock, | ||
): VedtaksbrevTilbakekrevingsbehandlingPdfInnhold { | ||
return VedtaksbrevTilbakekrevingsbehandlingPdfInnhold( | ||
personalia = personalia, | ||
saksbehandlerNavn = saksbehandlerNavn, | ||
fritekst = command.fritekst, | ||
// Denne formateres annerledes enn i personalia, selvom begge deler er dagens dato. 2021-01-01 vil gi 01.01.2021 i personalia, mens 1. januar 2021 i dette feltet. | ||
// TODO jah: Kanskje vi kan bruke denne i su-pdfgen? https://github.com/navikt/pdfgen/blob/master/src/main/kotlin/no/nav/pdfgen/template/Helpers.kt | ||
dato = LocalDate.now(clock).toBrevformat(), | ||
) | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
61 changes: 61 additions & 0 deletions
61
...ving/application/service/vurder/ForhåndsvisVedtaksbrevTilbakekrevingsbehandlingService.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
package tilbakekreving.application.service.vurder | ||
|
||
import arrow.core.Either | ||
import arrow.core.getOrElse | ||
import arrow.core.left | ||
import dokument.domain.brev.BrevService | ||
import dokument.domain.brev.Brevvalg | ||
import no.nav.su.se.bakover.common.domain.PdfA | ||
import no.nav.su.se.bakover.domain.oppdrag.tilbakekreving.behandling.hentTilbakekrevingsbehandling | ||
import no.nav.su.se.bakover.domain.sak.SakService | ||
import org.slf4j.LoggerFactory | ||
import tilbakekreving.application.service.common.TilbakekrevingsbehandlingTilgangstyringService | ||
import tilbakekreving.domain.forhåndsvarsel.VedtaksbrevTilbakekrevingsbehandlingDokumentCommand | ||
import tilbakekreving.domain.vurdert.ForhåndsvisVedtaksbrevCommand | ||
import tilbakekreving.domain.vurdert.KunneIkkeForhåndsviseVedtaksbrev | ||
|
||
class ForhåndsvisVedtaksbrevTilbakekrevingsbehandlingService( | ||
private val tilgangstyring: TilbakekrevingsbehandlingTilgangstyringService, | ||
private val sakService: SakService, | ||
private val brevService: BrevService, | ||
) { | ||
private val log = LoggerFactory.getLogger(this::class.java) | ||
|
||
fun forhåndsvisVedtaksbrev( | ||
command: ForhåndsvisVedtaksbrevCommand, | ||
): Either<KunneIkkeForhåndsviseVedtaksbrev, PdfA> { | ||
tilgangstyring.assertHarTilgangTilSak(command.sakId).onLeft { | ||
return KunneIkkeForhåndsviseVedtaksbrev.IkkeTilgang(it).left() | ||
} | ||
|
||
val sak = sakService.hentSak(command.sakId).getOrElse { | ||
throw IllegalStateException("Kunne ikke oppdatere vedtaksbrev for tilbakekrevingsbehandling, fant ikke sak. Kommandoen var: $command") | ||
} | ||
|
||
val behandling = sak.hentTilbakekrevingsbehandling(command.behandlingId) | ||
?: return KunneIkkeForhåndsviseVedtaksbrev.FantIkkeBehandling.left() | ||
|
||
return brevService.lagDokument( | ||
VedtaksbrevTilbakekrevingsbehandlingDokumentCommand( | ||
fødselsnummer = sak.fnr, | ||
saksnummer = sak.saksnummer, | ||
correlationId = command.correlationId, | ||
sakId = sak.id, | ||
saksbehandler = command.ident, | ||
fritekst = when (behandling.vedtaksbrevvalg) { | ||
is Brevvalg.SaksbehandlersValg.SkalIkkeSendeBrev -> return KunneIkkeForhåndsviseVedtaksbrev.SkalIkkeSendeBrevForÅViseVedtaksbrev.left() | ||
is Brevvalg.SaksbehandlersValg.SkalSendeBrev.InformasjonsbrevMedFritekst -> return KunneIkkeForhåndsviseVedtaksbrev.BrevetMåVæreVedtaksbrevMedFritekst.left().also { | ||
log.error("Tilbakekrevingsbehandling ${behandling.id} har brevvalg for InformasjonsbrevMedFritekst. Det skal bare være mulig å ikke sende brev, eller VedtaksbrevMedFritekst") | ||
} | ||
is Brevvalg.SaksbehandlersValg.SkalSendeBrev.Vedtaksbrev.MedFritekst -> behandling.vedtaksbrevvalg!!.fritekst | ||
is Brevvalg.SaksbehandlersValg.SkalSendeBrev.Vedtaksbrev.UtenFritekst -> return KunneIkkeForhåndsviseVedtaksbrev.BrevetMåVæreVedtaksbrevMedFritekst.left().also { | ||
log.error("Tilbakekrevingsbehandling ${behandling.id} har brevvalg for VedtaksbrevUtenFritekst. Det skal bare være mulig å ikke sende brev, eller VedtaksbrevMedFritekst") | ||
} | ||
null -> return KunneIkkeForhåndsviseVedtaksbrev.IkkeTattStillingTilBrevvalg.left() | ||
}, | ||
), | ||
) | ||
.map { it.generertDokument } | ||
.mapLeft { KunneIkkeForhåndsviseVedtaksbrev.FeilVedGenereringAvDokument } | ||
} | ||
} |
22 changes: 22 additions & 0 deletions
22
...lbakekreving/domain/forhåndsvarsel/VedtaksbrevTilbakekrevingsbehandlingDokumentCommand.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package tilbakekreving.domain.forhåndsvarsel | ||
|
||
import dokument.domain.GenererDokumentCommand | ||
import no.nav.su.se.bakover.common.CorrelationId | ||
import no.nav.su.se.bakover.common.brukerrolle.Brukerrolle | ||
import no.nav.su.se.bakover.common.domain.Saksnummer | ||
import no.nav.su.se.bakover.common.ident.NavIdentBruker | ||
import no.nav.su.se.bakover.common.person.Fnr | ||
import no.nav.su.se.bakover.hendelse.domain.SakshendelseCommand | ||
import java.util.UUID | ||
|
||
data class VedtaksbrevTilbakekrevingsbehandlingDokumentCommand( | ||
override val fødselsnummer: Fnr, | ||
override val saksnummer: Saksnummer, | ||
override val correlationId: CorrelationId?, | ||
override val sakId: UUID, | ||
val saksbehandler: NavIdentBruker.Saksbehandler, | ||
val fritekst: String?, | ||
) : GenererDokumentCommand, SakshendelseCommand { | ||
override val ident: NavIdentBruker? = null | ||
override val brukerroller: List<Brukerrolle> = emptyList() | ||
} |
16 changes: 16 additions & 0 deletions
16
...ing/domain/src/main/kotlin/tilbakekreving/domain/vurdert/ForhåndsvisVedtaksbrevCommand.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package tilbakekreving.domain.vurdert | ||
|
||
import no.nav.su.se.bakover.common.CorrelationId | ||
import no.nav.su.se.bakover.common.brukerrolle.Brukerrolle | ||
import no.nav.su.se.bakover.common.ident.NavIdentBruker | ||
import no.nav.su.se.bakover.hendelse.domain.SakshendelseCommand | ||
import tilbakekreving.domain.TilbakekrevingsbehandlingId | ||
import java.util.UUID | ||
|
||
data class ForhåndsvisVedtaksbrevCommand( | ||
override val sakId: UUID, | ||
val behandlingId: TilbakekrevingsbehandlingId, | ||
override val correlationId: CorrelationId?, | ||
override val ident: NavIdentBruker.Saksbehandler, | ||
override val brukerroller: List<Brukerrolle>, | ||
) : SakshendelseCommand |
12 changes: 12 additions & 0 deletions
12
.../domain/src/main/kotlin/tilbakekreving/domain/vurdert/KunneIkkeForhåndsviseVedtaksbrev.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
package tilbakekreving.domain.vurdert | ||
|
||
import tilbakekreving.domain.IkkeTilgangTilSak | ||
|
||
sealed interface KunneIkkeForhåndsviseVedtaksbrev { | ||
data class IkkeTilgang(val underliggende: IkkeTilgangTilSak) : KunneIkkeForhåndsviseVedtaksbrev | ||
data object SkalIkkeSendeBrevForÅViseVedtaksbrev : KunneIkkeForhåndsviseVedtaksbrev | ||
data object BrevetMåVæreVedtaksbrevMedFritekst : KunneIkkeForhåndsviseVedtaksbrev | ||
data object FantIkkeBehandling : KunneIkkeForhåndsviseVedtaksbrev | ||
data object IkkeTattStillingTilBrevvalg : KunneIkkeForhåndsviseVedtaksbrev | ||
data object FeilVedGenereringAvDokument : KunneIkkeForhåndsviseVedtaksbrev | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
71 changes: 71 additions & 0 deletions
71
...ving/presentation/api/vedtaksbrev/ForhåndsvisVedtaksbrevTilbakekrevingsbehandlingRoute.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
package tilbakekreving.presentation.api.vedtaksbrev | ||
|
||
import io.ktor.http.ContentType | ||
import io.ktor.http.HttpStatusCode | ||
import io.ktor.server.application.call | ||
import io.ktor.server.response.respondBytes | ||
import io.ktor.server.routing.Route | ||
import io.ktor.server.routing.get | ||
import no.nav.su.se.bakover.common.brukerrolle.Brukerrolle | ||
import no.nav.su.se.bakover.common.infrastructure.web.Feilresponser | ||
import no.nav.su.se.bakover.common.infrastructure.web.Resultat | ||
import no.nav.su.se.bakover.common.infrastructure.web.authorize | ||
import no.nav.su.se.bakover.common.infrastructure.web.correlationId | ||
import no.nav.su.se.bakover.common.infrastructure.web.errorJson | ||
import no.nav.su.se.bakover.common.infrastructure.web.suUserContext | ||
import no.nav.su.se.bakover.common.infrastructure.web.svar | ||
import no.nav.su.se.bakover.common.infrastructure.web.withSakId | ||
import no.nav.su.se.bakover.common.infrastructure.web.withTilbakekrevingId | ||
import tilbakekreving.application.service.vurder.ForhåndsvisVedtaksbrevTilbakekrevingsbehandlingService | ||
import tilbakekreving.domain.TilbakekrevingsbehandlingId | ||
import tilbakekreving.domain.vurdert.ForhåndsvisVedtaksbrevCommand | ||
import tilbakekreving.domain.vurdert.KunneIkkeForhåndsviseVedtaksbrev | ||
import tilbakekreving.presentation.api.TILBAKEKREVING_PATH | ||
import tilbakekreving.presentation.api.common.ikkeTilgangTilSak | ||
|
||
internal fun Route.vedtaksbrevTilbakekrevingsbehandlingRoute( | ||
forhåndsvisVedtaksbrevService: ForhåndsvisVedtaksbrevTilbakekrevingsbehandlingService, | ||
) { | ||
get("$TILBAKEKREVING_PATH/{tilbakekrevingsId}/vedtaksbrev/forhandsvis") { | ||
authorize(Brukerrolle.Saksbehandler, Brukerrolle.Attestant) { | ||
call.withSakId { sakId -> | ||
call.withTilbakekrevingId { tilbakekrevingId -> | ||
forhåndsvisVedtaksbrevService.forhåndsvisVedtaksbrev( | ||
ForhåndsvisVedtaksbrevCommand( | ||
sakId = sakId, | ||
behandlingId = TilbakekrevingsbehandlingId(tilbakekrevingId), | ||
correlationId = call.correlationId, | ||
ident = call.suUserContext.saksbehandler, | ||
brukerroller = call.suUserContext.roller, | ||
), | ||
) | ||
.fold( | ||
{ call.svar(it.tilResultat()) }, | ||
{ call.respondBytes(it.getContent(), ContentType.Application.Pdf) }, | ||
) | ||
} | ||
} | ||
} | ||
} | ||
} | ||
|
||
internal fun KunneIkkeForhåndsviseVedtaksbrev.tilResultat(): Resultat = when (this) { | ||
is KunneIkkeForhåndsviseVedtaksbrev.IkkeTilgang -> ikkeTilgangTilSak | ||
KunneIkkeForhåndsviseVedtaksbrev.BrevetMåVæreVedtaksbrevMedFritekst -> HttpStatusCode.InternalServerError.errorJson( | ||
"Brevet må være av typen [Vedtaksbrev.MedFritekst]", | ||
"brevet_må_være_av_typen_vedtaksbrev_med_fritekst", | ||
) | ||
|
||
KunneIkkeForhåndsviseVedtaksbrev.FantIkkeBehandling -> Feilresponser.fantIkkeBehandling | ||
KunneIkkeForhåndsviseVedtaksbrev.IkkeTattStillingTilBrevvalg -> HttpStatusCode.BadRequest.errorJson( | ||
"Det er ikke tatt stilling til brevvalg for å vise vedtaksbrev", | ||
"ikke_tatt_stilling_til_brevvalg", | ||
) | ||
|
||
KunneIkkeForhåndsviseVedtaksbrev.SkalIkkeSendeBrevForÅViseVedtaksbrev -> HttpStatusCode.BadRequest.errorJson( | ||
"Det er valg at brev ikke skal sendes. Brevet kan dermed ikke vises", | ||
"valg_å_ikke_sende_brev", | ||
) | ||
|
||
KunneIkkeForhåndsviseVedtaksbrev.FeilVedGenereringAvDokument -> Feilresponser.feilVedGenereringAvDokument | ||
} |
45 changes: 45 additions & 0 deletions
45
...o/nav/su/se/bakover/web/tilbakekreving/ForhåndsvisVedtaksbrevTilbakekrevingsbehandling.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
package no.nav.su.se.bakover.web.tilbakekreving | ||
|
||
import io.kotest.assertions.withClue | ||
import io.kotest.matchers.shouldBe | ||
import io.kotest.matchers.string.shouldStartWith | ||
import io.ktor.client.HttpClient | ||
import io.ktor.client.statement.bodyAsText | ||
import io.ktor.http.HttpMethod | ||
import io.ktor.http.HttpStatusCode | ||
import kotlinx.coroutines.runBlocking | ||
import no.nav.su.se.bakover.common.brukerrolle.Brukerrolle | ||
import no.nav.su.se.bakover.web.SharedRegressionTestData | ||
|
||
fun forhåndsvisVedtaksbrevTilbakekrevingsbehandling( | ||
sakId: String, | ||
tilbakekrevingsbehandlingId: String, | ||
expectedHttpStatusCode: HttpStatusCode = HttpStatusCode.OK, | ||
client: HttpClient, | ||
verifiserRespons: Boolean = true, | ||
): String { | ||
return runBlocking { | ||
SharedRegressionTestData.defaultRequest( | ||
HttpMethod.Get, | ||
"/saker/$sakId/tilbakekreving/$tilbakekrevingsbehandlingId/vedtaksbrev/forhandsvis", | ||
listOf(Brukerrolle.Saksbehandler), | ||
client = client, | ||
).apply { | ||
withClue("Kunne ikke forhåndsvise vedtaksbrev tilbakekrevingsbehandling: ${this.bodyAsText()}") { | ||
status shouldBe expectedHttpStatusCode | ||
} | ||
}.bodyAsText().also { | ||
if (verifiserRespons) { | ||
verifiserForhåndsvisVedtaksbrevTilbakekrevingsbehandlingRespons( | ||
actual = it, | ||
) | ||
} | ||
} | ||
} | ||
} | ||
|
||
fun verifiserForhåndsvisVedtaksbrevTilbakekrevingsbehandlingRespons( | ||
actual: String, | ||
) { | ||
actual.shouldStartWith("%PDF-1.0") | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.