From 559fa82283731d6d4719e53a07be5f2f922f32ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ingrid=20Foss=C3=A5?= Date: Thu, 19 Dec 2024 10:53:43 +0100 Subject: [PATCH] Gjort det tydelegare at vi handterer ulike hendelseskategoriar ulikt og gjort hentEldste meir generell/gjenbrukbar Co-authored-by: Sondre Larsen Ovrid --- .../hendelsesfilter/HendelseRepository.kt | 6 +- .../hendelsesfilter/HendelseService.kt | 118 ++++++++---------- .../postgres/PostgresOpensearchMapper.java | 3 +- .../hendelsesfilter/HendelseRepositoryTest.kt | 8 +- 4 files changed, 64 insertions(+), 71 deletions(-) diff --git a/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepository.kt b/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepository.kt index 4cdaefd80..644b4b3e1 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepository.kt +++ b/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepository.kt @@ -38,12 +38,12 @@ 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} = ? @@ -51,7 +51,7 @@ class HendelseRepository( """.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) } diff --git a/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseService.kt b/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseService.kt index fb56ae67c..883491a0c 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseService.kt +++ b/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseService.kt @@ -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") + } } } @@ -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") + } } } @@ -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) } } \ No newline at end of file diff --git a/src/main/java/no/nav/pto/veilarbportefolje/postgres/PostgresOpensearchMapper.java b/src/main/java/no/nav/pto/veilarbportefolje/postgres/PostgresOpensearchMapper.java index 2154f7cd6..d071fcfa4 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/postgres/PostgresOpensearchMapper.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/postgres/PostgresOpensearchMapper.java @@ -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; @@ -249,7 +250,7 @@ public void flettInnSiste14aVedtak(List brukere) { public void flettInnEldsteUtgattVarsel(List 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."); diff --git a/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepositoryTest.kt b/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepositoryTest.kt index d02acb5c9..36b206a58 100644 --- a/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepositoryTest.kt +++ b/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepositoryTest.kt @@ -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() @@ -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() @@ -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() @@ -155,7 +155,7 @@ class HendelseRepositoryTest( // When val resultatAvHenting = try { - hendelseRepository.getEldsteUtgattVarsel(personIdent) + hendelseRepository.getEldste(personIdent, Kategori.UTGATT_VARSEL) } catch (ex: IngenHendelseForPersonException) { ex }