Skip to content

Commit

Permalink
Endrer til å bruke vedtaksbrev route
Browse files Browse the repository at this point in the history
  • Loading branch information
Bjodn committed Nov 12, 2024
1 parent 93def4a commit 7340392
Show file tree
Hide file tree
Showing 8 changed files with 134 additions and 140 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import no.nav.etterlatte.brev.hentinformasjon.grunnlag.GrunnlagService
import no.nav.etterlatte.brev.model.BrevInnholdVedlegg
import no.nav.etterlatte.brev.model.FerdigstillJournalFoerOgDistribuerOpprettetBrev
import no.nav.etterlatte.brev.model.Mottaker
import no.nav.etterlatte.brev.model.OpprettBrevRequest
import no.nav.etterlatte.brev.model.OpprettJournalfoerOgDistribuerRequest
import no.nav.etterlatte.brev.model.Spraak
import no.nav.etterlatte.brev.pdf.PDFService
Expand Down Expand Up @@ -285,16 +284,6 @@ fun Route.brevRoute(
}
}

post("opprett-brev") {
kunSystembruker { systembruker ->
withSakId(tilgangssjekker, skrivetilgang = true) {
val req = call.receive<OpprettBrevRequest>()
val brevErDistribuert = service.opprettBrev(systembruker, req)
call.respond(brevErDistribuert)
}
}
}

