Skip to content

Commit

Permalink
publish narmeste leder dialogmote svar to esyfo varselbus
Browse files Browse the repository at this point in the history
  • Loading branch information
luantr committed Jan 21, 2025
1 parent d84f469 commit 207c3ef
Show file tree
Hide file tree
Showing 7 changed files with 109 additions and 27 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package no.nav.syfo.brev.esyfovarsel

import com.fasterxml.jackson.annotation.JsonTypeInfo
import no.nav.syfo.dialogmote.domain.DialogmoteSvarType
import java.io.Serializable
import java.util.*
import org.apache.kafka.clients.producer.KafkaProducer
Expand Down Expand Up @@ -55,7 +56,8 @@ data class ArbeidstakerHendelse(
data class VarselData(
val journalpost: VarselDataJournalpost? = null,
val narmesteLeder: VarselDataNarmesteLeder? = null,
val motetidspunkt: VarselDataMotetidspunkt? = null
val motetidspunkt: VarselDataMotetidspunkt? = null,
val dialogmoteSvar: VarselDataDialogmoteSvar? = null
)

data class VarselDataJournalpost(
Expand All @@ -71,6 +73,10 @@ data class VarselDataMotetidspunkt(
val tidspunkt: LocalDateTime
)

data class VarselDataDialogmoteSvar(
val svar: DialogmoteSvarType
)

enum class HendelseType {
NL_DIALOGMOTE_INNKALT,
SM_DIALOGMOTE_INNKALT,
Expand All @@ -81,4 +87,5 @@ enum class HendelseType {
NL_DIALOGMOTE_NYTT_TID_STED,
SM_DIALOGMOTE_NYTT_TID_STED,
SM_DIALOGMOTE_LEST,
NL_DIALOGMOTE_SVAR,
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package no.nav.syfo.brev.narmesteleder

import io.ktor.http.*
import io.ktor.server.application.*
import io.ktor.server.request.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
Expand Down Expand Up @@ -171,12 +170,18 @@ fun Route.registerNarmestelederBrevApi(
narmesteLederPersonIdent = narmesteLederPersonIdent,
)
if (hasAccessToBrev) {
val narmesteLederSvar = DialogmoteSvarType.valueOf(responsDTO.svarType)
val updated = dialogmotedeltakerService.updateArbeidsgiverBrevWithRespons(
brevUuid = brevUuid,
svarType = DialogmoteSvarType.valueOf(responsDTO.svarType),
svarType = narmesteLederSvar,
svarTekst = responsDTO.svarTekst,
)
if (updated) {
dialogmoteService.publishNarmesteLederSvarVarselHendelse(
brev = brev,
narmesteLederSvar = narmesteLederSvar,
narmesteLederPersonIdent = narmesteLederPersonIdent,
)
call.respond(HttpStatusCode.OK)
} else {
throw IllegalArgumentException("Response already stored")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package no.nav.syfo.brev.narmesteleder
import no.nav.syfo.brev.esyfovarsel.*
import no.nav.syfo.client.narmesteleder.*
import no.nav.syfo.dialogmote.domain.*
import no.nav.syfo.domain.PersonIdent
import no.nav.syfo.domain.Virksomhetsnummer
import java.time.LocalDateTime

class NarmesteLederVarselService(
Expand All @@ -26,6 +28,27 @@ class NarmesteLederVarselService(
esyfovarselProducer.sendVarselToEsyfovarsel(hendelse)
}

fun sendNarmesteLederSvarVarselHendelse(
narmesteLederSvar: DialogmoteSvarType,
narmesteLederPersonIdent: PersonIdent,
arbeidstakerPersonIdent: PersonIdent,
virksomhetsnummer: Virksomhetsnummer
) {
esyfovarselProducer.sendVarselToEsyfovarsel(
NarmesteLederHendelse(
type = HendelseType.NL_DIALOGMOTE_SVAR,
data = VarselData(
dialogmoteSvar = VarselDataDialogmoteSvar(
svar = narmesteLederSvar,
)
),
narmesteLederFnr = narmesteLederPersonIdent.value,
arbeidstakerFnr = arbeidstakerPersonIdent.value,
orgnummer = virksomhetsnummer.value,
)
)
}

private fun getNaermesteLederVarselType(motedeltakerVarselType: MotedeltakerVarselType): HendelseType {
return when (motedeltakerVarselType) {
MotedeltakerVarselType.INNKALT -> HendelseType.NL_DIALOGMOTE_INNKALT
Expand Down
57 changes: 37 additions & 20 deletions src/main/kotlin/no/nav/syfo/dialogmote/DialogmoteService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,9 @@ class DialogmoteService(
val personIdent = PersonIdent(newDialogmoteDTO.arbeidstaker.personIdent)
val virksomhetsnummer = Virksomhetsnummer(newDialogmoteDTO.arbeidsgiver.virksomhetsnummer)

val anyUnfinishedDialogmote =
getDialogmoteList(personIdent).filter {
it.arbeidsgiver.virksomhetsnummer == virksomhetsnummer
}.anyUnfinished()
val anyUnfinishedDialogmote = getDialogmoteList(personIdent).filter {
it.arbeidsgiver.virksomhetsnummer == virksomhetsnummer
}.anyUnfinished()

if (anyUnfinishedDialogmote) {
throw ConflictException("Denied access to create Dialogmote: unfinished Dialogmote exists for PersonIdent")
Expand Down Expand Up @@ -220,14 +219,13 @@ class DialogmoteService(
pdfContent = avlysDialogmote.arbeidsgiver.avlysning,
) ?: throw RuntimeException("Failed to request PDF - Avlysning Arbeidsgiver")

val pdfAvlysningBehandler =
avlysDialogmote.behandler?.let {
pdfGenClient.pdfAvlysning(
callId = callId,
mottakerNavn = dialogmote.behandler?.behandlerNavn,
pdfContent = it.avlysning,
) ?: throw RuntimeException("Failed to request PDF - Avlysning Behandler")
}
val pdfAvlysningBehandler = avlysDialogmote.behandler?.let {
pdfGenClient.pdfAvlysning(
callId = callId,
mottakerNavn = dialogmote.behandler?.behandlerNavn,
pdfContent = it.avlysning,
) ?: throw RuntimeException("Failed to request PDF - Avlysning Behandler")
}

val digitalVarsling = isDigitalVarselEnabled(
personIdent = dialogmote.arbeidstaker.personIdent,
Expand Down Expand Up @@ -315,14 +313,13 @@ class DialogmoteService(
pdfContent = endreDialogmoteTidSted.arbeidsgiver.endringsdokument,
) ?: throw RuntimeException("Failed to request PDF - EndringTidSted Arbeidsgiver")

val pdfEndringBehandler =
endreDialogmoteTidSted.behandler?.let {
pdfGenClient.pdfEndringTidSted(
callId = callId,
mottakerNavn = dialogmote.behandler?.behandlerNavn,
pdfContent = it.endringsdokument,
) ?: throw RuntimeException("Failed to request PDF - EndringTidSted Behandler")
}
val pdfEndringBehandler = endreDialogmoteTidSted.behandler?.let {
pdfGenClient.pdfEndringTidSted(
callId = callId,
mottakerNavn = dialogmote.behandler?.behandlerNavn,
pdfContent = it.endringsdokument,
) ?: throw RuntimeException("Failed to request PDF - EndringTidSted Behandler")
}

val digitalVarsling = isDigitalVarselEnabled(
personIdent = dialogmote.arbeidstaker.personIdent,
Expand Down Expand Up @@ -843,4 +840,24 @@ class DialogmoteService(
callId = callId,
)
}

fun publishNarmesteLederSvarVarselHendelse(
brev: NarmesteLederBrev,
narmesteLederSvar: DialogmoteSvarType,
narmesteLederPersonIdent: PersonIdent,
) {
val dialogmoteDeltagerArbeidsgiver = dialogmotedeltakerService.getDialogmoteDeltakerArbeidsgiverById(
motedeltakerArbeidsgiverId = brev.motedeltakerArbeidsgiverId,
)
val arbeidstakerPersonIdent = dialogmotedeltakerService.getDialogmoteDeltakerArbeidstaker(
moteId = dialogmoteDeltagerArbeidsgiver.moteId,
).personIdent

varselService.sendNarmesteLederSvarVarselHendelse(
narmesteLederSvar = narmesteLederSvar,
narmesteLederPersonIdent = narmesteLederPersonIdent,
arbeidstakerPersonIdent = arbeidstakerPersonIdent,
virksomhetsnummer = dialogmoteDeltagerArbeidsgiver.virksomhetsnummer,
)
}
}
15 changes: 15 additions & 0 deletions src/main/kotlin/no/nav/syfo/dialogmote/VarselService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import no.nav.syfo.client.altinn.createAltinnMelding
import no.nav.syfo.client.narmesteleder.NarmesteLederRelasjonDTO
import no.nav.syfo.client.oppfolgingstilfelle.OppfolgingstilfelleClient
import no.nav.syfo.client.oppfolgingstilfelle.isInactive
import no.nav.syfo.dialogmote.domain.DialogmoteSvarType
import no.nav.syfo.dialogmote.domain.DocumentComponentDTO
import no.nav.syfo.dialogmote.domain.MotedeltakerVarselType
import no.nav.syfo.domain.PersonIdent
Expand Down Expand Up @@ -106,4 +107,18 @@ class VarselService(
}
}
}

fun sendNarmesteLederSvarVarselHendelse(
narmesteLederSvar: DialogmoteSvarType,
narmesteLederPersonIdent: PersonIdent,
arbeidstakerPersonIdent: PersonIdent,
virksomhetsnummer: Virksomhetsnummer
) {
narmesteLederVarselService.sendNarmesteLederSvarVarselHendelse(
narmesteLederSvar = narmesteLederSvar,
narmesteLederPersonIdent = narmesteLederPersonIdent,
arbeidstakerPersonIdent = arbeidstakerPersonIdent,
virksomhetsnummer = virksomhetsnummer,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,7 @@ import no.nav.syfo.testhelper.UserConstants.NARMESTELEDER_FNR
import no.nav.syfo.testhelper.UserConstants.NARMESTELEDER_FNR_2
import no.nav.syfo.testhelper.UserConstants.OTHER_VIRKSOMHETSNUMMER_HAS_NARMESTELEDER
import no.nav.syfo.testhelper.UserConstants.VEILEDER_IDENT
import no.nav.syfo.testhelper.generator.generateInkallingHendelse
import no.nav.syfo.testhelper.generator.generateInkallingHendelseOtherVirksomhet
import no.nav.syfo.testhelper.generator.generateNewDialogmoteDTO
import no.nav.syfo.testhelper.generator.generateNewReferatDTO
import no.nav.syfo.testhelper.generator.*
import no.nav.syfo.testhelper.mock.pdfInnkalling
import no.nav.syfo.testhelper.mock.pdfReferat
import no.nav.syfo.util.NAV_PERSONIDENT_HEADER
Expand Down Expand Up @@ -199,6 +196,12 @@ object NarmesteLederBrevSpek : Spek({
)
)
}.apply {
verify(exactly = 1) {
esyfovarselProducerMock.sendVarselToEsyfovarsel(
generateKommerSvarHendelse()
)
}
clearMocks(esyfovarselProducerMock)
status shouldBeEqualTo HttpStatusCode.OK
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package no.nav.syfo.testhelper.generator

import no.nav.syfo.brev.esyfovarsel.*
import no.nav.syfo.dialogmote.domain.DialogmoteSvarType
import no.nav.syfo.testhelper.UserConstants.ARBEIDSTAKER_FNR
import no.nav.syfo.testhelper.UserConstants.NARMESTELEDER_FNR
import no.nav.syfo.testhelper.UserConstants.OTHER_VIRKSOMHETSNUMMER_HAS_NARMESTELEDER
Expand Down Expand Up @@ -64,3 +65,14 @@ fun generateReferatHendelse() =
arbeidstakerFnr = ARBEIDSTAKER_FNR.value,
orgnummer = VIRKSOMHETSNUMMER_HAS_NARMESTELEDER.value
)

fun generateKommerSvarHendelse() =
NarmesteLederHendelse(
type = HendelseType.NL_DIALOGMOTE_SVAR,
narmesteLederFnr = NARMESTELEDER_FNR.value,
data = VarselData(
dialogmoteSvar = VarselDataDialogmoteSvar(DialogmoteSvarType.KOMMER)
),
arbeidstakerFnr = ARBEIDSTAKER_FNR.value,
orgnummer = VIRKSOMHETSNUMMER_HAS_NARMESTELEDER.value
)

0 comments on commit 207c3ef

Please sign in to comment.