Skip to content

Commit

Permalink
Gjort det tydelegare at vi handterer ulike hendelseskategoriar ulikt
Browse files Browse the repository at this point in the history
og gjort hentEldste meir generell/gjenbrukbar

Co-authored-by: Sondre Larsen Ovrid <sondre.larsen.ovrid@nav.no>
  • Loading branch information
ingfo and slovrid committed Dec 19, 2024
1 parent 4d4788a commit 559fa82
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 71 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,20 +38,20 @@ class HendelseRepository(
}

/**
* Henter den eldste hendelsen med kategori UTGATT_VARSEL:
* Henter den eldste hendelsen med en bestemt kategori:
*
* * dersom minst en hendelse eksisterer for [personIdent] returneres den eldste av disse
* * dersom ingen hendelser eksisterer for [personIdent] kastes en [IngenHendelseForPersonException]
*/
fun getEldsteUtgattVarsel(personIdent: NorskIdent): Hendelse {
fun getEldste(personIdent: NorskIdent, kategori: Kategori): Hendelse {
// language=postgresql
val sql = """
SELECT * FROM ${HENDELSE.TABLE_NAME} WHERE ${HENDELSE.PERSON_IDENT} = ? AND ${HENDELSE.KATEGORI} = ?
ORDER BY ${HENDELSE.HENDELSE_DATO} LIMIT 1
""".trimIndent()

val resultat = try {
jdbcTemplate.queryForObject(sql, ::toHendelse, personIdent.get(), Kategori.UTGATT_VARSEL.toString())
jdbcTemplate.queryForObject(sql, ::toHendelse, personIdent.get(), kategori.name)
} catch (ex: EmptyResultDataAccessException) {
throw IngenHendelseForPersonException(cause = ex)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,20 +79,23 @@ class HendelseService(
return
}

/* Vi treng ikkje sjekke eldsteUtgattVarselHendelse om ikkje kategori var UTGATT_VARSEL */
if (hendelse.kategori != Kategori.UTGATT_VARSEL) {
logger.info("Hendelse med id ${hendelse.id} ble lagret i DB")
return
}
when (hendelse.kategori) {
Kategori.UTGATT_VARSEL -> {
val eldsteUtgattVarselHendelse =
hendelseRepository.getEldste(hendelse.personIdent, Kategori.UTGATT_VARSEL)

val eldsteUtgattVarselHendelse = hendelseRepository.getEldsteUtgattVarsel(hendelse.personIdent)
if (eldsteUtgattVarselHendelse.id == hendelse.id) {
oppdaterUtgattVarselForBrukerIOpenSearch(hendelse)

if (eldsteUtgattVarselHendelse.id == hendelse.id) {
oppdaterUgattVarselForBrukerIOpenSearch(hendelse)
logger.info("Hendelse med id ${hendelse.id} og kategori ${Kategori.UTGATT_VARSEL} ble lagret i DB og OpenSearch ble oppdatert med ny eldste utgåtte varsel for person.")
} else {
logger.info("Hendelse med id ${hendelse.id} og kategori ${Kategori.UTGATT_VARSEL} ble lagret i DB")
}
}

logger.info("Hendelse med id ${hendelse.id} ble lagret i DB og OpenSearch ble oppdatert med ny eldste utgåtte varsel for person.")
} else {
logger.info("Hendelse med id ${hendelse.id} ble lagret i DB")
Kategori.UDELT_SAMTALEREFERAT -> {
logger.info("Hendelse med id ${hendelse.id} og kategori ${hendelse.kategori} ble lagret i DB")
}
}
}

Expand All @@ -112,18 +115,20 @@ class HendelseService(
return
}

/* Vi treng ikkje sjekke eldsteUtgattVarselHendelse om ikkje kategori var UTGATT_VARSEL */
if (hendelse.kategori != Kategori.UTGATT_VARSEL) {
logger.info("Hendelse med id ${hendelse.id} ble oppdatert i DB")
return
}
when (hendelse.kategori) {
Kategori.UTGATT_VARSEL -> {
val eldsteUtgattVarselHendelse = hendelseRepository.getEldste(hendelse.personIdent, Kategori.UTGATT_VARSEL)

val eldsteUtgattVarselHendelse = hendelseRepository.getEldsteUtgattVarsel(hendelse.personIdent)
if (eldsteUtgattVarselHendelse.id == hendelse.id) {
oppdaterUgattVarselForBrukerIOpenSearch(hendelse)
logger.info("Hendelse med id ${hendelse.id} ble oppdatert i DB og OpenSearch ble oppdatert med ny eldste utgåtte varsel for person.")
} else {
logger.info("Hendelse med id ${hendelse.id} ble oppdatert i DB")
if (eldsteUtgattVarselHendelse.id == hendelse.id) {
oppdaterUtgattVarselForBrukerIOpenSearch(hendelse)
logger.info("Hendelse med id ${hendelse.id} og kategori ${Kategori.UTGATT_VARSEL} ble oppdatert i DB og OpenSearch ble oppdatert med ny eldste utgåtte varsel for person.")
} else {
logger.info("Hendelse med id ${hendelse.id} og kategori ${Kategori.UTGATT_VARSEL} ble oppdatert i DB")
}
}
Kategori.UDELT_SAMTALEREFERAT -> {
logger.info("Hendelse med id ${hendelse.id} og kategori ${hendelse.kategori} ble oppdatert i DB")
}
}
}

Expand All @@ -143,55 +148,42 @@ class HendelseService(
return
}

/* Vi treng ikkje sjekke eldsteUtgattVarselHendelse om ikkje kategori var UTGATT_VARSEL */
if (hendelse.kategori != Kategori.UTGATT_VARSEL) {
logger.info("Hendelse med id ${hendelse.id} ble slettet i DB.")
return
}
when (hendelse.kategori) {
Kategori.UTGATT_VARSEL -> {
val resultatAvGetEldsteUtgattVarselHendelse = try {
hendelseRepository.getEldste(hendelse.personIdent, Kategori.UTGATT_VARSEL)
} catch (ex: IngenHendelseForPersonException) {
ex
}

val resultatAvGetEldsteUtgattVarselHendelse = try {
hendelseRepository.getEldsteUtgattVarsel(hendelse.personIdent)
} catch (ex: IngenHendelseForPersonException) {
ex
}

if (resultatAvGetEldsteUtgattVarselHendelse is IngenHendelseForPersonException) {
// All good - det var ingen flere hendelser for personen etter at vi slettet den som kom inn som argument
slettUgattVarselForBrukerIOpenSearch(hendelse)
logger.info("Hendelse med id ${hendelse.id} ble slettet i DB og utgått varsel ble fjernet for person i OpenSearch siden personen ikke hadde andre hendelser.")
return
}
if (resultatAvGetEldsteUtgattVarselHendelse is IngenHendelseForPersonException) {
// All good - det var ingen flere hendelser for personen etter at vi slettet den som kom inn som argument
slettUgattVarselForBrukerIOpenSearch(hendelse)
logger.info("Hendelse med id ${hendelse.id} og kategori ${Kategori.UTGATT_VARSEL} ble slettet i DB og utgått varsel ble fjernet for person i OpenSearch siden personen ikke hadde andre hendelser.")
return
}

if (resultatAvGetEldsteUtgattVarselHendelse is Hendelse) {
oppdaterUgattVarselForBrukerIOpenSearch(resultatAvGetEldsteUtgattVarselHendelse)
if (resultatAvGetEldsteUtgattVarselHendelse is Hendelse) {
oppdaterUtgattVarselForBrukerIOpenSearch(resultatAvGetEldsteUtgattVarselHendelse)

logger.info("Hendelse med id ${hendelse.id} ble slettet i DB og OpenSearch ble oppdatert med ny eldste utgåtte varsel for person, med id ${resultatAvGetEldsteUtgattVarselHendelse.id}")
logger.info("Hendelse med id ${hendelse.id} og kategori ${Kategori.UTGATT_VARSEL} ble slettet i DB og OpenSearch ble oppdatert med ny eldste utgåtte varsel for person, med id ${resultatAvGetEldsteUtgattVarselHendelse.id}")
}
}
Kategori.UDELT_SAMTALEREFERAT -> {
logger.info("Hendelse med id ${hendelse.id} og kategori ${hendelse.kategori} ble slettet i DB.")
}
}
}

private fun oppdaterUgattVarselForBrukerIOpenSearch(hendelse: Hendelse) {
// 2024-11-29, Sondre
// Egentlig unødvendig if-sjekk så lenge kun Team DAB er på med "utgåtte varsel"
// Men har den med likevel for å tydeliggjøre at det er "utgått varsel"-feltet i OpenSearch
// som oppdateres her. Vi må huske å oppdatere håndtering etterhvert som denne tjenesten
// blir mer generalisert/får flere produsenter
if (Kategori.UTGATT_VARSEL == hendelse.kategori) {
// TODO: 2024-11-29, Sondre - Her konverterer vi bare ukritisk til Fnr, selv om NorskIdent også kan være f.eks. D-nummer
val aktorId = pdlIdentRepository.hentAktorIdForAktivBruker(Fnr.of(hendelse.personIdent.get()))
opensearchIndexerV2.oppdaterUtgattVarsel(hendelse, aktorId)
}
private fun oppdaterUtgattVarselForBrukerIOpenSearch(hendelse: Hendelse) {
// TODO: 2024-11-29, Sondre - Her konverterer vi bare ukritisk til Fnr, selv om NorskIdent også kan være f.eks. D-nummer
val aktorId = pdlIdentRepository.hentAktorIdForAktivBruker(Fnr.of(hendelse.personIdent.get()))
opensearchIndexerV2.oppdaterUtgattVarsel(hendelse, aktorId)
}

private fun slettUgattVarselForBrukerIOpenSearch(hendelse: Hendelse) {
// 2024-11-29, Sondre
// Egentlig unødvendig if-sjekk så lenge kun Team DAB er på med "utgåtte varsel"
// Men har den med likevel for å tydeliggjøre at det er "utgått varsel"-feltet i OpenSearch
// som oppdateres her. Vi må huske å oppdatere håndtering etterhvert som denne tjenesten
// blir mer generalisert/får flere produsenter
if (Kategori.UTGATT_VARSEL == hendelse.kategori) {
// TODO: 2024-11-29, Sondre - Her konverterer vi bare ukritisk til Fnr, selv om NorskIdent også kan være f.eks. D-nummer
val aktorId = pdlIdentRepository.hentAktorIdForAktivBruker(Fnr.of(hendelse.personIdent.get()))
opensearchIndexerV2.slettUtgattVarsel(aktorId)
}
// TODO: 2024-11-29, Sondre - Her konverterer vi bare ukritisk til Fnr, selv om NorskIdent også kan være f.eks. D-nummer
val aktorId = pdlIdentRepository.hentAktorIdForAktivBruker(Fnr.of(hendelse.personIdent.get()))
opensearchIndexerV2.slettUtgattVarsel(aktorId)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import no.nav.pto.veilarbportefolje.hendelsesfilter.Hendelse;
import no.nav.pto.veilarbportefolje.hendelsesfilter.HendelseRepository;
import no.nav.pto.veilarbportefolje.hendelsesfilter.IngenHendelseForPersonException;
import no.nav.pto.veilarbportefolje.hendelsesfilter.Kategori;
import no.nav.pto.veilarbportefolje.kodeverk.KodeverkService;
import no.nav.pto.veilarbportefolje.opensearch.domene.Endring;
import no.nav.pto.veilarbportefolje.opensearch.domene.OppfolgingsBruker;
Expand Down Expand Up @@ -249,7 +250,7 @@ public void flettInnSiste14aVedtak(List<OppfolgingsBruker> brukere) {
public void flettInnEldsteUtgattVarsel(List<OppfolgingsBruker> brukere) {
brukere.forEach(bruker -> {
try {
Hendelse eldsteHendelsePaPerson = hendelseRepository.getEldsteUtgattVarsel(NorskIdent.of(bruker.getFnr()));
Hendelse eldsteHendelsePaPerson = hendelseRepository.getEldste(NorskIdent.of(bruker.getFnr()), Kategori.UTGATT_VARSEL);
bruker.setUtgatt_varsel(eldsteHendelsePaPerson.getHendelse());
} catch (IngenHendelseForPersonException ex) {
log.info("Fant ingen hendelse/utgått varsel for person, så ingen data å flette inn.");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ class HendelseRepositoryTest(
hendelseRepository.insert(hendelse)

// When
val resultatAvHenting = hendelseRepository.getEldsteUtgattVarsel(personIdent)
val resultatAvHenting = hendelseRepository.getEldste(personIdent, Kategori.UTGATT_VARSEL)

// Then
val forventetHendelse = hendelse.copy()
Expand All @@ -121,7 +121,7 @@ class HendelseRepositoryTest(
hendelseRepository.insert(hendelseEldste)

// When
val resultatAvHenting = hendelseRepository.getEldsteUtgattVarsel(personIdent)
val resultatAvHenting = hendelseRepository.getEldste(personIdent, Kategori.UTGATT_VARSEL)

// Then
val forventetHendelse = hendelseEldste.copy()
Expand All @@ -141,7 +141,7 @@ class HendelseRepositoryTest(
hendelseRepository.insert(hendelseEldste)

// When
val resultatAvHenting = hendelseRepository.getEldsteUtgattVarsel(personIdent)
val resultatAvHenting = hendelseRepository.getEldste(personIdent, Kategori.UTGATT_VARSEL)

// Then
val forventetHendelse = hendelseNestEldste.copy()
Expand All @@ -155,7 +155,7 @@ class HendelseRepositoryTest(

// When
val resultatAvHenting = try {
hendelseRepository.getEldsteUtgattVarsel(personIdent)
hendelseRepository.getEldste(personIdent, Kategori.UTGATT_VARSEL)
} catch (ex: IngenHendelseForPersonException) {
ex
}
Expand Down

0 comments on commit 559fa82

Please sign in to comment.