Skip to content

Commit

Permalink
EY-4839 Nytt endepunkt for å la EESSI opprette oppgave hos oss (#6783)
Browse files Browse the repository at this point in the history
* EY-4839 Nytt endepunkt for å la EESSI opprette oppgave hos oss

* småfikser og readme
  • Loading branch information
Watercolours authored Jan 20, 2025
1 parent 6ccd4f0 commit 6fe8fd1
Show file tree
Hide file tree
Showing 12 changed files with 137 additions and 5 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/app-etterlatte-api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ on:
- apps/etterlatte-api/.nais/**
- '!apps/etterlatte-api/**.md'
- libs/etterlatte-beregning-model/**
- libs/etterlatte-oppgave-model/**
- libs/etterlatte-ktor/**
- libs/etterlatte-sporingslogg/**
- libs/etterlatte-vedtaksvurdering-model/**
Expand All @@ -32,6 +33,8 @@ on:
- apps/etterlatte-api/src/**
- apps/etterlatte-api/*.kts
- '!apps/etterlatte-api/**.md'
- libs/etterlatte-beregning-model/**
- libs/etterlatte-oppgave-model/**
- libs/etterlatte-ktor/**
- libs/etterlatte-sporingslogg/**
- libs/etterlatte-vedtaksvurdering-model/**
Expand Down
2 changes: 2 additions & 0 deletions apps/etterlatte-api/.nais/dev-api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,7 @@ spec:
roles:
- les-oms-vedtak
- les-bp-vedtak
- opprett-jfr-oppgave
- application: eessi-pensjon-prefill-q2
namespace: eessipensjon
cluster: dev-gcp
Expand All @@ -232,6 +233,7 @@ spec:
roles:
- les-oms-vedtak
- les-bp-vedtak
- opprett-jfr-oppgave
outbound:
rules:
- application: etterlatte-vedtaksvurdering
Expand Down
1 change: 1 addition & 0 deletions apps/etterlatte-api/.nais/prod-api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ spec:
roles:
- les-oms-vedtak
- les-bp-vedtak
- opprett-jfr-oppgave
outbound:
rules:
- application: etterlatte-vedtaksvurdering
Expand Down
11 changes: 6 additions & 5 deletions apps/etterlatte-api/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,12 @@ Det må foreligge et tjenestepensjonsforhold og -ytelse i Tjenestepensjonsregist

## API

| Endepunkt | Headers | Body | Responstype | Beskrivelse |
|:-------------------------------|-----------------------------------|----------------------------------|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------|
| /api/vedtak?fomDato=YYYY-MM-DD | fnr(fases ut, se body) <br/> tpnr | ```{ foedselsnummer: String }``` | Samordningsvedtak[] | Henter ut vedtaksinformasjon for gitt person fra og med gitt dato. |
| /api/vedtak?virkFom=YYYY-MM-DD | fnr(fases ut, se body) <br/> tpnr | ```{ foedselsnummer: String }``` | Samordningsvedtak[] | **DEPRECATED** Henter ut vedtaksinformasjon for gitt person fra og med gitt dato. |
| /api/vedtak/{nav-vedtak-id} | tpnr | | Samordningsvedtak | Henter ut informasjon om et spesifikt vedtak. VedtaksIDen kommer fra samordningskøen hvor det varsles løpende om vedtak som gjøres. |
| Endepunkt | Headers | Body | Responstype | Beskrivelse |
|:-------------------------------|-----------------------------------|-------------------------------------------------------------------|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------|
| /api/vedtak?fomDato=YYYY-MM-DD | fnr(fases ut, se body) <br/> tpnr | ```{ foedselsnummer: String }``` | Samordningsvedtak[] | Henter ut vedtaksinformasjon for gitt person fra og med gitt dato. |
| /api/vedtak?virkFom=YYYY-MM-DD | fnr(fases ut, se body) <br/> tpnr | ```{ foedselsnummer: String }``` | Samordningsvedtak[] | **DEPRECATED** Henter ut vedtaksinformasjon for gitt person fra og med gitt dato. |
| /api/vedtak/{nav-vedtak-id} | tpnr | | Samordningsvedtak | Henter ut informasjon om et spesifikt vedtak. VedtaksIDen kommer fra samordningskøen hvor det varsles løpende om vedtak som gjøres. |
| /api/v1/oppgave/journalfoering | | ```{ sakId: Long, journalpostId: String, beskrivelse: String }``` | arst | Oppretter journalføringsoppgave i Gjenny |

| Header | Beskrivelse |
|----------------------------------------|----------------------------------|
Expand Down
1 change: 1 addition & 0 deletions apps/etterlatte-api/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ dependencies {
implementation(project(":libs:saksbehandling-common"))
implementation(project(":libs:etterlatte-ktor"))
implementation(project(":libs:etterlatte-beregning-model"))
implementation(project(":libs:etterlatte-oppgave-model"))
implementation(project(":libs:etterlatte-vedtaksvurdering-model"))
implementation(project(":libs:etterlatte-sporingslogg"))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import no.nav.etterlatte.libs.common.appName
import no.nav.etterlatte.libs.common.logging.sikkerLoggOppstart
import no.nav.etterlatte.libs.ktor.initialisering.initEmbeddedServer
import no.nav.etterlatte.libs.ktor.initialisering.run
import no.nav.etterlatte.oppgave.oppgaveRoute
import no.nav.etterlatte.samordning.serverRequestLoggerPlugin
import no.nav.etterlatte.samordning.userIdMdcPlugin
import no.nav.etterlatte.samordning.vedtak.barnepensjonVedtakRoute
Expand Down Expand Up @@ -47,6 +48,8 @@ class Server(

vedtakRoute(vedtakService = applicationContext.vedtakService)

oppgaveRoute(applicationContext.oppgaveService)

install(userIdMdcPlugin)
install(serverRequestLoggerPlugin)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import no.nav.etterlatte.libs.ktor.AzureEnums.AZURE_APP_CLIENT_ID
import no.nav.etterlatte.libs.ktor.AzureEnums.AZURE_APP_JWK
import no.nav.etterlatte.libs.ktor.AzureEnums.AZURE_APP_WELL_KNOWN_URL
import no.nav.etterlatte.libs.ktor.httpClientClientCredentials
import no.nav.etterlatte.oppgave.OppgaveKlient
import no.nav.etterlatte.oppgave.OppgaveService
import no.nav.etterlatte.samordning.vedtak.SamordningVedtakService
import no.nav.etterlatte.samordning.vedtak.TjenestepensjonKlient
import no.nav.etterlatte.samordning.vedtak.VedtaksvurderingSamordningKlient
Expand Down Expand Up @@ -57,4 +59,7 @@ class ApplicationContext(
val behandlingService = BehandlingService(behandlingKlient, vedtaksvurderingSakKlient)
val vedtakKlient = VedtaksvurderingKlient(config, vedtaksvurderingHttpClient)
val vedtakService = VedtakService(vedtakKlient)

private val oppgaveKlient = OppgaveKlient(config, behandlingHttpClient)
val oppgaveService = OppgaveService(oppgaveKlient)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package no.nav.etterlatte.oppgave

import com.typesafe.config.Config
import io.ktor.client.HttpClient
import io.ktor.client.call.body
import io.ktor.client.plugins.ClientRequestException
import io.ktor.client.request.accept
import io.ktor.client.request.post
import io.ktor.client.request.setBody
import io.ktor.http.ContentType
import io.ktor.http.HttpStatusCode
import io.ktor.http.contentType
import no.nav.etterlatte.behandling.sak.BehandlingManglendeTilgang
import no.nav.etterlatte.behandling.sak.BehandlingUgyldigForespoersel
import no.nav.etterlatte.libs.common.oppgave.NyOppgaveDto
import no.nav.etterlatte.libs.common.oppgave.OppgaveIntern
import no.nav.etterlatte.libs.common.sak.SakId
import org.slf4j.LoggerFactory

class OppgaveKlient(
config: Config,
private val httpClient: HttpClient,
) {
private val logger = LoggerFactory.getLogger(this::class.java)
private val behandlingUrl = "${config.getString("behandling.url")}/api"

suspend fun opprettOppgave(
sakId: SakId,
oppgave: NyOppgaveDto,
): OppgaveIntern {
logger.info("Oppretter ny oppgave på sak $sakId")

return try {
httpClient
.post("$behandlingUrl/oppgaver/sak/${sakId.sakId}/opprett") {
accept(ContentType.Application.Json)
contentType(ContentType.Application.Json)
setBody(oppgave)
}.body<OppgaveIntern>()
} catch (e: ClientRequestException) {
logger.error("Det oppstod en feil ved opprettelse av oppgave for sak $sakId")

when (e.response.status) {
HttpStatusCode.Unauthorized -> throw BehandlingManglendeTilgang("Oppgave: Ikke tilgang")
HttpStatusCode.BadRequest -> throw BehandlingUgyldigForespoersel("Oppgave: Ugyldig forespørsel")
else -> throw e
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package no.nav.etterlatte.oppgave

import io.ktor.server.application.call
import io.ktor.server.application.install
import io.ktor.server.request.receive
import io.ktor.server.routing.Route
import io.ktor.server.routing.post
import io.ktor.server.routing.route
import no.nav.etterlatte.AuthorizationPlugin
import no.nav.etterlatte.libs.common.oppgave.NyOppgaveDto
import no.nav.etterlatte.libs.common.oppgave.OppgaveKilde
import no.nav.etterlatte.libs.common.oppgave.OppgaveType
import no.nav.etterlatte.libs.common.sak.SakId

fun Route.oppgaveRoute(oppgaveService: OppgaveService) {
route("/api/v1/oppgave") {
route("/journalfoering") {
install(AuthorizationPlugin) {
accessPolicyRolesEllerAdGrupper = setOf("opprett-jfr-oppgave")
}

post {
val request = call.receive<OpprettJournalfoeringOppgave>()

oppgaveService.opprettOppgave(
sakId = request.sakId,
NyOppgaveDto(
oppgaveKilde = OppgaveKilde.EESSI,
oppgaveType = OppgaveType.JOURNALFOERING,
merknad = request.beskrivelse,
referanse = request.journalpostId,
),
)
}
}
}
}

internal data class OpprettJournalfoeringOppgave(
val sakId: SakId,
val journalpostId: String,
val beskrivelse: String,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package no.nav.etterlatte.oppgave

import no.nav.etterlatte.libs.common.oppgave.NyOppgaveDto
import no.nav.etterlatte.libs.common.oppgave.OppgaveIntern
import no.nav.etterlatte.libs.common.sak.SakId
import org.slf4j.LoggerFactory

class OppgaveService(
private val oppgaveKlient: OppgaveKlient,
) {
private val logger = LoggerFactory.getLogger(this::class.java)

suspend fun opprettOppgave(
sakId: SakId,
nyOppgave: NyOppgaveDto,
): OppgaveIntern {
logger.info("Oppretter ny oppgave for sak $sakId")

return oppgaveKlient.opprettOppgave(sakId, nyOppgave)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ export enum OppgaveKilde {
DOEDSHENDELSE = 'DOEDSHENDELSE',
BEHANDLING = 'BEHANDLING',
EKSTERN = 'EKSTERN',
EESSI = 'EESSI',
GENERELL_BEHANDLING = 'GENERELL_BEHANDLING',
TILBAKEKREVING = 'TILBAKEKREVING',
SAKSBEHANDLER = 'SAKSBEHANDLER',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ enum class OppgaveKilde {
BEHANDLING,
GENERELL_BEHANDLING,
EKSTERN,
EESSI,
TILBAKEKREVING,
GJENOPPRETTING,
SAKSBEHANDLER,
Expand Down

0 comments on commit 6fe8fd1

Please sign in to comment.