Skip to content

Commit 207c3ef

Browse files
committed
publish narmeste leder dialogmote svar to esyfo varselbus
1 parent d84f469 commit 207c3ef

File tree

7 files changed

+109
-27
lines changed

7 files changed

+109
-27
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

+7-2
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.*
@@ -171,12 +170,18 @@ fun Route.registerNarmestelederBrevApi(
171170
narmesteLederPersonIdent = narmesteLederPersonIdent,
172171
)
173172
if (hasAccessToBrev) {
173+
val narmesteLederSvar = DialogmoteSvarType.valueOf(responsDTO.svarType)
174174
val updated = dialogmotedeltakerService.updateArbeidsgiverBrevWithRespons(
175175
brevUuid = brevUuid,
176-
svarType = DialogmoteSvarType.valueOf(responsDTO.svarType),
176+
svarType = narmesteLederSvar,
177177
svarTekst = responsDTO.svarTekst,
178178
)
179179
if (updated) {
180+
dialogmoteService.publishNarmesteLederSvarVarselHendelse(
181+
brev = brev,
182+
narmesteLederSvar = narmesteLederSvar,
183+
narmesteLederPersonIdent = narmesteLederPersonIdent,
184+
)
180185
call.respond(HttpStatusCode.OK)
181186
} else {
182187
throw IllegalArgumentException("Response already stored")

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

+23
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package no.nav.syfo.brev.narmesteleder
33
import no.nav.syfo.brev.esyfovarsel.*
44
import no.nav.syfo.client.narmesteleder.*
55
import no.nav.syfo.dialogmote.domain.*
6+
import no.nav.syfo.domain.PersonIdent
7+
import no.nav.syfo.domain.Virksomhetsnummer
68
import java.time.LocalDateTime
79

810
class NarmesteLederVarselService(
@@ -26,6 +28,27 @@ class NarmesteLederVarselService(
2628
esyfovarselProducer.sendVarselToEsyfovarsel(hendelse)
2729
}
2830

31+
fun sendNarmesteLederSvarVarselHendelse(
32+
narmesteLederSvar: DialogmoteSvarType,
33+
narmesteLederPersonIdent: PersonIdent,
34+
arbeidstakerPersonIdent: PersonIdent,
35+
virksomhetsnummer: Virksomhetsnummer
36+
) {
37+
esyfovarselProducer.sendVarselToEsyfovarsel(
38+
NarmesteLederHendelse(
39+
type = HendelseType.NL_DIALOGMOTE_SVAR,
40+
data = VarselData(
41+
dialogmoteSvar = VarselDataDialogmoteSvar(
42+
svar = narmesteLederSvar,
43+
)
44+
),
45+
narmesteLederFnr = narmesteLederPersonIdent.value,
46+
arbeidstakerFnr = arbeidstakerPersonIdent.value,
47+
orgnummer = virksomhetsnummer.value,
48+
)
49+
)
50+
}
51+
2952
private fun getNaermesteLederVarselType(motedeltakerVarselType: MotedeltakerVarselType): HendelseType {
3053
return when (motedeltakerVarselType) {
3154
MotedeltakerVarselType.INNKALT -> HendelseType.NL_DIALOGMOTE_INNKALT

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

+37-20
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,9 @@ class DialogmoteService(
7878
val personIdent = PersonIdent(newDialogmoteDTO.arbeidstaker.personIdent)
7979
val virksomhetsnummer = Virksomhetsnummer(newDialogmoteDTO.arbeidsgiver.virksomhetsnummer)
8080

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

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

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-
}
222+
val pdfAvlysningBehandler = avlysDialogmote.behandler?.let {
223+
pdfGenClient.pdfAvlysning(
224+
callId = callId,
225+
mottakerNavn = dialogmote.behandler?.behandlerNavn,
226+
pdfContent = it.avlysning,
227+
) ?: throw RuntimeException("Failed to request PDF - Avlysning Behandler")
228+
}
231229

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

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-
}
316+
val pdfEndringBehandler = endreDialogmoteTidSted.behandler?.let {
317+
pdfGenClient.pdfEndringTidSted(
318+
callId = callId,
319+
mottakerNavn = dialogmote.behandler?.behandlerNavn,
320+
pdfContent = it.endringsdokument,
321+
) ?: throw RuntimeException("Failed to request PDF - EndringTidSted Behandler")
322+
}
326323

327324
val digitalVarsling = isDigitalVarselEnabled(
328325
personIdent = dialogmote.arbeidstaker.personIdent,
@@ -843,4 +840,24 @@ class DialogmoteService(
843840
callId = callId,
844841
)
845842
}
843+
844+
fun publishNarmesteLederSvarVarselHendelse(
845+
brev: NarmesteLederBrev,
846+
narmesteLederSvar: DialogmoteSvarType,
847+
narmesteLederPersonIdent: PersonIdent,
848+
) {
849+
val dialogmoteDeltagerArbeidsgiver = dialogmotedeltakerService.getDialogmoteDeltakerArbeidsgiverById(
850+
motedeltakerArbeidsgiverId = brev.motedeltakerArbeidsgiverId,
851+
)
852+
val arbeidstakerPersonIdent = dialogmotedeltakerService.getDialogmoteDeltakerArbeidstaker(
853+
moteId = dialogmoteDeltagerArbeidsgiver.moteId,
854+
).personIdent
855+
856+
varselService.sendNarmesteLederSvarVarselHendelse(
857+
narmesteLederSvar = narmesteLederSvar,
858+
narmesteLederPersonIdent = narmesteLederPersonIdent,
859+
arbeidstakerPersonIdent = arbeidstakerPersonIdent,
860+
virksomhetsnummer = dialogmoteDeltagerArbeidsgiver.virksomhetsnummer,
861+
)
862+
}
846863
}

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

+15
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import no.nav.syfo.client.altinn.createAltinnMelding
99
import no.nav.syfo.client.narmesteleder.NarmesteLederRelasjonDTO
1010
import no.nav.syfo.client.oppfolgingstilfelle.OppfolgingstilfelleClient
1111
import no.nav.syfo.client.oppfolgingstilfelle.isInactive
12+
import no.nav.syfo.dialogmote.domain.DialogmoteSvarType
1213
import no.nav.syfo.dialogmote.domain.DocumentComponentDTO
1314
import no.nav.syfo.dialogmote.domain.MotedeltakerVarselType
1415
import no.nav.syfo.domain.PersonIdent
@@ -106,4 +107,18 @@ class VarselService(
106107
}
107108
}
108109
}
110+
111+
fun sendNarmesteLederSvarVarselHendelse(
112+
narmesteLederSvar: DialogmoteSvarType,
113+
narmesteLederPersonIdent: PersonIdent,
114+
arbeidstakerPersonIdent: PersonIdent,
115+
virksomhetsnummer: Virksomhetsnummer
116+
) {
117+
narmesteLederVarselService.sendNarmesteLederSvarVarselHendelse(
118+
narmesteLederSvar = narmesteLederSvar,
119+
narmesteLederPersonIdent = narmesteLederPersonIdent,
120+
arbeidstakerPersonIdent = arbeidstakerPersonIdent,
121+
virksomhetsnummer = virksomhetsnummer,
122+
)
123+
}
109124
}

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)