Skip to content

Commit

Permalink
Legg på sykmeldingsperiode i påminnelse varselet (#741)
Browse files Browse the repository at this point in the history
Ta med sykmeldingsperioder i påminnelse varselet til arbeidsgiver.
Dermed blir det lettere for arbeidsgiver å forstå hvilken forespørsel eposten handler om.

Co-authored-by: Magnus Sælensminde <[email protected]>
  • Loading branch information
b162214 and magnusae authored Oct 31, 2024
1 parent 4195420 commit 15c5238
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,14 @@ import no.nav.helsearbeidsgiver.arbeidsgivernotifikasjon.Paaminnelse
import no.nav.helsearbeidsgiver.arbeidsgivernotifikasjon.SakEllerOppgaveDuplikatException
import no.nav.helsearbeidsgiver.arbeidsgivernotifikasjon.SakEllerOppgaveFinnesIkkeException
import no.nav.helsearbeidsgiver.arbeidsgivernotifkasjon.graphql.generated.enums.SaksStatus
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Periode
import no.nav.helsearbeidsgiver.felles.domene.Person
import no.nav.helsearbeidsgiver.utils.log.logger
import no.nav.helsearbeidsgiver.utils.log.sikkerLogger
import no.nav.helsearbeidsgiver.utils.wrapper.Fnr
import no.nav.helsearbeidsgiver.utils.wrapper.Orgnr
import java.time.LocalDate
import java.time.format.DateTimeFormatter
import java.util.UUID
import kotlin.time.Duration.Companion.days

Expand Down Expand Up @@ -64,9 +67,10 @@ object NotifikasjonTekst {
fun paaminnelseInnhold(
orgnr: Orgnr,
orgNavn: String,
sykmeldingsPerioder: List<Periode>,
): String =
listOf(
"Nav venter fortsatt på inntektsmelding for en av deres ansatte.",
"Nav venter fortsatt på inntektsmelding for en av deres ansatte${sykmeldingsPerioder.tilString() ?: ""}.",
"Vi trenger inntektsmeldingen så snart som mulig,",
"ellers kan vi ikke behandle søknaden om sykepenger.",
"Logg inn på Min side – arbeidsgiver på Nav for å finne ut hvilken inntektsmelding det gjelder.",
Expand Down Expand Up @@ -171,6 +175,7 @@ fun ArbeidsgiverNotifikasjonKlient.opprettOppgave(
skalHaPaaminnelse: Boolean,
paaminnelseAktivert: Boolean,
tidMellomOppgaveopprettelseOgPaaminnelse: String,
sykmeldingsPerioder: List<Periode>,
): String =
try {
runBlocking {
Expand All @@ -188,7 +193,7 @@ fun ArbeidsgiverNotifikasjonKlient.opprettOppgave(
if (skalHaPaaminnelse && paaminnelseAktivert) {
Paaminnelse(
tittel = "Påminnelse: ${NotifikasjonTekst.STATUS_TEKST_UNDER_BEHANDLING}",
innhold = NotifikasjonTekst.paaminnelseInnhold(orgnr, orgNavn),
innhold = NotifikasjonTekst.paaminnelseInnhold(orgnr, orgNavn, sykmeldingsPerioder),
tidMellomOppgaveopprettelseOgPaaminnelse = tidMellomOppgaveopprettelseOgPaaminnelse,
).also { logger.info("Satte påminnelse for forespørsel $forespoerselId") }
} else {
Expand Down Expand Up @@ -260,6 +265,15 @@ private fun Fnr.lesFoedselsdato(): String {
}
}

fun LocalDate.tilString(): String = format(DateTimeFormatter.ofPattern("dd.MM.yyyy"))

fun List<Periode>.tilString(): String? =
when (size) {
0 -> null
1 -> " for periode: ${first().fom.tilString()} - ${first().tom.tilString()}"
else -> " for periode: ${first().fom.tilString()} - [...] - ${last().tom.tilString()}"
}

private fun loggWarnIkkeFunnetEllerThrow(
melding: String,
error: Throwable,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@ import kotlinx.serialization.json.JsonElement
import no.nav.helsearbeidsgiver.arbeidsgivernotifikasjon.ArbeidsgiverNotifikasjonKlient
import no.nav.helsearbeidsgiver.felles.EventName
import no.nav.helsearbeidsgiver.felles.Key
import no.nav.helsearbeidsgiver.felles.domene.Forespoersel
import no.nav.helsearbeidsgiver.felles.domene.Person
import no.nav.helsearbeidsgiver.felles.json.krev
import no.nav.helsearbeidsgiver.felles.json.les
import no.nav.helsearbeidsgiver.felles.json.lesOrNull
import no.nav.helsearbeidsgiver.felles.json.toJson
import no.nav.helsearbeidsgiver.felles.json.toMap
import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail
Expand All @@ -32,6 +34,7 @@ data class OpprettForespoerselSakOgOppgaveMelding(
val sykmeldt: Person,
val orgNavn: String,
val skalHaPaaminnelse: Boolean,
val forespoersel: Forespoersel?,
)

class OpprettForespoerselSakOgOppgaveRiver(
Expand All @@ -56,6 +59,7 @@ class OpprettForespoerselSakOgOppgaveRiver(
sykmeldt = Key.SYKMELDT.les(Person.serializer(), data),
orgNavn = Key.VIRKSOMHET.les(String.serializer(), data),
skalHaPaaminnelse = Key.SKAL_HA_PAAMINNELSE.les(Boolean.serializer(), data),
forespoersel = Key.FORESPOERSEL.lesOrNull(Forespoersel.serializer(), data),
)
}

Expand All @@ -79,6 +83,7 @@ class OpprettForespoerselSakOgOppgaveRiver(
skalHaPaaminnelse = skalHaPaaminnelse,
paaminnelseAktivert = paaminnelseToggle.oppgavePaaminnelseAktivert,
tidMellomOppgaveopprettelseOgPaaminnelse = paaminnelseToggle.tidMellomOppgaveopprettelseOgPaaminnelse,
sykmeldingsPerioder = forespoersel?.sykmeldingsperioder.orEmpty(),
)

return mapOf(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
package no.nav.helsearbeidsgiver.inntektsmelding.notifikasjon

import io.kotest.core.spec.style.FunSpec
import io.kotest.data.row
import io.kotest.datatest.withData
import io.kotest.matchers.shouldBe
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.til
import no.nav.helsearbeidsgiver.felles.domene.Person
import no.nav.helsearbeidsgiver.utils.test.date.februar
import no.nav.helsearbeidsgiver.utils.test.date.januar
import no.nav.helsearbeidsgiver.utils.wrapper.Fnr

class ArbeidsgiverNotifikasjonKlientUtilsTest :
Expand All @@ -21,4 +26,16 @@ class ArbeidsgiverNotifikasjonKlientUtilsTest :
NotifikasjonTekst.sakTittel(person) shouldBe "Inntektsmelding for Pierce Brosjan: f. 230475"
}
}

context("Generer riktig periode tekst for oppgave varsel tekst") {
withData(
mapOf(
"ingen perioder" to row(emptyList(), null),
"en periode" to row(listOf(1.januar til 31.januar), " for periode: 01.01.2018 - 31.01.2018"),
"to perioder" to row(listOf(1.januar til 31.januar, 1.februar til 28.februar), " for periode: 01.01.2018 - [...] - 28.02.2018"),
),
) { (perioder, forventet) ->
perioder.tilString() shouldBe forventet
}
}
})
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,19 @@ import no.nav.helsearbeidsgiver.arbeidsgivernotifkasjon.graphql.generated.enums.
import no.nav.helsearbeidsgiver.felles.BehovType
import no.nav.helsearbeidsgiver.felles.EventName
import no.nav.helsearbeidsgiver.felles.Key
import no.nav.helsearbeidsgiver.felles.domene.Forespoersel
import no.nav.helsearbeidsgiver.felles.domene.Person
import no.nav.helsearbeidsgiver.felles.json.toJson
import no.nav.helsearbeidsgiver.felles.json.toMap
import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail
import no.nav.helsearbeidsgiver.felles.test.mock.mockForespoersel
import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.firstMessage
import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.sendJson
import no.nav.helsearbeidsgiver.inntektsmelding.notifikasjon.NotifikasjonTekst
import no.nav.helsearbeidsgiver.inntektsmelding.notifikasjon.PaaminnelseToggle
import no.nav.helsearbeidsgiver.inntektsmelding.notifikasjon.sakLevetid
import no.nav.helsearbeidsgiver.utils.collection.mapValuesNotNull
import no.nav.helsearbeidsgiver.utils.json.toJson
import no.nav.helsearbeidsgiver.utils.test.wrapper.genererGyldig
import no.nav.helsearbeidsgiver.utils.wrapper.Fnr
import no.nav.helsearbeidsgiver.utils.wrapper.Orgnr
import java.util.UUID
Expand Down Expand Up @@ -94,7 +96,14 @@ class OpprettForespoerselSakOgOppgaveRiverTest :
paaminnelse =
Paaminnelse(
tittel = "Påminnelse: ${NotifikasjonTekst.STATUS_TEKST_UNDER_BEHANDLING}",
innhold = NotifikasjonTekst.paaminnelseInnhold(innkommendeMelding.orgnr, innkommendeMelding.orgNavn),
innhold =
NotifikasjonTekst.paaminnelseInnhold(
innkommendeMelding.orgnr,
innkommendeMelding.orgNavn,
innkommendeMelding.forespoersel
?.sykmeldingsperioder
.orEmpty(),
),
tidMellomOppgaveopprettelseOgPaaminnelse = "P28D",
),
)
Expand Down Expand Up @@ -240,19 +249,24 @@ class OpprettForespoerselSakOgOppgaveRiverTest :
}
})