post("ferdigstill-journalfoer-og-distribuer") {
kunSaksbehandler { sb ->
val req = call.receive<FerdigstillJournalFoerOgDistribuerOpprettetBrev>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,11 @@ import no.nav.etterlatte.brev.model.Brev
import no.nav.etterlatte.brev.model.BrevDistribusjonResponse
import no.nav.etterlatte.brev.model.BrevID
import no.nav.etterlatte.brev.model.BrevInnholdVedlegg
import no.nav.etterlatte.brev.model.BrevOpprettResponse
import no.nav.etterlatte.brev.model.BrevProsessType
import no.nav.etterlatte.brev.model.BrevStatusResponse
import no.nav.etterlatte.brev.model.FerdigstillJournalFoerOgDistribuerOpprettetBrev
import no.nav.etterlatte.brev.model.Mottaker
import no.nav.etterlatte.brev.model.MottakerType
import no.nav.etterlatte.brev.model.OpprettBrevRequest
import no.nav.etterlatte.brev.model.OpprettJournalfoerOgDistribuerRequest
import no.nav.etterlatte.brev.model.Pdf
import no.nav.etterlatte.brev.model.Spraak
Expand Down Expand Up @@ -45,6 +43,9 @@ class BrevService(
private val logger = LoggerFactory.getLogger(this::class.java)
private val sikkerlogger = sikkerlogger()

/*
* Brev uten behandling (dødshendelse, etc)
*/
suspend fun opprettJournalfoerOgDistribuerRiver(
bruker: BrukerTokenInfo,
req: OpprettJournalfoerOgDistribuerRequest,
Expand Down Expand Up @@ -93,21 +94,6 @@ class BrevService(
}
}

suspend fun opprettBrev(
bruker: BrukerTokenInfo,
req: OpprettBrevRequest,
): BrevOpprettResponse {
val (brev, enhetsnummer) =
brevoppretter.opprettBrevSomHarInnhold(
sakId = req.sakId,
behandlingId = req.behandlingId,
bruker = bruker,
brevKode = req.brevKode,
brevData = req.brevParametereAutomatisk.brevDataMapping(),
)
return BrevOpprettResponse(brev.id, enhetsnummer)
}

suspend fun ferdigstillBrevJournalfoerOgDistribuerforOpprettetBrev(
req: FerdigstillJournalFoerOgDistribuerOpprettetBrev,
bruker: BrukerTokenInfo,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import io.ktor.server.routing.route
import no.nav.etterlatte.brev.Brevtype
import no.nav.etterlatte.brev.JournalfoerBrevService
import no.nav.etterlatte.brev.VedtakTilJournalfoering
import no.nav.etterlatte.brev.model.GenererOgFerdigstillVedtaksbrev
import no.nav.etterlatte.libs.common.sak.SakId
import no.nav.etterlatte.libs.ktor.route.BEHANDLINGID_CALL_PARAMETER
import no.nav.etterlatte.libs.ktor.route.Tilgangssjekker
Expand Down Expand Up @@ -93,6 +94,28 @@ fun Route.vedtaksbrevRoute(
}
}

post("vedtak/generer-pdf-og-ferdigstill") {
kunSystembruker { systembruker ->
val behandlingId = behandlingId
val request = call.receive<GenererOgFerdigstillVedtaksbrev>()
logger.info("Generere og ferdigstille vedtaksbrev for behandling (behandlingId=$behandlingId)")

measureTimedValue {
service.genererPdfOgFerdigstill(request.behandlingId, request.brevId, systembruker)
}.also { (_, varighet) ->
logger.info(
"Generere og ferdigstilling av vedtaksbrev tok ${
varighet.toString(
DurationUnit.SECONDS,
2,
)
}",
)
call.respond(HttpStatusCode.OK)
}
}
}

post("vedtak/ferdigstill") {
withBehandlingId(tilgangssjekker, skrivetilgang = true) { behandlingId ->
logger.info("Ferdigstiller vedtaksbrev for behandling (id=$behandlingId)")
Expand All @@ -118,10 +141,12 @@ fun Route.vedtaksbrevRoute(
service.hentNyttInnhold(sakId, brevId, behandlingId, brukerTokenInfo, body.brevtype)
}.let { (brevPayload, varighet) ->
logger.info(
"Oppretting av nytt innhold til brev (id=$brevId) tok ${varighet.toString(
DurationUnit.SECONDS,
2,
)}",
"Oppretting av nytt innhold til brev (id=$brevId) tok ${
varighet.toString(
DurationUnit.SECONDS,
2,
)
}",
)
call.respond(brevPayload)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,13 @@ class VedtaksbrevService(
pdfGenerator.genererPdf(
id = id,
bruker = bruker,
avsenderRequest = { brukerToken, vedtak, enhet -> opprettAvsenderRequest(brukerToken, vedtak, enhet) },
avsenderRequest = { brukerToken, vedtak, enhet ->
opprettAvsenderRequest(
brukerToken,
vedtak,
enhet,
)
},
brevKodeMapping = { brevKodeMappingVedtak.brevKode(it) },
brevDataMapping = { brevDataMapperFerdigstilling.brevDataFerdigstilling(it) },
)
Expand All @@ -113,6 +119,15 @@ class VedtaksbrevService(
return pdf
}

suspend fun genererPdfOgFerdigstill(
behandlingId: UUID,
brevId: BrevID,
brukerTokenInfo: BrukerTokenInfo,
) {
genererPdf(brevId, brukerTokenInfo)
ferdigstillVedtaksbrev(behandlingId, brukerTokenInfo)
}

suspend fun ferdigstillVedtaksbrev(
behandlingId: UUID,
brukerTokenInfo: BrukerTokenInfo,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,60 +8,57 @@ import io.ktor.client.request.setBody
import io.ktor.http.ContentType
import io.ktor.http.contentType
import kotlinx.coroutines.runBlocking
import no.nav.etterlatte.brev.model.BrevOpprettResponse
import no.nav.etterlatte.brev.model.BrevStatusResponse
import no.nav.etterlatte.brev.model.FerdigstillJournalFoerOgDistribuerOpprettetBrev
import no.nav.etterlatte.brev.model.OpprettBrevRequest
import no.nav.etterlatte.brev.model.Brev
import no.nav.etterlatte.brev.model.GenererOgFerdigstillVedtaksbrev
import no.nav.etterlatte.libs.common.feilhaandtering.InternfeilException
import no.nav.etterlatte.libs.common.retryOgPakkUt
import no.nav.etterlatte.libs.common.sak.SakId
import no.nav.etterlatte.libs.common.toJson
import org.slf4j.LoggerFactory
import java.time.Duration
import java.util.UUID

class BrevKlient(
private val httpClient: HttpClient,
private val url: String,
) {
private val logger = LoggerFactory.getLogger(this::class.java)

internal fun opprettBrev(
sakid: SakId,
opprett: OpprettBrevRequest,
): BrevOpprettResponse =
internal fun opprettBrev(behandlingId: UUID): Brev =
runBlocking {
try {
logger.info("Oppretter brev uten distribusjon for sak med sakId=$sakid")
logger.info("Ber brev-api om å opprette vedtaksbrev for behandling id=$behandlingId")
retryOgPakkUt(times = 5, vent = { timesleft -> Thread.sleep(Duration.ofSeconds(1L * timesleft)) }) {
httpClient
.post("$url/api/brev/sak/${sakid.sakId}/opprett-brev") {
.post("$url/api/brev/behandling/$behandlingId/vedtak") {
contentType(ContentType.Application.Json)
setBody(opprett.toJson())
}.body<BrevOpprettResponse>()
// setBody(opprett.toJson())
}.body<Brev>()
}
} catch (e: ResponseException) {
logger.error("Opprettelse av brev feilet for sak med sakId=$sakid feilet", e)
throw InternfeilException("Kunne ikke opprette brev for sak: $sakid")
logger.error("Opprettelse av brev feilet for behandling med id=$behandlingId", e)
throw InternfeilException("Opprettelse av brev feilet for behandling med id=$behandlingId")
}
}

internal fun ferdigstillJournalfoerDistribuerBrev(
sakid: SakId,
request: FerdigstillJournalFoerOgDistribuerOpprettetBrev,
): BrevStatusResponse =
runBlocking {
try {
logger.info("Oppretter brev uten distribusjon for sak med sakId=$sakid")
retryOgPakkUt(times = 5, vent = { timesleft -> Thread.sleep(Duration.ofSeconds(1L * timesleft)) }) {
httpClient
.post("$url/api/brev/sak/${sakid.sakId}/ferdigstill-journalfoer-og-distribuer") {
contentType(ContentType.Application.Json)
setBody(request.toJson())
}.body<BrevStatusResponse>()
}
} catch (e: ResponseException) {
logger.error("Opprettelse av brev feilet for sak med sakId=$sakid feilet", e)
throw InternfeilException("Kunne ikke opprette brev for sak: $sakid")
internal fun genererPdfOgFerdigstillVedtaksbrev(
behandlingId: UUID,
request: GenererOgFerdigstillVedtaksbrev,
) = runBlocking {
try {
logger.info("Kaller brev-api for å generere og ferdigstille vedtaksbrev for $behandlingId")
retryOgPakkUt(times = 5, vent = { timesleft -> Thread.sleep(Duration.ofSeconds(1L * timesleft)) }) {
httpClient
.post("$url/api/brev/behandling/$behandlingId/vedtak/generer-pdf-og-ferdigstill") {
contentType(ContentType.Application.Json)
setBody(request.toJson())
}
}
} catch (e: ResponseException) {
logger.error(
"Forsøk på å generere pdf og ferdigstille vedtaksbrev feilet for behandling med id=$behandlingId",
e,
)
throw InternfeilException("Forsøk på å generere pdf og ferdigstille vedtaksbrev feilet for behandling med id=$behandlingId")
}
}
}
Loading

0 comments on commit 7340392

Please sign in to comment.