Skip to content

Commit 41d6186

Browse files
committed
publish narmeste leder dialogmote svar to esyfo varselbus
1 parent d84f469 commit 41d6186

File tree

7 files changed

+102
-26
lines changed

7 files changed

+102
-26
lines changed

src/main/kotlin/no/nav/syfo/brev/esyfovarsel/EsyfovarselProducer.kt

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package no.nav.syfo.brev.esyfovarsel
22

33
import com.fasterxml.jackson.annotation.JsonTypeInfo
4+
import no.nav.syfo.dialogmote.domain.DialogmoteSvarType
45
import java.io.Serializable
56
import java.util.*
67
import org.apache.kafka.clients.producer.KafkaProducer
@@ -55,7 +56,8 @@ data class ArbeidstakerHendelse(
5556
data class VarselData(
5657
val journalpost: VarselDataJournalpost? = null,
5758
val narmesteLeder: VarselDataNarmesteLeder? = null,
58-
val motetidspunkt: VarselDataMotetidspunkt? = null
59+
val motetidspunkt: VarselDataMotetidspunkt? = null,
60+
val dialogmoteSvar: VarselDataDialogmoteSvar? = null
5961
)
6062

6163
data class VarselDataJournalpost(
@@ -71,6 +73,10 @@ data class VarselDataMotetidspunkt(
7173
val tidspunkt: LocalDateTime
7274
)
7375

76+
data class VarselDataDialogmoteSvar(
77+
val svar: DialogmoteSvarType
78+
)
79+
7480
enum class HendelseType {
7581
NL_DIALOGMOTE_INNKALT,
7682
SM_DIALOGMOTE_INNKALT,
@@ -81,4 +87,5 @@ enum class HendelseType {
8187
NL_DIALOGMOTE_NYTT_TID_STED,
8288
SM_DIALOGMOTE_NYTT_TID_STED,
8389
SM_DIALOGMOTE_LEST,
90+
NL_DIALOGMOTE_SVAR,
8491
}

src/main/kotlin/no/nav/syfo/brev/narmesteleder/NarmesteLederBrevApi.kt

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package no.nav.syfo.brev.narmesteleder
22

33
import io.ktor.http.*
4-
import io.ktor.server.application.*
54
import io.ktor.server.request.*
65
import io.ktor.server.response.*
76
import io.ktor.server.routing.*
@@ -177,6 +176,11 @@ fun Route.registerNarmestelederBrevApi(
177176
svarTekst = responsDTO.svarTekst,
178177
)
179178
if (updated) {
179+
dialogmoteService.publishNarmesteLederSvarVarselHendelse(
180+
brev = brev,
181+
responsDTO = responsDTO,
182+
narmesteLederPersonIdent = narmesteLederPersonIdent,
183+
)
180184
call.respond(HttpStatusCode.OK)
181185
} else {
182186
throw IllegalArgumentException("Response already stored")

src/main/kotlin/no/nav/syfo/brev/narmesteleder/NarmesteLederVarselService.kt

+4
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ class NarmesteLederVarselService(
2626
esyfovarselProducer.sendVarselToEsyfovarsel(hendelse)
2727
}
2828

29+
fun sendMelding(hendelse: EsyfovarselHendelse) {
30+
esyfovarselProducer.sendVarselToEsyfovarsel(hendelse)
31+
}
32+
2933
private fun getNaermesteLederVarselType(motedeltakerVarselType: MotedeltakerVarselType): HendelseType {
3034
return when (motedeltakerVarselType) {
3135
MotedeltakerVarselType.INNKALT -> HendelseType.NL_DIALOGMOTE_INNKALT

src/main/kotlin/no/nav/syfo/dialogmote/DialogmoteService.kt

+38-20
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package no.nav.syfo.dialogmote
33
import no.nav.syfo.application.api.authentication.getNAVIdentFromToken
44
import no.nav.syfo.application.database.DatabaseInterface
55
import no.nav.syfo.application.exception.ConflictException
6+
import no.nav.syfo.brev.narmesteleder.domain.NarmesteLederResponsDTO
67
import no.nav.syfo.client.behandlendeenhet.BehandlendeEnhetClient
78
import no.nav.syfo.client.narmesteleder.NarmesteLederClient
89
import no.nav.syfo.client.narmesteleder.NarmesteLederRelasjonDTO
@@ -78,10 +79,9 @@ class DialogmoteService(
7879
val personIdent = PersonIdent(newDialogmoteDTO.arbeidstaker.personIdent)
7980
val virksomhetsnummer = Virksomhetsnummer(newDialogmoteDTO.arbeidsgiver.virksomhetsnummer)
8081

81-
val anyUnfinishedDialogmote =
82-
getDialogmoteList(personIdent).filter {
83-
it.arbeidsgiver.virksomhetsnummer == virksomhetsnummer
84-
}.anyUnfinished()
82+
val anyUnfinishedDialogmote = getDialogmoteList(personIdent).filter {
83+
it.arbeidsgiver.virksomhetsnummer == virksomhetsnummer
84+
}.anyUnfinished()
8585

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

223-
val pdfAvlysningBehandler =
224-
avlysDialogmote.behandler?.let {
225-
pdfGenClient.pdfAvlysning(
226-
callId = callId,
227-
mottakerNavn = dialogmote.behandler?.behandlerNavn,
228-
pdfContent = it.avlysning,
229-
) ?: throw RuntimeException("Failed to request PDF - Avlysning Behandler")
230-
}
223+
val pdfAvlysningBehandler = avlysDialogmote.behandler?.let {
224+
pdfGenClient.pdfAvlysning(
225+
callId = callId,
226+
mottakerNavn = dialogmote.behandler?.behandlerNavn,
227+
pdfContent = it.avlysning,
228+
) ?: throw RuntimeException("Failed to request PDF - Avlysning Behandler")
229+
}
231230

232231
val digitalVarsling = isDigitalVarselEnabled(
233232
personIdent = dialogmote.arbeidstaker.personIdent,
@@ -315,14 +314,13 @@ class DialogmoteService(
315314
pdfContent = endreDialogmoteTidSted.arbeidsgiver.endringsdokument,
316315
) ?: throw RuntimeException("Failed to request PDF - EndringTidSted Arbeidsgiver")
317316

318-
val pdfEndringBehandler =
319-
endreDialogmoteTidSted.behandler?.let {
320-
pdfGenClient.pdfEndringTidSted(
321-
callId = callId,
322-
mottakerNavn = dialogmote.behandler?.behandlerNavn,
323-
pdfContent = it.endringsdokument,
324-
) ?: throw RuntimeException("Failed to request PDF - EndringTidSted Behandler")
325-
}
317+
val pdfEndringBehandler = endreDialogmoteTidSted.behandler?.let {
318+
pdfGenClient.pdfEndringTidSted(
319+
callId = callId,
320+
mottakerNavn = dialogmote.behandler?.behandlerNavn,
321+
pdfContent = it.endringsdokument,
322+
) ?: throw RuntimeException("Failed to request PDF - EndringTidSted Behandler")
323+
}
326324

327325
val digitalVarsling = isDigitalVarselEnabled(
328326
personIdent = dialogmote.arbeidstaker.personIdent,
@@ -843,4 +841,24 @@ class DialogmoteService(
843841
callId = callId,
844842
)
845843
}
844+
845+
fun publishNarmesteLederSvarVarselHendelse(
846+
brev: NarmesteLederBrev,
847+
responsDTO: NarmesteLederResponsDTO,
848+
narmesteLederPersonIdent: PersonIdent,
849+
) {
850+
val dialogmoteDeltagerArbeidsgiver = dialogmotedeltakerService.getDialogmoteDeltakerArbeidsgiverById(
851+
motedeltakerArbeidsgiverId = brev.motedeltakerArbeidsgiverId,
852+
)
853+
val arbeidstakerPersonIdent = dialogmotedeltakerService.getDialogmoteDeltakerArbeidstaker(
854+
moteId = dialogmoteDeltagerArbeidsgiver.moteId,
855+
).personIdent
856+
857+
varselService.sendNarmesteLederSvarVarselHendelse(
858+
responsDTO = responsDTO,
859+
narmesteLederPersonIdent = narmesteLederPersonIdent,
860+
arbeidstakerPersonIdent = arbeidstakerPersonIdent,
861+
virksomhetsnummer = dialogmoteDeltagerArbeidsgiver.virksomhetsnummer,
862+
)
863+
}
846864
}

src/main/kotlin/no/nav/syfo/dialogmote/VarselService.kt

+28
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,18 @@ package no.nav.syfo.dialogmote
33
import java.util.*
44
import no.nav.syfo.brev.arbeidstaker.ArbeidstakerVarselService
55
import no.nav.syfo.brev.behandler.BehandlerVarselService
6+
import no.nav.syfo.brev.esyfovarsel.HendelseType
7+
import no.nav.syfo.brev.esyfovarsel.NarmesteLederHendelse
8+
import no.nav.syfo.brev.esyfovarsel.VarselData
9+
import no.nav.syfo.brev.esyfovarsel.VarselDataDialogmoteSvar
610
import no.nav.syfo.brev.narmesteleder.NarmesteLederVarselService
11+
import no.nav.syfo.brev.narmesteleder.domain.NarmesteLederResponsDTO
712
import no.nav.syfo.client.altinn.AltinnClient
813
import no.nav.syfo.client.altinn.createAltinnMelding
914
import no.nav.syfo.client.narmesteleder.NarmesteLederRelasjonDTO
1015
import no.nav.syfo.client.oppfolgingstilfelle.OppfolgingstilfelleClient
1116
import no.nav.syfo.client.oppfolgingstilfelle.isInactive
17+
import no.nav.syfo.dialogmote.domain.DialogmoteSvarType
1218
import no.nav.syfo.dialogmote.domain.DocumentComponentDTO
1319
import no.nav.syfo.dialogmote.domain.MotedeltakerVarselType
1420
import no.nav.syfo.domain.PersonIdent
@@ -106,4 +112,26 @@ class VarselService(
106112
}
107113
}
108114
}
115+
116+
fun sendNarmesteLederSvarVarselHendelse(
117+
responsDTO: NarmesteLederResponsDTO,
118+
narmesteLederPersonIdent: PersonIdent,
119+
arbeidstakerPersonIdent: PersonIdent,
120+
virksomhetsnummer: Virksomhetsnummer
121+
) {
122+
123+
narmesteLederVarselService.sendMelding(
124+
NarmesteLederHendelse(
125+
type = HendelseType.NL_DIALOGMOTE_SVAR,
126+
data = VarselData(
127+
dialogmoteSvar = VarselDataDialogmoteSvar(
128+
svar = DialogmoteSvarType.valueOf(responsDTO.svarType),
129+
)
130+
),
131+
narmesteLederFnr = narmesteLederPersonIdent.value,
132+
arbeidstakerFnr = arbeidstakerPersonIdent.value,
133+
orgnummer = virksomhetsnummer.value,
134+
)
135+
)
136+
}
109137
}

src/test/kotlin/no/nav/syfo/brev/narmesteleder/NarmesteLederBrevSpek.kt

+7-4
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,7 @@ import no.nav.syfo.testhelper.UserConstants.NARMESTELEDER_FNR
3636
import no.nav.syfo.testhelper.UserConstants.NARMESTELEDER_FNR_2
3737
import no.nav.syfo.testhelper.UserConstants.OTHER_VIRKSOMHETSNUMMER_HAS_NARMESTELEDER
3838
import no.nav.syfo.testhelper.UserConstants.VEILEDER_IDENT
39-
import no.nav.syfo.testhelper.generator.generateInkallingHendelse
40-
import no.nav.syfo.testhelper.generator.generateInkallingHendelseOtherVirksomhet
41-
import no.nav.syfo.testhelper.generator.generateNewDialogmoteDTO
42-
import no.nav.syfo.testhelper.generator.generateNewReferatDTO
39+
import no.nav.syfo.testhelper.generator.*
4340
import no.nav.syfo.testhelper.mock.pdfInnkalling
4441
import no.nav.syfo.testhelper.mock.pdfReferat
4542
import no.nav.syfo.util.NAV_PERSONIDENT_HEADER
@@ -199,6 +196,12 @@ object NarmesteLederBrevSpek : Spek({
199196
)
200197
)
201198
}.apply {
199+
verify(exactly = 1) {
200+
esyfovarselProducerMock.sendVarselToEsyfovarsel(
201+
generateKommerSvarHendelse()
202+
)
203+
}
204+
clearMocks(esyfovarselProducerMock)
202205
status shouldBeEqualTo HttpStatusCode.OK
203206
}
204207

src/test/kotlin/no/nav/syfo/testhelper/generator/EsyfovarselHendelseGenerator.kt

+12
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package no.nav.syfo.testhelper.generator
22

33
import no.nav.syfo.brev.esyfovarsel.*
4+
import no.nav.syfo.dialogmote.domain.DialogmoteSvarType
45
import no.nav.syfo.testhelper.UserConstants.ARBEIDSTAKER_FNR
56
import no.nav.syfo.testhelper.UserConstants.NARMESTELEDER_FNR
67
import no.nav.syfo.testhelper.UserConstants.OTHER_VIRKSOMHETSNUMMER_HAS_NARMESTELEDER
@@ -64,3 +65,14 @@ fun generateReferatHendelse() =
6465
arbeidstakerFnr = ARBEIDSTAKER_FNR.value,
6566
orgnummer = VIRKSOMHETSNUMMER_HAS_NARMESTELEDER.value
6667
)
68+
69+
fun generateKommerSvarHendelse() =
70+
NarmesteLederHendelse(
71+
type = HendelseType.NL_DIALOGMOTE_SVAR,
72+
narmesteLederFnr = NARMESTELEDER_FNR.value,
73+
data = VarselData(
74+
dialogmoteSvar = VarselDataDialogmoteSvar(DialogmoteSvarType.KOMMER)
75+
),
76+
arbeidstakerFnr = ARBEIDSTAKER_FNR.value,
77+
orgnummer = VIRKSOMHETSNUMMER_HAS_NARMESTELEDER.value
78+
)

0 commit comments

Comments
 (0)