private object OpprettSakOgOppgaveMock {
val forespoerselId = UUID.randomUUID()
val forespoersel = mockForespoersel()
val orgnr = Orgnr(forespoersel.orgnr)
val orgNavn = "Peer Gynts Løgn og Bedrageri LTD"
val person = Person(Fnr(forespoersel.fnr), "Peer Gynt")
}

fun innkommendeOpprettForespoerselSakOgOppgaveMelding(): OpprettForespoerselSakOgOppgaveMelding =
OpprettForespoerselSakOgOppgaveMelding(
eventName = EventName.SAK_OG_OPPGAVE_OPPRETT_REQUESTED,
transaksjonId = UUID.randomUUID(),
forespoerselId = UUID.randomUUID(),
orgnr = Orgnr.genererGyldig(),
sykmeldt =
Person(
fnr = Fnr.genererGyldig(),
navn = "Peer Gynt",
),
orgNavn = "Peer Gynts Løgn og Bedrageri LTD",
forespoerselId = OpprettSakOgOppgaveMock.forespoerselId,
orgnr = OpprettSakOgOppgaveMock.orgnr,
sykmeldt = OpprettSakOgOppgaveMock.person,
orgNavn = OpprettSakOgOppgaveMock.orgNavn,
skalHaPaaminnelse = true,
forespoersel = OpprettSakOgOppgaveMock.forespoersel,
)

private fun OpprettForespoerselSakOgOppgaveMelding.toMap() =
Expand All @@ -266,7 +280,8 @@ private fun OpprettForespoerselSakOgOppgaveMelding.toMap() =
Key.SYKMELDT to sykmeldt.toJson(Person.serializer()),
Key.VIRKSOMHET to orgNavn.toJson(),
Key.SKAL_HA_PAAMINNELSE to skalHaPaaminnelse.toJson(Boolean.serializer()),
).toJson(),
Key.FORESPOERSEL to forespoersel?.toJson(Forespoersel.serializer()),
).mapValuesNotNull { it }.toJson(),
)

private fun forventetUtgaaendeMelding(
Expand Down

0 comments on commit 15c5238

Please sign in to comment.