From 900ad3dce9e1acf3b6445a8a4dbc3994588ef289 Mon Sep 17 00:00:00 2001 From: Chris Searle Date: Tue, 11 Jun 2024 14:09:30 +0200 Subject: [PATCH] Ktlint 1.3.0 (#5099) * Bump gradle to 8.8 * ktlint 1.3.0 * Update jar --- .editorconfig | 2 +- .../src/main/kotlin/Application.kt | 4 +- .../src/main/kotlin/Contekst.kt | 32 +- .../main/kotlin/behandling/BehandlingDao.kt | 99 +-- .../kotlin/behandling/BehandlingFactory.kt | 51 +- .../behandling/BehandlingRequestLogger.kt | 4 +- .../kotlin/behandling/BehandlingRoutes.kt | 3 +- .../kotlin/behandling/BehandlingService.kt | 131 +-- .../behandling/BehandlingStatusService.kt | 3 +- .../behandling/BehandlingsHendelserService.kt | 104 +-- .../behandling/BehandlingsstatusRoutes.kt | 15 +- .../main/kotlin/behandling/BrukerService.kt | 12 +- .../kotlin/behandling/GrunnlagServiceImpl.kt | 24 +- .../behandling/GyldighetsproevingService.kt | 8 +- .../aktivitetsplikt/AktivitetspliktDao.kt | 51 +- .../aktivitetsplikt/AktivitetspliktService.kt | 87 +- .../AktivitetspliktAktivitetsgradDao.kt | 4 +- .../vurdering/AktivitetspliktUnntakDao.kt | 4 +- .../behandlinginfo/BehandlingInfoDao.kt | 65 +- .../behandlinginfo/BehandlingInfoRoutes.kt | 10 +- .../behandlinginfo/BehandlingInfoService.kt | 8 +- .../behandlinginfo/BrevutfallException.kt | 48 +- .../behandlinginfo/Etterbetaling.kt | 41 +- .../bosattutland/BosattUtlandDao.kt | 19 +- .../bosattutland/BosattUtlandService.kt | 8 +- .../kotlin/behandling/domain/Behandling.kt | 70 +- .../domain/Foerstegangsbehandling.kt | 4 +- .../domain/Grunnlagsendringshendelse.kt | 9 +- .../GenerellBehandlingDao.kt | 34 +- .../GenerellBehandlingService.kt | 75 +- .../kotlin/behandling/hendelse/HendelseDao.kt | 19 +- .../jobs/SaksbehandlerJobService.kt | 25 +- .../klage/IKlageHendelserService.kt | 34 +- .../behandling/klage/KlageBrevService.kt | 9 +- .../main/kotlin/behandling/klage/KlageDao.kt | 23 +- .../kotlin/behandling/klage/KlageRoutes.kt | 21 +- .../kotlin/behandling/klage/KlageService.kt | 28 +- .../kotlin/behandling/klienter/AxsysKlient.kt | 23 +- .../klienter/BeregningKlientImpl.kt | 16 +- .../behandling/klienter/BrevApiKlient.kt | 117 ++- .../behandling/klienter/GrunnlagKlient.kt | 16 +- .../kotlin/behandling/klienter/KlageKlient.kt | 16 +- .../behandling/klienter/MigreringKlient.kt | 16 +- .../behandling/klienter/NavAnsattKlient.kt | 8 +- .../kotlin/behandling/klienter/Norg2Klient.kt | 9 +- .../klienter/TilbakekrevingKlient.kt | 15 +- .../behandling/klienter/VedtakKlientImpl.kt | 37 +- .../KommerBarnetTilGodeDao.kt | 24 +- .../KommerBarnetTilGodeService.kt | 3 +- .../behandling/omregning/OmregningDao.kt | 4 +- .../behandling/omregning/OmregningService.kt | 9 +- .../AutomatiskRevurderingService.kt | 4 +- .../behandling/revurdering/RevurderingDao.kt | 7 +- .../RevurderingInfoMedBegrunnelse.kt | 5 +- .../revurdering/RevurderingRoutes.kt | 5 +- .../revurdering/RevurderingService.kt | 83 +- .../behandling/selftest/SelfTestService.kt | 5 +- .../behandling/sjekkliste/SjekklisteDao.kt | 139 ++- .../sjekkliste/SjekklisteService.kt | 55 +- .../tilbakekreving/TilbakekrevingDao.kt | 29 +- .../TilbakekrevingFeilmeldinger.kt | 20 +- .../TilbakekrevingHendelserService.kt | 34 +- .../tilbakekreving/TilbakekrevingService.kt | 18 +- .../TilbakekrevingValidering.kt | 14 +- .../behandling/tilgang/TilgangRoutes.kt | 5 +- .../vedtaksbehandling/VedtaksbehandlingDao.kt | 18 +- .../VedtaksbehandlingService.kt | 8 +- .../common/ConnectionAutoclosingImpl.kt | 9 +- .../src/main/kotlin/common/DatabaseContext.kt | 8 +- .../TidligsteIverksatteVirkningstidspunkt.kt | 3 +- .../common/klienter/PdlTjenesterKlient.kt | 57 +- .../kotlin/common/klienter/PesysKlient.kt | 8 +- .../kotlin/common/klienter/SkjermingKlient.kt | 25 +- .../kotlin/egenansatt/EgenAnsattService.kt | 11 +- .../kotlin/grunnlagsendring/GrunnlagHelper.kt | 11 +- .../GrunnlagsendringsHendelseFilter.kt | 9 +- .../GrunnlagsendringshendelseDao.kt | 47 +- .../GrunnlagsendringshendelseRoute.kt | 4 +- .../GrunnlagsendringshendelseService.kt | 85 +- .../kotlin/grunnlagsendring/SakMedEnhet.kt | 5 +- .../doedshendelse/DoedshendelseDao.kt | 28 +- .../doedshendelse/DoedshendelseInternal.kt | 20 +- .../doedshendelse/DoedshendelseJobService.kt | 26 +- .../doedshendelse/DoedshendelseService.kt | 57 +- .../doedshendelse/DoedshendelseUtil.kt | 10 +- .../DoedshendelserKafkaService.kt | 26 +- .../DoedshendelseKontrollpunkt.kt | 48 +- ...DoedshendelseKontrollpunktAvdoedService.kt | 5 +- .../DoedshendelseKontrollpunktBarnService.kt | 23 +- ...dshendelseKontrollpunktEktefelleService.kt | 11 +- .../DoedshendelseKontrollpunktOMSService.kt | 27 +- .../DoedshendelseKontrollpunktService.kt | 13 +- .../klienter/GrunnlagKlient.kt | 73 +- .../klienter/krr/KrrKlientImpl.kt | 8 +- .../InstitusjonsoppholdDao.kt | 45 +- .../InstitusjonsoppholdRoutes.kt | 4 +- .../InstitusjonsoppholdService.kt | 9 +- .../main/kotlin/metrics/BehandlingMetrics.kt | 35 +- .../kotlin/metrics/BehandlingMetrikkerDao.kt | 9 +- .../metrics/GjenopprettingMetrikkerDao.kt | 28 +- .../kotlin/metrics/OppgaveMetrikkerDao.kt | 59 +- .../src/main/kotlin/oppgave/OppgaveDao.kt | 141 +-- .../oppgave/OppgaveDaoMedEndringssporing.kt | 36 +- .../src/main/kotlin/oppgave/OppgaveEndring.kt | 10 +- .../src/main/kotlin/oppgave/OppgaveRoutes.kt | 15 +- .../src/main/kotlin/oppgave/OppgaveService.kt | 180 ++-- .../kotlin/oppgaveGosys/GosysOppgaveKlient.kt | 47 +- .../kotlin/oppgaveGosys/GosysOppgaveRoute.kt | 5 +- .../oppgaveGosys/GosysOppgaveService.kt | 76 +- .../src/main/kotlin/sak/SakDao.kt | 73 +- .../src/main/kotlin/sak/SakRoutes.kt | 22 +- .../src/main/kotlin/sak/SakService.kt | 41 +- .../src/main/kotlin/sak/SakTilgangDao.kt | 4 +- .../src/main/kotlin/sak/TilgangService.kt | 22 +- .../saksbehandler/SaksbehandlerInfoDao.kt | 32 +- .../saksbehandler/SaksbehandlerService.kt | 5 +- .../main/kotlin/tilgangsstyring/AzureGroup.kt | 4 +- .../src/test/kotlin/DatabaseContextTest.kt | 17 +- .../test/kotlin/OmregningIntegrationTest.kt | 69 +- .../src/test/kotlin/TestHelper.kt | 17 +- .../src/test/kotlin/VerdikjedeTest.kt | 822 +++++++++--------- .../AdressebeskyttelseTest.kt | 257 +++--- .../adressebeskyttelse/TilgangServiceTest.kt | 4 +- .../behandling/BehandlingDaoReguleringTest.kt | 4 +- .../kotlin/behandling/BehandlingDaoTest.kt | 4 +- .../behandling/BehandlingFactoryTest.kt | 99 ++- .../behandling/BehandlingServiceImplTest.kt | 8 +- .../aktivitetsplikt/AktivitetspliktDaoTest.kt | 4 +- .../AktivitetspliktAktivitetsgradDaoTest.kt | 4 +- .../vurdering/AktivitetspliktUnntakDaoTest.kt | 4 +- .../behandlinginfo/BehandlingInfoDaoTest.kt | 4 +- .../bosattutland/BosattUtlandDaoTest.kt | 4 +- .../behandling/domain/RevurderingTest.kt | 75 +- .../GenerellBehandlingDaoTest.kt | 4 +- .../GenerellBehandlingServiceTest.kt | 19 +- .../behandling/klage/KlageDaoImplTest.kt | 4 +- .../klage/KlageRoutesIntegrationTest.kt | 187 ++-- .../behandling/klage/KlageServiceImplTest.kt | 6 +- .../VedtaksbehandlingRoutesIntegrationTest.kt | 23 +- .../RevurderingServiceIntegrationTest.kt | 3 +- .../sjekkliste/SjekklisteIntegrationTest.kt | 4 +- .../tilbakekreving/TilbakekrevingDaoTest.kt | 4 +- .../TilbakekrevingRoutesIntegrationTest.kt | 88 +- .../TilbakekrevingServiceIntegrationTest.kt | 10 +- .../VedtaksbehandlingDaoTest.kt | 7 +- ...igsteIverksatteVirkningstidspunktKtTest.kt | 5 +- .../kotlin/egenansatt/EgenAnsattRouteTest.kt | 198 +++-- .../egenansatt/EgenAnsattServiceTest.kt | 4 +- .../GrunnlagsendringshendelseDaoTest.kt | 4 +- .../GrunnlagsendringshendelseRouteTest.kt | 136 +-- .../doedshendelse/DoedshendelseDaoTest.kt | 19 +- .../DoedshendelseJobServiceTest.kt | 60 +- .../doedshendelse/DoedshendelseRouteTest.kt | 34 +- .../InstitusjonsoppholdDaoTest.kt | 4 +- .../integration/BehandlingIntegrationTest.kt | 55 +- .../kotlin/integration/EksterneKlienter.kt | 174 ++-- .../metrics/BehandlingMetricsOppgaveTest.kt | 46 +- .../kotlin/metrics/BehandlingMetricsTest.kt | 52 +- .../oppgave/OppgaveDaoReguleringTest.kt | 4 +- .../src/test/kotlin/oppgave/OppgaveDaoTest.kt | 4 +- .../test/kotlin/oppgave/OppgaveRoutesTest.kt | 133 +-- .../test/kotlin/oppgave/OppgaveServiceTest.kt | 25 +- .../src/test/kotlin/sak/SakDaoTest.kt | 70 +- .../saksbehandler/SaksbehandlerInfoDaoTest.kt | 4 +- .../SaksbehandlerServiceImplTest.kt | 4 +- .../kotlin/no/nav/etterlatte/Application.kt | 24 +- .../etterlatte/beregningkafka/AppBuilder.kt | 8 +- .../beregningkafka/BeregningService.kt | 3 +- .../OmregningHendelserBeregningRiver.kt | 42 +- .../beregningkafka/OmregningsHendelserTest.kt | 5 +- .../SjekkOmOverstyrtBeregningRiverTest.kt | 10 +- .../no/nav/etterlatte/ApplicationBuilder.kt | 14 +- .../no/nav/etterlatte/brev/BrevParametre.kt | 11 +- .../no/nav/etterlatte/brev/BrevRoute.kt | 3 +- .../no/nav/etterlatte/brev/BrevService.kt | 66 +- .../no/nav/etterlatte/brev/Brevoppretter.kt | 12 +- .../etterlatte/brev/JournalfoerBrevService.kt | 24 +- .../brev/MigreringBrevDataService.kt | 4 +- .../no/nav/etterlatte/brev/PDFGenerator.kt | 3 +- .../no/nav/etterlatte/brev/PDFService.kt | 8 +- .../brev/RedigerbartVedleggHenter.kt | 5 +- .../nav/etterlatte/brev/VedtaksbrevService.kt | 77 +- .../etterlatte/brev/adresse/Norg2Klient.kt | 6 +- .../brev/adresse/RegoppslagKlient.kt | 15 +- .../adresse/enhetsregister/BrregKlient.kt | 13 +- .../adresse/enhetsregister/BrregService.kt | 7 +- .../brev/adresse/navansatt/NavansattKlient.kt | 3 +- .../etterlatte/brev/behandling/Behandling.kt | 7 +- .../brev/behandling/Grunnlagmapper.kt | 6 +- .../etterlatte/brev/behandling/Personer.kt | 4 +- .../brevbaker/BlockTilSlateKonverterer.kt | 14 +- .../brev/brevbaker/BrevbakerKlient.kt | 57 +- .../brev/brevbaker/BrevbakerRequest.kt | 10 +- .../brev/brevbaker/BrevbakerService.kt | 9 +- .../nav/etterlatte/brev/db/BrevRepository.kt | 276 +++--- .../brev/distribusjon/Brevdistribuerer.kt | 36 +- .../brev/distribusjon/DistribusjonKlient.kt | 48 +- .../brev/distribusjon/DistribusjonModell.kt | 4 +- .../brev/distribusjon/DistribusjonService.kt | 3 +- .../brev/dokarkiv/DokarkivKlient.kt | 28 +- .../brev/dokarkiv/DokarkivService.kt | 9 +- .../etterlatte/brev/dokarkiv/Journalpost.kt | 8 +- .../nav/etterlatte/brev/dokument/SafKlient.kt | 15 +- .../etterlatte/brev/dokument/SafService.kt | 49 +- .../brev/hentinformasjon/BehandlingKlient.kt | 66 +- .../brev/hentinformasjon/BeregningKlient.kt | 65 +- .../brev/hentinformasjon/BrevdataFacade.kt | 60 +- .../brev/hentinformasjon/GrunnlagKlient.kt | 52 +- .../brev/hentinformasjon/SakService.kt | 4 +- .../brev/hentinformasjon/TrygdetidKlient.kt | 20 +- .../hentinformasjon/VedtaksvurderingKlient.kt | 20 +- .../VedtaksvurderingService.kt | 4 +- .../beregning/BeregningService.kt | 4 +- .../no/nav/etterlatte/brev/model/BrevData.kt | 11 +- .../BrevDataMapperFerdigstillingVedtak.kt | 8 +- .../no/nav/etterlatte/brev/model/BrevModel.kt | 4 +- .../etterlatte/brev/model/Etterbetaling.kt | 16 +- .../etterlatte/brev/model/EtterlatteBrev.kt | 57 +- .../bp/BarnepensjonInformasjonDoedsfall.kt | 8 +- .../brev/model/bp/BarnepensjonRevurdering.kt | 5 +- .../brev/model/klage/AvvistKlageFerdigData.kt | 18 +- .../brev/model/oms/AktivitetspliktBrevdata.kt | 3 +- .../model/oms/OmstillingsstoenadAvslag.kt | 8 +- .../OmstillingsstoenadInformasjonDoedsfall.kt | 8 +- .../tilbakekreving/TilbakekrevingBrevData.kt | 4 +- .../no/nav/etterlatte/brev/notat/Notat.kt | 4 +- .../etterlatte/brev/notat/NotatRepository.kt | 27 +- .../nav/etterlatte/brev/notat/NotatRoute.kt | 4 +- .../nav/etterlatte/brev/notat/NotatService.kt | 14 +- .../etterlatte/brev/notat/NyNotatService.kt | 27 +- .../brev/notat/PdfGeneratorKlient.kt | 16 +- .../OversendelseBrevService.kt | 30 +- .../brev/varselbrev/VarselbrevService.kt | 37 +- .../brev/virusskanning/VirusScanService.kt | 12 +- .../OpprettJournalfoerOgDistribuerRiver.kt | 23 +- .../StartInformasjonsbrevgenereringRiver.kt | 26 +- .../no/nav/etterlatte/NotatServiceTest.kt | 100 +-- .../etterlatte/brev/VedtaksbrevServiceTest.kt | 16 +- .../brev/behandling/BehandlingTest.kt | 19 +- .../brevbaker/BlockTilSlateKonvertererTest.kt | 3 +- .../brev/db/BrevRepositoryIntegrationTest.kt | 15 +- .../hentinformasjon/BrevdataFacadeImplTest.kt | 11 +- .../brev/notat/NyNotatServiceTest.kt | 4 +- .../OversendelseBrevServiceImplTest.kt | 9 +- .../brev/varselbrev/VarselbrevTest.kt | 4 +- .../etterlatte/rivers/InformasjonsbrevTest.kt | 48 +- .../rivers/JournalfoerVedtaksbrevRiverTest.kt | 5 +- .../OpprettJournalfoerOgDistribuerTest.kt | 17 +- .../rivers/VedtaksbrevUnderkjentRiverTest.kt | 5 +- .../nav/etterlatte/kafka/BehandlingKlient.kt | 5 +- .../nav/etterlatte/kafka/KafkaEnvironment.kt | 13 +- .../src/main/kotlin/Application.kt | 7 +- .../main/kotlin/grunnlag/GrunnlagHenter.kt | 15 +- .../main/kotlin/grunnlag/GrunnlagService.kt | 97 ++- .../src/main/kotlin/grunnlag/OpplysningDao.kt | 312 +++---- .../main/kotlin/grunnlag/OpplysningsBygger.kt | 15 +- .../grunnlag/OpplysningsgrunnlagMapper.kt | 6 +- .../src/main/kotlin/grunnlag/VergeService.kt | 4 +- .../grunnlag/adresse/PersondataAdresse.kt | 8 +- .../aldersovergang/AldersovergangDao.kt | 4 +- .../aldersovergang/AldersovergangService.kt | 4 +- .../main/kotlin/klienter/BehandlingKlient.kt | 19 +- .../kotlin/klienter/PdltjenesterKlient.kt | 46 +- .../main/kotlin/klienter/PersondataKlient.kt | 25 +- .../kotlin/grunnlag/GrunnlagDbExtension.kt | 4 +- .../kotlin/grunnlag/GrunnlagHenterTest.kt | 17 +- .../kotlin/grunnlag/GrunnlagServiceTest.kt | 27 +- .../AldersovergangServiceTest.kt | 4 +- .../aldersovergang/AldersovergangTest.kt | 4 +- .../itest/GrunnlagDaoIntegrationTest.kt | 63 +- .../test/kotlin/grunnlag/itest/RapidTest.kt | 42 +- .../kotlin/no/nav/etterlatte/Application.kt | 26 +- .../gyldigsoeknad/NySoeknadRiver.kt | 5 +- .../gyldigsoeknad/OpprettBehandlingRiver.kt | 9 +- .../gyldigsoeknad/PersongalleriMapper.kt | 8 +- .../gyldigsoeknad/client/BehandlingClient.kt | 36 +- .../gyldigsoeknad/config/AppBuilder.kt | 7 +- .../journalfoering/DokarkivKlient.kt | 23 +- .../gyldigsoeknad/pdf/PdfGeneratorKlient.kt | 17 +- .../gyldigsoeknad/NySoeknadRiverTest.kt | 9 +- .../OpprettBehandlingRiverTest.kt | 6 +- .../client/BehandlingClientTest.kt | 7 +- .../src/main/kotlin/Application.kt | 4 +- .../behandling/BehandlingKlient.kt | 54 +- .../behandling/BehandlingService.kt | 3 +- .../config/ApplicationContext.kt | 4 +- .../joarkhendelser/config/KafkaEnvironment.kt | 17 +- .../kotlin/joarkhendelser/joark/SafGraphql.kt | 4 +- .../kotlin/joarkhendelser/joark/SafKlient.kt | 3 +- .../joarkhendelser/oppgave/OppgaveKlient.kt | 9 +- .../joarkhendelser/pdl/PdlTjenesterKlient.kt | 18 +- .../JoarkHendelseHandlerTest.kt | 5 +- .../src/main/kotlin/Application.kt | 4 +- .../hendelserpdl/config/KafkaEnvironment.kt | 17 +- .../hendelserpdl/pdl/PdlTjenesterKlient.kt | 9 +- .../kotlin/no/nav/etterlatte/Application.kt | 4 +- .../samordning/ApplicationContext.kt | 7 +- .../etterlatte/samordning/KafkaEnvironment.kt | 17 +- .../samordning/SamordningVedtakHendelse.kt | 4 +- .../main/kotlin/InstitusjonsoppholdKlient.kt | 9 +- .../src/main/kotlin/kafka/KafkaEnvironment.kt | 19 +- .../kotlin/no/nav/etterlatte/Application.kt | 4 +- .../nav/etterlatte/klage/BehandlingKlient.kt | 5 +- .../no/nav/etterlatte/klage/KabalKlient.kt | 14 +- .../klage/KabalOversendelseService.kt | 4 +- .../etterlatte/klage/KlageKafkakonsument.kt | 13 +- .../klage/modell/BehandlingEvent.kt | 26 +- .../klage/modell/BehandlingResultat.kt | 4 +- .../klage/modell/KlageOversendelse.kt | 9 +- .../src/main/kotlin/Application.kt | 10 +- .../migrering/FeilendeMigreringLytterRiver.kt | 9 +- .../main/kotlin/migrering/PesysRepository.kt | 9 +- .../main/kotlin/migrering/pen/PenKlient.kt | 8 +- .../migrering/start/MigreringFeatureToggle.kt | 4 +- .../LyttPaaIverksattVedtakRiverTest.kt | 46 +- .../src/main/kotlin/AppBuilder.kt | 4 +- .../src/main/kotlin/Application.kt | 8 +- .../src/main/kotlin/BehandlingService.kt | 109 +-- .../OppdaterDoedshendelseBrevDistribuert.kt | 6 +- .../src/main/kotlin/OpprettBrevRiver.kt | 4 +- .../src/main/kotlin/TidshendelsePacket.kt | 4 +- .../src/main/kotlin/TidshendelseService.kt | 17 +- ...AvbrytBehandlingHvisMigreringFeilaRiver.kt | 3 +- .../OmregningsHendelserBehandlingRiver.kt | 6 +- .../ReguleringsforespoerselRiver.kt | 12 +- .../no/nav/etterlatte/OpprettBrevRiverTest.kt | 30 +- .../OmregningsHendelserBehandlingRiverTest.kt | 8 +- .../ReguleringsforespoerselRiverTest.kt | 13 +- .../src/main/kotlin/Application.kt | 6 +- .../BarnepensjonUthenter.kt | 116 ++- .../OmstillingsstoenadUthenter.kt | 18 +- .../Opplysningsuthenter.kt | 70 +- .../OpplysningsuthenterBarnepensjonTest.kt | 3 +- ...plysningsuthenterOmstillingsstoenadTest.kt | 3 +- .../src/main/kotlin/Application.kt | 4 +- .../main/kotlin/config/ApplicationContext.kt | 4 +- .../kotlin/pdl/ParallelleSannheterKlient.kt | 26 +- .../src/main/kotlin/pdl/PdlKlient.kt | 161 ++-- .../src/main/kotlin/pdl/PdlModell.kt | 4 +- .../src/main/kotlin/pdl/PdlOboKlient.kt | 43 +- .../main/kotlin/pdl/mapper/BarnekullMapper.kt | 40 +- .../pdl/mapper/FamilieRelasjonMapper.kt | 31 +- .../mapper/ForeldreansvarHistorikkMapper.kt | 8 +- .../main/kotlin/pdl/mapper/UtlandMapper.kt | 15 +- .../src/main/kotlin/person/PersonRoute.kt | 7 +- .../src/main/kotlin/person/PersonService.kt | 59 +- .../main/kotlin/personweb/SporingService.kt | 4 +- .../pdl/ParallelleSannheterKlientTest.kt | 11 +- .../src/test/kotlin/pdl/PdlKlientTest.kt | 113 ++- .../kotlin/pdl/mapper/PersonMapperTest.kt | 4 +- .../kotlin/pdl/mapper/UtlandMapperTest.kt | 16 +- .../test/kotlin/person/PersonServiceTest.kt | 102 ++- .../kotlin/no/nav/etterlatte/Application.kt | 4 +- .../samordning/ApplicationContext.kt | 4 +- .../samordning/vedtak/CallerContext.kt | 5 +- .../samordning/vedtak/LoggingPlugins.kt | 11 +- .../samordning/vedtak/SamordningVedtak.kt | 55 +- .../vedtak/SamordningVedtakRoute.kt | 3 +- .../vedtak/SamordningVedtakService.kt | 34 +- .../samordning/vedtak/Tjenestepensjon.kt | 54 +- .../vedtak/TjenestepensjonKlient.kt | 14 +- .../vedtak/VedtaksvurderingKlient.kt | 71 +- .../vedtak/SamordningVedtakRouteTest.kt | 18 +- .../statistikk/clients/BehandlingKlient.kt | 22 +- .../statistikk/clients/BeregningKlient.kt | 16 +- .../database/OppdaterBeregningDao.kt | 76 +- .../statistikk/database/SakRepository.kt | 80 +- .../database/SoeknadStatistikkRepository.kt | 18 +- .../statistikk/database/StoenadRepository.kt | 223 ++--- .../kotlin/statistikk/domain/Beregning.kt | 10 +- .../statistikk/domain/MaanedStatistikk.kt | 5 +- .../src/main/kotlin/statistikk/domain/Sak.kt | 5 +- .../statistikk/jobs/RefreshBeregningJob.kt | 35 +- ...AvbruttOpprettetBehandlinghendelseRiver.kt | 3 +- .../river/BehandlingPaaVentHendelseRiver.kt | 3 +- .../statistikk/river/KlagehendelseRiver.kt | 3 +- .../river/TilbakekrevinghendelseRiver.kt | 3 +- .../statistikk/river/VedtakhendelserRiver.kt | 12 +- .../statistikk/service/StatistikkService.kt | 52 +- .../statistikk/database/SakRepositoryTest.kt | 4 +- .../SoeknadStatistikkRepositoryTest.kt | 4 +- .../database/StoenadRepositoryTest.kt | 25 +- .../jobs/MaanedligStatistikkJobTest.kt | 9 +- .../BehandlingPaaVentHendelseRiverTest.kt | 19 +- .../river/KlagehendelseRiverTest.kt | 49 +- .../river/SoeknadStatistikkRiverTest.kt | 40 +- .../river/TilbakekrevingHendelseRiverTest.kt | 29 +- .../kotlin/no/nav/etterlatte/Application.kt | 8 +- .../no/nav/etterlatte/testdata/Behandler.kt | 7 +- .../testdata/automatisk/BehandlingService.kt | 152 ++-- .../testdata/automatisk/BeregningService.kt | 33 +- .../testdata/automatisk/BrevService.kt | 9 +- .../testdata/automatisk/GrunnlagService.kt | 6 +- .../automatisk/VedtaksvurderingService.kt | 40 +- .../automatisk/VilkaarsvurderingService.kt | 58 +- .../src/main/kotlin/Application.kt | 21 +- .../etterlatte/testdata/dolly/DollyClient.kt | 62 +- .../etterlatte/testdata/dolly/DollyService.kt | 32 +- .../no/nav/etterlatte/testdata/dolly/Model.kt | 63 +- .../testdata/dolly/TestnavClient.kt | 11 +- .../testdata/features/OpprettOgBehandle.kt | 6 +- .../features/automatisk/Familieoppretter.kt | 3 +- .../testdata/features/dolly/DollyFeature.kt | 7 +- .../samordning/SamordningMottattFeature.kt | 30 +- .../features/soeknad/OpprettSoeknad.kt | 15 +- .../features/soeknad/SoeknadMapper.kt | 5 +- .../kotlin/no/nav/etterlatte/Application.kt | 44 +- .../nav/etterlatte/tidshendelser/Hendelse.kt | 6 +- .../etterlatte/tidshendelser/HendelseDao.kt | 56 +- .../tidshendelser/HendelsePoller.kt | 3 +- .../tidshendelser/HendelsePublisher.kt | 4 +- .../tidshendelser/klient/BehandlingKlient.kt | 23 +- .../tidshendelser/klient/GrunnlagKlient.kt | 28 +- .../AldersovergangerIntegrationTest.kt | 20 +- .../tidshendelser/DatabaseExtension.kt | 4 +- .../HendelsePollerIntegrationTest.kt | 4 +- .../tidshendelser/HendelseRiverTest.kt | 4 +- .../JobbPollerIntegrationTest.kt | 4 +- .../OmstillingsstoenadAktivitetspliktTest.kt | 7 +- .../src/main/kotlin/Application.kt | 4 +- .../TilbakekrevingHendelseRepository.kt | 4 +- .../kravgrunnlag/KravgrunnlagConsumer.kt | 11 +- .../kravgrunnlag/KravgrunnlagService.kt | 4 +- .../vedtak/TilbakekrevingKlient.kt | 43 +- .../vedtak/TilbakekrevingVedtakService.kt | 4 +- .../TilbakekrevingHendelseRepositoryTest.kt | 7 +- .../kotlin/no/nav/etterlatte/Application.kt | 18 +- .../etterlatte/trygdetid/kafka/AppBuilder.kt | 4 +- .../src/main/kotlin/Application.kt | 4 +- .../main/kotlin/trygdetid/KodeverkService.kt | 13 +- .../main/kotlin/trygdetid/LandNormalisert.kt | 9 +- .../src/main/kotlin/trygdetid/Trygdetid.kt | 49 +- .../kotlin/trygdetid/TrygdetidRepository.kt | 142 +-- .../main/kotlin/trygdetid/TrygdetidRoutes.kt | 91 +- .../main/kotlin/trygdetid/TrygdetidService.kt | 181 ++-- .../trygdetid/avtale/AvtaleRepository.kt | 11 +- .../kotlin/trygdetid/avtale/AvtaleService.kt | 4 +- .../trygdetid/klienter/BehandlingKlient.kt | 16 +- .../trygdetid/klienter/GrunnlagKlient.kt | 13 +- .../trygdetid/klienter/KodeverkKlient.kt | 29 +- .../trygdetid/regler/BeregnTrygdetid.kt | 28 +- .../no/nav/etterlatte/trygdetid/TestHelper.kt | 11 +- .../trygdetid/TrygdetidRepositoryTest.kt | 4 +- .../TrygdetidServiceIntegrationTest.kt | 46 +- .../trygdetid/TrygdetidServiceTest.kt | 70 +- .../trygdetid/avtale/AvtaleRepositoryTest.kt | 4 +- .../etterlatte/utbetaling/BehandlingKlient.kt | 5 +- .../utbetaling/VedtaksvurderingKlient.kt | 22 +- .../utbetaling/avstemming/AvstemmingDao.kt | 14 +- .../avstemming/Grensesnittavstemming.kt | 4 +- .../avstemming/KonsistensavstemmingService.kt | 77 +- .../avstemmingsdata/AvstemmingsdataJaxb.kt | 28 +- .../GrensesnittavstemmingDataMapper.kt | 14 +- .../KonsistensavstemmingDataMapper.kt | 10 +- .../nav/etterlatte/utbetaling/common/Utils.kt | 30 +- .../utbetaling/config/ApplicationContext.kt | 11 +- .../iverksetting/KvitteringMottaker.kt | 16 +- .../iverksetting/VedtakMottakRiver.kt | 8 +- .../iverksetting/oppdrag/OppdragMapper.kt | 11 +- .../iverksetting/oppdrag/OppdragSender.kt | 13 +- .../iverksetting/utbetaling/Utbetaling.kt | 41 +- .../iverksetting/utbetaling/UtbetalingDao.kt | 185 ++-- .../utbetaling/UtbetalingMapper.kt | 26 +- .../utbetaling/UtbetalingService.kt | 68 +- .../utbetaling/Utbetalingsvedtak.kt | 11 +- .../simulering/SimuleringOsKlient.kt | 36 +- .../simulering/SimuleringOsService.kt | 44 +- .../kotlin/no/nav/etterlatte/TestRapid.kt | 4 +- .../nav/etterlatte/utbetaling/VedtakHelper.kt | 34 +- .../AvstemmingDaoIntegrationTest.kt | 4 +- .../KonsistensavstemmingServiceKtTest.kt | 268 ++++-- .../GrensesnittavstemmingDataMapperTest.kt | 125 +-- .../KonsistensavstemmingDataMapperTest.kt | 30 +- .../iverksetting/oppdrag/OppdragMapperTest.kt | 14 +- .../UtbetalingDaoIntegrationTest.kt | 24 +- .../utbetaling/UtbetalingServiceTest.kt | 81 +- .../src/main/kotlin/Application.kt | 22 +- .../kotlin/no/nav/etterlatte/VedtakService.kt | 47 +- .../nav/etterlatte/regulering/AppBuilder.kt | 12 +- .../regulering/ReguleringFeatureToggle.kt | 4 +- .../rivers/TidshendelseRiver.kt | 3 +- .../samordning/TilSamordningRiver.kt | 5 +- .../LoependeYtelserforespoerselRiverTest.kt | 11 +- .../samordning/TilSamordningRiverTest.kt | 4 +- .../src/main/kotlin/Application.kt | 4 +- .../AutomatiskBehandlingService.kt | 3 +- .../nav/etterlatte/vedtaksvurdering/Vedtak.kt | 14 +- .../VedtakBehandlingService.kt | 71 +- .../vedtaksvurdering/VedtakEtterbetaling.kt | 10 +- .../vedtaksvurdering/VedtakKlageService.kt | 5 +- .../VedtakSamordningService.kt | 7 +- .../VedtakTilbakekrevingService.kt | 19 +- .../vedtaksvurdering/Vedtakstidslinje.kt | 36 +- .../VedtaksvurderingRapidService.kt | 15 +- .../VedtaksvurderingRepository.kt | 47 +- .../vedtaksvurdering/VedtaksvurderingRoute.kt | 20 +- .../VedtaksvurderingService.kt | 4 +- .../grunnlag/GrunnlagVersjonValidering.kt | 10 +- .../klienter/BehandlingKlient.kt | 90 +- .../klienter/BeregningKlient.kt | 22 +- .../klienter/SamordningsKlient.kt | 27 +- .../klienter/TrygdetidKlient.kt | 14 +- .../klienter/VilkaarsvurderingKlient.kt | 14 +- .../vedtaksvurdering/metrics/VedtakMetrics.kt | 3 +- .../metrics/VedtakMetrikkerDao.kt | 4 +- .../outbox/OutboxRepository.kt | 9 +- .../vedtaksvurdering/outbox/OutboxService.kt | 5 +- .../VedtakBehandlingServiceTest.kt | 7 +- .../VedtakKlageServiceTest.kt | 9 +- .../vedtaksvurdering/VedtakstidslinjeTest.kt | 5 +- .../VedtaksvurderingRepositoryTest.kt | 7 +- .../VedtaksvurderingRouteTest.kt | 174 ++-- .../grunnlag/GrunnlagVersjonValideringTest.kt | 10 +- .../metrics/VedtakMetricsTest.kt | 16 +- .../AutomatiskBehandlingRoutesKtTest.kt | 66 +- .../outbox/OutboxIntegrationTest.kt | 7 +- .../kotlin/no/nav/etterlatte/Application.kt | 12 +- .../vilkaarsvurdering/AppBuilder.kt | 9 +- .../VilkaarsvurderingRiver.kt | 3 +- .../services/VilkaarsvurderingService.kt | 12 +- .../VilkaarsvurderingRiverTest.kt | 17 +- .../src/main/kotlin/Application.kt | 4 +- .../vilkaarsvurdering/DelvilkaarRepository.kt | 3 +- .../VilkaarsvurderingRepository.kt | 44 +- .../VilkaarsvurderingRoutes.kt | 10 +- .../VilkaarsvurderingService.kt | 89 +- .../klienter/BehandlingKlient.kt | 15 +- .../klienter/GrunnlagKlient.kt | 13 +- .../VilkaarsvurderingRepositoryTest.kt | 16 +- .../VilkaarsvurderingRoutesTest.kt | 57 +- .../VilkaarsvurderingServiceTest.kt | 17 +- buildSrc/build.gradle.kts | 2 +- gradle/wrapper/gradle-wrapper.jar | Bin 43453 -> 43462 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew.bat | 20 +- .../libs/common/behandling/Aktivitetsplikt.kt | 4 +- .../common/behandling/BehandlingsBehov.kt | 5 +- .../common/behandling/JaNeiMedBegrunnelse.kt | 5 +- .../libs/common/behandling/Klage.kt | 108 ++- .../omregning/OpprettOmregningResponse.kt | 6 +- .../common/sak/ReguleringFeiletHendelse.kt | 5 +- .../etterlatte/libs/common/sak/SakIDListe.kt | 5 +- .../libs/common/behandling/KlageTest.kt | 13 +- .../behandling/KlageUtfallMedDataTest.kt | 9 +- .../src/main/kotlin/GrunnlagMedPeriode.kt | 61 +- .../InstitusjonsoppholdBeregningsgrunnlag.kt | 4 +- .../src/main/kotlin/Prosent.kt | 4 +- .../src/main/kotlin/SoeskenMedIBeregning.kt | 5 +- .../KombinerOverlappendePerioderTest.kt | 7 +- .../no/nav/etterlatte/brev/Brevkoder.kt | 5 +- .../nav/etterlatte/brev/EtterlatteBrevkode.kt | 9 +- .../src/main/kotlin/KotliqueryUtils.kt | 11 +- .../no/nav/etterlatte/DataSourceInsert.kt | 3 +- .../funksjonsbrytere/FeatureToggleConfig.kt | 4 +- .../funksjonsbrytere/FeatureToggleService.kt | 12 +- .../src/main/kotlin/jobs/LeaderElection.kt | 7 +- .../src/main/kotlin/jobs/TimerUtils.kt | 11 +- .../test/kotlin/jobs/LeaderElectionTest.kt | 5 +- .../src/main/kotlin/kafka/JsonMessage.kt | 7 +- .../kotlin/kafka/JsonMessageSerializer.kt | 8 +- .../src/main/kotlin/kafka/KafkaProdusent.kt | 31 +- .../src/main/kotlin/AuthorizationPlugin.kt | 6 +- .../src/main/kotlin/JWTTokenClaimsUtils.kt | 3 +- .../MaskinportenScopeAuthorizationPlugin.kt | 3 +- .../StatusPagesKonfigurasjon.kt | 4 +- .../ktor/ClientCredentialAuthProvider.kt | 23 +- .../kotlin/ktor/DefaultOAuth2HttpClient.kt | 24 +- .../main/kotlin/ktor/ktorobo/AzureAdClient.kt | 36 +- .../ktor/ktorobo/DownstreamResourceClient.kt | 3 +- .../src/main/kotlin/ktor/ktorobo/Tokens.kt | 4 +- .../src/main/kotlin/route/RouteUtils.kt | 24 +- .../src/main/kotlin/route/Tilgangssjekker.kt | 28 +- .../src/main/kotlin/token/BrukerTokenInfo.kt | 9 +- .../src/main/kotlin/token/Fagsaksystem.kt | 6 +- .../src/test/kotlin/RestModuleTest.kt | 134 +-- .../no/nav/etterlatte/ktor/TokenIssuer.kt | 44 +- .../migrering/MigreringRequest.kt | 4 +- .../nav/etterlatte/mq/JmsConnectionFactory.kt | 39 +- .../src/main/kotlin/oppgave/OppgaveIntern.kt | 19 +- .../src/main/kotlin/pdl/PersonDTO.kt | 5 +- .../main/kotlin/regler/PeriodisertGrunnlag.kt | 14 +- .../src/main/kotlin/regler/Regelkjoering.kt | 19 +- .../src/main/kotlin/regler/Regler.kt | 15 +- .../src/main/kotlin/regler/Visitor.kt | 4 +- .../regler/FinnFaktumIGrunnlagRegelTest.kt | 4 +- .../src/main/kotlin/sporingslogg/CEFEntry.kt | 4 +- .../src/main/kotlin/Kravgrunnlag.kt | 29 +- .../src/main/kotlin/Tilbakekreving.kt | 13 +- .../src/main/kotlin/Trygdetid.kt | 4 +- .../src/main/kotlin/VedtakDto.kt | 8 +- .../src/main/kotlin/VedtakOgRapid.kt | 6 +- .../OpprettVilkaarsvurderingFraBehandling.kt | 4 +- .../kotlin/vilkaarsvurdering/VilkaarType.kt | 4 +- .../vilkaarsvurdering/Vilkaarsvurdering.kt | 12 +- .../main/kotlin/rapidsandrivers/EventNames.kt | 4 +- .../rapidsandrivers/IkkeStandardiserteKeys.kt | 10 +- .../rapidsandrivers/ListenerMedLogging.kt | 9 +- .../ListenerMedLoggingOgFeilhaandtering.kt | 11 +- .../main/kotlin/rapidsandrivers/RapidEnv.kt | 24 +- .../rapidsandrivers/ReguleringEvents.kt | 5 +- .../src/main/kotlin/EnvUtils.kt | 8 +- .../src/main/kotlin/Jackson.kt | 3 +- .../src/main/kotlin/NaisUtils.kt | 9 +- .../src/main/kotlin/Retry.kt | 14 +- .../src/main/kotlin/UUID30.kt | 11 +- .../src/main/kotlin/VedtakType.kt | 4 +- .../src/main/kotlin/behandling/Navn.kt | 6 +- .../kotlin/behandling/Revurderingaarsak.kt | 4 +- .../src/main/kotlin/behandling/SakType.kt | 5 +- .../src/main/kotlin/event/SoeknadInnsendt.kt | 4 +- .../src/main/kotlin/grunnlag/Grunnlag.kt | 8 +- .../kotlin/grunnlag/Grunnlagsopplysning.kt | 79 +- .../src/main/kotlin/grunnlag/Opplysning.kt | 4 +- .../kotlin/gyldigSoeknad/VurdertGyldighet.kt | 4 +- .../src/main/kotlin/jobs/OpeningHours.kt | 13 +- .../src/main/kotlin/periode/Periode.kt | 5 +- .../person/Folkeregisteridentifikator.kt | 19 +- .../FolkeregisteridentifikatorValidator.kt | 8 +- .../src/main/kotlin/person/Person.kt | 30 +- .../src/main/kotlin/sak/Sak.kt | 17 +- .../src/main/kotlin/tidspunkt/Tidspunkt.kt | 3 +- .../src/test/kotlin/jobs/OpeningHoursTest.kt | 16 +- .../test/kotlin/person/FoedselsnummerTest.kt | 17 +- .../src/main/kotlin/grunnlag/TestDataMaps.kt | 20 +- .../test/kotlin/grunnlag/OpplysningTest.kt | 7 +- 625 files changed, 9581 insertions(+), 7322 deletions(-) diff --git a/.editorconfig b/.editorconfig index fabd3a63aca..687694f5a16 100644 --- a/.editorconfig +++ b/.editorconfig @@ -3,4 +3,4 @@ root = true [*.{kt,kts}] ktlint_code_style = ktlint_official ktlint_standard_if-else-wrapping = disabled -ktlint_standard_discouraged-comment-location = disabled # Vi har mange kommentarer i discouraged location per nå. Se jira for teknisk-gjeld task for å fjerne denne \ No newline at end of file +ktlint_standard_discouraged-comment-location = disabled # Vi har mange kommentarer i discouraged location per nå. Se jira for teknisk-gjeld task for å fjerne denne diff --git a/apps/etterlatte-behandling/src/main/kotlin/Application.kt b/apps/etterlatte-behandling/src/main/kotlin/Application.kt index d62d5aa0fa3..fa9ff3d43c1 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/Application.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/Application.kt @@ -59,7 +59,9 @@ fun main() { Server(ApplicationContext()).run() } -private class Server(private val context: ApplicationContext) { +private class Server( + private val context: ApplicationContext, +) { init { sikkerLoggOppstartOgAvslutning("etterlatte-behandling") } diff --git a/apps/etterlatte-behandling/src/main/kotlin/Contekst.kt b/apps/etterlatte-behandling/src/main/kotlin/Contekst.kt index 34881d9775a..efba0784aa9 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/Contekst.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/Contekst.kt @@ -22,27 +22,32 @@ class Context( val databasecontxt: DatabaseKontekst, val sakTilgangDao: SakTilgangDao, ) { - fun appUserAsSaksbehandler(): SaksbehandlerMedEnheterOgRoller { - return this.AppUser as SaksbehandlerMedEnheterOgRoller - } + fun appUserAsSaksbehandler(): SaksbehandlerMedEnheterOgRoller = this.AppUser as SaksbehandlerMedEnheterOgRoller } interface User { fun name(): String } -abstract class ExternalUser(val identifiedBy: TokenValidationContext) : User +abstract class ExternalUser( + val identifiedBy: TokenValidationContext, +) : User -class Self(private val prosess: String) : User { +class Self( + private val prosess: String, +) : User { override fun name() = prosess } -class SystemUser(identifiedBy: TokenValidationContext, val brukerTokenInfo: BrukerTokenInfo) : ExternalUser(identifiedBy) { - override fun name(): String { - return identifiedBy.hentTokenClaims(AZURE_ISSUER) +class SystemUser( + identifiedBy: TokenValidationContext, + val brukerTokenInfo: BrukerTokenInfo, +) : ExternalUser(identifiedBy) { + override fun name(): String = + identifiedBy + .hentTokenClaims(AZURE_ISSUER) ?.getStringClaim("azp_name") // format=cluster:namespace:app-name ?: throw IllegalArgumentException("Støtter ikke navn på systembruker") - } } class SaksbehandlerMedEnheterOgRoller( @@ -56,9 +61,7 @@ class SaksbehandlerMedEnheterOgRoller( private fun saksbehandlersEnheter() = saksbehandlerService.hentEnheterForSaksbehandlerIdentWrapper(name()).map { it.enhetsNummer }.toSet() - override fun name(): String { - return identifiedBy.hentTokenClaims(AZURE_ISSUER)!!.getStringClaim("NAVident") - } + override fun name(): String = identifiedBy.hentTokenClaims(AZURE_ISSUER)!!.getStringClaim("NAVident") private fun harKjentEnhet(saksbehandlersEnheter: Set) = Enheter.kjenteEnheter().intersect(saksbehandlersEnheter).isNotEmpty() @@ -97,8 +100,8 @@ fun decideUser( saksbehandlerGroupIdsByKey: Map, saksbehandlerService: SaksbehandlerService, brukerTokenInfo: BrukerTokenInfo, -): ExternalUser { - return if (principal.context.issuers.contains(AZURE_ISSUER)) { +): ExternalUser = + if (principal.context.issuers.contains(AZURE_ISSUER)) { if (brukerTokenInfo is Systembruker) { SystemUser(principal.context, brukerTokenInfo) } else { @@ -112,7 +115,6 @@ fun decideUser( } else { throw IllegalStateException("no token from preapproved issuers") } -} interface DatabaseKontekst { fun activeTx(): Connection diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingDao.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingDao.kt index 8335275f7b7..05b90b3d354 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingDao.kt @@ -52,8 +52,8 @@ class BehandlingDao( INNER JOIN sak s ON b.sak_id = s.id """.trimIndent() - fun hentBehandling(id: UUID): Behandling? { - return connectionAutoclosing.hentConnection { + fun hentBehandling(id: UUID): Behandling? = + connectionAutoclosing.hentConnection { with(it) { val stmt = prepareStatement( @@ -69,10 +69,9 @@ class BehandlingDao( } } } - } - fun alleBehandlingerISak(sakid: Long): List { - return connectionAutoclosing.hentConnection { + fun alleBehandlingerISak(sakid: Long): List = + connectionAutoclosing.hentConnection { with(it) { val stmt = prepareStatement( @@ -86,13 +85,12 @@ class BehandlingDao( stmt.executeQuery().behandlingsListe() } } - } fun hentAlleRevurderingerISakMedAarsak( sakid: Long, revurderingaarsak: Revurderingaarsak, - ): List { - return connectionAutoclosing.hentConnection { + ): List = + connectionAutoclosing.hentConnection { with(it) { val stmt = prepareStatement( @@ -110,10 +108,9 @@ class BehandlingDao( stmt.executeQuery().toListPassesRsToBlock { rs -> asRevurdering(rs) } } } - } - fun migrerStatusPaaAlleBehandlingerSomTrengerNyBeregning(saker: Saker): List { - return connectionAutoclosing.hentConnection { connection -> + fun migrerStatusPaaAlleBehandlingerSomTrengerNyBeregning(saker: Saker): List = + connectionAutoclosing.hentConnection { connection -> with(connection) { val stmt = prepareStatement( @@ -131,10 +128,9 @@ class BehandlingDao( stmt.executeQuery().toList { BehandlingOgSak(getUUID("id"), getLong("sak_id")) } } } - } - fun hentAapneBehandlinger(saker: Saker): List { - return connectionAutoclosing.hentConnection { connection -> + fun hentAapneBehandlinger(saker: Saker): List = + connectionAutoclosing.hentConnection { connection -> with(connection) { val stmt = prepareStatement( @@ -150,7 +146,6 @@ class BehandlingDao( stmt.executeQuery().toList { BehandlingOgSak(getUUID("id"), getLong("sak_id")) } } } - } private fun asFoerstegangsbehandling(rs: ResultSet): Foerstegangsbehandling { val id = rs.getUUID("id") @@ -164,10 +159,12 @@ class BehandlingDao( status = rs.getString("status").let { BehandlingStatus.valueOf(it) }, virkningstidspunkt = rs.getString("virkningstidspunkt")?.let { objectMapper.readValue(it) }, utlandstilknytning = - rs.getString("utlandstilknytning") + rs + .getString("utlandstilknytning") ?.let { objectMapper.readValue(it) }, boddEllerArbeidetUtlandet = - rs.getString("bodd_eller_arbeidet_utlandet") + rs + .getString("bodd_eller_arbeidet_utlandet") ?.let { objectMapper.readValue(it) }, kommerBarnetTilgode = kommerBarnetTilGodeDao.hentKommerBarnetTilGode(id), prosesstype = rs.getString("prosesstype").let { Prosesstype.valueOf(it) }, @@ -190,8 +187,8 @@ class BehandlingDao( enhet = rs.getString("enhet"), ) - fun opprettBehandling(behandling: OpprettBehandling) { - return connectionAutoclosing.hentConnection { + fun opprettBehandling(behandling: OpprettBehandling) = + connectionAutoclosing.hentConnection { with(it) { val stmt = prepareStatement( @@ -227,10 +224,9 @@ class BehandlingDao( require(stmt.executeUpdate() == 1) } } - } - fun lagreGyldighetsproving(behandling: Foerstegangsbehandling) { - return connectionAutoclosing.hentConnection { + fun lagreGyldighetsproving(behandling: Foerstegangsbehandling) = + connectionAutoclosing.hentConnection { with(it) { val stmt = prepareStatement( @@ -247,7 +243,6 @@ class BehandlingDao( require(stmt.executeUpdate() == 1) } } - } fun lagreStatus(lagretBehandling: Behandling) { lagreStatus(lagretBehandling.id, lagretBehandling.status, lagretBehandling.sistEndret) @@ -257,45 +252,39 @@ class BehandlingDao( behandlingId: UUID, status: BehandlingStatus, sistEndret: LocalDateTime, - ) { - return connectionAutoclosing.hentConnection { - with(it) { - val stmt = prepareStatement("UPDATE behandling SET status = ?, sist_endret = ? WHERE id = ?") + ) = connectionAutoclosing.hentConnection { + with(it) { + val stmt = prepareStatement("UPDATE behandling SET status = ?, sist_endret = ? WHERE id = ?") - stmt.setString(1, status.name) - stmt.setTidspunkt(2, sistEndret.toTidspunkt()) - stmt.setObject(3, behandlingId) - require(stmt.executeUpdate() == 1) - } + stmt.setString(1, status.name) + stmt.setTidspunkt(2, sistEndret.toTidspunkt()) + stmt.setObject(3, behandlingId) + require(stmt.executeUpdate() == 1) } } fun lagreBoddEllerArbeidetUtlandet( behandlingId: UUID, boddEllerArbeidetUtlandet: BoddEllerArbeidetUtlandet, - ) { - return connectionAutoclosing.hentConnection { - with(it) { - val stmt = prepareStatement("UPDATE behandling SET bodd_eller_arbeidet_utlandet = ? WHERE id = ?") + ) = connectionAutoclosing.hentConnection { + with(it) { + val stmt = prepareStatement("UPDATE behandling SET bodd_eller_arbeidet_utlandet = ? WHERE id = ?") - stmt.setString(1, objectMapper.writeValueAsString(boddEllerArbeidetUtlandet)) - stmt.setObject(2, behandlingId) - require(stmt.executeUpdate() == 1) - } + stmt.setString(1, objectMapper.writeValueAsString(boddEllerArbeidetUtlandet)) + stmt.setObject(2, behandlingId) + require(stmt.executeUpdate() == 1) } } fun lagreUtlandstilknytning( behandlingId: UUID, utlandstilknytning: Utlandstilknytning, - ) { - return connectionAutoclosing.hentConnection { - with(it) { - val statement = prepareStatement("UPDATE behandling set utlandstilknytning = ? where id = ?") - statement.setJsonb(1, utlandstilknytning) - statement.setObject(2, behandlingId) - require(statement.executeUpdate() == 1) - } + ) = connectionAutoclosing.hentConnection { + with(it) { + val statement = prepareStatement("UPDATE behandling set utlandstilknytning = ? where id = ?") + statement.setJsonb(1, utlandstilknytning) + statement.setObject(2, behandlingId) + require(statement.executeUpdate() == 1) } } @@ -332,14 +321,12 @@ class BehandlingDao( fun lagreNyttVirkningstidspunkt( behandlingId: UUID, virkningstidspunkt: Virkningstidspunkt, - ) { - return connectionAutoclosing.hentConnection { - with(it) { - val statement = prepareStatement("UPDATE behandling SET virkningstidspunkt = ? where id = ?") - statement.setString(1, objectMapper.writeValueAsString(virkningstidspunkt)) - statement.setObject(2, behandlingId) - statement.executeUpdate() - } + ) = connectionAutoclosing.hentConnection { + with(it) { + val statement = prepareStatement("UPDATE behandling SET virkningstidspunkt = ? where id = ?") + statement.setString(1, objectMapper.writeValueAsString(virkningstidspunkt)) + statement.setObject(2, behandlingId) + statement.executeUpdate() } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingFactory.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingFactory.kt index 3664de5f0a8..16066eb70b7 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingFactory.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingFactory.kt @@ -112,14 +112,15 @@ class BehandlingFactory( request = hentDataForOpprettBehandling(sak.id), ).also { if (request.kilde == Vedtaksloesning.GJENOPPRETTA) { - oppgaveService.hentOppgaverForSak(sak.id) - .find { it.type == OppgaveType.GJENOPPRETTING_ALDERSOVERGANG && !it.erAvsluttet() }?.let { + oppgaveService + .hentOppgaverForSak(sak.id) + .find { it.type == OppgaveType.GJENOPPRETTING_ALDERSOVERGANG && !it.erAvsluttet() } + ?.let { oppgaveService.ferdigstillOppgave(it.id, brukerTokenInfo) } } } ?: throw IllegalStateException("Kunne ikke opprette behandling") - } - .also { it.sendMeldingForHendelse() } + }.also { it.sendMeldingForHendelse() } .behandling val gyldighetsvurdering = @@ -175,14 +176,16 @@ class BehandlingFactory( throw ManuellMigreringHarEksisterendeIverksattBehandling() } val forrigeBehandling = request.iverksatteEllerAttesterteBehandlinger.maxBy { it.behandlingOpprettet } - revurderingService.opprettAutomatiskRevurdering( - sakId = sakId, - persongalleri = persongalleri, - forrigeBehandling = forrigeBehandling, - mottattDato = mottattDato, - kilde = kilde, - revurderingAarsak = Revurderingaarsak.NY_SOEKNAD, - ).oppdater().let { BehandlingOgOppgave(it, null) } + revurderingService + .opprettAutomatiskRevurdering( + sakId = sakId, + persongalleri = persongalleri, + forrigeBehandling = forrigeBehandling, + mottattDato = mottattDato, + kilde = kilde, + revurderingAarsak = Revurderingaarsak.NY_SOEKNAD, + ).oppdater() + .let { BehandlingOgOppgave(it, null) } } else { val harBehandlingUnderbehandling = request.alleBehandlingerISak.filter { behandling -> @@ -269,17 +272,23 @@ class BehandlingFactory( } } -data class BehandlingOgOppgave(val behandling: Behandling, val oppgave: OppgaveIntern?, val sendMeldingForHendelse: () -> Unit = {}) - -class ManuellMigreringHarEksisterendeIverksattBehandling : UgyldigForespoerselException( - code = "MANUELL_MIGRERING_EKSISTERENDE_IVERKSATT", - detail = "Det eksisterer allerede en sak med en iverksatt behandling for angitt søker", +data class BehandlingOgOppgave( + val behandling: Behandling, + val oppgave: OppgaveIntern?, + val sendMeldingForHendelse: () -> Unit = {}, ) -class UgyldigEnhetException : UgyldigForespoerselException( - code = "UGYLDIG-ENHET", - detail = "Enhet brukt i form er matcher ingen gyldig enhet", -) +class ManuellMigreringHarEksisterendeIverksattBehandling : + UgyldigForespoerselException( + code = "MANUELL_MIGRERING_EKSISTERENDE_IVERKSATT", + detail = "Det eksisterer allerede en sak med en iverksatt behandling for angitt søker", + ) + +class UgyldigEnhetException : + UgyldigForespoerselException( + code = "UGYLDIG-ENHET", + detail = "Enhet brukt i form er matcher ingen gyldig enhet", + ) fun Vedtaksloesning.foerstOpprettaIPesys() = this == Vedtaksloesning.PESYS || this == Vedtaksloesning.GJENOPPRETTA diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingRequestLogger.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingRequestLogger.kt index c75e54ec720..15a5f864366 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingRequestLogger.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingRequestLogger.kt @@ -7,7 +7,9 @@ import no.nav.etterlatte.libs.sporingslogg.HttpMethod import no.nav.etterlatte.libs.sporingslogg.Sporingslogg import no.nav.etterlatte.libs.sporingslogg.Sporingsrequest -class BehandlingRequestLogger(private val sporingslogg: Sporingslogg) { +class BehandlingRequestLogger( + private val sporingslogg: Sporingslogg, +) { fun loggRequest( brukerTokenInfo: BrukerTokenInfo, fnr: Folkeregisteridentifikator, diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingRoutes.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingRoutes.kt index 42392b26f59..98b8607c2d4 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingRoutes.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingRoutes.kt @@ -304,8 +304,7 @@ internal fun Route.behandlingRoutes( Vedtaksloesning.GJENNY, request = request, ) - } - ?.also { it.sendMeldingForHendelse() } + }?.also { it.sendMeldingForHendelse() } ?.behandling ) { null -> call.respond(HttpStatusCode.NotFound) diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingService.kt index db050ca1a2c..f905eecd584 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingService.kt @@ -57,34 +57,43 @@ import java.time.LocalDate import java.time.YearMonth import java.util.UUID -class BehandlingFinnesIkkeException(message: String) : Exception(message) +class BehandlingFinnesIkkeException( + message: String, +) : Exception(message) -class KravdatoMaaFinnesHvisBosattutland(message: String) : - UgyldigForespoerselException(code = "BOSATTUTLAND_MÅ_HA_KRAVDATO", detail = message) +class KravdatoMaaFinnesHvisBosattutland( + message: String, +) : UgyldigForespoerselException(code = "BOSATTUTLAND_MÅ_HA_KRAVDATO", detail = message) -class VirkningstidspunktMaaHaUtenlandstilknytning(message: String) : - UgyldigForespoerselException(code = "VIRK_MÅ_HA UTENLANDSTILKNYTNING", detail = message) +class VirkningstidspunktMaaHaUtenlandstilknytning( + message: String, +) : UgyldigForespoerselException(code = "VIRK_MÅ_HA UTENLANDSTILKNYTNING", detail = message) -class BehandlingNotFoundException(behandlingId: UUID) : - IkkeFunnetException( +class BehandlingNotFoundException( + behandlingId: UUID, +) : IkkeFunnetException( code = "FANT_IKKE_BEHANDLING", detail = "Kunne ikke finne ønsket behandling, id: $behandlingId", ) -class BehandlingKanIkkeAvbrytesException(behandlingStatus: BehandlingStatus) : UgyldigForespoerselException( - code = "BEHANDLING_KAN_IKKE_AVBRYTES", - detail = "Behandlingen kan ikke avbrytes, status: $behandlingStatus", -) +class BehandlingKanIkkeAvbrytesException( + behandlingStatus: BehandlingStatus, +) : UgyldigForespoerselException( + code = "BEHANDLING_KAN_IKKE_AVBRYTES", + detail = "Behandlingen kan ikke avbrytes, status: $behandlingStatus", + ) -class PersongalleriFinnesIkkeException : IkkeFunnetException( - code = "FANT_IKKE_PERSONGALLERI", - detail = "Kunne ikke finne persongalleri", -) +class PersongalleriFinnesIkkeException : + IkkeFunnetException( + code = "FANT_IKKE_PERSONGALLERI", + detail = "Kunne ikke finne persongalleri", + ) -class KanIkkeEndreSendeBrevForFoerstegangsbehandling : UgyldigForespoerselException( - "KAN_IKKE_ENDRE_SEND_BREV", - "Kan ikke endre send brev for førstegangsbehandling, skal alltid sendes", -) +class KanIkkeEndreSendeBrevForFoerstegangsbehandling : + UgyldigForespoerselException( + "KAN_IKKE_ENDRE_SEND_BREV", + "Kan ikke endre send brev for førstegangsbehandling, skal alltid sendes", + ) interface BehandlingService { fun hentBehandling(behandlingId: UUID): Behandling? @@ -199,13 +208,9 @@ internal class BehandlingServiceImpl( private fun hentBehandlingerForSakId(sakId: Long) = behandlingDao.alleBehandlingerISak(sakId).filterForEnheter() - override fun hentBehandling(behandlingId: UUID): Behandling? { - return hentBehandlingForId(behandlingId) - } + override fun hentBehandling(behandlingId: UUID): Behandling? = hentBehandlingForId(behandlingId) - override fun hentBehandlingerForSak(sakId: Long): List { - return hentBehandlingerForSakId(sakId) - } + override fun hentBehandlingerForSak(sakId: Long): List = hentBehandlingerForSakId(sakId) /** * Funksjon for uthenting av [SakMedUtlandstilknytning] og tilknyttede [Behandling]er. @@ -239,11 +244,10 @@ internal class BehandlingServiceImpl( } } - override fun hentSisteIverksatte(sakId: Long): Behandling? { - return hentBehandlingerForSakId(sakId) + override fun hentSisteIverksatte(sakId: Long): Behandling? = + hentBehandlingerForSakId(sakId) .filter { BehandlingStatus.iverksattEllerAttestert().contains(it.status) } .maxByOrNull { it.behandlingOpprettet } - } override fun avbrytBehandling( behandlingId: UUID, @@ -273,7 +277,8 @@ internal class BehandlingServiceImpl( if (behandling is Revurdering && behandling.revurderingsaarsak == Revurderingaarsak.OMGJOERING_ETTER_KLAGE) { val omgjoeringsoppgaveForKlage = - oppgaveService.hentOppgaverForSak(behandling.sak.id) + oppgaveService + .hentOppgaverForSak(behandling.sak.id) .find { it.type == OppgaveType.OMGJOERING && it.referanse == behandling.relatertBehandlingId } ?: throw InternfeilException( "Kunne ikke finne en omgjøringsoppgave i sak=${behandling.sak.id}, " + @@ -305,30 +310,30 @@ internal class BehandlingServiceImpl( override suspend fun hentStatistikkBehandling( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): StatistikkBehandling? { - return inTransaction { hentBehandling(behandlingId) }?.let { + ): StatistikkBehandling? = + inTransaction { hentBehandling(behandlingId) }?.let { val persongalleri: Persongalleri = - grunnlagKlient.hentPersongalleri(behandlingId, brukerTokenInfo) + grunnlagKlient + .hentPersongalleri(behandlingId, brukerTokenInfo) ?.opplysning ?: throw NoSuchElementException("Persongalleri mangler for sak ${it.sak.id}") it.toStatistikkBehandling(persongalleri) } - } override suspend fun hentDetaljertBehandling( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): DetaljertBehandling? { - return inTransaction { hentBehandling(behandlingId) }?.let { + ): DetaljertBehandling? = + inTransaction { hentBehandling(behandlingId) }?.let { val persongalleri: Persongalleri = - grunnlagKlient.hentPersongalleri(behandlingId, brukerTokenInfo) + grunnlagKlient + .hentPersongalleri(behandlingId, brukerTokenInfo) ?.opplysning ?: throw NoSuchElementException("Persongalleri mangler for sak ${it.sak.id}") it.toDetaljertBehandlingWithPersongalleri(persongalleri) } - } override suspend fun erGyldigVirkningstidspunkt( behandlingId: UUID, @@ -430,15 +435,15 @@ internal class BehandlingServiceImpl( private suspend fun hentDoedsdato( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): LocalDate? { - return grunnlagKlient.finnPersonOpplysning(behandlingId, Opplysningstype.AVDOED_PDL_V1, brukerTokenInfo) + ): LocalDate? = + grunnlagKlient + .finnPersonOpplysning(behandlingId, Opplysningstype.AVDOED_PDL_V1, brukerTokenInfo) .also { - it?.fnr?.let { - fnr -> + it?.fnr?.let { fnr -> behandlingRequestLogger.loggRequest(brukerTokenInfo, fnr, "behandling") } - }?.opplysning?.doedsdato - } + }?.opplysning + ?.doedsdato override fun hentFoersteVirk(sakId: Long): YearMonth? { val behandlinger = hentBehandlingerForSak(sakId) @@ -476,10 +481,11 @@ internal class BehandlingServiceImpl( opplysningsType = Opplysningstype.PERSONGALLERI_V1, kilde = Grunnlagsopplysning.Saksbehandler.create(brukerTokenInfo.ident()), opplysning = - forrigePersonGalleri.copy( - avdoed = redigertFamilieforhold.avdoede, - gjenlevende = redigertFamilieforhold.gjenlevende, - ).toJsonNode(), + forrigePersonGalleri + .copy( + avdoed = redigertFamilieforhold.avdoede, + gjenlevende = redigertFamilieforhold.gjenlevende, + ).toJsonNode(), periode = null, ), ) @@ -512,9 +518,7 @@ internal class BehandlingServiceImpl( } } - override fun hentUtlandstilknytningForSak(sakId: Long): Utlandstilknytning? { - return hentBehandlingerForSakId(sakId).hentUtlandstilknytning() - } + override fun hentUtlandstilknytningForSak(sakId: Long): Utlandstilknytning? = hentBehandlingerForSakId(sakId).hentUtlandstilknytning() override fun lagreOpphoerFom( behandlingId: UUID, @@ -541,7 +545,8 @@ internal class BehandlingServiceImpl( val hendelserIBehandling = hendelseDao.finnHendelserIBehandling(behandlingId) val kommerBarnetTilgode = - kommerBarnetTilGodeDao.hentKommerBarnetTilGode(behandlingId) + kommerBarnetTilGodeDao + .hentKommerBarnetTilGode(behandlingId) .takeIf { behandling.sak.sakType == SakType.BARNEPENSJON } BehandlingMedData(behandling, kommerBarnetTilgode, hendelserIBehandling) } @@ -627,7 +632,8 @@ internal class BehandlingServiceImpl( }, ) try { - behandling.oppdaterVirkningstidspunkt(virkningstidspunktData) + behandling + .oppdaterVirkningstidspunkt(virkningstidspunktData) .also { behandlingDao.lagreNyttVirkningstidspunkt(behandlingId, virkningstidspunktData) behandlingDao.lagreStatus(it) @@ -660,7 +666,8 @@ internal class BehandlingServiceImpl( } try { - behandling.oppdaterBoddEllerArbeidetUtlandnet(boddEllerArbeidetUtlandet) + behandling + .oppdaterBoddEllerArbeidetUtlandnet(boddEllerArbeidetUtlandet) .also { behandlingDao.lagreBoddEllerArbeidetUtlandet(behandlingId, boddEllerArbeidetUtlandet) behandlingDao.lagreStatus(it) @@ -682,18 +689,20 @@ internal class BehandlingServiceImpl( hentBehandling(behandlingId) ?: throw InternfeilException("Kunne ikke oppdatere utlandstilknytning fordi behandlingen ikke finnes") - behandling.oppdaterUtlandstilknytning(utlandstilknytning) + behandling + .oppdaterUtlandstilknytning(utlandstilknytning) .also { behandlingDao.lagreUtlandstilknytning(behandlingId, utlandstilknytning) behandlingDao.lagreStatus(it) } } - override fun hentAapenRegulering(sakId: Long): UUID? { - return behandlingDao.hentAlleRevurderingerISakMedAarsak(sakId, Revurderingaarsak.REGULERING).singleOrNull { - it.status != BehandlingStatus.AVBRUTT && it.status != BehandlingStatus.IVERKSATT - }?.id - } + override fun hentAapenRegulering(sakId: Long): UUID? = + behandlingDao + .hentAlleRevurderingerISakMedAarsak(sakId, Revurderingaarsak.REGULERING) + .singleOrNull { + it.status != BehandlingStatus.AVBRUTT && it.status != BehandlingStatus.IVERKSATT + }?.id private fun hentBehandlingOrThrow(behandlingId: UUID) = behandlingDao.hentBehandling(behandlingId) @@ -718,7 +727,5 @@ internal class BehandlingServiceImpl( private fun filterBehandlingerForEnheter( enheterSomSkalFiltreres: List, behandlinger: List, - ): List { - return behandlinger.filter { it.sak.enhet !in enheterSomSkalFiltreres } - } + ): List = behandlinger.filter { it.sak.enhet !in enheterSomSkalFiltreres } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingStatusService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingStatusService.kt index c18021bb95f..9c3d1fdc4c9 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingStatusService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingStatusService.kt @@ -305,7 +305,8 @@ class BehandlingStatusServiceImpl( logger.info("Oppretter oppgave av type ${OppgaveType.TILBAKEKREVING} for behandling ${behandling.id}") val oppgaveFraBehandlingMedFeilutbetaling = - oppgaveService.hentOppgaverForSak(behandling.sak.id) + oppgaveService + .hentOppgaverForSak(behandling.sak.id) .filter { it.type == OppgaveType.TILBAKEKREVING } .filter { !it.erAvsluttet() } .maxByOrNull { it.opprettet } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingsHendelserService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingsHendelserService.kt index 1a743dac7cf..45725076808 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingsHendelserService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingsHendelserService.kt @@ -45,22 +45,24 @@ class BehandlingsHendelserKafkaProducerImpl( ) { val correlationId = getCorrelationId() - rapid.publiser( - statistikkBehandling.id.toString(), - JsonMessage.newMessage( - hendelseType.lagEventnameForType(), - mapOf( - CORRELATION_ID_KEY to correlationId, - TEKNISK_TID_KEY to Tidspunkt.now(), - STATISTIKKBEHANDLING_RIVER_KEY to statistikkBehandling, - ), - ).toJson(), - ).also { (partition, offset) -> - logger.info( - "Posted event ${hendelseType.lagEventnameForType()} for behandling ${statistikkBehandling.id}" + - " to partiton $partition, offset $offset correlationid: $correlationId", - ) - } + rapid + .publiser( + statistikkBehandling.id.toString(), + JsonMessage + .newMessage( + hendelseType.lagEventnameForType(), + mapOf( + CORRELATION_ID_KEY to correlationId, + TEKNISK_TID_KEY to Tidspunkt.now(), + STATISTIKKBEHANDLING_RIVER_KEY to statistikkBehandling, + ), + ).toJson(), + ).also { (partition, offset) -> + logger.info( + "Posted event ${hendelseType.lagEventnameForType()} for behandling ${statistikkBehandling.id}" + + " to partiton $partition, offset $offset correlationid: $correlationId", + ) + } } override fun sendMeldingForHendelsePaaVent( @@ -70,23 +72,25 @@ class BehandlingsHendelserKafkaProducerImpl( ) { val correlationId = getCorrelationId() - rapid.publiser( - behandlingId.toString(), - JsonMessage.newMessage( - hendelseType.lagEventnameForType(), - mapOf( - CORRELATION_ID_KEY to correlationId, - TEKNISK_TID_KEY to Tidspunkt.now(), - BEHANDLING_ID_PAA_VENT_RIVER_KEY to behandlingId, - PAA_VENT_AARSAK_KEY to aarsak.name, - ), - ).toJson(), - ).also { (partition, offset) -> - logger.info( - "Posted event ${hendelseType.lagEventnameForType()} for behandling $behandlingId" + - " to partiton $partition, offset $offset correlationid: $correlationId", - ) - } + rapid + .publiser( + behandlingId.toString(), + JsonMessage + .newMessage( + hendelseType.lagEventnameForType(), + mapOf( + CORRELATION_ID_KEY to correlationId, + TEKNISK_TID_KEY to Tidspunkt.now(), + BEHANDLING_ID_PAA_VENT_RIVER_KEY to behandlingId, + PAA_VENT_AARSAK_KEY to aarsak.name, + ), + ).toJson(), + ).also { (partition, offset) -> + logger.info( + "Posted event ${hendelseType.lagEventnameForType()} for behandling $behandlingId" + + " to partiton $partition, offset $offset correlationid: $correlationId", + ) + } } override fun sendMeldingForHendelseAvVent( @@ -95,21 +99,23 @@ class BehandlingsHendelserKafkaProducerImpl( ) { val correlationId = getCorrelationId() - rapid.publiser( - behandlingId.toString(), - JsonMessage.newMessage( - hendelseType.lagEventnameForType(), - mapOf( - CORRELATION_ID_KEY to correlationId, - TEKNISK_TID_KEY to Tidspunkt.now(), - BEHANDLING_ID_PAA_VENT_RIVER_KEY to behandlingId, - ), - ).toJson(), - ).also { (partition, offset) -> - logger.info( - "Posted event ${hendelseType.lagEventnameForType()} for behandling $behandlingId" + - " to partiton $partition, offset $offset correlationid: $correlationId", - ) - } + rapid + .publiser( + behandlingId.toString(), + JsonMessage + .newMessage( + hendelseType.lagEventnameForType(), + mapOf( + CORRELATION_ID_KEY to correlationId, + TEKNISK_TID_KEY to Tidspunkt.now(), + BEHANDLING_ID_PAA_VENT_RIVER_KEY to behandlingId, + ), + ).toJson(), + ).also { (partition, offset) -> + logger.info( + "Posted event ${hendelseType.lagEventnameForType()} for behandling $behandlingId" + + " to partiton $partition, offset $offset correlationid: $correlationId", + ) + } } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingsstatusRoutes.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingsstatusRoutes.kt index e4d295c23ba..c9513a23a1c 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingsstatusRoutes.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingsstatusRoutes.kt @@ -182,7 +182,9 @@ internal fun Route.behandlingsstatusRoutes(behandlingsstatusService: BehandlingS } } -data class OperasjonGyldig(val gyldig: Boolean) +data class OperasjonGyldig( + val gyldig: Boolean, +) private suspend fun haandterStatusEndring( call: ApplicationCall, @@ -195,8 +197,9 @@ private suspend fun haandterStatusEndring( ) } -class BehandlingKanIkkeBytteStatusException : ForespoerselException( - status = HttpStatusCode.Conflict.value, - code = "BEHANDLING_HAR_UGYLDIG_STATUS", - detail = "Behandlingen kan ikke bytte til ønsket status", -) +class BehandlingKanIkkeBytteStatusException : + ForespoerselException( + status = HttpStatusCode.Conflict.value, + code = "BEHANDLING_HAR_UGYLDIG_STATUS", + detail = "Behandlingen kan ikke bytte til ønsket status", + ) diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/BrukerService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/BrukerService.kt index f647df2045c..984eab81510 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/BrukerService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/BrukerService.kt @@ -119,8 +119,12 @@ class BrukerServiceImpl( ?: throw IngenEnhetFunnetException(arbeidsFordelingRequest) } -open class EnhetException(override val message: String) : Exception(message) +open class EnhetException( + override val message: String, +) : Exception(message) -class IngenEnhetFunnetException(val arbeidsFordelingRequest: ArbeidsFordelingRequest) : EnhetException( - message = "Ingen enheter funnet for tema ${arbeidsFordelingRequest.tema} og omraade ${arbeidsFordelingRequest.geografiskOmraade}", -) +class IngenEnhetFunnetException( + val arbeidsFordelingRequest: ArbeidsFordelingRequest, +) : EnhetException( + message = "Ingen enheter funnet for tema ${arbeidsFordelingRequest.tema} og omraade ${arbeidsFordelingRequest.geografiskOmraade}", + ) diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/GrunnlagServiceImpl.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/GrunnlagServiceImpl.kt index 4ca0c5accd0..e7ddd2d8264 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/GrunnlagServiceImpl.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/GrunnlagServiceImpl.kt @@ -47,7 +47,9 @@ interface GrunnlagService { suspend fun hentPersongalleri(behandlingId: UUID): Persongalleri } -class GrunnlagServiceImpl(private val grunnlagKlient: GrunnlagKlientImpl) : GrunnlagService { +class GrunnlagServiceImpl( + private val grunnlagKlient: GrunnlagKlientImpl, +) : GrunnlagService { override fun leggInnNyttGrunnlagSak( sak: Sak, persongalleri: Persongalleri, @@ -95,38 +97,34 @@ class GrunnlagServiceImpl(private val grunnlagKlient: GrunnlagKlientImpl) : Grun grunnlagKlient.lagreNyeSaksopplysningerBareSak(sakId, opplysninger) } - override suspend fun hentPersongalleri(behandlingId: UUID): Persongalleri { - return grunnlagKlient.hentPersongalleri(behandlingId) + override suspend fun hentPersongalleri(behandlingId: UUID): Persongalleri = + grunnlagKlient + .hentPersongalleri(behandlingId) ?.opplysning ?: throw NoSuchElementException("Persongalleri mangler for behandling id=$behandlingId") - } override fun laasTilGrunnlagIBehandling( revurdering: Revurdering, forrigeBehandling: UUID, - ) { - return runBlocking { grunnlagKlient.laasTilGrunnlagIBehandling(revurdering.id, forrigeBehandling) } - } + ) = runBlocking { grunnlagKlient.laasTilGrunnlagIBehandling(revurdering.id, forrigeBehandling) } private fun grunnlagsbehovSak( sak: Sak, persongalleri: Persongalleri, - ): Opplysningsbehov { - return Opplysningsbehov( + ): Opplysningsbehov = + Opplysningsbehov( sakId = sak.id, sakType = sak.sakType, persongalleri = persongalleri, ) - } private fun grunnlagsbehov( behandling: Behandling, persongalleri: Persongalleri, - ): Opplysningsbehov { - return Opplysningsbehov( + ): Opplysningsbehov = + Opplysningsbehov( sakId = behandling.sak.id, sakType = behandling.sak.sakType, persongalleri = persongalleri, ) - } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/GyldighetsproevingService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/GyldighetsproevingService.kt index ad995a4d130..be2673dc97a 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/GyldighetsproevingService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/GyldighetsproevingService.kt @@ -42,8 +42,8 @@ class GyldighetsproevingServiceImpl( behandlingId: UUID, svar: JaNeiMedBegrunnelse, kilde: Grunnlagsopplysning.Saksbehandler, - ): GyldighetsResultat? { - return hentFoerstegangsbehandling(behandlingId)?.let { behandling -> + ): GyldighetsResultat? = + hentFoerstegangsbehandling(behandlingId)?.let { behandling -> val resultat = if (svar.erJa()) VurderingsResultat.OPPFYLT else VurderingsResultat.IKKE_OPPFYLT val gyldighetsResultat = @@ -68,7 +68,6 @@ class GyldighetsproevingServiceImpl( gyldighetsResultat } - } override fun lagreGyldighetsproeving( behandlingId: UUID, @@ -80,7 +79,8 @@ class GyldighetsproevingServiceImpl( } private fun Foerstegangsbehandling.lagreGyldighetsproeving(gyldighetsproeving: GyldighetsResultat) { - this.oppdaterGyldighetsproeving(gyldighetsproeving) + this + .oppdaterGyldighetsproeving(gyldighetsproeving) .also { behandlingDao.lagreGyldighetsproving(it) logger.info("behandling ${it.id} i sak: ${it.sak.id} er gyldighetsprøvd. Saktype: ${it.sak.sakType}") diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/aktivitetsplikt/AktivitetspliktDao.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/aktivitetsplikt/AktivitetspliktDao.kt index b36dbe9b893..60dfc571abe 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/aktivitetsplikt/AktivitetspliktDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/aktivitetsplikt/AktivitetspliktDao.kt @@ -14,9 +14,11 @@ import java.sql.ResultSet import java.time.LocalDate import java.util.UUID -class AktivitetspliktDao(private val connectionAutoclosing: ConnectionAutoclosing) { - fun finnSenesteAktivitetspliktOppfolging(behandlingId: UUID): AktivitetspliktOppfolging? { - return connectionAutoclosing.hentConnection { +class AktivitetspliktDao( + private val connectionAutoclosing: ConnectionAutoclosing, +) { + fun finnSenesteAktivitetspliktOppfolging(behandlingId: UUID): AktivitetspliktOppfolging? = + connectionAutoclosing.hentConnection { with(it) { val stmt = prepareStatement( @@ -33,38 +35,37 @@ class AktivitetspliktDao(private val connectionAutoclosing: ConnectionAutoclosin """.trimMargin(), ) stmt.setObject(1, behandlingId) - stmt.executeQuery().toList { - AktivitetspliktOppfolging( - behandlingId = getUUID("behandling_id"), - aktivitet = getString("aktivitet"), - opprettet = getTidspunkt("opprettet"), - opprettetAv = getString("opprettet_av"), - ) - }.firstOrNull() + stmt + .executeQuery() + .toList { + AktivitetspliktOppfolging( + behandlingId = getUUID("behandling_id"), + aktivitet = getString("aktivitet"), + opprettet = getTidspunkt("opprettet"), + opprettetAv = getString("opprettet_av"), + ) + }.firstOrNull() } } - } fun lagre( behandlingId: UUID, nyOppfolging: OpprettAktivitetspliktOppfolging, navIdent: String, - ) { - return connectionAutoclosing.hentConnection { - with(it) { - val stmt = - prepareStatement( - """ + ) = connectionAutoclosing.hentConnection { + with(it) { + val stmt = + prepareStatement( + """ |INSERT INTO aktivitetsplikt_oppfolging(behandling_id, aktivitet, opprettet_av) |VALUES (?, ?, ?) - """.trimMargin(), - ) - stmt.setObject(1, behandlingId) - stmt.setString(2, nyOppfolging.aktivitet) - stmt.setString(3, navIdent) + """.trimMargin(), + ) + stmt.setObject(1, behandlingId) + stmt.setString(2, nyOppfolging.aktivitet) + stmt.setString(3, navIdent) - stmt.executeUpdate() - } + stmt.executeUpdate() } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/aktivitetsplikt/AktivitetspliktService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/aktivitetsplikt/AktivitetspliktService.kt index 9d591a57419..81121a2b73b 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/aktivitetsplikt/AktivitetspliktService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/aktivitetsplikt/AktivitetspliktService.kt @@ -44,11 +44,10 @@ class AktivitetspliktService( private val automatiskRevurderingService: AutomatiskRevurderingService, private val oppgaveService: OppgaveService, ) { - fun hentAktivitetspliktOppfolging(behandlingId: UUID): AktivitetspliktOppfolging? { - return inTransaction { + fun hentAktivitetspliktOppfolging(behandlingId: UUID): AktivitetspliktOppfolging? = + inTransaction { aktivitetspliktDao.finnSenesteAktivitetspliktOppfolging(behandlingId) } - } fun lagreAktivitetspliktOppfolging( behandlingId: UUID, @@ -290,10 +289,11 @@ class AktivitetspliktService( val persongalleri = runBlocking { requireNotNull( - grunnlagKlient.hentPersongalleri( - forrigeBehandling.id, - Systembruker.automatiskJobb, - )?.opplysning, + grunnlagKlient + .hentPersongalleri( + forrigeBehandling.id, + Systembruker.automatiskJobb, + )?.opplysning, ) { "Fant ikke persongalleri for behandling ${forrigeBehandling.id}" } @@ -318,20 +318,21 @@ class AktivitetspliktService( forrigeBehandling: Behandling, ): OpprettRevurderingForAktivitetspliktResponse { logger.info("Oppretter oppgave for revurdering av aktivitetsplikt for sak ${request.sakId}") - return oppgaveService.opprettNyOppgaveMedSakOgReferanse( - sakId = request.sakId, - referanse = forrigeBehandling.id.toString(), - oppgaveKilde = OppgaveKilde.HENDELSE, - oppgaveType = OppgaveType.AKTIVITETSPLIKT_REVURDERING, - merknad = request.jobbType.beskrivelse, - frist = request.frist, - ).let { oppgave -> - OpprettRevurderingForAktivitetspliktResponse( - opprettetOppgave = true, - oppgaveId = oppgave.id, - forrigeBehandlingId = forrigeBehandling.id, - ) - } + return oppgaveService + .opprettNyOppgaveMedSakOgReferanse( + sakId = request.sakId, + referanse = forrigeBehandling.id.toString(), + oppgaveKilde = OppgaveKilde.HENDELSE, + oppgaveType = OppgaveType.AKTIVITETSPLIKT_REVURDERING, + merknad = request.jobbType.beskrivelse, + frist = request.frist, + ).let { oppgave -> + OpprettRevurderingForAktivitetspliktResponse( + opprettetOppgave = true, + oppgaveId = oppgave.id, + forrigeBehandlingId = forrigeBehandling.id, + ) + } } private fun opprettRevurdering( @@ -341,28 +342,31 @@ class AktivitetspliktService( persongalleri: Persongalleri, ): OpprettRevurderingForAktivitetspliktResponse { logger.info("Oppretter behandling for revurdering av aktivitetsplikt for sak ${request.sakId}") - return automatiskRevurderingService.opprettAutomatiskRevurdering( - sakId = request.sakId, - forrigeBehandling = forrigeBehandling, - revurderingAarsak = Revurderingaarsak.AKTIVITETSPLIKT, - virkningstidspunkt = aktivitetspliktDato, - kilde = Vedtaksloesning.GJENNY, - persongalleri = persongalleri, - frist = request.frist, - begrunnelse = request.jobbType.beskrivelse, - ).oppdater().let { revurdering -> - fjernSaksbehandlerFraRevurderingsOppgave(revurdering) - OpprettRevurderingForAktivitetspliktResponse( - opprettetRevurdering = true, - nyBehandlingId = revurdering.id, - forrigeBehandlingId = forrigeBehandling.id, - ) - } + return automatiskRevurderingService + .opprettAutomatiskRevurdering( + sakId = request.sakId, + forrigeBehandling = forrigeBehandling, + revurderingAarsak = Revurderingaarsak.AKTIVITETSPLIKT, + virkningstidspunkt = aktivitetspliktDato, + kilde = Vedtaksloesning.GJENNY, + persongalleri = persongalleri, + frist = request.frist, + begrunnelse = request.jobbType.beskrivelse, + ).oppdater() + .let { revurdering -> + fjernSaksbehandlerFraRevurderingsOppgave(revurdering) + OpprettRevurderingForAktivitetspliktResponse( + opprettetRevurdering = true, + nyBehandlingId = revurdering.id, + forrigeBehandlingId = forrigeBehandling.id, + ) + } } private fun fjernSaksbehandlerFraRevurderingsOppgave(revurdering: Revurdering) { val revurderingsOppgave = - oppgaveService.hentOppgaverForReferanse(revurdering.id.toString()) + oppgaveService + .hentOppgaverForReferanse(revurdering.id.toString()) .find { it.type == OppgaveType.REVURDERING } if (revurderingsOppgave != null) { @@ -385,7 +389,10 @@ class TomErFoerFomException : detail = "Til og med dato er kan ikke være før fra og med dato", ) -data class AktivitetspliktVurdering(val aktivitet: AktivitetspliktAktivitetsgrad?, val unntak: AktivitetspliktUnntak?) +data class AktivitetspliktVurdering( + val aktivitet: AktivitetspliktAktivitetsgrad?, + val unntak: AktivitetspliktUnntak?, +) interface AktivitetspliktVurderingOpprettetDato { val opprettet: Grunnlagsopplysning.Kilde diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktAktivitetsgradDao.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktAktivitetsgradDao.kt index 818c3179568..311d4b08e12 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktAktivitetsgradDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktAktivitetsgradDao.kt @@ -12,7 +12,9 @@ import java.sql.ResultSet import java.time.LocalDate import java.util.UUID -class AktivitetspliktAktivitetsgradDao(private val connectionAutoclosing: ConnectionAutoclosing) { +class AktivitetspliktAktivitetsgradDao( + private val connectionAutoclosing: ConnectionAutoclosing, +) { fun opprettAktivitetsgrad( aktivitetsgrad: LagreAktivitetspliktAktivitetsgrad, sakId: Long, diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktUnntakDao.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktUnntakDao.kt index b92edd004ec..3e840781ada 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktUnntakDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktUnntakDao.kt @@ -12,7 +12,9 @@ import java.sql.ResultSet import java.time.LocalDate import java.util.UUID -class AktivitetspliktUnntakDao(private val connectionAutoclosing: ConnectionAutoclosing) { +class AktivitetspliktUnntakDao( + private val connectionAutoclosing: ConnectionAutoclosing, +) { fun opprettUnntak( unntak: LagreAktivitetspliktUnntak, sakId: Long, diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/BehandlingInfoDao.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/BehandlingInfoDao.kt index 640389140d7..620d8b9c531 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/BehandlingInfoDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/BehandlingInfoDao.kt @@ -10,9 +10,11 @@ import no.nav.etterlatte.libs.database.singleOrNull import java.sql.ResultSet import java.util.UUID -class BehandlingInfoDao(private val connectionAutoclosing: ConnectionAutoclosing) { - fun lagreBrevutfall(brevutfall: Brevutfall): Brevutfall { - return connectionAutoclosing.hentConnection { connection -> +class BehandlingInfoDao( + private val connectionAutoclosing: ConnectionAutoclosing, +) { + fun lagreBrevutfall(brevutfall: Brevutfall): Brevutfall = + connectionAutoclosing.hentConnection { connection -> with(connection) { prepareStatement( """ @@ -21,12 +23,10 @@ class BehandlingInfoDao(private val connectionAutoclosing: ConnectionAutoclosing ON CONFLICT (behandling_id) DO UPDATE SET brevutfall = excluded.brevutfall """.trimIndent(), - ) - .apply { - setObject(1, brevutfall.behandlingId) - setJsonb(2, brevutfall) - } - .run { executeUpdate() } + ).apply { + setObject(1, brevutfall.behandlingId) + setJsonb(2, brevutfall) + }.run { executeUpdate() } .also { require(it == 1) } .let { hentBrevutfall(brevutfall.behandlingId) @@ -34,10 +34,9 @@ class BehandlingInfoDao(private val connectionAutoclosing: ConnectionAutoclosing } } } - } - fun hentBrevutfall(behandlingId: UUID): Brevutfall? { - return connectionAutoclosing.hentConnection { + fun hentBrevutfall(behandlingId: UUID): Brevutfall? = + connectionAutoclosing.hentConnection { with(it) { prepareStatement( """ @@ -45,15 +44,13 @@ class BehandlingInfoDao(private val connectionAutoclosing: ConnectionAutoclosing FROM behandling_info WHERE behandling_id = ?::UUID """, - ) - .apply { setObject(1, behandlingId) } + ).apply { setObject(1, behandlingId) } .run { executeQuery().singleOrNull { toBrevutfall() } } } } - } - fun lagreEtterbetaling(etterbetaling: Etterbetaling): Etterbetaling { - return connectionAutoclosing.hentConnection { connection -> + fun lagreEtterbetaling(etterbetaling: Etterbetaling): Etterbetaling = + connectionAutoclosing.hentConnection { connection -> with(connection) { prepareStatement( """ @@ -62,12 +59,10 @@ class BehandlingInfoDao(private val connectionAutoclosing: ConnectionAutoclosing ON CONFLICT (behandling_id) DO UPDATE SET etterbetaling = excluded.etterbetaling """.trimIndent(), - ) - .apply { - setObject(1, etterbetaling.behandlingId) - setJsonb(2, etterbetaling) - } - .run { executeUpdate() } + ).apply { + setObject(1, etterbetaling.behandlingId) + setJsonb(2, etterbetaling) + }.run { executeUpdate() } .also { require(it == 1) } .let { hentEtterbetaling(etterbetaling.behandlingId) @@ -75,29 +70,25 @@ class BehandlingInfoDao(private val connectionAutoclosing: ConnectionAutoclosing } } } - } - fun slettEtterbetaling(behandlingId: UUID): Int { - return connectionAutoclosing.hentConnection { connection -> + fun slettEtterbetaling(behandlingId: UUID): Int = + connectionAutoclosing.hentConnection { connection -> with(connection) { prepareStatement( """ UPDATE behandling_info SET etterbetaling = ? WHERE behandling_id = ? """.trimIndent(), - ) - .apply { - setJsonb(1, null) - setObject(2, behandlingId) - } - .run { executeUpdate() } + ).apply { + setJsonb(1, null) + setObject(2, behandlingId) + }.run { executeUpdate() } .also { require(it == 1) } } } - } - fun hentEtterbetaling(behandlingId: UUID): Etterbetaling? { - return connectionAutoclosing.hentConnection { + fun hentEtterbetaling(behandlingId: UUID): Etterbetaling? = + connectionAutoclosing.hentConnection { with(it) { prepareStatement( """ @@ -105,12 +96,10 @@ class BehandlingInfoDao(private val connectionAutoclosing: ConnectionAutoclosing FROM behandling_info WHERE behandling_id = ?::UUID AND etterbetaling IS NOT NULL """, - ) - .apply { setObject(1, behandlingId) } + ).apply { setObject(1, behandlingId) } .run { executeQuery().singleOrNull { toEtterbetaling() } } } } - } private fun ResultSet.toBrevutfall(): Brevutfall = this.getString("brevutfall").let { objectMapper.readValue(it) } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/BehandlingInfoRoutes.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/BehandlingInfoRoutes.kt index 8c963862c76..ef960cac99b 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/BehandlingInfoRoutes.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/BehandlingInfoRoutes.kt @@ -146,7 +146,9 @@ private fun Etterbetaling.toDto() = kilde = kilde, ) -class OpphoerIkkeSatt(behandlingId: UUID) : UgyldigForespoerselException( - code = "OPPHOER_IKKE_SATT", - detail = "Behandling $behandlingId har ikke angitt om det er opphoer.", -) +class OpphoerIkkeSatt( + behandlingId: UUID, +) : UgyldigForespoerselException( + code = "OPPHOER_IKKE_SATT", + detail = "Behandling $behandlingId har ikke angitt om det er opphoer.", + ) diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/BehandlingInfoService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/BehandlingInfoService.kt index 37f1fe00af3..39c9d5b41ba 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/BehandlingInfoService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/BehandlingInfoService.kt @@ -48,9 +48,7 @@ class BehandlingInfoService( return behandlingInfoDao.lagreBrevutfall(brevutfall) } - fun hentBrevutfall(behandlingId: UUID): Brevutfall? { - return behandlingInfoDao.hentBrevutfall(behandlingId) - } + fun hentBrevutfall(behandlingId: UUID): Brevutfall? = behandlingInfoDao.hentBrevutfall(behandlingId) fun lagreEtterbetaling( behandling: Behandling, @@ -67,9 +65,7 @@ class BehandlingInfoService( return behandlingInfoDao.lagreEtterbetaling(etterbetaling) } - fun hentEtterbetaling(behandlingId: UUID): Etterbetaling? { - return behandlingInfoDao.hentEtterbetaling(behandlingId) - } + fun hentEtterbetaling(behandlingId: UUID): Etterbetaling? = behandlingInfoDao.hentEtterbetaling(behandlingId) private fun sjekkBehandlingKanEndres( behandling: Behandling, diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/BrevutfallException.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/BrevutfallException.kt index 96a3d954539..4730576f6e6 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/BrevutfallException.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/BrevutfallException.kt @@ -6,28 +6,36 @@ import no.nav.etterlatte.libs.common.feilhaandtering.UgyldigForespoerselExceptio import java.util.UUID sealed class BrevutfallException { - class BehandlingKanIkkeEndres(behandlingId: UUID, status: BehandlingStatus) : IkkeTillattException( - code = "KAN_IKKE_ENDRES", - detail = "Behandling $behandlingId har status $status og kan ikke endres.", - ) + class BehandlingKanIkkeEndres( + behandlingId: UUID, + status: BehandlingStatus, + ) : IkkeTillattException( + code = "KAN_IKKE_ENDRES", + detail = "Behandling $behandlingId har status $status og kan ikke endres.", + ) - class VirkningstidspunktIkkeSatt(behandlingId: UUID) : UgyldigForespoerselException( - code = "VIRKNINGSTIDSPUNKT_IKKE_SATT", - detail = "Behandling $behandlingId har ikke satt virkningstidspunkt.", - ) + class VirkningstidspunktIkkeSatt( + behandlingId: UUID, + ) : UgyldigForespoerselException( + code = "VIRKNINGSTIDSPUNKT_IKKE_SATT", + detail = "Behandling $behandlingId har ikke satt virkningstidspunkt.", + ) - class AldergruppeIkkeSatt : IkkeTillattException( - code = "ALDERGRUPPE_IKKE_SATT", - detail = "Aldersgruppe må være satt for behandling av barnepensjon.", - ) + class AldergruppeIkkeSatt : + IkkeTillattException( + code = "ALDERGRUPPE_IKKE_SATT", + detail = "Aldersgruppe må være satt for behandling av barnepensjon.", + ) - class LavEllerIngenInntektIkkeSatt : IkkeTillattException( - code = "LAV_ELLER_INGEN_INNTEKT_IKKE_SATT", - detail = "Lav eller ingen inntekt må være satt for behandling av omstillingsstønad.", - ) + class LavEllerIngenInntektIkkeSatt : + IkkeTillattException( + code = "LAV_ELLER_INGEN_INNTEKT_IKKE_SATT", + detail = "Lav eller ingen inntekt må være satt for behandling av omstillingsstønad.", + ) - class FeilutbetalingIkkeSatt : IkkeTillattException( - code = "FEILUTBETALING_IKKE_SATT", - detail = "Feilutbetaling må være satt for behandling av omstillingsstønad ved revurderinger.", - ) + class FeilutbetalingIkkeSatt : + IkkeTillattException( + code = "FEILUTBETALING_IKKE_SATT", + detail = "Feilutbetaling må være satt for behandling av omstillingsstønad ved revurderinger.", + ) } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/Etterbetaling.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/Etterbetaling.kt index 6e812b3922f..c84c4b348d9 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/Etterbetaling.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/behandlinginfo/Etterbetaling.kt @@ -37,23 +37,32 @@ data class Etterbetaling( } sealed class EtterbetalingException { - class EtterbetalingManglerDato : UgyldigForespoerselException( - code = "MANGLER_FRA_ELLER_TIL_DATO", - detail = "Etterbetaling må ha en fra-dato og en til-dato", - ) + class EtterbetalingManglerDato : + UgyldigForespoerselException( + code = "MANGLER_FRA_ELLER_TIL_DATO", + detail = "Etterbetaling må ha en fra-dato og en til-dato", + ) - class EtterbetalingFomErEtterTom(fom: YearMonth, tom: YearMonth) : UgyldigForespoerselException( - code = "FRA_DATO_ETTER_TIL_DATO", - detail = "Fra-dato ($fom) kan ikke være etter til-dato ($tom).", - ) + class EtterbetalingFomErEtterTom( + fom: YearMonth, + tom: YearMonth, + ) : UgyldigForespoerselException( + code = "FRA_DATO_ETTER_TIL_DATO", + detail = "Fra-dato ($fom) kan ikke være etter til-dato ($tom).", + ) - class EtterbetalingTomErFramITid(tom: YearMonth) : UgyldigForespoerselException( - code = "TIL_DATO_FRAM_I_TID", - detail = "Til-dato ($tom) er fram i tid.", - ) + class EtterbetalingTomErFramITid( + tom: YearMonth, + ) : UgyldigForespoerselException( + code = "TIL_DATO_FRAM_I_TID", + detail = "Til-dato ($tom) er fram i tid.", + ) - class EtterbetalingFraDatoErFoerVirk(fom: YearMonth, virkningstidspunkt: YearMonth) : UgyldigForespoerselException( - code = "FRA_DATO_FOER_VIRK", - detail = "Fra-dato ($fom) er før virkningstidspunkt ($virkningstidspunkt)", - ) + class EtterbetalingFraDatoErFoerVirk( + fom: YearMonth, + virkningstidspunkt: YearMonth, + ) : UgyldigForespoerselException( + code = "FRA_DATO_FOER_VIRK", + detail = "Fra-dato ($fom) er før virkningstidspunkt ($virkningstidspunkt)", + ) } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/bosattutland/BosattUtlandDao.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/bosattutland/BosattUtlandDao.kt index e80bf3e54cc..d1b9b864bb4 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/bosattutland/BosattUtlandDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/bosattutland/BosattUtlandDao.kt @@ -9,9 +9,11 @@ import no.nav.etterlatte.libs.database.singleOrNull import java.sql.ResultSet import java.util.UUID -class BosattUtlandDao(private val connectionAutoclosing: ConnectionAutoclosing) { - fun lagreBosattUtland(bosattUtland: BosattUtland) { - return connectionAutoclosing.hentConnection { +class BosattUtlandDao( + private val connectionAutoclosing: ConnectionAutoclosing, +) { + fun lagreBosattUtland(bosattUtland: BosattUtland) = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -30,10 +32,9 @@ class BosattUtlandDao(private val connectionAutoclosing: ConnectionAutoclosing) require(statement.executeUpdate() == 1) } } - } - fun hentBosattUtland(behandlingId: UUID): BosattUtland? { - return connectionAutoclosing.hentConnection { + fun hentBosattUtland(behandlingId: UUID): BosattUtland? = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -43,14 +44,12 @@ class BosattUtlandDao(private val connectionAutoclosing: ConnectionAutoclosing) statement.executeQuery().singleOrNull { toBosattUtland() } } } - } - private fun ResultSet.toBosattUtland(): BosattUtland { - return BosattUtland( + private fun ResultSet.toBosattUtland(): BosattUtland = + BosattUtland( behandlingId = getUUID("behandlingid"), rinanummer = getString("rinanummer"), mottatteSeder = getString("mottattSeder").let { objectMapper.readValue(it) }, sendteSeder = getString("sendteSeder").let { objectMapper.readValue(it) }, ) - } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/bosattutland/BosattUtlandService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/bosattutland/BosattUtlandService.kt index 6a1076289ee..d5f1050b1de 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/bosattutland/BosattUtlandService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/bosattutland/BosattUtlandService.kt @@ -3,15 +3,15 @@ package no.nav.etterlatte.behandling.bosattutland import no.nav.etterlatte.behandling.utland.LandMedDokumenter import java.util.UUID -class BosattUtlandService(val bosattUtlandDao: BosattUtlandDao) { +class BosattUtlandService( + val bosattUtlandDao: BosattUtlandDao, +) { fun lagreBosattUtland(bosattUtland: BosattUtland): BosattUtland { bosattUtlandDao.lagreBosattUtland(bosattUtland) return hentBosattUtland(bosattUtland.behandlingId)!! } - fun hentBosattUtland(behandlingid: UUID): BosattUtland? { - return bosattUtlandDao.hentBosattUtland(behandlingid) - } + fun hentBosattUtland(behandlingid: UUID): BosattUtland? = bosattUtlandDao.hentBosattUtland(behandlingid) } data class BosattUtland( diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/domain/Behandling.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/domain/Behandling.kt index 5da9d59cecd..5ebdf0d4ce3 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/domain/Behandling.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/domain/Behandling.kt @@ -86,26 +86,23 @@ sealed class Behandling { open fun begrunnelse(): String? = null - open fun oppdaterVirkningstidspunkt(virkningstidspunkt: Virkningstidspunkt): Behandling { + open fun oppdaterVirkningstidspunkt(virkningstidspunkt: Virkningstidspunkt): Behandling = throw NotImplementedError( "Kan ikke oppdatere virkningstidspunkt på behandling $id. " + "Denne behandlingstypen støtter ikke oppdatering av virkningstidspunkt.", ) - } - open fun oppdaterBoddEllerArbeidetUtlandnet(boddEllerArbeidetUtlandet: BoddEllerArbeidetUtlandet): Behandling { + open fun oppdaterBoddEllerArbeidetUtlandnet(boddEllerArbeidetUtlandet: BoddEllerArbeidetUtlandet): Behandling = throw NotImplementedError( "Kan ikke oppdatere bodd eller arbeidet utlandet på behandling $id. " + "Denne behandlingstypen støtter ikke oppdatering av bodd eller arbeidet utlandet.", ) - } - open fun oppdaterUtlandstilknytning(utlandstilknytning: Utlandstilknytning): Behandling { + open fun oppdaterUtlandstilknytning(utlandstilknytning: Utlandstilknytning): Behandling = throw NotImplementedError( "Kan ikke oppdatere utlandstilknytning på behandling $id. " + "Denne behandlingstypen støtter ikke oppdatering av utlandstilknyting.", ) - } protected fun hvisRedigerbar(block: () -> T): T { if (kanRedigeres) { @@ -148,53 +145,29 @@ sealed class Behandling { } } - open fun tilOpprettet(): Behandling { - throw BehandlingStoetterIkkeStatusEndringException(OPPRETTET) - } + open fun tilOpprettet(): Behandling = throw BehandlingStoetterIkkeStatusEndringException(OPPRETTET) - open fun tilVilkaarsvurdert(): Behandling { - throw BehandlingStoetterIkkeStatusEndringException(VILKAARSVURDERT) - } + open fun tilVilkaarsvurdert(): Behandling = throw BehandlingStoetterIkkeStatusEndringException(VILKAARSVURDERT) - open fun tilTrygdetidOppdatert(): Behandling { - throw BehandlingStoetterIkkeStatusEndringException(TRYGDETID_OPPDATERT) - } + open fun tilTrygdetidOppdatert(): Behandling = throw BehandlingStoetterIkkeStatusEndringException(TRYGDETID_OPPDATERT) - open fun tilBeregnet(): Behandling { - throw BehandlingStoetterIkkeStatusEndringException(BEREGNET) - } + open fun tilBeregnet(): Behandling = throw BehandlingStoetterIkkeStatusEndringException(BEREGNET) - open fun tilAvkortet(): Behandling { - throw BehandlingStoetterIkkeStatusEndringException(AVKORTET) - } + open fun tilAvkortet(): Behandling = throw BehandlingStoetterIkkeStatusEndringException(AVKORTET) - open fun tilFattetVedtak(): Behandling { - throw BehandlingStoetterIkkeStatusEndringException(FATTET_VEDTAK) - } + open fun tilFattetVedtak(): Behandling = throw BehandlingStoetterIkkeStatusEndringException(FATTET_VEDTAK) - open fun tilAttestert(): Behandling { - throw BehandlingStoetterIkkeStatusEndringException(ATTESTERT) - } + open fun tilAttestert(): Behandling = throw BehandlingStoetterIkkeStatusEndringException(ATTESTERT) - open fun tilAvslag(): Behandling { - throw BehandlingStoetterIkkeStatusEndringException(AVSLAG) - } + open fun tilAvslag(): Behandling = throw BehandlingStoetterIkkeStatusEndringException(AVSLAG) - open fun tilReturnert(): Behandling { - throw BehandlingStoetterIkkeStatusEndringException(RETURNERT) - } + open fun tilReturnert(): Behandling = throw BehandlingStoetterIkkeStatusEndringException(RETURNERT) - open fun tilTilSamordning(): Behandling { - throw BehandlingStoetterIkkeStatusEndringException(OPPRETTET) - } + open fun tilTilSamordning(): Behandling = throw BehandlingStoetterIkkeStatusEndringException(OPPRETTET) - open fun tilSamordnet(): Behandling { - throw BehandlingStoetterIkkeStatusEndringException(OPPRETTET) - } + open fun tilSamordnet(): Behandling = throw BehandlingStoetterIkkeStatusEndringException(OPPRETTET) - open fun tilIverksatt(): Behandling { - throw BehandlingStoetterIkkeStatusEndringException(OPPRETTET) - } + open fun tilIverksatt(): Behandling = throw BehandlingStoetterIkkeStatusEndringException(OPPRETTET) class BehandlingStoetterIkkeStatusEndringException( behandlingStatus: BehandlingStatus, @@ -205,8 +178,8 @@ sealed class Behandling { internal fun Behandling.toStatistikkBehandling( persongalleri: Persongalleri, pesysId: Long? = null, -): StatistikkBehandling { - return StatistikkBehandling( +): StatistikkBehandling = + StatistikkBehandling( id = id, sak = sak, sistEndret = sistEndret, @@ -230,10 +203,9 @@ internal fun Behandling.toStatistikkBehandling( relatertBehandlingId = relatertBehandlingId, utlandstilknytning = utlandstilknytning, ) -} -internal fun Behandling.toDetaljertBehandlingWithPersongalleri(persongalleri: Persongalleri): DetaljertBehandling { - return DetaljertBehandling( +internal fun Behandling.toDetaljertBehandlingWithPersongalleri(persongalleri: Persongalleri): DetaljertBehandling = + DetaljertBehandling( id = id, sak = sak.id, sakType = sak.sakType, @@ -250,7 +222,6 @@ internal fun Behandling.toDetaljertBehandlingWithPersongalleri(persongalleri: Pe sendeBrev = sendeBrev, opphoerFraOgMed = opphoerFraOgMed, ) -} fun Behandling.toBehandlingSammendrag() = BehandlingSammendrag( @@ -272,6 +243,7 @@ fun Behandling.toBehandlingSammendrag() = ) internal fun List.hentUtlandstilknytning(): Utlandstilknytning? = - this.filter { it.status != BehandlingStatus.AVBRUTT } + this + .filter { it.status != BehandlingStatus.AVBRUTT } .maxByOrNull { it.behandlingOpprettet } ?.utlandstilknytning diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/domain/Foerstegangsbehandling.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/domain/Foerstegangsbehandling.kt index 0ad9f63774e..97d72289a7c 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/domain/Foerstegangsbehandling.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/domain/Foerstegangsbehandling.kt @@ -63,9 +63,7 @@ data class Foerstegangsbehandling( endreTilStatus(BehandlingStatus.OPPRETTET).copy(boddEllerArbeidetUtlandet = boddEllerArbeidetUtlandet) } - override fun tilOpprettet(): Foerstegangsbehandling { - return hvisRedigerbar { endreTilStatus(BehandlingStatus.OPPRETTET) } - } + override fun tilOpprettet(): Foerstegangsbehandling = hvisRedigerbar { endreTilStatus(BehandlingStatus.OPPRETTET) } override fun tilVilkaarsvurdert(): Foerstegangsbehandling { if (!erFyltUt()) { diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/domain/Grunnlagsendringshendelse.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/domain/Grunnlagsendringshendelse.kt index 95fd5a19930..b47badf38f6 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/domain/Grunnlagsendringshendelse.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/domain/Grunnlagsendringshendelse.kt @@ -16,9 +16,7 @@ data class Grunnlagsendringshendelse( val samsvarMellomKildeOgGrunnlag: SamsvarMellomKildeOgGrunnlag? = null, val kommentar: String? = null, ) { - fun beskrivelse(): String { - return listOfNotNull(type.beskrivelse(), kommentar).joinToString(separator = ": ") - } + fun beskrivelse(): String = listOfNotNull(type.beskrivelse(), kommentar).joinToString(separator = ": ") } enum class GrunnlagsendringsType { @@ -32,8 +30,8 @@ enum class GrunnlagsendringsType { BOSTED, ; - fun beskrivelse(): String { - return when (this) { + fun beskrivelse(): String = + when (this) { DOEDSFALL -> "Dødsfall" UTFLYTTING -> "Utflytting fra Norge" FORELDER_BARN_RELASJON -> "Forelder- / barn-relasjon" @@ -43,7 +41,6 @@ enum class GrunnlagsendringsType { INSTITUSJONSOPPHOLD -> "Institusjonsopphold" BOSTED -> "Bostedsadresse" } - } } // TODO: kanskje rename disse diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/generellbehandling/GenerellBehandlingDao.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/generellbehandling/GenerellBehandlingDao.kt index 8acc5ed0a00..f5ae7f9ff69 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/generellbehandling/GenerellBehandlingDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/generellbehandling/GenerellBehandlingDao.kt @@ -14,9 +14,11 @@ import no.nav.etterlatte.libs.database.toList import java.sql.ResultSet import java.util.UUID -class GenerellBehandlingDao(private val connectionAutoclosing: ConnectionAutoclosing) { - fun opprettGenerellbehandling(generellBehandling: GenerellBehandling): GenerellBehandling { - return connectionAutoclosing.hentConnection { +class GenerellBehandlingDao( + private val connectionAutoclosing: ConnectionAutoclosing, +) { + fun opprettGenerellbehandling(generellBehandling: GenerellBehandling): GenerellBehandling = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -37,10 +39,9 @@ class GenerellBehandlingDao(private val connectionAutoclosing: ConnectionAutoclo statement.executeQuery().single { toGenerellBehandling() } } } - } - fun oppdaterGenerellBehandling(generellBehandling: GenerellBehandling): GenerellBehandling { - return connectionAutoclosing.hentConnection { + fun oppdaterGenerellBehandling(generellBehandling: GenerellBehandling): GenerellBehandling = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -60,10 +61,9 @@ class GenerellBehandlingDao(private val connectionAutoclosing: ConnectionAutoclo statement.executeQuery().single { toGenerellBehandling() } } } - } - fun hentGenerellBehandlingMedId(id: UUID): GenerellBehandling? { - return connectionAutoclosing.hentConnection { + fun hentGenerellBehandlingMedId(id: UUID): GenerellBehandling? = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -79,10 +79,9 @@ class GenerellBehandlingDao(private val connectionAutoclosing: ConnectionAutoclo } } } - } - fun hentGenerellBehandlingForSak(sakId: Long): List { - return connectionAutoclosing.hentConnection { + fun hentGenerellBehandlingForSak(sakId: Long): List = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -98,10 +97,9 @@ class GenerellBehandlingDao(private val connectionAutoclosing: ConnectionAutoclo } } } - } - fun hentBehandlingForTilknyttetBehandling(tilknyttetBehandlingId: UUID): GenerellBehandling? { - return connectionAutoclosing.hentConnection { + fun hentBehandlingForTilknyttetBehandling(tilknyttetBehandlingId: UUID): GenerellBehandling? = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -118,10 +116,9 @@ class GenerellBehandlingDao(private val connectionAutoclosing: ConnectionAutoclo } } } - } - private fun ResultSet.toGenerellBehandling(): GenerellBehandling { - return GenerellBehandling( + private fun ResultSet.toGenerellBehandling(): GenerellBehandling = + GenerellBehandling( id = getUUID("id"), sakId = getLong("sak_id"), type = GenerellBehandling.GenerellBehandlingType.valueOf(getString("type")), @@ -133,5 +130,4 @@ class GenerellBehandlingDao(private val connectionAutoclosing: ConnectionAutoclo attestant = getString("attestant")?.let { objectMapper.readValue(it) }, returnertKommenar = getString("kommentar"), ) - } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/generellbehandling/GenerellBehandlingService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/generellbehandling/GenerellBehandlingService.kt index 75f8e579df3..1ef3b4d1683 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/generellbehandling/GenerellBehandlingService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/generellbehandling/GenerellBehandlingService.kt @@ -28,45 +28,56 @@ import org.slf4j.LoggerFactory import java.time.temporal.ChronoUnit import java.util.UUID -class DokumentManglerDatoException(message: String) : - UgyldigForespoerselException( +class DokumentManglerDatoException( + message: String, +) : UgyldigForespoerselException( code = "DOKUMENT_MANGLER_DATO", detail = message, ) -class DokumentErIkkeMarkertSomSendt(message: String) : - UgyldigForespoerselException( +class DokumentErIkkeMarkertSomSendt( + message: String, +) : UgyldigForespoerselException( code = "DOKUMENT_MÅ_VÆRE_SENDT", detail = message, ) -class UgyldigLandkodeIsokode3(message: String) : - UgyldigForespoerselException( +class UgyldigLandkodeIsokode3( + message: String, +) : UgyldigForespoerselException( code = "UGYLDIG_LANDKODE", detail = message, ) -class ManglerLandkodeException(message: String) : - UgyldigForespoerselException( +class ManglerLandkodeException( + message: String, +) : UgyldigForespoerselException( code = "MANGLER_LANDKODE", detail = message, ) -class ManglerRinanummerException(message: String) : - UgyldigForespoerselException( +class ManglerRinanummerException( + message: String, +) : UgyldigForespoerselException( code = "MANGLER_RINANUMMER", detail = message, ) -class KanIkkeEndreGenerellBehandling(message: String) : Exception(message) +class KanIkkeEndreGenerellBehandling( + message: String, +) : Exception(message) -class UgyldigAttesteringsForespoersel(message: String, code: String) : - UgyldigForespoerselException( +class UgyldigAttesteringsForespoersel( + message: String, + code: String, +) : UgyldigForespoerselException( code = code, detail = message, ) -data class Kommentar(val begrunnelse: String) +data class Kommentar( + val begrunnelse: String, +) class GenerellBehandlingService( private val generellBehandlingDao: GenerellBehandlingDao, @@ -102,7 +113,8 @@ class GenerellBehandlingService( ) { if (generellBehandling.tilknyttetBehandling !== null) { val kanskjeOppgaveMedSaksbehandler = - oppgaveService.hentOppgaverForReferanse(generellBehandling.tilknyttetBehandling!!.toString()) + oppgaveService + .hentOppgaverForReferanse(generellBehandling.tilknyttetBehandling!!.toString()) .filter { it.type == OppgaveType.FOERSTEGANGSBEHANDLING } .maxByOrNull { it.opprettet } @@ -306,21 +318,15 @@ class GenerellBehandlingService( } } - private fun oppdaterBehandling(generellBehandling: GenerellBehandling): GenerellBehandling { - return generellBehandlingDao.oppdaterGenerellBehandling(generellBehandling) - } + private fun oppdaterBehandling(generellBehandling: GenerellBehandling): GenerellBehandling = + generellBehandlingDao.oppdaterGenerellBehandling(generellBehandling) - fun hentBehandlingMedId(id: UUID): GenerellBehandling? { - return generellBehandlingDao.hentGenerellBehandlingMedId(id) - } + fun hentBehandlingMedId(id: UUID): GenerellBehandling? = generellBehandlingDao.hentGenerellBehandlingMedId(id) - fun hentBehandlingerForSak(sakId: Long): List { - return generellBehandlingDao.hentGenerellBehandlingForSak(sakId) - } + fun hentBehandlingerForSak(sakId: Long): List = generellBehandlingDao.hentGenerellBehandlingForSak(sakId) - private fun hentGenerellbehandlingSinTilknyttetedeBehandling(tilknyttetBehandlingId: UUID): GenerellBehandling? { - return generellBehandlingDao.hentBehandlingForTilknyttetBehandling(tilknyttetBehandlingId) - } + private fun hentGenerellbehandlingSinTilknyttetedeBehandling(tilknyttetBehandlingId: UUID): GenerellBehandling? = + generellBehandlingDao.hentBehandlingForTilknyttetBehandling(tilknyttetBehandlingId) suspend fun hentKravpakkeForSak( sakId: Long, @@ -358,20 +364,23 @@ class GenerellBehandlingService( } } -class FantIkkeAvdoedException(msg: String) : - UgyldigForespoerselException( +class FantIkkeAvdoedException( + msg: String, +) : UgyldigForespoerselException( code = "FANT_IKKE_AVDOED", detail = msg, ) -class FantIkkeFoerstegangsbehandlingForKravpakkeOgSak(msg: String) : - UgyldigForespoerselException( +class FantIkkeFoerstegangsbehandlingForKravpakkeOgSak( + msg: String, +) : UgyldigForespoerselException( code = "FANT_IKKE_FOERSTEGANGSBEHANDLING_FOR_KRAVPAKKE", detail = msg, ) -class FantIkkeKravpakkeForFoerstegangsbehandling(msg: String) : - UgyldigForespoerselException( +class FantIkkeKravpakkeForFoerstegangsbehandling( + msg: String, +) : UgyldigForespoerselException( code = "FANT_IKKE_KRAVPAKKE_FOR_FOERSTEGANGSBEHANDLING", detail = msg, ) diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/hendelse/HendelseDao.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/hendelse/HendelseDao.kt index e33efa79a0e..e834ce3fcec 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/hendelse/HendelseDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/hendelse/HendelseDao.kt @@ -19,7 +19,9 @@ import java.sql.ResultSet import java.sql.Types import java.util.UUID -class HendelseDao(private val connectionAutoclosing: ConnectionAutoclosing) { +class HendelseDao( + private val connectionAutoclosing: ConnectionAutoclosing, +) { companion object { val logger: Logger = LoggerFactory.getLogger(HendelseDao::class.java) } @@ -193,8 +195,8 @@ class HendelseDao(private val connectionAutoclosing: ConnectionAutoclosing) { ), ) - fun hentHendelserISak(sakId: Long): List { - return connectionAutoclosing.hentConnection { + fun hentHendelserISak(sakId: Long): List = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -211,10 +213,9 @@ class HendelseDao(private val connectionAutoclosing: ConnectionAutoclosing) { } } } - } - fun finnHendelserIBehandling(behandling: UUID): List { - return connectionAutoclosing.hentConnection { + fun finnHendelserIBehandling(behandling: UUID): List = + connectionAutoclosing.hentConnection { with(it) { val stmt = prepareStatement( @@ -230,7 +231,6 @@ class HendelseDao(private val connectionAutoclosing: ConnectionAutoclosing) { } } } - } private fun ResultSet.asHendelse(): LagretHendelse = LagretHendelse( @@ -247,8 +247,8 @@ class HendelseDao(private val connectionAutoclosing: ConnectionAutoclosing) { getString("valgtBegrunnelse"), ) - private fun lagreHendelse(hendelse: UlagretHendelse) { - return connectionAutoclosing.hentConnection { + private fun lagreHendelse(hendelse: UlagretHendelse) = + connectionAutoclosing.hentConnection { with(it) { val stmt = prepareStatement( @@ -272,7 +272,6 @@ class HendelseDao(private val connectionAutoclosing: ConnectionAutoclosing) { logger.info("lagret hendelse: $hendelse") } } - } } fun PreparedStatement.setLong( diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/jobs/SaksbehandlerJobService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/jobs/SaksbehandlerJobService.kt index f1f049b4bf9..5dcd984ca04 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/jobs/SaksbehandlerJobService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/jobs/SaksbehandlerJobService.kt @@ -77,16 +77,15 @@ internal suspend fun oppdaterSaksbehandlerEnhet( // SupervisorJob så noen kall kan feile uten å cancle parent job val scope = CoroutineScope(SupervisorJob()) val alleIdenterMedEnheter = - sbidenter.filter { - it !in ugyldigeIdenter && SAKSBEHANDLERPATTERN.matches(it) - } - .map { + sbidenter + .filter { + it !in ugyldigeIdenter && SAKSBEHANDLERPATTERN.matches(it) + }.map { it to scope.async( subCoroutineExceptionHandler, ) { axsysKlient.hentEnheterForIdent(it) } - } - .mapNotNull { (ident, enheter) -> + }.mapNotNull { (ident, enheter) -> try { val enheterAwait = enheter.await() if (enheterAwait.isNotEmpty()) { @@ -133,23 +132,23 @@ internal suspend fun oppdaterSaksbehandlerNavn( logger.info("Antall saksbehandlingsidenter uten navn i databasen ${sbidenter.size}") val egneIdenter = - filtrerteIdenter.filter { it in ugyldigeIdenter } + filtrerteIdenter + .filter { it in ugyldigeIdenter } .map { it to SaksbehandlerInfo(it, it) } logger.info("Mappet egne ${sbidenter.size}") val hentedeIdenter = coroutineScope { - filtrerteIdenter.filter { - it !in ugyldigeIdenter && SAKSBEHANDLERPATTERN.matches(it) - } - .map { + filtrerteIdenter + .filter { + it !in ugyldigeIdenter && SAKSBEHANDLERPATTERN.matches(it) + }.map { it to async(subCoroutineExceptionHandler) { navAnsattKlient.hentSaksbehanderNavn(it) } - } - .map { it.first to it.second.await() } + }.map { it.first to it.second.await() } } val alleIdenterMedNavn = hentedeIdenter + egneIdenter diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/IKlageHendelserService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/IKlageHendelserService.kt index 5779800b1c0..d2f86cda6de 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/IKlageHendelserService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/IKlageHendelserService.kt @@ -30,21 +30,23 @@ class KlageHendelserServiceImpl( ) { val correlationId = getCorrelationId() - rapid.publiser( - statistikkKlage.id.toString(), - JsonMessage.newMessage( - klageHendelseType.lagEventnameForType(), - mapOf( - CORRELATION_ID_KEY to correlationId, - TEKNISK_TID_KEY to LocalDateTime.now(), - KLAGE_STATISTIKK_RIVER_KEY to statistikkKlage, - ), - ).toJson(), - ).also { (partition, offset) -> - logger.info( - "Posted event ${klageHendelseType.lagEventnameForType()} for KLAGE ${statistikkKlage.id}" + - " to partiton $partition, offset $offset correlationid: $correlationId", - ) - } + rapid + .publiser( + statistikkKlage.id.toString(), + JsonMessage + .newMessage( + klageHendelseType.lagEventnameForType(), + mapOf( + CORRELATION_ID_KEY to correlationId, + TEKNISK_TID_KEY to LocalDateTime.now(), + KLAGE_STATISTIKK_RIVER_KEY to statistikkKlage, + ), + ).toJson(), + ).also { (partition, offset) -> + logger.info( + "Posted event ${klageHendelseType.lagEventnameForType()} for KLAGE ${statistikkKlage.id}" + + " to partiton $partition, offset $offset correlationid: $correlationId", + ) + } } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/KlageBrevService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/KlageBrevService.kt index 80bbb2c1bbe..fb30c8642b7 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/KlageBrevService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/KlageBrevService.kt @@ -15,14 +15,16 @@ import no.nav.etterlatte.libs.ktor.token.Saksbehandler import org.slf4j.LoggerFactory import java.util.UUID -class KlageBrevService(private val brevApiKlient: BrevApiKlient) { +class KlageBrevService( + private val brevApiKlient: BrevApiKlient, +) { private val logger: org.slf4j.Logger = LoggerFactory.getLogger(this::class.java) fun oversendelsesbrev( klage: Klage, saksbehandler: Saksbehandler, - ): KlageOversendelsebrev { - return when (val utfall = klage.utfall) { + ): KlageOversendelsebrev = + when (val utfall = klage.utfall) { is KlageUtfallMedData.DelvisOmgjoering -> utfall.innstilling.brev is KlageUtfallMedData.StadfesteVedtak -> utfall.innstilling.brev else -> { @@ -37,7 +39,6 @@ class KlageBrevService(private val brevApiKlient: BrevApiKlient) { KlageOversendelsebrev(brev.id) } } - } fun vedtaksbrev( klage: Klage, diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/KlageDao.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/KlageDao.kt index 6419c7c2d40..feaaf224536 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/KlageDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/KlageDao.kt @@ -30,9 +30,11 @@ interface KlageDao { ) } -class KlageDaoImpl(private val connectionAutoclosing: ConnectionAutoclosing) : KlageDao { +class KlageDaoImpl( + private val connectionAutoclosing: ConnectionAutoclosing, +) : KlageDao { override fun lagreKlage(klage: Klage) { - return connectionAutoclosing.hentConnection { + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -64,8 +66,8 @@ class KlageDaoImpl(private val connectionAutoclosing: ConnectionAutoclosing) : K } } - override fun hentKlage(id: UUID): Klage? { - return connectionAutoclosing.hentConnection { + override fun hentKlage(id: UUID): Klage? = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -82,10 +84,9 @@ class KlageDaoImpl(private val connectionAutoclosing: ConnectionAutoclosing) : K } } } - } - override fun hentKlagerISak(sakId: Long): List { - return connectionAutoclosing.hentConnection { + override fun hentKlagerISak(sakId: Long): List = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -102,13 +103,12 @@ class KlageDaoImpl(private val connectionAutoclosing: ConnectionAutoclosing) : K } } } - } override fun oppdaterKabalStatus( klageId: UUID, kabalrespons: Kabalrespons, ) { - return connectionAutoclosing.hentConnection { + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -126,8 +126,8 @@ class KlageDaoImpl(private val connectionAutoclosing: ConnectionAutoclosing) : K } } - private fun ResultSet.somKlage(): Klage { - return Klage( + private fun ResultSet.somKlage(): Klage = + Klage( id = getString("id").let { UUID.fromString(it) }, sak = Sak( @@ -147,5 +147,4 @@ class KlageDaoImpl(private val connectionAutoclosing: ConnectionAutoclosing) : K aarsakTilAvbrytelse = getString("aarsak_til_avbrytelse")?.let { enumValueOf(it) }, initieltUtfall = getString("initielt_utfall")?.let { objectMapper.readValue(it) }, ) - } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/KlageRoutes.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/KlageRoutes.kt index 5384bf65af2..63478cb7186 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/KlageRoutes.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/KlageRoutes.kt @@ -32,7 +32,9 @@ import no.nav.etterlatte.tilgangsstyring.kunSaksbehandlerMedSkrivetilgang import java.time.LocalDate import java.time.OffsetDateTime -enum class KlageFeatureToggle(private val key: String) : FeatureToggle { +enum class KlageFeatureToggle( + private val key: String, +) : FeatureToggle { KanFerdigstilleKlageToggle("pensjon-etterlatte.kan-ferdigstille-klage"), KanOppretteVedtakAvvisningToggle("pensjon-etterlatte.kan-opprette-vedtak-avvist-klage"), StoetterUtfallDelvisOmgjoering("pensjon-etterlatte.klage-delvis-omgjoering"), @@ -224,16 +226,21 @@ data class InnkommendeKlageDto( val journalpostId: String, val innsender: String?, ) { - fun parseMottattDato(): LocalDate { - return Tidspunkt(OffsetDateTime.parse(mottattDato).toInstant()).toNorskLocalDate() - } + fun parseMottattDato(): LocalDate = Tidspunkt(OffsetDateTime.parse(mottattDato).toInstant()).toNorskLocalDate() } -data class VurdereFormkravDto(val formkrav: Formkrav) +data class VurdereFormkravDto( + val formkrav: Formkrav, +) -data class VurdertUtfallDto(val utfall: KlageUtfallUtenBrev) +data class VurdertUtfallDto( + val utfall: KlageUtfallUtenBrev, +) -data class AvbrytKlageDto(val aarsakTilAvbrytelse: AarsakTilAvbrytelse, val kommentar: String) +data class AvbrytKlageDto( + val aarsakTilAvbrytelse: AarsakTilAvbrytelse, + val kommentar: String, +) data class KlageAttesterRequest( val kommentar: String, diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/KlageService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/KlageService.kt index 64f7a55fec4..3e60b0baee3 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/KlageService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/klage/KlageService.kt @@ -112,10 +112,12 @@ interface KlageService { ): Klage } -class ManglerSaksbehandlerException(msg: String) : UgyldigForespoerselException( - code = "MANGLER_SAKSBEHANDLER_PAA_OPPGAVE", - detail = msg, -) +class ManglerSaksbehandlerException( + msg: String, +) : UgyldigForespoerselException( + code = "MANGLER_SAKSBEHANDLER_PAA_OPPGAVE", + detail = msg, + ) class KlageServiceImpl( private val klageDao: KlageDao, @@ -161,13 +163,9 @@ class KlageServiceImpl( return klage } - override fun hentKlage(id: UUID): Klage? { - return klageDao.hentKlage(id) - } + override fun hentKlage(id: UUID): Klage? = klageDao.hentKlage(id) - override fun hentKlagerISak(sakId: Long): List { - return klageDao.hentKlagerISak(sakId) - } + override fun hentKlagerISak(sakId: Long): List = klageDao.hentKlagerISak(sakId) override fun lagreFormkravIKlage( klageId: UUID, @@ -642,14 +640,16 @@ class KlageServiceImpl( } } -class OmgjoeringMaaGjeldeEtVedtakException(klage: Klage) : - UgyldigForespoerselException( +class OmgjoeringMaaGjeldeEtVedtakException( + klage: Klage, +) : UgyldigForespoerselException( code = "OMGJOERING_MAA_GJELDE_ET_VEDTAK", detail = "Klagen med id=${klage.id} skal resultere i en omgjøring, men mangler et vedtak som klagen gjelder", ) -class KlageIkkeFunnetException(klageId: UUID) : - IkkeFunnetException(code = "KLAGE_IKKE_FUNNET", detail = "Kunne ikke finne klage med id=$klageId") +class KlageIkkeFunnetException( + klageId: UUID, +) : IkkeFunnetException(code = "KLAGE_IKKE_FUNNET", detail = "Kunne ikke finne klage med id=$klageId") data class FerdigstillResultat( val oversendelsesbrev: OpprettetBrevDto, diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/AxsysKlient.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/AxsysKlient.kt index 02318d8ac1a..b3fb906ef7b 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/AxsysKlient.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/AxsysKlient.kt @@ -21,11 +21,15 @@ interface AxsysKlient : Pingable { suspend fun hentEnheterForIdent(ident: String): List } -class AxsysKlientImpl(private val client: HttpClient, private val url: String) : AxsysKlient { +class AxsysKlientImpl( + private val client: HttpClient, + private val url: String, +) : AxsysKlient { private val logger = LoggerFactory.getLogger(this::class.java) private val enhetCache = - Caffeine.newBuilder() + Caffeine + .newBuilder() .expireAfterWrite(Duration.ofMinutes(15)) .build>() @@ -44,7 +48,9 @@ class AxsysKlientImpl(private val client: HttpClient, private val url: String) : contentType(ContentType.Application.Json) } - response.body()?.enheter + response + .body() + ?.enheter ?.map { SaksbehandlerEnhet(it.enhetId, it.navn) } .also { enhetCache.put(ident, it) } ?: emptyList() } catch (cause: Throwable) { @@ -54,14 +60,13 @@ class AxsysKlientImpl(private val client: HttpClient, private val url: String) : } } - override suspend fun ping(konsument: String?): PingResult { - return client.ping( + override suspend fun ping(konsument: String?): PingResult = + client.ping( pingUrl = url.plus("/internal/isReady"), logger = logger, serviceName = serviceName, beskrivelse = beskrivelse, ) - } override val serviceName: String get() = "Axsysklient" @@ -71,8 +76,10 @@ class AxsysKlientImpl(private val client: HttpClient, private val url: String) : get() = this.url } -class HentEnhetException(override val detail: String, override val cause: Throwable?) : - InternfeilException(detail, cause) +class HentEnhetException( + override val detail: String, + override val cause: Throwable?, +) : InternfeilException(detail, cause) @JsonIgnoreProperties(ignoreUnknown = true) data class Enheter( diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/BeregningKlientImpl.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/BeregningKlientImpl.kt index eeed70ed029..f9a6004823b 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/BeregningKlientImpl.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/BeregningKlientImpl.kt @@ -17,7 +17,10 @@ interface BeregningKlient { ) } -class BeregningKlientImpl(config: Config, httpClient: HttpClient) : BeregningKlient { +class BeregningKlientImpl( + config: Config, + httpClient: HttpClient, +) : BeregningKlient { private val logger = LoggerFactory.getLogger(BeregningKlientImpl::class.java) private val azureAdClient = AzureAdClient(config) @@ -31,10 +34,11 @@ class BeregningKlientImpl(config: Config, httpClient: HttpClient) : BeregningKli brukerTokenInfo: BrukerTokenInfo, ) { logger.info("Sletter avkorting for behandling id=$behandlingId") - downstreamResourceClient.delete( - resource = Resource(clientId = clientId, url = "$resourceUrl/api/beregning/avkorting/$behandlingId"), - brukerTokenInfo = brukerTokenInfo, - postBody = "", - ).mapError { error -> throw error } + downstreamResourceClient + .delete( + resource = Resource(clientId = clientId, url = "$resourceUrl/api/beregning/avkorting/$behandlingId"), + brukerTokenInfo = brukerTokenInfo, + postBody = "", + ).mapError { error -> throw error } } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/BrevApiKlient.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/BrevApiKlient.kt index c4fa0c98ab3..fad8840cb6f 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/BrevApiKlient.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/BrevApiKlient.kt @@ -93,7 +93,10 @@ interface BrevApiKlient { ): OpprettetBrevDto? } -class BrevApiKlientObo(config: Config, client: HttpClient) : BrevApiKlient { +class BrevApiKlientObo( + config: Config, + client: HttpClient, +) : BrevApiKlient { private val azureAdClient = AzureAdClient(config) private val downstreamResourceClient = DownstreamResourceClient(azureAdClient, client) @@ -103,8 +106,8 @@ class BrevApiKlientObo(config: Config, client: HttpClient) : BrevApiKlient { override suspend fun opprettKlageOversendelsesbrevISak( klageId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): OpprettetBrevDto { - return post( + ): OpprettetBrevDto = + post( url = "$resourceUrl/api/brev/behandling/$klageId/oversendelse", onSuccess = { resource -> resource.response?.let { objectMapper.readValue(it.toJson()) } @@ -112,19 +115,17 @@ class BrevApiKlientObo(config: Config, client: HttpClient) : BrevApiKlient { }, brukerTokenInfo = brukerTokenInfo, ) - } override suspend fun opprettVedtaksbrev( behandlingId: UUID, sakId: Long, brukerTokenInfo: BrukerTokenInfo, - ): OpprettetBrevDto { - return post( + ): OpprettetBrevDto = + post( url = "$resourceUrl/api/brev/behandling/$behandlingId/vedtak?sakId=$sakId", onSuccess = { resource -> deserialize(resource.response!!.toJson()) }, brukerTokenInfo = brukerTokenInfo, ) - } override suspend fun ferdigstillVedtaksbrev( behandlingId: UUID, @@ -155,92 +156,88 @@ class BrevApiKlientObo(config: Config, client: HttpClient) : BrevApiKlient { sakId: Long, brevId: Long, brukerTokenInfo: BrukerTokenInfo, - ): JournalpostIdDto { - return post( + ): JournalpostIdDto = + post( url = "$resourceUrl/api/brev/$brevId/journalfoer?sakId=$sakId", onSuccess = { resource -> deserialize(resource.response!!.toJson()) }, brukerTokenInfo = brukerTokenInfo, ) - } override suspend fun distribuerBrev( sakId: Long, brevId: Long, brukerTokenInfo: BrukerTokenInfo, - ): BestillingsIdDto { - return post( + ): BestillingsIdDto = + post( url = "$resourceUrl/api/brev/$brevId/distribuer?sakId=$sakId", onSuccess = { resource -> deserialize(resource.response!!.toJson()) }, brukerTokenInfo = brukerTokenInfo, ) - } override suspend fun hentBrev( sakId: Long, brevId: Long, brukerTokenInfo: BrukerTokenInfo, - ): OpprettetBrevDto { - return get( + ): OpprettetBrevDto = + get( url = "$resourceUrl/api/brev/$brevId?sakId=$sakId", onSuccess = { resource -> deserialize(resource.response!!.toJson()) }, brukerTokenInfo = brukerTokenInfo, ) - } override suspend fun hentVedtaksbrev( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): OpprettetBrevDto? { - return get( + ): OpprettetBrevDto? = + get( url = "$resourceUrl/api/brev/behandling/$behandlingId/vedtak", onSuccess = { resource -> resource.response?.let { deserialize(it.toJson()) } }, brukerTokenInfo = brukerTokenInfo, ) - } override suspend fun hentOversendelsesbrev( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): OpprettetBrevDto? { - return get( + ): OpprettetBrevDto? = + get( url = "$resourceUrl/api/brev/behandling/$behandlingId/oversendelse", onSuccess = { resource -> resource.response?.let { deserialize(it.toJson()) } }, brukerTokenInfo = brukerTokenInfo, ) - } override suspend fun slettVedtaksbrev( klageId: UUID, brukerTokenInfo: BrukerTokenInfo, ) { - downstreamResourceClient.delete( - resource = Resource(clientId = clientId, url = "$resourceUrl/api/brev/behandling/$klageId/vedtak"), - brukerTokenInfo = brukerTokenInfo, - postBody = "", - ).mapError { error -> throw error } + downstreamResourceClient + .delete( + resource = Resource(clientId = clientId, url = "$resourceUrl/api/brev/behandling/$klageId/vedtak"), + brukerTokenInfo = brukerTokenInfo, + postBody = "", + ).mapError { error -> throw error } } override suspend fun journalfoerNotatKa( klage: Klage, brukerInfoToken: BrukerTokenInfo, - ): OpprettJournalpostDto { - return post( + ): OpprettJournalpostDto = + post( url = "$resourceUrl/api/notat/sak/${klage.sak.id}/journalfoer", postBody = mapOf("data" to KlageNotatRequest(klage)), onSuccess = { response -> deserialize(response.response!!.toJson()) }, brukerTokenInfo = brukerInfoToken, ) - } override suspend fun slettOversendelsesbrev( klageId: UUID, brukerTokenInfo: BrukerTokenInfo, ) { - downstreamResourceClient.delete( - resource = Resource(clientId = clientId, url = "$resourceUrl/api/brev/behandling/$klageId/oversendelse"), - brukerTokenInfo = brukerTokenInfo, - postBody = "", - ).mapError { error -> throw error } + downstreamResourceClient + .delete( + resource = Resource(clientId = clientId, url = "$resourceUrl/api/brev/behandling/$klageId/oversendelse"), + brukerTokenInfo = brukerTokenInfo, + postBody = "", + ).mapError { error -> throw error } } private suspend fun post( @@ -248,30 +245,30 @@ class BrevApiKlientObo(config: Config, client: HttpClient) : BrevApiKlient { postBody: Any = Unit, onSuccess: (Resource) -> T, brukerTokenInfo: BrukerTokenInfo, - ): T { - return downstreamResourceClient.post( - resource = Resource(clientId = clientId, url = url), - brukerTokenInfo = brukerTokenInfo, - postBody = postBody, - ).mapBoth( - success = onSuccess, - failure = { errorResponse -> throw errorResponse }, - ) - } + ): T = + downstreamResourceClient + .post( + resource = Resource(clientId = clientId, url = url), + brukerTokenInfo = brukerTokenInfo, + postBody = postBody, + ).mapBoth( + success = onSuccess, + failure = { errorResponse -> throw errorResponse }, + ) private suspend fun get( url: String, onSuccess: (Resource) -> T, brukerTokenInfo: BrukerTokenInfo, - ): T { - return downstreamResourceClient.get( - resource = Resource(clientId = clientId, url = url), - brukerTokenInfo = brukerTokenInfo, - ).mapBoth( - success = onSuccess, - failure = { throwableErrorMessage -> throw throwableErrorMessage }, - ) - } + ): T = + downstreamResourceClient + .get( + resource = Resource(clientId = clientId, url = url), + brukerTokenInfo = brukerTokenInfo, + ).mapBoth( + success = onSuccess, + failure = { throwableErrorMessage -> throw throwableErrorMessage }, + ) } enum class BrevStatus { @@ -283,17 +280,11 @@ enum class BrevStatus { SLETTET, ; - fun ikkeFerdigstilt(): Boolean { - return this in listOf(OPPRETTET, OPPDATERT) - } + fun ikkeFerdigstilt(): Boolean = this in listOf(OPPRETTET, OPPDATERT) - fun ikkeJournalfoert(): Boolean { - return this in listOf(OPPRETTET, OPPDATERT, FERDIGSTILT) - } + fun ikkeJournalfoert(): Boolean = this in listOf(OPPRETTET, OPPDATERT, FERDIGSTILT) - fun ikkeDistribuert(): Boolean { - return this != DISTRIBUERT - } + fun ikkeDistribuert(): Boolean = this != DISTRIBUERT } data class KlageNotatRequest( diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/GrunnlagKlient.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/GrunnlagKlient.kt index 6511592f5ee..b196f64436c 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/GrunnlagKlient.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/GrunnlagKlient.kt @@ -31,9 +31,15 @@ interface GrunnlagKlient { ): Grunnlagsopplysning? } -class GrunnlagKlientException(override val message: String, override val cause: Throwable) : Exception(message, cause) +class GrunnlagKlientException( + override val message: String, + override val cause: Throwable, +) : Exception(message, cause) -class GrunnlagKlientObo(config: Config, httpClient: HttpClient) : GrunnlagKlient { +class GrunnlagKlientObo( + config: Config, + httpClient: HttpClient, +) : GrunnlagKlient { private val logger = LoggerFactory.getLogger(GrunnlagKlient::class.java) private val azureAdClient = AzureAdClient(config) @@ -58,8 +64,7 @@ class GrunnlagKlientObo(config: Config, httpClient: HttpClient) : GrunnlagKlient url = "$resourceUrl/grunnlag/behandling/$behandlingId/$opplysningsType", ), brukerTokenInfo = brukerTokenInfo, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response?.let { objectMapper.readValue(it.toString()) } }, failure = { errorResponse -> if (errorResponse is ResponseException && errorResponse.response.status == HttpStatusCode.NotFound) { @@ -92,8 +97,7 @@ class GrunnlagKlientObo(config: Config, httpClient: HttpClient) : GrunnlagKlient url = "$resourceUrl/grunnlag/behandling/$behandlingId/${Opplysningstype.PERSONGALLERI_V1}", ), brukerTokenInfo = brukerTokenInfo, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response?.let { objectMapper.readValue(it.toString()) } }, failure = { errorResponse -> throw errorResponse }, ) diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/KlageKlient.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/KlageKlient.kt index 16429efdc23..a30201db7ab 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/KlageKlient.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/KlageKlient.kt @@ -22,7 +22,10 @@ interface KlageKlient : Pingable { ) } -class KlageKlientImpl(private val client: HttpClient, private val url: String) : KlageKlient { +class KlageKlientImpl( + private val client: HttpClient, + private val url: String, +) : KlageKlient { private val logger = LoggerFactory.getLogger(this::class.java) override suspend fun sendKlageTilKabal( @@ -51,15 +54,16 @@ class KlageKlientImpl(private val client: HttpClient, private val url: String) : override val endpoint: String get() = this.url - override suspend fun ping(konsument: String?): PingResult { - return client.ping( + override suspend fun ping(konsument: String?): PingResult = + client.ping( pingUrl = url.plus("/health/isready"), logger = logger, serviceName = serviceName, beskrivelse = beskrivelse, ) - } } -class KlageOversendelseException(klage: Klage, statusCode: HttpStatusCode) : - Exception("Kunne ikke oversende klagen med id=${klage.id} til etterlatte-klage, fikk statuskode=$statusCode") +class KlageOversendelseException( + klage: Klage, + statusCode: HttpStatusCode, +) : Exception("Kunne ikke oversende klagen med id=${klage.id} til etterlatte-klage, fikk statuskode=$statusCode") diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/MigreringKlient.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/MigreringKlient.kt index 5c9d7909550..49d1fbabf8e 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/MigreringKlient.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/MigreringKlient.kt @@ -14,7 +14,10 @@ import no.nav.etterlatte.libs.ktor.ping import org.slf4j.LoggerFactory import java.util.UUID -class MigreringKlient(private val client: HttpClient, private val url: String) : Pingable { +class MigreringKlient( + private val client: HttpClient, + private val url: String, +) : Pingable { private val logger = LoggerFactory.getLogger(this::class.java) suspend fun opprettManuellMigrering( @@ -47,15 +50,16 @@ class MigreringKlient(private val client: HttpClient, private val url: String) : override val endpoint: String get() = this.url - override suspend fun ping(konsument: String?): PingResult { - return client.ping( + override suspend fun ping(konsument: String?): PingResult = + client.ping( pingUrl = url.plus("/internal/isready"), logger = logger, serviceName = serviceName, beskrivelse = beskrivelse, ) - } } -class MigreringKlientException(override val detail: String, override val cause: Throwable?) : - InternfeilException(detail, cause) +class MigreringKlientException( + override val detail: String, + override val cause: Throwable?, +) : InternfeilException(detail, cause) diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/NavAnsattKlient.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/NavAnsattKlient.kt index 9f5616be8e3..107aa28b78e 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/NavAnsattKlient.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/NavAnsattKlient.kt @@ -26,7 +26,8 @@ class NavAnsattKlientImpl( private val logger = LoggerFactory.getLogger(NavAnsattKlientImpl::class.java) private val navneCache = - Caffeine.newBuilder() + Caffeine + .newBuilder() .build() override suspend fun hentSaksbehanderNavn(ident: String): SaksbehandlerInfo? = @@ -54,13 +55,12 @@ class NavAnsattKlientImpl( override val endpoint: String get() = this.url - override suspend fun ping(konsument: String?): PingResult { - return client.ping( + override suspend fun ping(konsument: String?): PingResult = + client.ping( pingUrl = url.plus("/ping"), logger = logger, serviceName = serviceName, beskrivelse = beskrivelse, konsument = konsument, ) - } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/Norg2Klient.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/Norg2Klient.kt index 34e6160ab39..526021c3333 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/Norg2Klient.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/Norg2Klient.kt @@ -24,11 +24,16 @@ interface Norg2Klient { suspend fun hentNavkontorForOmraade(omraade: String): Navkontor } -class Norg2KlientImpl(private val client: HttpClient, private val url: String) : Norg2Klient { +class Norg2KlientImpl( + private val client: HttpClient, + private val url: String, +) : Norg2Klient { private val logger = LoggerFactory.getLogger(Norg2KlientImpl::class.java) private val cacheNavkontor = - Caffeine.newBuilder().expireAfterWrite(Duration.ofMinutes(15)) + Caffeine + .newBuilder() + .expireAfterWrite(Duration.ofMinutes(15)) .build() override suspend fun hentNavkontorForOmraade(omraade: String): Navkontor { diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/TilbakekrevingKlient.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/TilbakekrevingKlient.kt index 05a3afe7c28..0640ebd01ac 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/TilbakekrevingKlient.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/TilbakekrevingKlient.kt @@ -20,8 +20,10 @@ interface TilbakekrevingKlient : Pingable { ) } -class TilbakekrevingKlientImpl(private val client: HttpClient, private val url: String) : - TilbakekrevingKlient { +class TilbakekrevingKlientImpl( + private val client: HttpClient, + private val url: String, +) : TilbakekrevingKlient { private val logger = LoggerFactory.getLogger(this::class.java) override suspend fun sendTilbakekrevingsvedtak( @@ -50,14 +52,15 @@ class TilbakekrevingKlientImpl(private val client: HttpClient, private val url: override val endpoint: String get() = this.url - override suspend fun ping(konsument: String?): PingResult { - return client.ping( + override suspend fun ping(konsument: String?): PingResult = + client.ping( pingUrl = url.plus("/health/isready"), logger = logger, serviceName = serviceName, beskrivelse = beskrivelse, ) - } } -class TilbakekrevingKlientException(override val message: String) : Exception(message) +class TilbakekrevingKlientException( + override val message: String, +) : Exception(message) diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/VedtakKlientImpl.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/VedtakKlientImpl.kt index 405261cd7b3..000d1a1ea77 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/VedtakKlientImpl.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/klienter/VedtakKlientImpl.kt @@ -74,9 +74,15 @@ interface VedtakKlient { ): LoependeYtelseDTO } -class VedtakKlientException(override val message: String, override val cause: Throwable) : Exception(message, cause) +class VedtakKlientException( + override val message: String, + override val cause: Throwable, +) : Exception(message, cause) -class VedtakKlientImpl(config: Config, httpClient: HttpClient) : VedtakKlient { +class VedtakKlientImpl( + config: Config, + httpClient: HttpClient, +) : VedtakKlient { private val logger = LoggerFactory.getLogger(VedtakKlientImpl::class.java) private val azureAdClient = AzureAdClient(config) @@ -110,8 +116,7 @@ class VedtakKlientImpl(config: Config, httpClient: HttpClient) : VedtakKlient { soeker = Folkeregisteridentifikator.of(tilbakekrevingBehandling.sak.ident), tilbakekreving = tilbakekrevingBehandling.tilbakekreving.toObjectNode(), ), - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { errorResponse -> throw errorResponse }, ) @@ -143,8 +148,7 @@ class VedtakKlientImpl(config: Config, httpClient: HttpClient) : VedtakKlient { tilbakekrevingId = tilbakekrevingId, enhet = enhet, ), - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { errorResponse -> throw errorResponse }, ) @@ -176,8 +180,7 @@ class VedtakKlientImpl(config: Config, httpClient: HttpClient) : VedtakKlient { tilbakekrevingId = tilbakekrevingId, enhet = enhet, ), - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { errorResponse -> throw errorResponse }, ) @@ -204,8 +207,7 @@ class VedtakKlientImpl(config: Config, httpClient: HttpClient) : VedtakKlient { ), brukerTokenInfo = brukerTokenInfo, postBody = tilbakekrevingId, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { errorResponse -> throw errorResponse }, ) @@ -234,8 +236,7 @@ class VedtakKlientImpl(config: Config, httpClient: HttpClient) : VedtakKlient { ), brukerTokenInfo = brukerTokenInfo, postBody = klage, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { errorResponse -> throw errorResponse }, ) @@ -259,8 +260,7 @@ class VedtakKlientImpl(config: Config, httpClient: HttpClient) : VedtakKlient { ), brukerTokenInfo = brukerTokenInfo, postBody = klage, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { errorResponse -> throw errorResponse }, ) @@ -287,8 +287,7 @@ class VedtakKlientImpl(config: Config, httpClient: HttpClient) : VedtakKlient { ), brukerTokenInfo = brukerTokenInfo, postBody = klage, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { errorResponse -> throw errorResponse }, ) @@ -315,8 +314,7 @@ class VedtakKlientImpl(config: Config, httpClient: HttpClient) : VedtakKlient { ), brukerTokenInfo = brukerTokenInfo, postBody = { }, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { errorResponse -> throw errorResponse }, ) @@ -343,8 +341,7 @@ class VedtakKlientImpl(config: Config, httpClient: HttpClient) : VedtakKlient { url = "$resourceUrl/api/vedtak/loepende/$sakId?dato=$dato", ), brukerTokenInfo = brukerTokenInfo, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { errorResponse -> throw errorResponse }, ) diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/kommerbarnettilgode/KommerBarnetTilGodeDao.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/kommerbarnettilgode/KommerBarnetTilGodeDao.kt index 4ea83530bd8..185726c434d 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/kommerbarnettilgode/KommerBarnetTilGodeDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/kommerbarnettilgode/KommerBarnetTilGodeDao.kt @@ -8,21 +8,22 @@ import no.nav.etterlatte.libs.common.behandling.KommerBarnetTilgode import no.nav.etterlatte.libs.database.singleOrNull import java.util.UUID -class KommerBarnetTilGodeDao(private val connectionAutoclosing: ConnectionAutoclosing) { +class KommerBarnetTilGodeDao( + private val connectionAutoclosing: ConnectionAutoclosing, +) { fun lagreKommerBarnetTilGode(kommerBarnetTilGode: KommerBarnetTilgode) { if (kommerBarnetTilGode.behandlingId?.let { hentKommerBarnetTilGode(it) } != null) { connectionAutoclosing.hentConnection { connection -> with(connection) { prepareStatement( "UPDATE kommerbarnettilgode SET svar = ?, begrunnelse = ?, kilde = ? WHERE behandling_id = ?", - ) - .also { - it.setString(1, kommerBarnetTilGode.svar.name) - it.setString(2, kommerBarnetTilGode.begrunnelse) - it.setObject(3, kommerBarnetTilGode.kilde.toJson()) - it.setObject(4, kommerBarnetTilGode.behandlingId) - it.executeUpdate() - } + ).also { + it.setString(1, kommerBarnetTilGode.svar.name) + it.setString(2, kommerBarnetTilGode.begrunnelse) + it.setObject(3, kommerBarnetTilGode.kilde.toJson()) + it.setObject(4, kommerBarnetTilGode.behandlingId) + it.executeUpdate() + } } } } else { @@ -42,8 +43,8 @@ class KommerBarnetTilGodeDao(private val connectionAutoclosing: ConnectionAutocl } } - fun hentKommerBarnetTilGode(behandlingId: UUID): KommerBarnetTilgode? { - return connectionAutoclosing.hentConnection { + fun hentKommerBarnetTilGode(behandlingId: UUID): KommerBarnetTilgode? = + connectionAutoclosing.hentConnection { with(it) { val stmt = prepareStatement( @@ -63,5 +64,4 @@ class KommerBarnetTilGodeDao(private val connectionAutoclosing: ConnectionAutocl } } } - } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/kommerbarnettilgode/KommerBarnetTilGodeService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/kommerbarnettilgode/KommerBarnetTilGodeService.kt index 2a5fc57c8b0..cc48240e5be 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/kommerbarnettilgode/KommerBarnetTilGodeService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/kommerbarnettilgode/KommerBarnetTilGodeService.kt @@ -10,7 +10,8 @@ class KommerBarnetTilGodeService( ) { fun lagreKommerBarnetTilgode(kommerBarnetTilgode: KommerBarnetTilgode) { kommerBarnetTilgode.behandlingId?.let { - behandlingDao.hentBehandling(it) + behandlingDao + .hentBehandling(it) ?.tilOpprettet() ?.also { kommerBarnetTilGodeDao.lagreKommerBarnetTilGode(kommerBarnetTilgode) } ?.also { behandling -> behandlingDao.lagreStatus(behandling) } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/omregning/OmregningDao.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/omregning/OmregningDao.kt index 4f9adaa0043..3e951745d57 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/omregning/OmregningDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/omregning/OmregningDao.kt @@ -3,7 +3,9 @@ package no.nav.etterlatte.behandling.omregning import no.nav.etterlatte.common.ConnectionAutoclosing import no.nav.etterlatte.libs.common.sak.KjoeringRequest -class OmregningDao(private val connection: ConnectionAutoclosing) { +class OmregningDao( + private val connection: ConnectionAutoclosing, +) { fun oppdaterKjoering(request: KjoeringRequest) { connection.hentConnection { connection -> with(connection) { diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/omregning/OmregningService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/omregning/OmregningService.kt index a74ed863613..6edc08e4d5a 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/omregning/OmregningService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/omregning/OmregningService.kt @@ -68,7 +68,8 @@ class OmregningService( } } -class StoetterIkkeProsesstypeManuell : UgyldigForespoerselException( - code = "StoetterIkkeProsesstypeManuell", - detail = "Støtter ikke omregning for manuell behandling", -) +class StoetterIkkeProsesstypeManuell : + UgyldigForespoerselException( + code = "StoetterIkkeProsesstypeManuell", + detail = "Støtter ikke omregning for manuell behandling", + ) diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/AutomatiskRevurderingService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/AutomatiskRevurderingService.kt index 4b28ee12250..1671b729ee7 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/AutomatiskRevurderingService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/AutomatiskRevurderingService.kt @@ -10,7 +10,9 @@ import no.nav.etterlatte.libs.common.tidspunkt.Tidspunkt import no.nav.etterlatte.libs.ktor.token.Fagsaksystem import java.time.LocalDate -class AutomatiskRevurderingService(private val revurderingService: RevurderingService) { +class AutomatiskRevurderingService( + private val revurderingService: RevurderingService, +) { fun opprettAutomatiskRevurdering( sakId: Long, forrigeBehandling: Behandling, diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingDao.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingDao.kt index 512c86395ee..690b4447784 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingDao.kt @@ -20,7 +20,9 @@ import java.sql.ResultSet import java.sql.Types import java.util.UUID -class RevurderingDao(private val connectionAutoclosing: ConnectionAutoclosing) { +class RevurderingDao( + private val connectionAutoclosing: ConnectionAutoclosing, +) { fun lagreRevurderingInfo( id: UUID, revurderingInfoMedBegrunnelse: RevurderingInfoMedBegrunnelse, @@ -54,7 +56,8 @@ class RevurderingDao(private val connectionAutoclosing: ConnectionAutoclosing) { """.trimIndent(), ).let { statement -> statement.setObject(1, id) - statement.executeQuery() + statement + .executeQuery() .singleOrNull { RevurderingInfoMedBegrunnelse( getString("info")?.let { objectMapper.readValue(it) }, diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingInfoMedBegrunnelse.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingInfoMedBegrunnelse.kt index a36e49d16a2..c4e3dfaa73e 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingInfoMedBegrunnelse.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingInfoMedBegrunnelse.kt @@ -2,4 +2,7 @@ package no.nav.etterlatte.behandling.revurdering import no.nav.etterlatte.libs.common.behandling.RevurderingInfo -data class RevurderingInfoMedBegrunnelse(val revurderingInfo: RevurderingInfo?, val begrunnelse: String?) +data class RevurderingInfoMedBegrunnelse( + val revurderingInfo: RevurderingInfo?, + val begrunnelse: String?, +) diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingRoutes.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingRoutes.kt index e2cd428eb55..697c7744b43 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingRoutes.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingRoutes.kt @@ -126,4 +126,7 @@ data class OpprettRevurderingRequest( val fritekstAarsak: String? = null, ) -data class RevurderingInfoDto(val begrunnelse: String?, val info: RevurderingInfo) +data class RevurderingInfoDto( + val begrunnelse: String?, + val info: RevurderingInfo, +) diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingService.kt index 6d32288f958..30e2b81cba3 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/revurdering/RevurderingService.kt @@ -45,22 +45,30 @@ import java.time.LocalDateTime import java.time.YearMonth import java.util.UUID -class MaksEnAktivOppgavePaaBehandling(sakId: Long) : UgyldigForespoerselException( - code = "MAKS_EN_AKTIV_OPPGAVE_PAA_BEHANDLING", - detail = "Sak $sakId har allerede en oppgave under behandling", -) +class MaksEnAktivOppgavePaaBehandling( + sakId: Long, +) : UgyldigForespoerselException( + code = "MAKS_EN_AKTIV_OPPGAVE_PAA_BEHANDLING", + detail = "Sak $sakId har allerede en oppgave under behandling", + ) -class RevurderingaarsakIkkeStoettet(aarsak: Revurderingaarsak) : UgyldigForespoerselException( - code = "REVURDERINGAARSAK_IKKE_STOETTET", - detail = "Revurderingsårsak \"$aarsak\" er foreløpig ikke støttet", -) +class RevurderingaarsakIkkeStoettet( + aarsak: Revurderingaarsak, +) : UgyldigForespoerselException( + code = "REVURDERINGAARSAK_IKKE_STOETTET", + detail = "Revurderingsårsak \"$aarsak\" er foreløpig ikke støttet", + ) -class RevurderingManglerIverksattBehandling(sakId: Long) : UgyldigForespoerselException( - code = "REVURDERING_MANGLER_IVERKSATT_BEHANDLING", - detail = "Sak $sakId kan ikke revurderes uten en iverksatt behandling", -) +class RevurderingManglerIverksattBehandling( + sakId: Long, +) : UgyldigForespoerselException( + code = "REVURDERING_MANGLER_IVERKSATT_BEHANDLING", + detail = "Sak $sakId kan ikke revurderes uten en iverksatt behandling", + ) -class RevurderingSluttbehandlingUtlandMaaHaEnBehandlingMedSkalSendeKravpakke(message: String) : Exception(message) +class RevurderingSluttbehandlingUtlandMaaHaEnBehandlingMedSkalSendeKravpakke( + message: String, +) : Exception(message) class UgyldigBehandlingTypeForRevurdering : IkkeTillattException( @@ -117,9 +125,10 @@ class RevurderingService( fun maksEnOppgaveUnderbehandlingForKildeBehandling(sakId: Long) { val oppgaverForSak = oppgaveService.hentOppgaverForSak(sakId) - if (oppgaverForSak.filter { - it.kilde == OppgaveKilde.BEHANDLING - }.any { !it.erAvsluttet() } + if (oppgaverForSak + .filter { + it.kilde == OppgaveKilde.BEHANDLING + }.any { !it.erAvsluttet() } ) { throw MaksEnAktivOppgavePaaBehandling(sakId) } @@ -321,7 +330,8 @@ class RevurderingService( } forrigeBehandling?.let { behandlingId -> - kommerBarnetTilGodeService.hentKommerBarnetTilGode(behandlingId) + kommerBarnetTilGodeService + .hentKommerBarnetTilGode(behandlingId) ?.copy(behandlingId = opprettBehandling.id) ?.let { kopiert -> kommerBarnetTilGodeService.lagreKommerBarnetTilgode(kopiert) } aktivitetspliktDao.kopierAktiviteter(behandlingId, opprettBehandling.id) @@ -412,7 +422,11 @@ class RevurderingService( ) val behandlingSomOmgjoeresId = - klagenViOmgjoerPaaGrunnAv.formkrav?.formkrav?.vedtaketKlagenGjelder?.behandlingId?.let { UUID.fromString(it) } + klagenViOmgjoerPaaGrunnAv.formkrav + ?.formkrav + ?.vedtaketKlagenGjelder + ?.behandlingId + ?.let { UUID.fromString(it) } ?: throw FeilIOmgjoering.ManglerBehandlingForOmgjoering(klagenViOmgjoerPaaGrunnAv) val behandlingSomOmgjoeres = behandlingDao.hentBehandling(behandlingSomOmgjoeresId) @@ -423,7 +437,11 @@ class RevurderingService( sakId = sakId, persongalleri = persongalleri, forrigeBehandling = behandlingSomOmgjoeresId, - mottattDato = klagenViOmgjoerPaaGrunnAv.innkommendeDokument?.mottattDato?.atStartOfDay()?.toString(), + mottattDato = + klagenViOmgjoerPaaGrunnAv.innkommendeDokument + ?.mottattDato + ?.atStartOfDay() + ?.toString(), prosessType = Prosesstype.MANUELL, kilde = Vedtaksloesning.GJENNY, revurderingAarsak = Revurderingaarsak.OMGJOERING_ETTER_KLAGE, @@ -466,27 +484,34 @@ sealed class FeilIOmgjoering { class IngenOmgjoeringsoppgave : UgyldigForespoerselException("INGEN_OMGJOERINGSOPPGAVE", "Mottok ikke en gyldig omgjøringsoppgave") - class OmgjoeringsOppgaveLukket(oppgave: OppgaveIntern) : - UgyldigForespoerselException( + class OmgjoeringsOppgaveLukket( + oppgave: OppgaveIntern, + ) : UgyldigForespoerselException( "OMGJOERINGSOPPGAVE_LUKKET", "Oppgaven ${oppgave.id} har status ${oppgave.status}.", ) - class OppgaveOgSakErForskjellig(sakId: Long, oppgave: OppgaveIntern) : - UgyldigForespoerselException( + class OppgaveOgSakErForskjellig( + sakId: Long, + oppgave: OppgaveIntern, + ) : UgyldigForespoerselException( "SAK_I_OPPGAVE_MATCHER_IKKE", "Saken det skal omgjøres i har id=$sakId, men omgjøringsoppgaven er i sak med id=${oppgave.sakId}", ) - class SaksbehandlerHarIkkeOppgaven(saksbehandler: Saksbehandler, omgjoeringsoppgave: OppgaveIntern) : - UgyldigForespoerselException( + class SaksbehandlerHarIkkeOppgaven( + saksbehandler: Saksbehandler, + omgjoeringsoppgave: OppgaveIntern, + ) : UgyldigForespoerselException( "SAKSBEHANDLER_HAR_IKKE_OPPGAVEN", "Saksbehandler med ident=${saksbehandler.ident} er ikke saksbehandler i oppgaven med " + "id=$omgjoeringsoppgave (saksbehandler i oppgaven er ${omgjoeringsoppgave.saksbehandler?.ident}).", ) - class ManglerBehandlingForOmgjoering(klage: Klage) : InternfeilException( - "Klagen med id=${klage.id} har laget en omgjøringsoppgave men vi finner ikke behandlingen som skal omgjøres." + - " Noe galt har skjedd i ferdigstillingen av denne klagen, eller dette er ikke et behandlingsvedtak.", - ) + class ManglerBehandlingForOmgjoering( + klage: Klage, + ) : InternfeilException( + "Klagen med id=${klage.id} har laget en omgjøringsoppgave men vi finner ikke behandlingen som skal omgjøres." + + " Noe galt har skjedd i ferdigstillingen av denne klagen, eller dette er ikke et behandlingsvedtak.", + ) } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/selftest/SelfTestService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/selftest/SelfTestService.kt index 6d712bd18aa..e141ec16200 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/selftest/SelfTestService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/selftest/SelfTestService.kt @@ -27,13 +27,12 @@ class SelfTestService( ) } - private suspend fun performSelfTest(): List { - return coroutineScope { + private suspend fun performSelfTest(): List = + coroutineScope { externalServices .map { async { it.ping() } } .map { it.await() } } - } private companion object { private const val APPLICATION_NAME = "etterlatte-behandling" diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/sjekkliste/SjekklisteDao.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/sjekkliste/SjekklisteDao.kt index 523478923aa..1f65e542e05 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/sjekkliste/SjekklisteDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/sjekkliste/SjekklisteDao.kt @@ -7,7 +7,9 @@ import no.nav.etterlatte.libs.database.toList import java.sql.ResultSet import java.util.UUID -class SjekklisteDao(private val connectionAutoclosing: ConnectionAutoclosing) { +class SjekklisteDao( + private val connectionAutoclosing: ConnectionAutoclosing, +) { fun opprettSjekkliste( behandlingId: UUID, sjekklisteItems: List, @@ -54,40 +56,38 @@ class SjekklisteDao(private val connectionAutoclosing: ConnectionAutoclosing) { fun oppdaterSjekkliste( sjekklisteId: UUID, oppdatering: OppdatertSjekkliste, - ) { - return connectionAutoclosing.hentConnection { connection -> - with(connection) { - val stmt = - prepareStatement( - """ - UPDATE sjekkliste - SET kommentar = ?, - kontonr_reg = ?, - onsket_skattetrekk = ?, - bekreftet = ?, - endret = CURRENT_TIMESTAMP, - endret_av = ?, - versjon = versjon + 1 - WHERE id = ? - """.trimIndent(), - ) - stmt.setObject(1, oppdatering.kommentar) - stmt.setObject(2, oppdatering.kontonrRegistrert) - stmt.setObject(3, oppdatering.onsketSkattetrekk) - stmt.setObject(4, oppdatering.bekreftet) - stmt.setObject(5, Kontekst.get().AppUser.name()) - stmt.setObject(6, sjekklisteId) - stmt.executeUpdate().also { - if (it != 1) { - throw IllegalStateException("Feil under oppdatering av sjekkliste $sjekklisteId") - } + ) = connectionAutoclosing.hentConnection { connection -> + with(connection) { + val stmt = + prepareStatement( + """ + UPDATE sjekkliste + SET kommentar = ?, + kontonr_reg = ?, + onsket_skattetrekk = ?, + bekreftet = ?, + endret = CURRENT_TIMESTAMP, + endret_av = ?, + versjon = versjon + 1 + WHERE id = ? + """.trimIndent(), + ) + stmt.setObject(1, oppdatering.kommentar) + stmt.setObject(2, oppdatering.kontonrRegistrert) + stmt.setObject(3, oppdatering.onsketSkattetrekk) + stmt.setObject(4, oppdatering.bekreftet) + stmt.setObject(5, Kontekst.get().AppUser.name()) + stmt.setObject(6, sjekklisteId) + stmt.executeUpdate().also { + if (it != 1) { + throw IllegalStateException("Feil under oppdatering av sjekkliste $sjekklisteId") } } } } - fun hentSjekkliste(id: UUID): Sjekkliste? { - return connectionAutoclosing.hentConnection { + fun hentSjekkliste(id: UUID): Sjekkliste? = + connectionAutoclosing.hentConnection { with(it) { val stmt = prepareStatement( @@ -103,23 +103,24 @@ class SjekklisteDao(private val connectionAutoclosing: ConnectionAutoclosing) { """.trimIndent(), ) stmt.setObject(1, id) - stmt.executeQuery().toList { - Sjekkliste( - id = getUUID("id"), - kommentar = getString("kommentar"), - kontonrRegistrert = getString("kontonr_reg"), - onsketSkattetrekk = getInt("onsket_skattetrekk"), - bekreftet = getBoolean("bekreftet"), - sjekklisteItems = hentSjekklisteItems(id), - versjon = getLong("versjon"), - ) - }.firstOrNull() + stmt + .executeQuery() + .toList { + Sjekkliste( + id = getUUID("id"), + kommentar = getString("kommentar"), + kontonrRegistrert = getString("kontonr_reg"), + onsketSkattetrekk = getInt("onsket_skattetrekk"), + bekreftet = getBoolean("bekreftet"), + sjekklisteItems = hentSjekklisteItems(id), + versjon = getLong("versjon"), + ) + }.firstOrNull() } } - } - private fun hentSjekklisteItems(sjekklisteId: UUID): List { - return connectionAutoclosing.hentConnection { connection -> + private fun hentSjekklisteItems(sjekklisteId: UUID): List = + connectionAutoclosing.hentConnection { connection -> with(connection) { val stmt = prepareStatement( @@ -136,10 +137,9 @@ class SjekklisteDao(private val connectionAutoclosing: ConnectionAutoclosing) { stmt.executeQuery().toList { sjekklisteItem() }.sortedBy { it.id } } } - } - fun hentSjekklisteItem(sjekklisteItemId: Long): SjekklisteItem { - return connectionAutoclosing.hentConnection { connection -> + fun hentSjekklisteItem(sjekklisteItemId: Long): SjekklisteItem = + connectionAutoclosing.hentConnection { connection -> with(connection) { val stmt = prepareStatement( @@ -153,12 +153,13 @@ class SjekklisteDao(private val connectionAutoclosing: ConnectionAutoclosing) { """.trimIndent(), ) stmt.setObject(1, sjekklisteItemId) - stmt.executeQuery().toList { sjekklisteItem() } + stmt + .executeQuery() + .toList { sjekklisteItem() } .also { if (it.isEmpty()) throw IllegalStateException("Fant ingen sjekklisterad id=$sjekklisteItemId") } .first() } } - } private fun ResultSet.sjekklisteItem() = SjekklisteItem( @@ -171,27 +172,25 @@ class SjekklisteDao(private val connectionAutoclosing: ConnectionAutoclosing) { fun oppdaterSjekklisteItem( itemId: Long, oppdatering: OppdaterSjekklisteItem, - ) { - return connectionAutoclosing.hentConnection { connection -> - with(connection) { - val stmt = - prepareStatement( - """ - UPDATE sjekkliste_item - SET avkrysset = ?, - endret = CURRENT_TIMESTAMP, - endret_av = ?, - versjon = versjon + 1 - WHERE id = ? - """.trimIndent(), - ) - stmt.setObject(1, oppdatering.avkrysset) - stmt.setObject(2, Kontekst.get().AppUser.name()) - stmt.setObject(3, itemId) - stmt.executeUpdate().also { - if (it != 1) { - throw IllegalStateException("Feil under oppdatering av sjekklisterad $itemId") - } + ) = connectionAutoclosing.hentConnection { connection -> + with(connection) { + val stmt = + prepareStatement( + """ + UPDATE sjekkliste_item + SET avkrysset = ?, + endret = CURRENT_TIMESTAMP, + endret_av = ?, + versjon = versjon + 1 + WHERE id = ? + """.trimIndent(), + ) + stmt.setObject(1, oppdatering.avkrysset) + stmt.setObject(2, Kontekst.get().AppUser.name()) + stmt.setObject(3, itemId) + stmt.executeUpdate().also { + if (it != 1) { + throw IllegalStateException("Feil under oppdatering av sjekklisterad $itemId") } } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/sjekkliste/SjekklisteService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/sjekkliste/SjekklisteService.kt index 8cc502a040f..b89e4affe3f 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/sjekkliste/SjekklisteService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/sjekkliste/SjekklisteService.kt @@ -18,11 +18,10 @@ class SjekklisteService( private val behandlingService: BehandlingService, private val oppgaveService: OppgaveService, ) { - fun hentSjekkliste(id: UUID): Sjekkliste? { - return inTransaction { + fun hentSjekkliste(id: UUID): Sjekkliste? = + inTransaction { dao.hentSjekkliste(id) } - } fun opprettSjekkliste(behandlingId: UUID): Sjekkliste { val behandling = @@ -63,8 +62,8 @@ class SjekklisteService( fun oppdaterSjekkliste( behandlingId: UUID, oppdaterSjekkliste: OppdatertSjekkliste, - ): Sjekkliste { - return inTransaction { + ): Sjekkliste = + inTransaction { val behandling = requireNotNull(behandlingService.hentBehandling(behandlingId)) if (!(kanEndres(behandling) && behandling.oppgaveUnderArbeidErTildeltGjeldendeSaksbehandler())) { @@ -77,14 +76,13 @@ class SjekklisteService( dao.oppdaterSjekkliste(behandlingId, oppdaterSjekkliste) dao.hentSjekkliste(behandlingId)!! } - } fun oppdaterSjekklisteItem( behandlingId: UUID, itemId: Long, oppdatering: OppdaterSjekklisteItem, - ): SjekklisteItem { - return inTransaction { + ): SjekklisteItem = + inTransaction { val behandling = requireNotNull(behandlingService.hentBehandling(behandlingId)) if (!(kanEndres(behandling) && behandling.oppgaveUnderArbeidErTildeltGjeldendeSaksbehandler())) { @@ -97,26 +95,31 @@ class SjekklisteService( dao.oppdaterSjekklisteItem(itemId, oppdatering) dao.hentSjekklisteItem(itemId) } - } - private fun kanEndres(behandling: Behandling): Boolean { - return BehandlingStatus.underBehandling().contains(behandling.status) && + private fun kanEndres(behandling: Behandling): Boolean = + BehandlingStatus.underBehandling().contains(behandling.status) && behandling is Foerstegangsbehandling - } - private fun Behandling.oppgaveUnderArbeidErTildeltGjeldendeSaksbehandler(): Boolean { - return Kontekst.get().AppUser.name() == - oppgaveService.hentOppgaveUnderBehandling(this.id.toString()) - ?.saksbehandler?.ident - } + private fun Behandling.oppgaveUnderArbeidErTildeltGjeldendeSaksbehandler(): Boolean = + Kontekst.get().AppUser.name() == + oppgaveService + .hentOppgaveUnderBehandling(this.id.toString()) + ?.saksbehandler + ?.ident } -internal class SjekklisteUgyldigForespoerselException(kode: String, detail: String) : UgyldigForespoerselException( - code = kode, - detail = detail, -) - -internal class SjekklisteIkkeTillattException(kode: String, detail: String) : IkkeTillattException( - code = kode, - detail = detail, -) +internal class SjekklisteUgyldigForespoerselException( + kode: String, + detail: String, +) : UgyldigForespoerselException( + code = kode, + detail = detail, + ) + +internal class SjekklisteIkkeTillattException( + kode: String, + detail: String, +) : IkkeTillattException( + code = kode, + detail = detail, + ) diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingDao.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingDao.kt index 886debf0061..33b0d20b8cf 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingDao.kt @@ -25,9 +25,11 @@ import java.sql.Types import java.time.YearMonth import java.util.UUID -class TilbakekrevingDao(private val connectionAutoclosing: ConnectionAutoclosing) { - fun hentTilbakekrevinger(sakId: Long): List { - return connectionAutoclosing.hentConnection { +class TilbakekrevingDao( + private val connectionAutoclosing: ConnectionAutoclosing, +) { + fun hentTilbakekrevinger(sakId: Long): List = + connectionAutoclosing.hentConnection { with(it) { val tilbakekrevinger = selectTilbakekrevinger(this, sakId) tilbakekrevinger.map { tilbakekreving -> @@ -40,7 +42,6 @@ class TilbakekrevingDao(private val connectionAutoclosing: ConnectionAutoclosing } } } - } private fun selectTilbakekrevinger( connection: Connection, @@ -59,8 +60,8 @@ class TilbakekrevingDao(private val connectionAutoclosing: ConnectionAutoclosing statement.executeQuery().toList { toTilbakekreving() } } - fun hentTilbakekreving(tilbakekrevingId: UUID): TilbakekrevingBehandling { - return connectionAutoclosing.hentConnection { + fun hentTilbakekreving(tilbakekrevingId: UUID): TilbakekrevingBehandling = + connectionAutoclosing.hentConnection { with(it) { val tilbakekreving = selectTilbakekreving(this, tilbakekrevingId) tilbakekreving?.copy( @@ -71,10 +72,9 @@ class TilbakekrevingDao(private val connectionAutoclosing: ConnectionAutoclosing ) ?: throw TilbakekrevingFinnesIkkeException("Tilbakekreving med id=$tilbakekrevingId finnes ikke") } } - } - fun hentNyesteTilbakekreving(sakId: Long): TilbakekrevingBehandling { - return connectionAutoclosing.hentConnection { + fun hentNyesteTilbakekreving(sakId: Long): TilbakekrevingBehandling = + connectionAutoclosing.hentConnection { with(it) { val tilbakekreving = hentNyesteTilbakekrevingForSak(this, sakId) tilbakekreving?.copy( @@ -85,7 +85,6 @@ class TilbakekrevingDao(private val connectionAutoclosing: ConnectionAutoclosing ) ?: throw TilbakekrevingFinnesIkkeException("Tilbakekreving for sakId=$sakId finnes ikke") } } - } private fun hentNyesteTilbakekrevingForSak( connection: Connection, @@ -149,15 +148,14 @@ class TilbakekrevingDao(private val connectionAutoclosing: ConnectionAutoclosing } } - fun lagreTilbakekreving(tilbakekrevingBehandling: TilbakekrevingBehandling): TilbakekrevingBehandling { - return connectionAutoclosing.hentConnection { connection -> + fun lagreTilbakekreving(tilbakekrevingBehandling: TilbakekrevingBehandling): TilbakekrevingBehandling = + connectionAutoclosing.hentConnection { connection -> with(connection) { insertTilbakekreving(this, tilbakekrevingBehandling) insertTilbakekrevingsperioder(this, tilbakekrevingBehandling) } hentTilbakekreving(tilbakekrevingBehandling.id) } - } private fun insertTilbakekreving( connection: Connection, @@ -277,8 +275,8 @@ class TilbakekrevingDao(private val connectionAutoclosing: ConnectionAutoclosing sendeBrev = getBoolean("sende_brev"), ) - private fun ResultSet.toTilbakekrevingsperiode(): Pair { - return Pair( + private fun ResultSet.toTilbakekrevingsperiode(): Pair = + Pair( YearMonth.parse(getString("maaned")), Tilbakekrevingsbelop( id = getUUID("id"), @@ -297,7 +295,6 @@ class TilbakekrevingDao(private val connectionAutoclosing: ConnectionAutoclosing rentetillegg = getIntOrNull("rentetillegg"), ), ) - } } fun PreparedStatement.setInt( diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingFeilmeldinger.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingFeilmeldinger.kt index 09d2e29e4d1..4686358321f 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingFeilmeldinger.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingFeilmeldinger.kt @@ -3,12 +3,22 @@ package no.nav.etterlatte.behandling.tilbakekreving import no.nav.etterlatte.libs.common.feilhaandtering.IkkeFunnetException import no.nav.etterlatte.libs.common.feilhaandtering.InternfeilException -class TilbakekrevingHarMangelException(message: String) : InternfeilException(detail = message) +class TilbakekrevingHarMangelException( + message: String, +) : InternfeilException(detail = message) -class TilbakekrevingUnderBehandlingFinnesAlleredeException(message: String) : InternfeilException(detail = message) +class TilbakekrevingUnderBehandlingFinnesAlleredeException( + message: String, +) : InternfeilException(detail = message) -class TilbakekrevingFinnesIkkeException(message: String) : IkkeFunnetException(code = "NOT_FOUND", detail = message) +class TilbakekrevingFinnesIkkeException( + message: String, +) : IkkeFunnetException(code = "NOT_FOUND", detail = message) -class TilbakekrevingFeilTilstandException(message: String) : InternfeilException(detail = message) +class TilbakekrevingFeilTilstandException( + message: String, +) : InternfeilException(detail = message) -class TilbakekrevingManglerBrevException(message: String) : InternfeilException(detail = message) +class TilbakekrevingManglerBrevException( + message: String, +) : InternfeilException(detail = message) diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingHendelserService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingHendelserService.kt index 1fdfb08716d..f6f652c0ceb 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingHendelserService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingHendelserService.kt @@ -30,21 +30,23 @@ class TilbakekrevingHendelserServiceImpl( ) { val correlationId = getCorrelationId() - rapid.publiser( - statistikkTilbakekreving.id.toString(), - JsonMessage.newMessage( - type.lagEventnameForType(), - mapOf( - CORRELATION_ID_KEY to correlationId, - TEKNISK_TID_KEY to LocalDateTime.now(), - TILBAKEKREVING_STATISTIKK_RIVER_KEY to statistikkTilbakekreving, - ), - ).toJson(), - ).also { (partition, offset) -> - logger.info( - "Posted event ${type.lagEventnameForType()} for TILBAKEKREVING ${statistikkTilbakekreving.id}" + - " to partiton $partition, offset $offset correlationid: $correlationId", - ) - } + rapid + .publiser( + statistikkTilbakekreving.id.toString(), + JsonMessage + .newMessage( + type.lagEventnameForType(), + mapOf( + CORRELATION_ID_KEY to correlationId, + TEKNISK_TID_KEY to LocalDateTime.now(), + TILBAKEKREVING_STATISTIKK_RIVER_KEY to statistikkTilbakekreving, + ), + ).toJson(), + ).also { (partition, offset) -> + logger.info( + "Posted event ${type.lagEventnameForType()} for TILBAKEKREVING ${statistikkTilbakekreving.id}" + + " to partiton $partition, offset $offset correlationid: $correlationId", + ) + } } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingService.kt index 35d83b6d998..7bb62e45f8c 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingService.kt @@ -59,7 +59,8 @@ class TilbakekrevingService( sakDao.hentSak(kravgrunnlag.sakId.value) ?: throw TilbakekrevingHarMangelException("Tilbakekreving mangler sak") - tilbakekrevingDao.hentTilbakekrevinger(sak.id) + tilbakekrevingDao + .hentTilbakekrevinger(sak.id) .find { it.underBehandlingEllerFattetVedtak() } ?.let { throw TilbakekrevingUnderBehandlingFinnesAlleredeException( @@ -74,7 +75,8 @@ class TilbakekrevingService( ) val oppgaveFraBehandlingMedFeilutbetaling = - oppgaveService.hentOppgaverForReferanse(kravgrunnlag.sakId.value.toString()) + oppgaveService + .hentOppgaverForReferanse(kravgrunnlag.sakId.value.toString()) .filter { it.type == OppgaveType.TILBAKEKREVING } .filter { !it.erAvsluttet() } .maxByOrNull { it.opprettet } @@ -118,7 +120,8 @@ class TilbakekrevingService( sjekkAtTilbakekrevingIkkeErFerdigstiltEllerAvbrutt(tilbakekreving) val oppgave = - oppgaveService.hentOppgaverForReferanse(tilbakekreving.id.toString()) + oppgaveService + .hentOppgaverForReferanse(tilbakekreving.id.toString()) .firstOrNull { it.type == OppgaveType.TILBAKEKREVING } ?: throw TilbakekrevingFeilTilstandException( "Fant ingen oppgave tilknyttet ${tilbakekreving.id}", ) @@ -454,7 +457,9 @@ class TilbakekrevingService( ), aarsak = requireNotNull(tilbakekreving.tilbakekreving.vurdering?.aarsak), hjemmel = hjemmelFraVurdering(requireNotNull(tilbakekreving.tilbakekreving.vurdering)), - kravgrunnlagId = tilbakekreving.tilbakekreving.kravgrunnlag.kravgrunnlagId.value.toString(), + kravgrunnlagId = + tilbakekreving.tilbakekreving.kravgrunnlag.kravgrunnlagId.value + .toString(), kontrollfelt = tilbakekreving.tilbakekreving.kravgrunnlag.kontrollFelt.value, perioder = tilbakekreving.tilbakekreving.perioder.map { @@ -466,13 +471,12 @@ class TilbakekrevingService( }, ) - private fun hjemmelFraVurdering(vurdering: TilbakekrevingVurdering): TilbakekrevingHjemmel { - return if (vurdering.vilkaarsresultat == TilbakekrevingVilkaar.IKKE_OPPFYLT) { + private fun hjemmelFraVurdering(vurdering: TilbakekrevingVurdering): TilbakekrevingHjemmel = + if (vurdering.vilkaarsresultat == TilbakekrevingVilkaar.IKKE_OPPFYLT) { TilbakekrevingHjemmel.TJUETO_FEMTEN_FEMTE_LEDD } else { requireNotNull(vurdering.rettsligGrunnlag) } - } private fun tilbakekrevingForStatistikk(tilbakekreving: TilbakekrevingBehandling): StatistikkTilbakekrevingDto { val utlandstilknytningType = behandlingService.hentUtlandstilknytningForSak(tilbakekreving.sak.id)?.type diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingValidering.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingValidering.kt index c53723aef41..4c29d4814be 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingValidering.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/tilbakekreving/TilbakekrevingValidering.kt @@ -58,7 +58,8 @@ private fun TilbakekrevingVurdering.validerVilkaarsresultat(manglendeFelter: Mut listOf( TilbakekrevingVilkaar.OPPFYLT, TilbakekrevingVilkaar.DELVIS_OPPFYLT, - ) || beloepBehold?.behold == TilbakekrevingBeloepBeholdSvar.BELOEP_I_BEHOLD + ) || + beloepBehold?.behold == TilbakekrevingBeloepBeholdSvar.BELOEP_I_BEHOLD ) { if (reduseringAvKravet.isNullOrBlank()) manglendeFelter.add("Redusering av kravet") if (foreldet.isNullOrBlank()) manglendeFelter.add("Foreldet") @@ -143,8 +144,9 @@ class UgyldigeFelterForTilbakekrevingsvurdering( ), ) -class ManglerTilbakekrevingsvurdering : ForespoerselException( - status = 400, - code = "MANGLER_VURDERING", - detail = "Tilbakekrevingen mangler vurdering", -) +class ManglerTilbakekrevingsvurdering : + ForespoerselException( + status = 400, + code = "MANGLER_VURDERING", + detail = "Tilbakekrevingen mangler vurdering", + ) diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/tilgang/TilgangRoutes.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/tilgang/TilgangRoutes.kt index d87d734098b..c18e9f49efa 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/tilgang/TilgangRoutes.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/tilgang/TilgangRoutes.kt @@ -77,11 +77,10 @@ internal fun Route.tilgangRoutes(tilgangService: TilgangService) { fun harTilgangBrukertypeSjekk( brukerTokenInfo: BrukerTokenInfo, harTilgang: (saksbehandler: Saksbehandler) -> Boolean, -): Boolean { - return when (brukerTokenInfo) { +): Boolean = + when (brukerTokenInfo) { is Saksbehandler -> { harTilgang(brukerTokenInfo) } is Systembruker -> true } -} diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/vedtaksbehandling/VedtaksbehandlingDao.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/vedtaksbehandling/VedtaksbehandlingDao.kt index 6e8782bdc2a..c4eb648c26f 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/vedtaksbehandling/VedtaksbehandlingDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/vedtaksbehandling/VedtaksbehandlingDao.kt @@ -8,9 +8,11 @@ import no.nav.etterlatte.libs.database.single import java.sql.ResultSet import java.util.UUID -class VedtaksbehandlingDao(private val connectionAutoclosing: ConnectionAutoclosing) { - fun erBehandlingRedigerbar(behandlingId: UUID): Boolean { - return connectionAutoclosing.hentConnection { +class VedtaksbehandlingDao( + private val connectionAutoclosing: ConnectionAutoclosing, +) { + fun erBehandlingRedigerbar(behandlingId: UUID): Boolean = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -24,12 +26,12 @@ class VedtaksbehandlingDao(private val connectionAutoclosing: ConnectionAutoclos statement.setObject(2, behandlingId) statement.setObject(3, behandlingId) - statement.executeQuery() + statement + .executeQuery() .single { toVedtaksbehandling() } .erRedigerbar() } } - } private fun ResultSet.toVedtaksbehandling(): Vedtaksbehandling { val type = BehandlingType.valueOf(getString(1)) @@ -40,7 +42,11 @@ class VedtaksbehandlingDao(private val connectionAutoclosing: ConnectionAutoclos } } -private data class Vedtaksbehandling(val id: UUID, val type: BehandlingType, val status: String) { +private data class Vedtaksbehandling( + val id: UUID, + val type: BehandlingType, + val status: String, +) { fun erRedigerbar(): Boolean = when (type) { BehandlingType.BEHANDLING -> BehandlingStatus.valueOf(status).kanEndres() diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/vedtaksbehandling/VedtaksbehandlingService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/vedtaksbehandling/VedtaksbehandlingService.kt index 291267e94dd..47d8240c1f7 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/vedtaksbehandling/VedtaksbehandlingService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/vedtaksbehandling/VedtaksbehandlingService.kt @@ -2,8 +2,8 @@ package no.nav.etterlatte.behandling.vedtaksbehandling import java.util.UUID -class VedtaksbehandlingService(private val vedtaksbehandlingDao: VedtaksbehandlingDao) { - fun erBehandlingRedigerbar(behandlingId: UUID): Boolean { - return vedtaksbehandlingDao.erBehandlingRedigerbar(behandlingId) - } +class VedtaksbehandlingService( + private val vedtaksbehandlingDao: VedtaksbehandlingDao, +) { + fun erBehandlingRedigerbar(behandlingId: UUID): Boolean = vedtaksbehandlingDao.erBehandlingRedigerbar(behandlingId) } diff --git a/apps/etterlatte-behandling/src/main/kotlin/common/ConnectionAutoclosingImpl.kt b/apps/etterlatte-behandling/src/main/kotlin/common/ConnectionAutoclosingImpl.kt index c781ff247fb..2d00bf3fb91 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/common/ConnectionAutoclosingImpl.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/common/ConnectionAutoclosingImpl.kt @@ -17,14 +17,15 @@ abstract class ConnectionAutoclosing { } } -class ConnectionAutoclosingImpl(val dataSource: DataSource) : ConnectionAutoclosing() { - override fun hentConnection(block: (connection: Connection) -> T): T { - return if (manglerKontekst()) { +class ConnectionAutoclosingImpl( + val dataSource: DataSource, +) : ConnectionAutoclosing() { + override fun hentConnection(block: (connection: Connection) -> T): T = + if (manglerKontekst()) { dataSource.connection.use { block(it) } } else { block(databaseContext().activeTx()) } - } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/common/DatabaseContext.kt b/apps/etterlatte-behandling/src/main/kotlin/common/DatabaseContext.kt index fee1503a643..528d51fd48b 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/common/DatabaseContext.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/common/DatabaseContext.kt @@ -7,7 +7,9 @@ import java.sql.Connection import java.util.concurrent.atomic.AtomicBoolean import javax.sql.DataSource -class DatabaseContext(private val ds: DataSource) : DatabaseKontekst { +class DatabaseContext( + private val ds: DataSource, +) : DatabaseKontekst { companion object { val logger: Logger = LoggerFactory.getLogger(DatabaseContext::class.java) } @@ -16,9 +18,7 @@ class DatabaseContext(private val ds: DataSource) : DatabaseKontekst { private var transactionalConnection: Connection? = null - override fun harIntransaction(): Boolean { - return transaktionOpen.get() - } + override fun harIntransaction(): Boolean = transaktionOpen.get() override fun activeTx(): Connection = transactionalConnection ?: throw IllegalStateException( diff --git a/apps/etterlatte-behandling/src/main/kotlin/common/TidligsteIverksatteVirkningstidspunkt.kt b/apps/etterlatte-behandling/src/main/kotlin/common/TidligsteIverksatteVirkningstidspunkt.kt index 17f813a50b8..384aa9b52bd 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/common/TidligsteIverksatteVirkningstidspunkt.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/common/TidligsteIverksatteVirkningstidspunkt.kt @@ -5,6 +5,7 @@ import no.nav.etterlatte.libs.common.behandling.BehandlingStatus import no.nav.etterlatte.libs.common.behandling.Virkningstidspunkt fun List.tidligsteIverksatteVirkningstidspunkt(): Virkningstidspunkt? = - this.filter { it.status == BehandlingStatus.IVERKSATT } + this + .filter { it.status == BehandlingStatus.IVERKSATT } .mapNotNull { it.virkningstidspunkt } .minByOrNull { it.dato } diff --git a/apps/etterlatte-behandling/src/main/kotlin/common/klienter/PdlTjenesterKlient.kt b/apps/etterlatte-behandling/src/main/kotlin/common/klienter/PdlTjenesterKlient.kt index 0cff4d748bf..0cc593e4a97 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/common/klienter/PdlTjenesterKlient.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/common/klienter/PdlTjenesterKlient.kt @@ -54,7 +54,10 @@ interface PdlTjenesterKlient : Pingable { suspend fun hentAdressebeskyttelseForPerson(hentAdressebeskyttelseRequest: HentAdressebeskyttelseRequest): AdressebeskyttelseGradering } -class PdlTjenesterKlientImpl(config: Config, private val client: HttpClient) : PdlTjenesterKlient { +class PdlTjenesterKlientImpl( + config: Config, + private val client: HttpClient, +) : PdlTjenesterKlient { private val url = config.getString("pdltjenester.url") companion object { @@ -65,11 +68,12 @@ class PdlTjenesterKlientImpl(config: Config, private val client: HttpClient) : P hentAdressebeskyttelseRequest: HentAdressebeskyttelseRequest, ): AdressebeskyttelseGradering { logger.info("Henter person med ${hentAdressebeskyttelseRequest.ident.value.maskerFnr()} fra pdltjenester") - return client.post("$url/person/adressebeskyttelse") { - accept(ContentType.Application.Json) - contentType(ContentType.Application.Json) - setBody(hentAdressebeskyttelseRequest) - }.body() + return client + .post("$url/person/adressebeskyttelse") { + accept(ContentType.Application.Json) + contentType(ContentType.Application.Json) + setBody(hentAdressebeskyttelseRequest) + }.body() } override val serviceName: String @@ -79,14 +83,13 @@ class PdlTjenesterKlientImpl(config: Config, private val client: HttpClient) : P override val endpoint: String get() = this.url - override suspend fun ping(konsument: String?): PingResult { - return client.ping( + override suspend fun ping(konsument: String?): PingResult = + client.ping( pingUrl = url.plus("/health/isready"), logger = logger, serviceName = serviceName, beskrivelse = beskrivelse, ) - } override fun hentPdlModellFlereSaktyper( foedselsnummer: String, @@ -97,10 +100,11 @@ class PdlTjenesterKlientImpl(config: Config, private val client: HttpClient) : P val personRequest = HentPersonRequest(Folkeregisteridentifikator.of(foedselsnummer), rolle, saktyper) val response = runBlocking { - client.post("$url/person/v2") { - contentType(ContentType.Application.Json) - setBody(personRequest) - }.body() + client + .post("$url/person/v2") { + contentType(ContentType.Application.Json) + setBody(personRequest) + }.body() } return response } @@ -114,10 +118,11 @@ class PdlTjenesterKlientImpl(config: Config, private val client: HttpClient) : P val personRequest = HentPersonRequest(Folkeregisteridentifikator.of(foedselsnummer), rolle, listOf(saktype)) val response = runBlocking { - client.post("$url/person/v2") { - contentType(ContentType.Application.Json) - setBody(personRequest) - }.body() + client + .post("$url/person/v2") { + contentType(ContentType.Application.Json) + setBody(personRequest) + }.body() } return response } @@ -129,10 +134,11 @@ class PdlTjenesterKlientImpl(config: Config, private val client: HttpClient) : P val request = HentGeografiskTilknytningRequest(Folkeregisteridentifikator.of(foedselsnummer), saktype) val response = runBlocking { - client.post("$url/geografisktilknytning") { - contentType(ContentType.Application.Json) - setBody(request) - }.body() + client + .post("$url/geografisktilknytning") { + contentType(ContentType.Application.Json) + setBody(request) + }.body() } return response @@ -142,10 +148,11 @@ class PdlTjenesterKlientImpl(config: Config, private val client: HttpClient) : P val request = HentFolkeregisterIdenterForAktoerIdBolkRequest(aktoerIds) val response = runBlocking { - client.post("$url/folkeregisteridenter") { - contentType(ContentType.Application.Json) - setBody(request) - }.body>() + client + .post("$url/folkeregisteridenter") { + contentType(ContentType.Application.Json) + setBody(request) + }.body>() } return response } diff --git a/apps/etterlatte-behandling/src/main/kotlin/common/klienter/PesysKlient.kt b/apps/etterlatte-behandling/src/main/kotlin/common/klienter/PesysKlient.kt index 17f1e509070..01d45942af7 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/common/klienter/PesysKlient.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/common/klienter/PesysKlient.kt @@ -18,7 +18,10 @@ interface PesysKlient { suspend fun hentSaker(fnr: String): List } -class PesysKlientImpl(config: Config, pen: HttpClient) : PesysKlient { +class PesysKlientImpl( + config: Config, + pen: HttpClient, +) : PesysKlient { private val logger = LoggerFactory.getLogger(this::class.java) private val azureAdClient = AzureAdClient(config) private val downstreamResourceClient = DownstreamResourceClient(azureAdClient, pen) @@ -38,8 +41,7 @@ class PesysKlientImpl(config: Config, pen: HttpClient) : PesysKlient { additionalHeaders = mapOf("fnr" to fnr), ), brukerTokenInfo = Systembruker.doedshendelse, - ) - .mapBoth( + ).mapBoth( success = { resource -> objectMapper.readValue(resource.response.toString()) }, failure = { errorResponse -> throw errorResponse }, ) diff --git a/apps/etterlatte-behandling/src/main/kotlin/common/klienter/SkjermingKlient.kt b/apps/etterlatte-behandling/src/main/kotlin/common/klienter/SkjermingKlient.kt index c5245cd4a68..753df0fbf42 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/common/klienter/SkjermingKlient.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/common/klienter/SkjermingKlient.kt @@ -19,21 +19,22 @@ class SkjermingKlient( ) : Pingable { val logger = LoggerFactory.getLogger(this::class.java) - suspend fun personErSkjermet(fnr: String): Boolean { - return httpClient.post("$url/skjermet") { - accept(ContentType.Application.Json) - contentType(ContentType.Application.Json) - setBody(SkjermetDataRequestDTO(personident = fnr)) - }.body() - } + suspend fun personErSkjermet(fnr: String): Boolean = + httpClient + .post("$url/skjermet") { + accept(ContentType.Application.Json) + contentType(ContentType.Application.Json) + setBody(SkjermetDataRequestDTO(personident = fnr)) + }.body() override suspend fun ping(konsument: String?): PingResult { try { - httpClient.post("$url/skjermet") { - accept(ContentType.Application.Json) - contentType(ContentType.Application.Json) - setBody(SkjermetDataRequestDTO(personident = "dummy")) // Det er meningen å sende inn "dummy" - }.body() + httpClient + .post("$url/skjermet") { + accept(ContentType.Application.Json) + contentType(ContentType.Application.Json) + setBody(SkjermetDataRequestDTO(personident = "dummy")) // Det er meningen å sende inn "dummy" + }.body() } catch (e: Exception) { return PingResultDown(serviceName, endpoint = endpoint, errorMessage = e.message, description = beskrivelse) .also { diff --git a/apps/etterlatte-behandling/src/main/kotlin/egenansatt/EgenAnsattService.kt b/apps/etterlatte-behandling/src/main/kotlin/egenansatt/EgenAnsattService.kt index f664a080208..41f054a8c15 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/egenansatt/EgenAnsattService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/egenansatt/EgenAnsattService.kt @@ -40,11 +40,12 @@ class EgenAnsattService( if (skjermetHendelse.skjermet) { Enheter.EGNE_ANSATTE.enhetNr } else { - brukerService.finnEnhetForPersonOgTema( - skjermetHendelse.fnr, - it.sakType.tema, - it.sakType, - ).enhetNr + brukerService + .finnEnhetForPersonOgTema( + skjermetHendelse.fnr, + it.sakType.tema, + it.sakType, + ).enhetNr }, ) } diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagHelper.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagHelper.kt index 9e76fe49a97..65ac26089c5 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagHelper.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagHelper.kt @@ -10,7 +10,9 @@ import no.nav.etterlatte.libs.common.grunnlag.hentSivilstand import no.nav.etterlatte.libs.common.grunnlag.hentSoekerPdlV1 import no.nav.etterlatte.libs.common.grunnlag.hentUtland -class GrunnlagRolleException(override val message: String) : Exception(message) +class GrunnlagRolleException( + override val message: String, +) : Exception(message) fun Grunnlag.doedsdato( saksrolle: Saksrolle, @@ -70,8 +72,11 @@ fun Grunnlag.ansvarligeForeldre( } Saksrolle.SOESKEN -> { - hentSoesken().find { it.hentFoedselsnummer()?.verdi?.value == fnr } - ?.hentFamilierelasjon()?.verdi?.ansvarligeForeldre + hentSoesken() + .find { it.hentFoedselsnummer()?.verdi?.value == fnr } + ?.hentFamilierelasjon() + ?.verdi + ?.ansvarligeForeldre } else -> throw GrunnlagRolleException( "Proevde aa finne ansvarligeForeldre for $saksrolle, men det skal ikke kunne skje", diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagsendringsHendelseFilter.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagsendringsHendelseFilter.kt index 7518d21de15..ea64e449413 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagsendringsHendelseFilter.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagsendringsHendelseFilter.kt @@ -8,9 +8,14 @@ import no.nav.etterlatte.behandling.domain.GrunnlagsendringsType import no.nav.etterlatte.behandling.klienter.VedtakKlient import java.time.LocalDate -class KunSystembrukerException(msg: String) : Exception(msg) +class KunSystembrukerException( + msg: String, +) : Exception(msg) -class GrunnlagsendringsHendelseFilter(val vedtakKlient: VedtakKlient, val behandlingService: BehandlingService) { +class GrunnlagsendringsHendelseFilter( + val vedtakKlient: VedtakKlient, + val behandlingService: BehandlingService, +) { fun hendelseErRelevantForSak( sakId: Long, grunnlagendringType: GrunnlagsendringsType, diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagsendringshendelseDao.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagsendringshendelseDao.kt index cfd881235fd..11f8b454fe3 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagsendringshendelseDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagsendringshendelseDao.kt @@ -18,9 +18,11 @@ import no.nav.etterlatte.libs.database.toList import java.sql.ResultSet import java.util.UUID -class GrunnlagsendringshendelseDao(val connectionAutoclosing: ConnectionAutoclosing) { - fun opprettGrunnlagsendringshendelse(hendelse: Grunnlagsendringshendelse): Grunnlagsendringshendelse { - return connectionAutoclosing.hentConnection { +class GrunnlagsendringshendelseDao( + val connectionAutoclosing: ConnectionAutoclosing, +) { + fun opprettGrunnlagsendringshendelse(hendelse: Grunnlagsendringshendelse): Grunnlagsendringshendelse = + connectionAutoclosing.hentConnection { with(it) { val stmt = prepareStatement( @@ -46,10 +48,9 @@ class GrunnlagsendringshendelseDao(val connectionAutoclosing: ConnectionAutoclos ?: throw Exception("Kunne ikke hente nettopp lagret Grunnlagsendringshendelse med id: ${hendelse.id}") } } - } - fun hentGrunnlagsendringshendelse(id: UUID): Grunnlagsendringshendelse? { - return connectionAutoclosing.hentConnection { + fun hentGrunnlagsendringshendelse(id: UUID): Grunnlagsendringshendelse? = + connectionAutoclosing.hentConnection { with(it) { val stmt = prepareStatement( @@ -64,7 +65,6 @@ class GrunnlagsendringshendelseDao(val connectionAutoclosing: ConnectionAutoclos stmt.executeQuery().singleOrNull { asGrunnlagsendringshendelse() } } } - } fun oppdaterGrunnlagsendringStatusOgSamsvar( hendelseId: UUID, @@ -176,8 +176,8 @@ class GrunnlagsendringshendelseDao(val connectionAutoclosing: ConnectionAutoclos } } - fun hentAlleGrunnlagsendringshendelser(): List { - return connectionAutoclosing.hentConnection { + fun hentAlleGrunnlagsendringshendelser(): List = + connectionAutoclosing.hentConnection { with(it) { val stmt = prepareStatement( @@ -190,13 +190,12 @@ class GrunnlagsendringshendelseDao(val connectionAutoclosing: ConnectionAutoclos stmt.executeQuery().toList { asGrunnlagsendringshendelse() } } } - } fun hentGrunnlagsendringshendelserMedStatuserISak( sakId: Long, statuser: List, - ): List { - return connectionAutoclosing.hentConnection { + ): List = + connectionAutoclosing.hentConnection { with(it) { prepareStatement( """ @@ -214,14 +213,13 @@ class GrunnlagsendringshendelseDao(val connectionAutoclosing: ConnectionAutoclos } } } - } fun hentGrunnlagsendringshendelserMedStatuserISakAvType( sakId: Long, statuser: List, type: GrunnlagsendringsType, - ): List { - return connectionAutoclosing.hentConnection { + ): List = + connectionAutoclosing.hentConnection { with(it) { prepareStatement( """ @@ -241,7 +239,6 @@ class GrunnlagsendringshendelseDao(val connectionAutoclosing: ConnectionAutoclos } } } - } fun hentGrunnlagsendringshendelserSomErSjekketAvJobb(sakId: Long): List = hentGrunnlagsendringshendelserMedStatuserISak( @@ -249,8 +246,8 @@ class GrunnlagsendringshendelseDao(val connectionAutoclosing: ConnectionAutoclos listOf(GrunnlagsendringStatus.SJEKKET_AV_JOBB), ) - private fun ResultSet.asGrunnlagsendringshendelse(): Grunnlagsendringshendelse { - return Grunnlagsendringshendelse( + private fun ResultSet.asGrunnlagsendringshendelse(): Grunnlagsendringshendelse = + Grunnlagsendringshendelse( id = getObject("id") as UUID, sakId = getLong("sak_id"), type = GrunnlagsendringsType.valueOf(getString("type")), @@ -265,10 +262,9 @@ class GrunnlagsendringshendelseDao(val connectionAutoclosing: ConnectionAutoclos ), kommentar = getString("kommentar"), ) - } - fun hentGrunnlagsendringshendelseSomErTattMedIBehandling(behandlingId: UUID): List { - return connectionAutoclosing.hentConnection { + fun hentGrunnlagsendringshendelseSomErTattMedIBehandling(behandlingId: UUID): List = + connectionAutoclosing.hentConnection { with(it) { prepareStatement( """ @@ -277,13 +273,12 @@ class GrunnlagsendringshendelseDao(val connectionAutoclosing: ConnectionAutoclos FROM grunnlagsendringshendelse WHERE behandling_id = ? """.trimIndent(), - ) - .apply { - setObject(1, behandlingId) - }.executeQuery().toList { + ).apply { + setObject(1, behandlingId) + }.executeQuery() + .toList { asGrunnlagsendringshendelse() } } } - } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagsendringshendelseRoute.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagsendringshendelseRoute.kt index 4aa692618c6..31e9885f1c2 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagsendringshendelseRoute.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagsendringshendelseRoute.kt @@ -127,4 +127,6 @@ internal fun Route.grunnlagsendringshendelseRoute( } } -data class GrunnlagsendringsListe(val hendelser: List) +data class GrunnlagsendringsListe( + val hendelser: List, +) diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagsendringshendelseService.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagsendringshendelseService.kt index 48642eba144..4792b3d3c59 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagsendringshendelseService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/GrunnlagsendringshendelseService.kt @@ -40,8 +40,9 @@ import no.nav.etterlatte.sikkerLogg import org.slf4j.LoggerFactory import java.util.UUID -class KunneIkkeLukkeOppgaveForhendelse(message: String) : - UgyldigForespoerselException( +class KunneIkkeLukkeOppgaveForhendelse( + message: String, +) : UgyldigForespoerselException( code = "FEIL_MED_OPPGAVE_UNDER_LUKKING", detail = message, ) @@ -111,9 +112,10 @@ class GrunnlagsendringshendelseService( grunnlagsendringshendelseDao.oppdaterGrunnlagsendringHistorisk(behandlingId) } - private fun opprettBostedhendelse(bostedsadresse: Bostedsadresse): List { - return inTransaction { opprettHendelseAvTypeForPerson(bostedsadresse.fnr, GrunnlagsendringsType.BOSTED) } - } + private fun opprettBostedhendelse(bostedsadresse: Bostedsadresse): List = + inTransaction { + opprettHendelseAvTypeForPerson(bostedsadresse.fnr, GrunnlagsendringsType.BOSTED) + } fun opprettDoedshendelse(doedshendelse: DoedshendelsePdl): List { if (doedshendelseService.kanBrukeDeodshendelserJob()) { @@ -129,46 +131,42 @@ class GrunnlagsendringshendelseService( return emptyList() } - fun opprettUtflyttingshendelse(utflyttingsHendelse: UtflyttingsHendelse): List { - return inTransaction { + fun opprettUtflyttingshendelse(utflyttingsHendelse: UtflyttingsHendelse): List = + inTransaction { opprettHendelseAvTypeForPerson( utflyttingsHendelse.fnr, GrunnlagsendringsType.UTFLYTTING, ) } - } - fun opprettForelderBarnRelasjonHendelse(forelderBarnRelasjonHendelse: ForelderBarnRelasjonHendelse): List { - return inTransaction { + fun opprettForelderBarnRelasjonHendelse(forelderBarnRelasjonHendelse: ForelderBarnRelasjonHendelse): List = + inTransaction { opprettHendelseAvTypeForPerson( forelderBarnRelasjonHendelse.fnr, GrunnlagsendringsType.FORELDER_BARN_RELASJON, ) } - } fun opprettVergemaalEllerFremtidsfullmakt( vergeMaalEllerFremtidsfullmakt: VergeMaalEllerFremtidsfullmakt, - ): List { - return inTransaction { + ): List = + inTransaction { opprettHendelseAvTypeForPerson( vergeMaalEllerFremtidsfullmakt.fnr, GrunnlagsendringsType.VERGEMAAL_ELLER_FREMTIDSFULLMAKT, ) } - } - fun opprettSivilstandHendelse(sivilstandHendelse: SivilstandHendelse): List { - return inTransaction { + fun opprettSivilstandHendelse(sivilstandHendelse: SivilstandHendelse): List = + inTransaction { opprettHendelseAvTypeForPerson( sivilstandHendelse.fnr, GrunnlagsendringsType.SIVILSTAND, ) } - } - fun opprettInstitusjonsOppholdhendelse(oppholdsHendelse: InstitusjonsoppholdHendelseBeriket): List { - return opprettHendelseInstitusjonsoppholdForPerson( + fun opprettInstitusjonsOppholdhendelse(oppholdsHendelse: InstitusjonsoppholdHendelseBeriket): List = + opprettHendelseInstitusjonsoppholdForPerson( fnr = oppholdsHendelse.norskident, samsvar = SamsvarMellomKildeOgGrunnlag.INSTITUSJONSOPPHOLD( @@ -177,16 +175,14 @@ class GrunnlagsendringshendelseService( oppholdBeriket = oppholdsHendelse, ), ) - } - fun opprettEndretGrunnbeloepHendelse(sakId: Long): List { - return inTransaction { + fun opprettEndretGrunnbeloepHendelse(sakId: Long): List = + inTransaction { opprettHendelseAvTypeForSak( sakId, GrunnlagsendringsType.GRUNNBELOEP, ) } - } suspend fun oppdaterAdressebeskyttelseHendelse(adressebeskyttelse: Adressebeskyttelse) { val gradering = adressebeskyttelse.adressebeskyttelseGradering @@ -241,8 +237,8 @@ class GrunnlagsendringshendelseService( fnr: String, gradering: AdressebeskyttelseGradering, sakType: SakType, - ): String { - return when (gradering) { + ): String = + when (gradering) { AdressebeskyttelseGradering.STRENGT_FORTROLIG_UTLAND -> Enheter.STRENGT_FORTROLIG.enhetNr AdressebeskyttelseGradering.STRENGT_FORTROLIG -> Enheter.STRENGT_FORTROLIG_UTLAND.enhetNr AdressebeskyttelseGradering.FORTROLIG -> { @@ -253,7 +249,6 @@ class GrunnlagsendringshendelseService( brukerService.finnEnhetForPersonOgTema(fnr, sakType.tema, sakType).enhetNr } } - } fun opprettDoedshendelseForPerson(grunnlagsendringshendelse: Grunnlagsendringshendelse): OppgaveIntern { grunnlagsendringshendelseDao.opprettGrunnlagsendringshendelse(grunnlagsendringshendelse) @@ -329,8 +324,7 @@ class GrunnlagsendringshendelseService( } else { true } - } - .filter { grunnlagsendringsHendelseFilter.hendelseErRelevantForSak(it.sak.id, grunnlagendringType) } + }.filter { grunnlagsendringsHendelseFilter.hendelseErRelevantForSak(it.sak.id, grunnlagendringType) } .map { rolleOgSak -> val hendelse = Grunnlagsendringshendelse( @@ -437,17 +431,17 @@ class GrunnlagsendringshendelseService( } } - private fun opprettOppgave(hendelse: Grunnlagsendringshendelse): OppgaveIntern { - return oppgaveService.opprettNyOppgaveMedSakOgReferanse( - referanse = hendelse.id.toString(), - sakId = hendelse.sakId, - oppgaveKilde = OppgaveKilde.HENDELSE, - oppgaveType = OppgaveType.VURDER_KONSEKVENS, - merknad = hendelse.beskrivelse(), - ).also { - logger.info("Oppgave for hendelsen med id=${hendelse.id} er opprettet med id=${it.id}") - } - } + private fun opprettOppgave(hendelse: Grunnlagsendringshendelse): OppgaveIntern = + oppgaveService + .opprettNyOppgaveMedSakOgReferanse( + referanse = hendelse.id.toString(), + sakId = hendelse.sakId, + oppgaveKilde = OppgaveKilde.HENDELSE, + oppgaveType = OppgaveType.VURDER_KONSEKVENS, + merknad = hendelse.beskrivelse(), + ).also { + logger.info("Oppgave for hendelsen med id=${hendelse.id} er opprettet med id=${it.id}") + } internal fun forkastHendelse( hendelse: Grunnlagsendringshendelse, @@ -471,12 +465,13 @@ class GrunnlagsendringshendelseService( samsvarMellomKildeOgGrunnlag: SamsvarMellomKildeOgGrunnlag, ): Boolean { val relevanteHendelser = - grunnlagsendringshendelseDao.hentGrunnlagsendringshendelserMedStatuserISak( - sakId, - listOf(GrunnlagsendringStatus.SJEKKET_AV_JOBB), - ).filter { - it.gjelderPerson == grunnlagsendringshendelse.gjelderPerson && it.type == grunnlagsendringshendelse.type - } + grunnlagsendringshendelseDao + .hentGrunnlagsendringshendelserMedStatuserISak( + sakId, + listOf(GrunnlagsendringStatus.SJEKKET_AV_JOBB), + ).filter { + it.gjelderPerson == grunnlagsendringshendelse.gjelderPerson && it.type == grunnlagsendringshendelse.type + } logger.info( "Hendelser på samme sakid $sakId antall ${relevanteHendelser.size} " + "fnr: ${grunnlagsendringshendelse.gjelderPerson.maskerFnr()} grlid: ${grunnlagsendringshendelse.id}", diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/SakMedEnhet.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/SakMedEnhet.kt index a30c072e5ad..9ad4522a710 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/SakMedEnhet.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/SakMedEnhet.kt @@ -1,3 +1,6 @@ package no.nav.etterlatte.grunnlagsendring -data class SakMedEnhet(val id: Long, val enhet: String) +data class SakMedEnhet( + val id: Long, + val enhet: String, +) diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseDao.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseDao.kt index 0955b96635f..a6c4dee810b 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseDao.kt @@ -14,7 +14,9 @@ import no.nav.etterlatte.libs.database.toList import no.nav.helse.rapids_rivers.toUUID import java.sql.ResultSet -class DoedshendelseDao(private val connectionAutoclosing: ConnectionAutoclosing) { +class DoedshendelseDao( + private val connectionAutoclosing: ConnectionAutoclosing, +) { fun oppdaterBrevDistribuertDoedshendelse(doedshendelseBrevDistribuert: DoedshendelseBrevDistribuert) { connectionAutoclosing.hentConnection { with(it) { @@ -79,8 +81,8 @@ class DoedshendelseDao(private val connectionAutoclosing: ConnectionAutoclosing) } } - fun hentDoedshendelserMedStatus(status: List): List { - return connectionAutoclosing.hentConnection { + fun hentDoedshendelserMedStatus(status: List): List = + connectionAutoclosing.hentConnection { with(it) { prepareStatement( """ @@ -90,13 +92,13 @@ class DoedshendelseDao(private val connectionAutoclosing: ConnectionAutoclosing) """.trimIndent(), ).apply { setArray(1, createArrayOf("text", status.toTypedArray())) - }.executeQuery().toList { asDoedshendelse() } + }.executeQuery() + .toList { asDoedshendelse() } } } - } - fun hentDoedshendelserMedStatusFerdigOgUtFallBrevBp(): List { - return connectionAutoclosing.hentConnection { + fun hentDoedshendelserMedStatusFerdigOgUtFallBrevBp(): List = + connectionAutoclosing.hentConnection { with(it) { prepareStatement( """ @@ -119,13 +121,13 @@ class DoedshendelseDao(private val connectionAutoclosing: ConnectionAutoclosing) ).toTypedArray(), ), ) - }.executeQuery().toList { asDoedshendelseReminder() } + }.executeQuery() + .toList { asDoedshendelseReminder() } } } - } - fun hentDoedshendelserForPerson(avdoedFnr: String): List { - return connectionAutoclosing.hentConnection { + fun hentDoedshendelserForPerson(avdoedFnr: String): List = + connectionAutoclosing.hentConnection { with(it) { prepareStatement( """ @@ -135,10 +137,10 @@ class DoedshendelseDao(private val connectionAutoclosing: ConnectionAutoclosing) """.trimIndent(), ).apply { setString(1, avdoedFnr) - }.executeQuery().toList { asDoedshendelse() } + }.executeQuery() + .toList { asDoedshendelse() } } } - } } private fun ResultSet.asDoedshendelseReminder(): DoedshendelseReminder = diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseInternal.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseInternal.kt index 14ba7db52cb..c154dcc55d4 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseInternal.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseInternal.kt @@ -45,21 +45,20 @@ data class DoedshendelseInternal internal constructor( fun tilOppdatert( avdoedDoedsdato: LocalDate, endringstype: Endringstype, - ): DoedshendelseInternal { - return copy( + ): DoedshendelseInternal = + copy( avdoedDoedsdato = avdoedDoedsdato, status = Status.OPPDATERT, endret = endret, endringstype = endringstype, ) - } fun tilAvbrutt( sakId: Long? = null, oppgaveId: UUID? = null, kontrollpunkter: List, - ): DoedshendelseInternal { - return copy( + ): DoedshendelseInternal = + copy( sakId = sakId, oppgaveId = oppgaveId, kontrollpunkter = kontrollpunkter, @@ -67,17 +66,15 @@ data class DoedshendelseInternal internal constructor( utfall = Utfall.AVBRUTT, endret = Tidspunkt.now(), ) - } - fun tilAnnulert(): DoedshendelseInternal { - return copy( + fun tilAnnulert(): DoedshendelseInternal = + copy( status = Status.FERDIG, utfall = Utfall.AVBRUTT, endret = Tidspunkt.now(), endringstype = Endringstype.ANNULLERT, kontrollpunkter = listOf(DoedshendelseKontrollpunkt.DoedshendelseErAnnullert), ) - } fun tilBehandlet( utfall: Utfall, @@ -85,8 +82,8 @@ data class DoedshendelseInternal internal constructor( kontrollpunkter: List, oppgaveId: UUID? = null, brevId: Long? = null, - ): DoedshendelseInternal { - return copy( + ): DoedshendelseInternal = + copy( status = Status.FERDIG, utfall = utfall, sakId = sakId, @@ -95,7 +92,6 @@ data class DoedshendelseInternal internal constructor( brevId = brevId, endret = Tidspunkt.now(), ) - } fun sakTypeForEpsEllerBarn(): SakType = when (relasjon) { diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseJobService.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseJobService.kt index 7f2b36ae024..ca1a0542ae3 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseJobService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseJobService.kt @@ -184,7 +184,8 @@ class DoedshendelseJobService( krrKlient.hentDigitalKontaktinformasjon(doedshendelse.avdoedFnr) } - return kontaktInfo?.spraak + return kontaktInfo + ?.spraak ?.toLowerCasePreservingASCIIRules() ?.let { when (it) { @@ -196,15 +197,17 @@ class DoedshendelseJobService( } ?: Spraak.NB } - private fun hentAnnenForelder(doedshendelse: DoedshendelseInternal): String? { - return pdlTjenesterKlient.hentPdlModellFlereSaktyper( - foedselsnummer = doedshendelse.beroertFnr, - rolle = PersonRolle.BARN, - saktype = SakType.BARNEPENSJON, - ).familieRelasjon?.verdi?.foreldre + private fun hentAnnenForelder(doedshendelse: DoedshendelseInternal): String? = + pdlTjenesterKlient + .hentPdlModellFlereSaktyper( + foedselsnummer = doedshendelse.beroertFnr, + rolle = PersonRolle.BARN, + saktype = SakType.BARNEPENSJON, + ).familieRelasjon + ?.verdi + ?.foreldre ?.map { it.value } ?.firstOrNull { it != doedshendelse.avdoedFnr } - } private fun sendBrevHvisKravOppfylles( doedshendelse: DoedshendelseInternal, @@ -309,9 +312,10 @@ class DoedshendelseJobService( val idag = LocalDateTime.now() val avdoedHendelser = hendelser.filter { it.relasjon == Relasjon.AVDOED } - return hendelser.filter { - Duration.between(it.endret, idag.toTidspunkt()).toDays() >= dagerGamleHendelserSomSkalKjoeres - }.distinctBy { it.avdoedFnr } + avdoedHendelser.also { logger.info("Antall gyldige dødsmeldinger ${it.size}") } + return hendelser + .filter { + Duration.between(it.endret, idag.toTidspunkt()).toDays() >= dagerGamleHendelserSomSkalKjoeres + }.distinctBy { it.avdoedFnr } + avdoedHendelser.also { logger.info("Antall gyldige dødsmeldinger ${it.size}") } } private fun hentAlleNyeDoedsmeldinger() = doedshendelseDao.hentDoedshendelserMedStatus(listOf(Status.NY, Status.OPPDATERT)) diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseService.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseService.kt index de883eeb436..7eb2d37cd7d 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseService.kt @@ -20,7 +20,9 @@ import java.time.temporal.ChronoUnit import kotlin.math.absoluteValue import no.nav.etterlatte.libs.common.pdlhendelse.DoedshendelsePdl as PdlDoedshendelse -enum class DoedshendelseFeatureToggle(private val key: String) : FeatureToggle { +enum class DoedshendelseFeatureToggle( + private val key: String, +) : FeatureToggle { KanLagreDoedshendelse("pensjon-etterlatte.kan-lage-doedhendelse"), KanLagreDoedshendelseForEPS("pensjon-etterlatte.kan-lage-doedhendelse-for-eps"), KanSendeBrevOgOppretteOppgave("pensjon-etterlatte.kan-sende-brev-og-opprette-oppgave"), @@ -123,7 +125,8 @@ class DoedshendelseService( ) { val eksisterendeBeroerte = doedshendelserForAvdoed.map { it.beroertFnr } val nyeBeroerte = - beroerte.map { PersonFnrMedRelasjon(it.fnr, it.relasjon) } + beroerte + .map { PersonFnrMedRelasjon(it.fnr, it.relasjon) } .filter { !eksisterendeBeroerte.contains(it.fnr) } nyeBeroerte.forEach { person -> doedshendelseDao.opprettDoedshendelse( @@ -167,10 +170,15 @@ class DoedshendelseService( } private fun finnBeroerteBarn(avdoed: PersonDTO): List { - val maanedenEtterDoedsfall = avdoed.doedsdato!!.verdi.plusMonths(1).withDayOfMonth(1) + val maanedenEtterDoedsfall = + avdoed.doedsdato!! + .verdi + .plusMonths(1) + .withDayOfMonth(1) return with(avdoed.avdoedesBarn ?: emptyList()) { - this.filter { barn -> barn.doedsdato == null } + this + .filter { barn -> barn.doedsdato == null } .filter { barn -> barn.under20PaaDato(maanedenEtterDoedsfall) } .map { PersonFnrMedRelasjon(it.foedselsnummer.value, Relasjon.BARN) } } @@ -182,12 +190,13 @@ class DoedshendelseService( avdoedesBarn ?.mapNotNull { barn -> val annenForelder = - barn.familieRelasjon?.foreldre?.filter { it.value != avdoed.foedselsnummer.verdi.value } + barn.familieRelasjon + ?.foreldre + ?.filter { it.value != avdoed.foedselsnummer.verdi.value } ?.map { it.value } logger.info("Fant annen forelder til barn ${barn.foedselsnummer.value}: $annenForelder") annenForelder - } - ?.flatten() + }?.flatten() ?.distinct() ?.filterNot { varEktefelleVedDoedsfall(avdoed, it).also { varEktefelle -> @@ -203,26 +212,30 @@ class DoedshendelseService( private fun harSammeAdresseSomAvdoed( avdoed: PersonDTO, andreForeldreForAvdoedesBarn: List?, - ): List { - return andreForeldreForAvdoedesBarn?.map { - val annenForelder = - runBlocking { - pdlTjenesterKlient.hentPdlModellFlereSaktyper(it, PersonRolle.TILKNYTTET_BARN, SakType.OMSTILLINGSSTOENAD) - } - AvdoedOgAnnenForelderMedFellesbarn(avdoed, annenForelder) - } - ?.filter { erSamboere(it) } + ): List = + andreForeldreForAvdoedesBarn + ?.map { + val annenForelder = + runBlocking { + pdlTjenesterKlient.hentPdlModellFlereSaktyper(it, PersonRolle.TILKNYTTET_BARN, SakType.OMSTILLINGSSTOENAD) + } + AvdoedOgAnnenForelderMedFellesbarn(avdoed, annenForelder) + }?.filter { erSamboere(it) } ?.map { PersonFnrMedRelasjon(it.gjenlevendeForelder.foedselsnummer.verdi.value, Relasjon.SAMBOER) } ?: emptyList() - } private fun erSamboere(avdoedOgAnnenForelderMedFellesbarn: AvdoedOgAnnenForelderMedFellesbarn): Boolean { val gjenlevendeBosted = avdoedOgAnnenForelderMedFellesbarn - .gjenlevendeForelder.bostedsadresse?.map { it.verdi }?.firstOrNull { it.aktiv } + .gjenlevendeForelder.bostedsadresse + ?.map { it.verdi } + ?.firstOrNull { it.aktiv } val avdoedBosted = avdoedOgAnnenForelderMedFellesbarn - .avdoedPerson.bostedsadresse?.map { it.verdi }?.sortedByDescending { it.gyldigFraOgMed }?.firstOrNull() + .avdoedPerson.bostedsadresse + ?.map { it.verdi } + ?.sortedByDescending { it.gyldigFraOgMed } + ?.firstOrNull() val adresserLike = gjenlevendeBosted != null && avdoedBosted != null && isAdresserLike(gjenlevendeBosted, avdoedBosted) logger.info( @@ -246,7 +259,8 @@ class DoedshendelseService( ): List { val avdoedesSivilstander = avdoed.sivilstand ?: emptyList() - return avdoedesSivilstander.asSequence() + return avdoedesSivilstander + .asSequence() .filter { it.verdi.relatertVedSiviltilstand?.value != null } .filter { it.verdi.sivilstatus in @@ -258,8 +272,7 @@ class DoedshendelseService( Sivilstatus.SEPARERT_PARTNER, Sivilstatus.SKILT_PARTNER, ) - } - .map { PersonFnrMedRelasjon(it.verdi.relatertVedSiviltilstand!!.value, Relasjon.EKTEFELLE) } + }.map { PersonFnrMedRelasjon(it.verdi.relatertVedSiviltilstand!!.value, Relasjon.EKTEFELLE) } .filter { ektefelle -> samboere.none { samboer -> samboer.fnr == ektefelle.fnr } } .distinct() .toList() diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseUtil.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseUtil.kt index e773855b8d4..635be16fa0d 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseUtil.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelseUtil.kt @@ -40,9 +40,7 @@ private fun PersonDTO.alleAdresser(): List = kontaktadresse + bostedsadresse + oppholdsadresse } -private fun borIUtlandet(adresse: Adresse): Boolean { - return adresse.land == null || adresse.land?.uppercase() != "NOR" -} +private fun borIUtlandet(adresse: Adresse): Boolean = adresse.land == null || adresse.land?.uppercase() != "NOR" fun harFellesBarn( avdoed: PersonDTO, @@ -105,7 +103,8 @@ fun finnEktefelleSafe(person: PersonDTO): String? = Sivilstatus.SEPARERT, Sivilstatus.REGISTRERT_PARTNER, Sivilstatus.SEPARERT_PARTNER, - ) && !harSkiltSivilstandUtenGyldigFomDato(person) + ) && + !harSkiltSivilstandUtenGyldigFomDato(person) ) { return it.relatertVedSiviltilstand?.value } @@ -128,8 +127,7 @@ fun finnAntallAarGiftVedDoedsfall( Sivilstatus.REGISTRERT_PARTNER, Sivilstatus.SEPARERT_PARTNER, ) - } - ?.sortedBy { it.gyldigFraOgMed } + }?.sortedBy { it.gyldigFraOgMed } ?.firstOrNull() ?.let { if (it.gyldigFraOgMed != null) { diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelserKafkaService.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelserKafkaService.kt index c3ba4d6b716..22617b4db06 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelserKafkaService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/DoedshendelserKafkaService.kt @@ -74,17 +74,19 @@ class DoedshendelserKafkaServiceImpl( CORRELATION_ID_KEY to correlationId, ) val altInnhold = defaultInnhold + innhold - rapid.publiser( - brevmal, - JsonMessage.newMessage( - BrevRequestHendelseType.OPPRETT_JOURNALFOER_OG_DISTRIBUER.lagEventnameForType(), - altInnhold, - ).toJson(), - ).also { (partition, offset) -> - logger.info( - "Posted event ${BrevRequestHendelseType.OPPRETT_JOURNALFOER_OG_DISTRIBUER.lagEventnameForType()} for sak ${sak.id}" + - " to partiton $partition, offset $offset correlationid: $correlationId", - ) - } + rapid + .publiser( + brevmal, + JsonMessage + .newMessage( + BrevRequestHendelseType.OPPRETT_JOURNALFOER_OG_DISTRIBUER.lagEventnameForType(), + altInnhold, + ).toJson(), + ).also { (partition, offset) -> + logger.info( + "Posted event ${BrevRequestHendelseType.OPPRETT_JOURNALFOER_OG_DISTRIBUER.lagEventnameForType()} for sak ${sak.id}" + + " to partiton $partition, offset $offset correlationid: $correlationId", + ) + } } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunkt.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunkt.kt index 22b81735a1a..7ef19dc1782 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunkt.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunkt.kt @@ -23,7 +23,10 @@ sealed class DoedshendelseKontrollpunkt { abstract val oppgaveTekst: String? @JsonTypeName("AVDOED_HAR_YTELSE_I_GJENNY") - data class AvdoedHarYtelse(override val sak: Sak) : DoedshendelseKontrollpunkt(), KontrollpunktMedSak { + data class AvdoedHarYtelse( + override val sak: Sak, + ) : DoedshendelseKontrollpunkt(), + KontrollpunktMedSak { override val kode = "AVDOED_HAR_YTELSE_I_GJENNY" override val beskrivelse: String = "Avdød har ytelse i gjenny" override val sendBrev: Boolean = false @@ -56,7 +59,10 @@ sealed class DoedshendelseKontrollpunkt { } @JsonTypeName("BARN_HAR_BP") - data class BarnHarBarnepensjon(override val sak: Sak) : DoedshendelseKontrollpunkt(), KontrollpunktMedSak { + data class BarnHarBarnepensjon( + override val sak: Sak, + ) : DoedshendelseKontrollpunkt(), + KontrollpunktMedSak { override val kode = "BARN_HAR_BP" override val beskrivelse: String = "Barn har barnepensjon" override val sendBrev: Boolean = false @@ -128,7 +134,10 @@ sealed class DoedshendelseKontrollpunkt { } @JsonTypeName("TIDLIGERE_EPS_GIFT_MER_ENN_25_AAR") - data class TidligereEpsGiftMerEnn25Aar(val doedsdato: LocalDate, val fnr: String) : DoedshendelseKontrollpunkt() { + data class TidligereEpsGiftMerEnn25Aar( + val doedsdato: LocalDate, + val fnr: String, + ) : DoedshendelseKontrollpunkt() { override val kode = "TIDLIGERE_EPS_GIFT_MER_ENN_25_AAR" override val beskrivelse: String = "Eps er skilt fra avdød, men har vært gift mer enn 25 år tidligere" override val sendBrev: Boolean = false @@ -151,7 +160,10 @@ sealed class DoedshendelseKontrollpunkt { } @JsonTypeName("TIDLIGERE_EPS_GIFT_MER_ENN_15_AAR_FELLES_BARN") - data class TidligereEpsGiftMerEnn15AarFellesBarn(val doedsdato: LocalDate, val fnr: String) : DoedshendelseKontrollpunkt() { + data class TidligereEpsGiftMerEnn15AarFellesBarn( + val doedsdato: LocalDate, + val fnr: String, + ) : DoedshendelseKontrollpunkt() { override val kode = "TIDLIGERE_EPS_GIFT_MER_ENN_15_AAR_FELLES_BARN" override val beskrivelse: String = "Eps er skilt fra avdød, men har vært gift mer enn 15 år tidligere og har felles barn" override val sendBrev: Boolean = false @@ -174,7 +186,10 @@ sealed class DoedshendelseKontrollpunkt { } @JsonTypeName("EPS_GIFT_UKJENT_GIFTEMAAL_VARIGHET") - data class EktefelleMedUkjentGiftemaalLengde(val doedsdato: LocalDate, val fnr: String) : DoedshendelseKontrollpunkt() { + data class EktefelleMedUkjentGiftemaalLengde( + val doedsdato: LocalDate, + val fnr: String, + ) : DoedshendelseKontrollpunkt() { override val kode = "EPS_GIFT_UKJENT_GIFTEMAAL_VARIGHET" override val beskrivelse: String = "Eps har ukjent lengde på giftermål" override val sendBrev: Boolean = false @@ -187,7 +202,11 @@ sealed class DoedshendelseKontrollpunkt { } @JsonTypeName("EPS_ER_GIFT_PAA_NYTT") - data class EpsErGiftPaaNytt(val doedsdato: LocalDate, val fnr: String, val nyEktefelleFnr: String) : DoedshendelseKontrollpunkt() { + data class EpsErGiftPaaNytt( + val doedsdato: LocalDate, + val fnr: String, + val nyEktefelleFnr: String, + ) : DoedshendelseKontrollpunkt() { override val kode = "EPS_GIFT_UKJENT_GIFTEMAAL_VARIGHET" override val beskrivelse: String = "Tidligere ektefelle har giftet seg på nytt med en annen person" override val sendBrev: Boolean = false @@ -231,7 +250,10 @@ sealed class DoedshendelseKontrollpunkt { } @JsonTypeName("EPS_HAR_SAK_I_GJENNY") - data class EpsHarSakMedIverksattBehandlingIGjenny(override val sak: Sak) : DoedshendelseKontrollpunkt(), KontrollpunktMedSak { + data class EpsHarSakMedIverksattBehandlingIGjenny( + override val sak: Sak, + ) : DoedshendelseKontrollpunkt(), + KontrollpunktMedSak { override val kode = "EPS_HAR_SAK_I_GJENNY" override val beskrivelse: String = "Det eksisterer allerede en aktiv sak på EPS i Gjenny med iverksatt behandling" override val sendBrev: Boolean = false @@ -244,8 +266,7 @@ sealed class DoedshendelseKontrollpunkt { data class DuplikatGrunnlagsendringsHendelse( val grunnlagsendringshendelseId: UUID, val oppgaveId: UUID?, - ) : - DoedshendelseKontrollpunkt() { + ) : DoedshendelseKontrollpunkt() { override val kode = "DUPLIKAT_GRUNNLAGSENDRINGSHENDELSE" override val beskrivelse: String = "Det finnes en duplikat grunnlagsendringshendelse" override val sendBrev: Boolean = false @@ -278,10 +299,7 @@ sealed class DoedshendelseKontrollpunkt { } } -fun List.finnSak(): Sak? { - return this.filterIsInstance().firstOrNull()?.sak -} +fun List.finnSak(): Sak? = this.filterIsInstance().firstOrNull()?.sak -fun List.finnOppgaveId(): UUID? { - return this.filterIsInstance().firstOrNull()?.oppgaveId -} +fun List.finnOppgaveId(): UUID? = + this.filterIsInstance().firstOrNull()?.oppgaveId diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktAvdoedService.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktAvdoedService.kt index d7ebaa06f43..511854bf861 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktAvdoedService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktAvdoedService.kt @@ -3,13 +3,12 @@ package no.nav.etterlatte.grunnlagsendring.doedshendelse.kontrollpunkt import no.nav.etterlatte.libs.common.pdl.PersonDTO internal class DoedshendelseKontrollpunktAvdoedService { - fun identifiser(avdoed: PersonDTO): List { - return listOfNotNull( + fun identifiser(avdoed: PersonDTO): List = + listOfNotNull( kontrollerDoedsdato(avdoed), kontrollerDNummer(avdoed), kontrollerUtvandring(avdoed), ) - } private fun kontrollerDoedsdato(avdoed: PersonDTO): DoedshendelseKontrollpunkt? = when (avdoed.doedsdato) { diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktBarnService.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktBarnService.kt index 36f66cdbaae..c62c51123bf 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktBarnService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktBarnService.kt @@ -17,12 +17,11 @@ internal class DoedshendelseKontrollpunktBarnService( avdoed: PersonDTO, sak: Sak?, barn: PersonDTO, - ): List { - return listOfNotNull( + ): List = + listOfNotNull( kontrollerBarnOgHarBP(sak), kontrollerSamtidigDoedsfall(avdoed, hendelse, barn), ) - } private fun kontrollerBarnOgHarBP(sak: Sak?): DoedshendelseKontrollpunkt.BarnHarBarnepensjon? { if (sak == null) { @@ -46,19 +45,23 @@ internal class DoedshendelseKontrollpunktBarnService( ): DoedshendelseKontrollpunkt? = avdoed.doedsdato?.verdi?.let { avdoedDoedsdato -> val annenForelderFnr = - barn.familieRelasjon?.verdi?.foreldre + barn.familieRelasjon + ?.verdi + ?.foreldre ?.map { it.value } ?.firstOrNull { it != hendelse.avdoedFnr } if (annenForelderFnr == null) { DoedshendelseKontrollpunkt.AnnenForelderIkkeFunnet } else { - pdlTjenesterKlient.hentPdlModellFlereSaktyper( - foedselsnummer = annenForelderFnr, - rolle = PersonRolle.GJENLEVENDE, - saktype = SakType.BARNEPENSJON, - ) - .doedsdato?.verdi?.let { annenForelderDoedsdato -> + pdlTjenesterKlient + .hentPdlModellFlereSaktyper( + foedselsnummer = annenForelderFnr, + rolle = PersonRolle.GJENLEVENDE, + saktype = SakType.BARNEPENSJON, + ).doedsdato + ?.verdi + ?.let { annenForelderDoedsdato -> if (annenForelderDoedsdato == avdoedDoedsdato) { DoedshendelseKontrollpunkt.SamtidigDoedsfall } else { diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktEktefelleService.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktEktefelleService.kt index bbcfe8baf46..28232b4f079 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktEktefelleService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktEktefelleService.kt @@ -27,8 +27,8 @@ internal class DoedshendelseKontrollpunktEktefelleService { private fun kontrollerEpsVarighet( avdoed: PersonDTO, eps: PersonDTO, - ): List { - return if (varEktefelleVedDoedsfall(avdoed, eps.foedselsnummer.verdi.value)) { + ): List = + if (varEktefelleVedDoedsfall(avdoed, eps.foedselsnummer.verdi.value)) { when (val antallAarGiftVedDoedsfall = finnAntallAarGiftVedDoedsfall(avdoed, eps)) { null -> listOf( @@ -42,7 +42,6 @@ internal class DoedshendelseKontrollpunktEktefelleService { } else { listOf(kontrollerTidligereEktefelle(avdoed, eps)) } - } private fun kontrollerEktefelle( antallAarGift: Long, @@ -85,7 +84,8 @@ internal class DoedshendelseKontrollpunktEktefelleService { sivilstanderMedEps .filter { it.sivilstatus in listOf(GIFT, SEPARERT, REGISTRERT_PARTNER, SEPARERT_PARTNER) } .sortedBy { it.gyldigFraOgMed } - .firstOrNull()?.gyldigFraOgMed + .firstOrNull() + ?.gyldigFraOgMed ?: return DoedshendelseKontrollpunkt.EktefelleMedUkjentGiftemaalLengde( doedsdato = avdoed.doedsdato!!.verdi, fnr = avdoed.foedselsnummer.verdi.value, @@ -96,7 +96,8 @@ internal class DoedshendelseKontrollpunktEktefelleService { .filter { it.sivilstatus in listOf(SKILT, SKILT_PARTNER) } .filterNot { it.gyldigFraOgMed != null && it.gyldigFraOgMed!! < gift } .sortedByDescending { it.gyldigFraOgMed } - .firstOrNull()?.gyldigFraOgMed + .firstOrNull() + ?.gyldigFraOgMed ?: return DoedshendelseKontrollpunkt.EktefelleMedUkjentGiftemaalLengde( doedsdato = avdoed.doedsdato!!.verdi, fnr = avdoed.foedselsnummer.verdi.value, diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktOMSService.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktOMSService.kt index 14d42675c8d..ba4db3e2058 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktOMSService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktOMSService.kt @@ -36,11 +36,11 @@ internal class DoedshendelseKontrollpunktOMSService( } return runBlocking { val kryssendeYtelser = - pesysKlient.hentSaker(hendelse.beroertFnr) + pesysKlient + .hentSaker(hendelse.beroertFnr) .filter { it.sakStatus in listOf(TIL_BEHANDLING, LOPENDE) - } - .filter { it.sakType in listOf(SakSammendragResponse.UFORE_SAKTYPE, SakSammendragResponse.ALDER_SAKTYPE) } + }.filter { it.sakType in listOf(SakSammendragResponse.UFORE_SAKTYPE, SakSammendragResponse.ALDER_SAKTYPE) } .filter { it.fomDato == null || it.fomDato.isBefore(hendelse.avdoedDoedsdato) } .any { it.tomDate == null || it.tomDate.isAfter(hendelse.avdoedDoedsdato) } @@ -51,21 +51,24 @@ internal class DoedshendelseKontrollpunktOMSService( } } - private fun kontrollerEksisterendeBehandling(sak: Sak?): DoedshendelseKontrollpunkt? { - return sak?.let { + private fun kontrollerEksisterendeBehandling(sak: Sak?): DoedshendelseKontrollpunkt? = + sak?.let { behandlingService.hentSisteIverksatte(sak.id)?.let { DoedshendelseKontrollpunkt.EpsHarSakMedIverksattBehandlingIGjenny(sak) } } - } private fun kontrollerBeroertFylt67Aar( eps: PersonDTO, avdoed: PersonDTO, - ): DoedshendelseKontrollpunkt.EpsKanHaAlderspensjon? { - return if (eps.foedselsdato != null) { + ): DoedshendelseKontrollpunkt.EpsKanHaAlderspensjon? = + if (eps.foedselsdato != null) { val foedselsdato = eps.foedselsdato?.verdi - val maanedenEtterDoedsdato = avdoed.doedsdato!!.verdi.plusMonths(1).withDayOfMonth(1) + val maanedenEtterDoedsdato = + avdoed.doedsdato!! + .verdi + .plusMonths(1) + .withDayOfMonth(1) val alder = safeYearsBetween(foedselsdato, maanedenEtterDoedsdato).absoluteValue val alderspensjonAar = 67 if (alder >= alderspensjonAar) { @@ -76,13 +79,11 @@ internal class DoedshendelseKontrollpunktOMSService( } else { null } - } - private fun kontrollerBeroertErDoed(eps: PersonDTO): DoedshendelseKontrollpunkt.EpsHarDoedsdato? { - return if (eps.doedsdato != null) { + private fun kontrollerBeroertErDoed(eps: PersonDTO): DoedshendelseKontrollpunkt.EpsHarDoedsdato? = + if (eps.doedsdato != null) { DoedshendelseKontrollpunkt.EpsHarDoedsdato } else { null } - } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktService.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktService.kt index 555e5122db4..92a2296b264 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/doedshendelse/kontrollpunkt/DoedshendelseKontrollpunktService.kt @@ -123,12 +123,13 @@ class DoedshendelseKontrollpunktService( } val duplikatHendelse = - grunnlagsendringshendelseDao.hentGrunnlagsendringshendelserMedStatuserISak( - sakId = sak.id, - statuser = listOf(GrunnlagsendringStatus.SJEKKET_AV_JOBB), - ).filter { - it.gjelderPerson == hendelse.avdoedFnr && it.type == GrunnlagsendringsType.DOEDSFALL - } + grunnlagsendringshendelseDao + .hentGrunnlagsendringshendelserMedStatuserISak( + sakId = sak.id, + statuser = listOf(GrunnlagsendringStatus.SJEKKET_AV_JOBB), + ).filter { + it.gjelderPerson == hendelse.avdoedFnr && it.type == GrunnlagsendringsType.DOEDSFALL + } return when { duplikatHendelse.isNotEmpty() -> { diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/klienter/GrunnlagKlient.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/klienter/GrunnlagKlient.kt index 8c33b86d695..4e0e7a88f78 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/klienter/GrunnlagKlient.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/klienter/GrunnlagKlient.kt @@ -76,24 +76,24 @@ class GrunnlagKlientImpl( behandlingId: UUID, opplysningsbehov: Opplysningsbehov, ) { - return client + client .post("$apiUrl/grunnlag/behandling/$behandlingId/opprett-grunnlag") { accept(ContentType.Application.Json) contentType(ContentType.Application.Json) setBody(opplysningsbehov) - }.body() + } } override suspend fun leggInnNyttGrunnlagSak( sakId: Long, opplysningsbehov: Opplysningsbehov, ) { - return client + client .post("$apiUrl/grunnlag/sak/$sakId/opprett-grunnlag") { accept(ContentType.Application.Json) contentType(ContentType.Application.Json) setBody(opplysningsbehov) - }.body() + } } override suspend fun laasTilGrunnlagIBehandling( @@ -107,68 +107,68 @@ class GrunnlagKlientImpl( behandlingId: UUID, request: OppdaterGrunnlagRequest, ) { - return client + client .post("$apiUrl/grunnlag/behandling/$behandlingId/oppdater-grunnlag") { accept(ContentType.Application.Json) contentType(ContentType.Application.Json) setBody(request) - }.body() + } } override suspend fun lagreNyeSaksopplysninger( behandlingId: UUID, saksopplysninger: NyeSaksopplysninger, ) { - return client + client .post("$apiUrl/grunnlag/behandling/$behandlingId/nye-opplysninger") { accept(ContentType.Application.Json) contentType(ContentType.Application.Json) setBody(saksopplysninger) - }.body() + } } override suspend fun lagreNyeSaksopplysningerBareSak( sakId: Long, saksopplysninger: NyeSaksopplysninger, ) { - return client + client .post("$apiUrl/grunnlag/sak/$sakId/nye-opplysninger") { accept(ContentType.Application.Json) contentType(ContentType.Application.Json) setBody(saksopplysninger) - }.body() + } } /** * Henter komplett grunnlag for sak **/ - override suspend fun hentGrunnlag(sakId: Long): Grunnlag? { - return client.get("$apiUrl/grunnlag/sak/$sakId") { - accept(ContentType.Application.Json) - }.body() - } + override suspend fun hentGrunnlag(sakId: Long): Grunnlag? = + client + .get("$apiUrl/grunnlag/sak/$sakId") { + accept(ContentType.Application.Json) + }.body() - override suspend fun hentPersongalleri(behandlingId: UUID): Grunnlagsopplysning? { - return client.get("$apiUrl/grunnlag/behandling/$behandlingId/${Opplysningstype.PERSONGALLERI_V1}") { - accept(ContentType.Application.Json) - }.body() - } + override suspend fun hentPersongalleri(behandlingId: UUID): Grunnlagsopplysning? = + client + .get("$apiUrl/grunnlag/behandling/$behandlingId/${Opplysningstype.PERSONGALLERI_V1}") { + accept(ContentType.Application.Json) + }.body() - override suspend fun hentAlleSakIder(fnr: String): Set { - return client.post("$apiUrl/grunnlag/person/saker") { - accept(ContentType.Application.Json) - contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) - }.body() - } + override suspend fun hentAlleSakIder(fnr: String): Set = + client + .post("$apiUrl/grunnlag/person/saker") { + accept(ContentType.Application.Json) + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + }.body() - override suspend fun hentPersonSakOgRolle(fnr: String): PersonMedSakerOgRoller { - return client.post("$apiUrl/grunnlag/person/roller") { - accept(ContentType.Application.Json) - contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) - }.body() - } + override suspend fun hentPersonSakOgRolle(fnr: String): PersonMedSakerOgRoller = + client + .post("$apiUrl/grunnlag/person/roller") { + accept(ContentType.Application.Json) + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + }.body() override val serviceName: String get() = "Grunnlagklient" @@ -177,12 +177,11 @@ class GrunnlagKlientImpl( override val endpoint: String get() = this.url - override suspend fun ping(konsument: String?): PingResult { - return client.ping( + override suspend fun ping(konsument: String?): PingResult = + client.ping( pingUrl = url.plus("/health/isready"), logger = logger, serviceName = serviceName, beskrivelse = beskrivelse, ) - } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/klienter/krr/KrrKlientImpl.kt b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/klienter/krr/KrrKlientImpl.kt index 59c87e2bdbb..cb319615e65 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/klienter/krr/KrrKlientImpl.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/grunnlagsendring/klienter/krr/KrrKlientImpl.kt @@ -16,7 +16,10 @@ interface KrrKlient { suspend fun hentDigitalKontaktinformasjon(fnr: String): DigitalKontaktinformasjon? } -class KrrKlientImpl(private val client: HttpClient, private val url: String) : KrrKlient { +class KrrKlientImpl( + private val client: HttpClient, + private val url: String, +) : KrrKlient { private val logger: Logger = LoggerFactory.getLogger(KrrKlientImpl::class.java) override suspend fun hentDigitalKontaktinformasjon(fnr: String): DigitalKontaktinformasjon? { @@ -31,7 +34,8 @@ class KrrKlientImpl(private val client: HttpClient, private val url: String) : K } if (response.status.isSuccess()) { - response.body() + response + .body() .also { logger.info("Hentet kontaktinformasjon fra KRR. Var null? ${it != null}") } } else { throw ClientRequestException(response, response.toString()) diff --git a/apps/etterlatte-behandling/src/main/kotlin/institusjonsopphold/InstitusjonsoppholdDao.kt b/apps/etterlatte-behandling/src/main/kotlin/institusjonsopphold/InstitusjonsoppholdDao.kt index afdd28b9f8f..714d5c26732 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/institusjonsopphold/InstitusjonsoppholdDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/institusjonsopphold/InstitusjonsoppholdDao.kt @@ -8,35 +8,35 @@ import no.nav.etterlatte.libs.common.objectMapper import no.nav.etterlatte.libs.database.singleOrNull import java.util.UUID -class InstitusjonsoppholdDao(private val connectionAutoclosing: ConnectionAutoclosing) { +class InstitusjonsoppholdDao( + private val connectionAutoclosing: ConnectionAutoclosing, +) { fun lagreInstitusjonsopphold( sakId: Long, saksbehandler: Grunnlagsopplysning.Saksbehandler, institusjonoppholdBegrunnelse: InstitusjonsoppholdBegrunnelse, - ) { - return connectionAutoclosing.hentConnection { - with(it) { - val statement = - prepareStatement( - "INSERT INTO institusjonsoppholdhendelse(id, sak_id, kanGiReduksjon, kanGiReduksjonTekst," + - "merEnnTreMaaneder, merEnnTreMaanederTekst, saksbehandler, grunnlagsendringshendelse_id) " + - "VALUES(?::UUID, ?, ?, ?, ?, ?, ?, ?::UUID)", - ) - statement.setString(1, UUID.randomUUID().toString()) - statement.setLong(2, sakId) - statement.setString(3, institusjonoppholdBegrunnelse.kanGiReduksjonAvYtelse.name) - statement.setString(4, institusjonoppholdBegrunnelse.kanGiReduksjonAvYtelseBegrunnelse) - statement.setString(5, institusjonoppholdBegrunnelse.forventetVarighetMerEnn3Maaneder.name) - statement.setString(6, institusjonoppholdBegrunnelse.forventetVarighetMerEnn3MaanederBegrunnelse) - statement.setString(7, saksbehandler.toJson()) - statement.setString(8, institusjonoppholdBegrunnelse.grunnlagsEndringshendelseId) - statement.executeUpdate() - } + ) = connectionAutoclosing.hentConnection { + with(it) { + val statement = + prepareStatement( + "INSERT INTO institusjonsoppholdhendelse(id, sak_id, kanGiReduksjon, kanGiReduksjonTekst," + + "merEnnTreMaaneder, merEnnTreMaanederTekst, saksbehandler, grunnlagsendringshendelse_id) " + + "VALUES(?::UUID, ?, ?, ?, ?, ?, ?, ?::UUID)", + ) + statement.setString(1, UUID.randomUUID().toString()) + statement.setLong(2, sakId) + statement.setString(3, institusjonoppholdBegrunnelse.kanGiReduksjonAvYtelse.name) + statement.setString(4, institusjonoppholdBegrunnelse.kanGiReduksjonAvYtelseBegrunnelse) + statement.setString(5, institusjonoppholdBegrunnelse.forventetVarighetMerEnn3Maaneder.name) + statement.setString(6, institusjonoppholdBegrunnelse.forventetVarighetMerEnn3MaanederBegrunnelse) + statement.setString(7, saksbehandler.toJson()) + statement.setString(8, institusjonoppholdBegrunnelse.grunnlagsEndringshendelseId) + statement.executeUpdate() } } - fun hentBegrunnelse(grunnlagsEndringshendelseId: String): InstitusjonsoppholdBegrunnelseMedSaksbehandler? { - return connectionAutoclosing.hentConnection { + fun hentBegrunnelse(grunnlagsEndringshendelseId: String): InstitusjonsoppholdBegrunnelseMedSaksbehandler? = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -56,5 +56,4 @@ class InstitusjonsoppholdDao(private val connectionAutoclosing: ConnectionAutocl } } } - } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/institusjonsopphold/InstitusjonsoppholdRoutes.kt b/apps/etterlatte-behandling/src/main/kotlin/institusjonsopphold/InstitusjonsoppholdRoutes.kt index ba153864d42..c38e24f46ef 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/institusjonsopphold/InstitusjonsoppholdRoutes.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/institusjonsopphold/InstitusjonsoppholdRoutes.kt @@ -45,4 +45,6 @@ internal fun Route.institusjonsoppholdRoute(institusjonsoppholdService: Institus } } -data class InstitusjonsoppholdBegrunnelseWrapper(val institusjonsopphold: InstitusjonsoppholdBegrunnelse) +data class InstitusjonsoppholdBegrunnelseWrapper( + val institusjonsopphold: InstitusjonsoppholdBegrunnelse, +) diff --git a/apps/etterlatte-behandling/src/main/kotlin/institusjonsopphold/InstitusjonsoppholdService.kt b/apps/etterlatte-behandling/src/main/kotlin/institusjonsopphold/InstitusjonsoppholdService.kt index 7a457e7006a..e9a6604eb40 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/institusjonsopphold/InstitusjonsoppholdService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/institusjonsopphold/InstitusjonsoppholdService.kt @@ -4,7 +4,9 @@ import no.nav.etterlatte.inTransaction import no.nav.etterlatte.libs.common.behandling.JaNei import no.nav.etterlatte.libs.common.grunnlag.Grunnlagsopplysning -data class InstitusjonsoppholdService(private val institusjonsoppholdDao: InstitusjonsoppholdDao) { +data class InstitusjonsoppholdService( + private val institusjonsoppholdDao: InstitusjonsoppholdDao, +) { fun leggInnInstitusjonsoppholdBegrunnelse( sakId: Long, saksbehandler: Grunnlagsopplysning.Saksbehandler, @@ -15,11 +17,10 @@ data class InstitusjonsoppholdService(private val institusjonsoppholdDao: Instit } } - fun hentInstitusjonsoppholdBegrunnelse(grunnlagsEndringshendelseId: String): InstitusjonsoppholdBegrunnelseMedSaksbehandler? { - return inTransaction { + fun hentInstitusjonsoppholdBegrunnelse(grunnlagsEndringshendelseId: String): InstitusjonsoppholdBegrunnelseMedSaksbehandler? = + inTransaction { institusjonsoppholdDao.hentBegrunnelse(grunnlagsEndringshendelseId) } - } } data class InstitusjonsoppholdBegrunnelse( diff --git a/apps/etterlatte-behandling/src/main/kotlin/metrics/BehandlingMetrics.kt b/apps/etterlatte-behandling/src/main/kotlin/metrics/BehandlingMetrics.kt index 37953fb9364..8858615a233 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/metrics/BehandlingMetrics.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/metrics/BehandlingMetrics.kt @@ -14,36 +14,42 @@ class BehandlingMetrics( private val logger = LoggerFactory.getLogger(this::class.java) val oppgaver by lazy { - Gauge.build("etterlatte_oppgaver", "Antall oppgaver") + Gauge + .build("etterlatte_oppgaver", "Antall oppgaver") .labelNames("status", "enhet", "saktype") .register(registry) } val saksbehandler by lazy { - Gauge.build("etterlatte_oppgaver_saksbehandler", "Antall saksbehandlere per enhet") + Gauge + .build("etterlatte_oppgaver_saksbehandler", "Antall saksbehandlere per enhet") .labelNames("enhet") .register(registry) } val behandlinger by lazy { - Gauge.build("etterlatte_behandlinger", "Antall behandlinger") + Gauge + .build("etterlatte_behandlinger", "Antall behandlinger") .labelNames("saktype", "behandlingstype", "status", "revurdering_aarsak", "kilde", "automatiskMigrering") .register(registry) } val gjenopprettinger by lazy { - Gauge.build("etterlatte_gjenopprettinger", "Antall gjenopprettinger") + Gauge + .build("etterlatte_gjenopprettinger", "Antall gjenopprettinger") .labelNames("automatisk", "status", "type", "enhet") .register(registry) } val avbruttGrunnetSoeknad by lazy { - Gauge.build("etterlatte_gjenopprettinger_soeknad", "Antall gjenopprettinger avbrutt på grunn av søknad") + Gauge + .build("etterlatte_gjenopprettinger_soeknad", "Antall gjenopprettinger avbrutt på grunn av søknad") .register(registry) } val iverksattUtenOpphoerOver20 by lazy { - Gauge.build("etterlatte_gjenopprettinger_over_20", "Alle iverksatte saker med søker over 20 uten opphør") + Gauge + .build("etterlatte_gjenopprettinger_over_20", "Alle iverksatte saker med søker over 20 uten opphør") .register(registry) } @@ -58,14 +64,15 @@ class BehandlingMetrics( } behandlingerMetrikkerDao.hent().forEach { - behandlinger.labels( - it.saktype.name, - it.behandlingstype.name, - it.status.name, - it.revurderingsaarsak?.name ?: "null", - it.kilde.name, - it.automatiskMigrering, - ).set(it.antall.toDouble()) + behandlinger + .labels( + it.saktype.name, + it.behandlingstype.name, + it.status.name, + it.revurderingsaarsak?.name ?: "null", + it.kilde.name, + it.automatiskMigrering, + ).set(it.antall.toDouble()) } gjenopprettingDao.gjenopprettinger().forEach { diff --git a/apps/etterlatte-behandling/src/main/kotlin/metrics/BehandlingMetrikkerDao.kt b/apps/etterlatte-behandling/src/main/kotlin/metrics/BehandlingMetrikkerDao.kt index c7528ae19c2..3ac592ede0d 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/metrics/BehandlingMetrikkerDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/metrics/BehandlingMetrikkerDao.kt @@ -9,7 +9,9 @@ import no.nav.etterlatte.libs.database.toList import java.sql.ResultSet import javax.sql.DataSource -class BehandlingMetrikkerDao(private val dataSource: DataSource) { +class BehandlingMetrikkerDao( + private val dataSource: DataSource, +) { fun hent(): List { dataSource.connection.use { val statement = @@ -30,8 +32,8 @@ class BehandlingMetrikkerDao(private val dataSource: DataSource) { } } - private fun ResultSet.asBehandlingAntall(): BehandlingAntall { - return BehandlingAntall( + private fun ResultSet.asBehandlingAntall(): BehandlingAntall = + BehandlingAntall( antall = getInt("antall"), saktype = SakType.valueOf(getString("saktype")), behandlingstype = BehandlingType.valueOf(getString("behandlingstype")), @@ -40,7 +42,6 @@ class BehandlingMetrikkerDao(private val dataSource: DataSource) { kilde = Vedtaksloesning.valueOf(getString("kilde")), automatiskMigrering = getString("automatisk"), ) - } } data class BehandlingAntall( diff --git a/apps/etterlatte-behandling/src/main/kotlin/metrics/GjenopprettingMetrikkerDao.kt b/apps/etterlatte-behandling/src/main/kotlin/metrics/GjenopprettingMetrikkerDao.kt index e4aeb7941f5..7e54f7e3597 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/metrics/GjenopprettingMetrikkerDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/metrics/GjenopprettingMetrikkerDao.kt @@ -7,7 +7,9 @@ import no.nav.etterlatte.libs.database.toList import java.time.Month import javax.sql.DataSource -class GjenopprettingMetrikkerDao(private val dataSource: DataSource) { +class GjenopprettingMetrikkerDao( + private val dataSource: DataSource, +) { fun gjenopprettinger(): List { dataSource.connection.use { val statement = @@ -71,18 +73,20 @@ class GjenopprettingMetrikkerDao(private val dataSource: DataSource) { ) group by s.fnr; """.trimIndent(), ) - statement.executeQuery().toList { - getString("fnr") - }.filter { fnr -> - try { - val bursdag = Folkeregisteridentifikator.of(fnr).getBirthDate() - val fyller20 = 2024 - bursdag.year == 20 - val bursdagsmaaned = bursdag.month - fyller20 && bursdagsmaaned > Month.JANUARY && bursdagsmaaned < Month.MAY - } catch (err: InvalidFoedselsnummerException) { - false + statement + .executeQuery() + .toList { + getString("fnr") + }.filter { fnr -> + try { + val bursdag = Folkeregisteridentifikator.of(fnr).getBirthDate() + val fyller20 = 2024 - bursdag.year == 20 + val bursdagsmaaned = bursdag.month + fyller20 && bursdagsmaaned > Month.JANUARY && bursdagsmaaned < Month.MAY + } catch (err: InvalidFoedselsnummerException) { + false + } } - } } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/metrics/OppgaveMetrikkerDao.kt b/apps/etterlatte-behandling/src/main/kotlin/metrics/OppgaveMetrikkerDao.kt index 74f4e7ed413..57827ea2b50 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/metrics/OppgaveMetrikkerDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/metrics/OppgaveMetrikkerDao.kt @@ -6,7 +6,9 @@ import no.nav.etterlatte.libs.database.toList import java.sql.ResultSet import javax.sql.DataSource -class OppgaveMetrikkerDao(private val dataSource: DataSource) { +class OppgaveMetrikkerDao( + private val dataSource: DataSource, +) { fun hentOppgaveAntall(): List = dataSource.connection.use { val statement = @@ -22,42 +24,45 @@ class OppgaveMetrikkerDao(private val dataSource: DataSource) { } } - private fun ResultSet.asOppgaveAntall(): OppgaveAntall { - return OppgaveAntall( + private fun ResultSet.asOppgaveAntall(): OppgaveAntall = + OppgaveAntall( antall = getInt("count"), status = Status.valueOf(getString("status")), enhet = getString("enhet"), saktype = SakType.valueOf(getString("saktype")), ) - } fun hentDistinkteSaksbehandlere(): List = dataSource.connection.use { val antallTotalt = - it.prepareStatement( - """ - SELECT count(distinct saksbehandler) antall - FROM oppgave - """.trimIndent(), - ).executeQuery().toList { - SaksbehandlerAntall( - antall = getInt("antall"), - enhet = "Totalt", - ) - } + it + .prepareStatement( + """ + SELECT count(distinct saksbehandler) antall + FROM oppgave + """.trimIndent(), + ).executeQuery() + .toList { + SaksbehandlerAntall( + antall = getInt("antall"), + enhet = "Totalt", + ) + } val antallPerEnhet = - it.prepareStatement( - """ - SELECT count(distinct saksbehandler) antall, enhet - FROM oppgave - group by enhet; - """.trimIndent(), - ).executeQuery().toList { - SaksbehandlerAntall( - antall = getInt("antall"), - enhet = getString("enhet"), - ) - } + it + .prepareStatement( + """ + SELECT count(distinct saksbehandler) antall, enhet + FROM oppgave + group by enhet; + """.trimIndent(), + ).executeQuery() + .toList { + SaksbehandlerAntall( + antall = getInt("antall"), + enhet = getString("enhet"), + ) + } antallTotalt + antallPerEnhet } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveDao.kt b/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveDao.kt index dcdb5c6cac4..dc52710c9df 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveDao.kt @@ -105,7 +105,9 @@ interface OppgaveDao { ): List } -class OppgaveDaoImpl(private val connectionAutoclosing: ConnectionAutoclosing) : OppgaveDao { +class OppgaveDaoImpl( + private val connectionAutoclosing: ConnectionAutoclosing, +) : OppgaveDao { private val logger = LoggerFactory.getLogger(this::class.java) override fun opprettOppgave(oppgaveIntern: OppgaveIntern) { @@ -137,8 +139,8 @@ class OppgaveDaoImpl(private val connectionAutoclosing: ConnectionAutoclosing) : } } - override fun hentOppgave(oppgaveId: UUID): OppgaveIntern? { - return connectionAutoclosing.hentConnection { + override fun hentOppgave(oppgaveId: UUID): OppgaveIntern? = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -154,10 +156,9 @@ class OppgaveDaoImpl(private val connectionAutoclosing: ConnectionAutoclosing) : } } } - } - override fun hentOppgaverForReferanse(referanse: String): List { - return connectionAutoclosing.hentConnection { + override fun hentOppgaverForReferanse(referanse: String): List = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -168,17 +169,18 @@ class OppgaveDaoImpl(private val connectionAutoclosing: ConnectionAutoclosing) : """.trimIndent(), ) statement.setString(1, referanse) - statement.executeQuery().toList { - asOppgave() - }.also { oppgaver -> - logger.info("Hentet ${oppgaver.size} oppgave(r) for referanse: $referanse") - } + statement + .executeQuery() + .toList { + asOppgave() + }.also { oppgaver -> + logger.info("Hentet ${oppgaver.size} oppgave(r) for referanse: $referanse") + } } } - } - override fun hentOppgaverForSak(sakId: Long): List { - return connectionAutoclosing.hentConnection { + override fun hentOppgaverForSak(sakId: Long): List = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -189,21 +191,22 @@ class OppgaveDaoImpl(private val connectionAutoclosing: ConnectionAutoclosing) : """.trimIndent(), ) statement.setLong(1, sakId) - statement.executeQuery().toList { - asOppgave() - }.also { oppgaveliste -> - logger.info("Hentet antall nye oppgaver for sak: ${oppgaveliste.size} sak: $sakId") - } + statement + .executeQuery() + .toList { + asOppgave() + }.also { oppgaveliste -> + logger.info("Hentet antall nye oppgaver for sak: ${oppgaveliste.size} sak: $sakId") + } } } - } override fun hentOppgaver( enheter: List, oppgaveStatuser: List, minOppgavelisteIdentFilter: String?, - ): List { - return connectionAutoclosing.hentConnection { + ): List = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -228,20 +231,21 @@ class OppgaveDaoImpl(private val connectionAutoclosing: ConnectionAutoclosing) : statement.setBoolean(6, minOppgavelisteIdentFilter == null) statement.setString(7, minOppgavelisteIdentFilter) - statement.executeQuery().toList { - asOppgave() - }.also { oppgaveliste -> - logger.info("Hentet antall nye oppgaver: ${oppgaveliste.size}") - } + statement + .executeQuery() + .toList { + asOppgave() + }.also { oppgaveliste -> + logger.info("Hentet antall nye oppgaver: ${oppgaveliste.size}") + } } } - } override fun hentOppgaverTilSaker( saker: List, oppgaveStatuser: List, - ): List { - return connectionAutoclosing.hentConnection { + ): List = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -257,17 +261,18 @@ class OppgaveDaoImpl(private val connectionAutoclosing: ConnectionAutoclosing) : statement.setArray(2, createArrayOf("text", oppgaveStatuser.toTypedArray())) statement.setArray(3, createArrayOf("bigint", saker.toTypedArray())) - statement.executeQuery().toList { - asOppgave() - }.also { oppgaveliste -> - logger.info("Hentet antall nye oppgaver: ${oppgaveliste.size}") - } + statement + .executeQuery() + .toList { + asOppgave() + }.also { oppgaveliste -> + logger.info("Hentet antall nye oppgaver: ${oppgaveliste.size}") + } } } - } - override fun hentAntallOppgaver(innloggetSaksbehandlerIdent: String): OppgavebenkStats { - return connectionAutoclosing.hentConnection { + override fun hentAntallOppgaver(innloggetSaksbehandlerIdent: String): OppgavebenkStats = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -281,17 +286,19 @@ class OppgaveDaoImpl(private val connectionAutoclosing: ConnectionAutoclosing) : statement.setString(1, innloggetSaksbehandlerIdent) - statement.executeQuery().singleOrNull { - OppgavebenkStats(getLong("antallOppgavelistaOppgaver"), getLong("antallMinOppgavelisteOppgaver")) - }!!.also { - logger.info("Henter antall oppgaver") - } + statement + .executeQuery() + .singleOrNull { + OppgavebenkStats(getLong("antallOppgavelistaOppgaver"), getLong("antallMinOppgavelisteOppgaver")) + }!! + .also { + logger.info("Henter antall oppgaver") + } } } - } - override fun finnOppgaverForStrengtFortroligOgStrengtFortroligUtland(): List { - return connectionAutoclosing.hentConnection { + override fun finnOppgaverForStrengtFortroligOgStrengtFortroligUtland(): List = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -304,14 +311,15 @@ class OppgaveDaoImpl(private val connectionAutoclosing: ConnectionAutoclosing) : statement.setString(1, AdressebeskyttelseGradering.STRENGT_FORTROLIG.name) statement.setString(2, AdressebeskyttelseGradering.STRENGT_FORTROLIG_UTLAND.name) - statement.executeQuery().toList { - asOppgave() - }.also { oppgaveliste -> - logger.info("Hentet antall nye oppgaver: ${oppgaveliste.size}") - } + statement + .executeQuery() + .toList { + asOppgave() + }.also { oppgaveliste -> + logger.info("Hentet antall nye oppgaver: ${oppgaveliste.size}") + } } } - } override fun settNySaksbehandler( oppgaveId: UUID, @@ -578,22 +586,24 @@ class OppgaveDaoImpl(private val connectionAutoclosing: ConnectionAutoclosing) : statement.setArray(2, createArrayOf("text", type.map { i -> i.name }.toTypedArray())) statement.setArray(3, createArrayOf("text", kilde.map { i -> i.name }.toTypedArray())) statement.setInt(4, grense) - statement.executeQuery().toList { - VentefristGaarUt( - oppgaveId = getUUID("id"), - sakId = getLong("sak_id"), - referanse = getString("referanse"), - oppgavekilde = OppgaveKilde.valueOf(getString("kilde")), - merknad = getString("merknad"), - ) - }.also { utgaatte -> - logger.info("Hentet ${utgaatte.size} oppgaver der fristen går ut for dato $dato og type $type") - }.filter { oppgave -> oppgaver.isEmpty() || oppgaver.contains(oppgave.oppgaveId) } + statement + .executeQuery() + .toList { + VentefristGaarUt( + oppgaveId = getUUID("id"), + sakId = getLong("sak_id"), + referanse = getString("referanse"), + oppgavekilde = OppgaveKilde.valueOf(getString("kilde")), + merknad = getString("merknad"), + ) + }.also { utgaatte -> + logger.info("Hentet ${utgaatte.size} oppgaver der fristen går ut for dato $dato og type $type") + }.filter { oppgave -> oppgaver.isEmpty() || oppgaver.contains(oppgave.oppgaveId) } } } - private fun ResultSet.asOppgave(): OppgaveIntern { - return OppgaveIntern( + private fun ResultSet.asOppgave(): OppgaveIntern = + OppgaveIntern( id = getObject("id") as UUID, status = Status.valueOf(getString("status")), enhet = getString("enhet"), @@ -612,5 +622,4 @@ class OppgaveDaoImpl(private val connectionAutoclosing: ConnectionAutoclosing) : }, forrigeSaksbehandlerIdent = getString("forrige_saksbehandler"), ) - } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveDaoMedEndringssporing.kt b/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveDaoMedEndringssporing.kt index f014713c8f9..029af623f73 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveDaoMedEndringssporing.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveDaoMedEndringssporing.kt @@ -69,8 +69,8 @@ class OppgaveDaoMedEndringssporingImpl( } } - override fun hentEndringerForOppgave(oppgaveId: UUID): List { - return connectionAutoclosing.hentConnection { + override fun hentEndringerForOppgave(oppgaveId: UUID): List = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -87,49 +87,37 @@ class OppgaveDaoMedEndringssporingImpl( } } } - } - private fun ResultSet.asOppgaveEndring(): OppgaveEndring { - return OppgaveEndring( + private fun ResultSet.asOppgaveEndring(): OppgaveEndring = + OppgaveEndring( id = getObject("id") as UUID, oppgaveId = getObject("oppgaveId") as UUID, oppgaveFoer = getString("oppgaveFoer").let { objectMapper.readValue(it) }, oppgaveEtter = getString("oppgaveEtter").let { objectMapper.readValue(it) }, tidspunkt = getTidspunkt("tidspunkt"), ) - } override fun opprettOppgave(oppgaveIntern: OppgaveIntern) { oppgaveDao.opprettOppgave(oppgaveIntern) } - override fun hentOppgave(oppgaveId: UUID): OppgaveIntern? { - return oppgaveDao.hentOppgave(oppgaveId) - } + override fun hentOppgave(oppgaveId: UUID): OppgaveIntern? = oppgaveDao.hentOppgave(oppgaveId) - override fun hentOppgaverForReferanse(referanse: String): List { - return oppgaveDao.hentOppgaverForReferanse(referanse) - } + override fun hentOppgaverForReferanse(referanse: String): List = oppgaveDao.hentOppgaverForReferanse(referanse) - override fun hentOppgaverForSak(sakId: Long): List { - return oppgaveDao.hentOppgaverForSak(sakId) - } + override fun hentOppgaverForSak(sakId: Long): List = oppgaveDao.hentOppgaverForSak(sakId) override fun hentOppgaver( enheter: List, oppgaveStatuser: List, minOppgavelisteIdentFilter: String?, - ): List { - return oppgaveDao.hentOppgaver(enheter, oppgaveStatuser, minOppgavelisteIdentFilter) - } + ): List = oppgaveDao.hentOppgaver(enheter, oppgaveStatuser, minOppgavelisteIdentFilter) - override fun hentAntallOppgaver(innloggetSaksbehandlerIdent: String): OppgavebenkStats { - return oppgaveDao.hentAntallOppgaver(innloggetSaksbehandlerIdent) - } + override fun hentAntallOppgaver(innloggetSaksbehandlerIdent: String): OppgavebenkStats = + oppgaveDao.hentAntallOppgaver(innloggetSaksbehandlerIdent) - override fun finnOppgaverForStrengtFortroligOgStrengtFortroligUtland(): List { - return oppgaveDao.finnOppgaverForStrengtFortroligOgStrengtFortroligUtland() - } + override fun finnOppgaverForStrengtFortroligOgStrengtFortroligUtland(): List = + oppgaveDao.finnOppgaverForStrengtFortroligOgStrengtFortroligUtland() override fun settNySaksbehandler( oppgaveId: UUID, diff --git a/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveEndring.kt b/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveEndring.kt index eaf36c53564..1e5dde6130d 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveEndring.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveEndring.kt @@ -30,18 +30,17 @@ data class GenerellEndringshendelse( ) object EndringMapper { - fun mapOppgaveEndringer(endringer: List): List { - return endringer.map { + fun mapOppgaveEndringer(endringer: List): List = + endringer.map { GenerellEndringshendelse( tidspunkt = it.tidspunkt, saksbehandler = null, // Ingen logging på HVEM som har gjort en endring på oppgave. Må fikses endringer = tilEndringLinjer(it.oppgaveFoer, it.oppgaveEtter), ) } - } - fun mapBehandlingHendelse(hendelse: LagretHendelse): String { - return when (hendelse.hendelse) { + fun mapBehandlingHendelse(hendelse: LagretHendelse): String = + when (hendelse.hendelse) { "BEHANDLING:AVBRUTT" -> "Behandling avbrutt" "BEHANDLING:AVKORTET" -> "Behandling avkortet" "BEHANDLING:BEREGNET" -> "Behandling beregnet" @@ -65,7 +64,6 @@ object EndringMapper { "VEDTAK:UNDERKJENT" -> "Vedtak underkjent" else -> hendelse.hendelse } - } private fun tilEndringLinjer( foer: OppgaveIntern, diff --git a/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveRoutes.kt b/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveRoutes.kt index 3b6bc497b7e..755ce94bcf8 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveRoutes.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveRoutes.kt @@ -32,8 +32,9 @@ import no.nav.etterlatte.libs.ktor.route.sakId import no.nav.etterlatte.tilgangsstyring.kunSaksbehandlerMedSkrivetilgang import no.nav.etterlatte.tilgangsstyring.kunSkrivetilgang -class ManglerReferanseException(msg: String) : - UgyldigForespoerselException( +class ManglerReferanseException( + msg: String, +) : UgyldigForespoerselException( code = "MÅ_HA_REFERANSE", detail = msg, ) @@ -46,10 +47,10 @@ inline val PipelineContext<*, ApplicationCall>.referanse: String const val VISALLE = "VISALLE" -fun filtrerGyldigeStatuser(statuser: List?): List { - return statuser?.map { i -> i.uppercase() } +fun filtrerGyldigeStatuser(statuser: List?): List = + statuser + ?.map { i -> i.uppercase() } ?.filter { i -> Status.entries.map { it.name }.contains(i) || i == VISALLE } ?: emptyList() -} inline val PipelineContext<*, ApplicationCall>.minOppgavelisteidentQueryParam: String? get() { @@ -276,4 +277,6 @@ internal fun Route.oppgaveRoutes(service: OppgaveService) { } } -internal data class GosysOppgaveversjon(val versjon: Long) +internal data class GosysOppgaveversjon( + val versjon: Long, +) diff --git a/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveService.kt b/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveService.kt index 3fcf634a2ba..c0313ea48a0 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/oppgave/OppgaveService.kt @@ -45,21 +45,20 @@ class OppgaveService( bruker: SaksbehandlerMedEnheterOgRoller, oppgaveStatuser: List, minOppgavelisteIdentFilter: String? = null, - ): List { - return if (bruker.saksbehandlerMedRoller.harRolleStrengtFortrolig()) { + ): List = + if (bruker.saksbehandlerMedRoller.harRolleStrengtFortrolig()) { oppgaveDao.finnOppgaverForStrengtFortroligOgStrengtFortroligUtland() } else { - oppgaveDao.hentOppgaver( - bruker.enheter(), - oppgaveStatuser, - minOppgavelisteIdentFilter, - ).sortedByDescending { it.opprettet } + oppgaveDao + .hentOppgaver( + bruker.enheter(), + oppgaveStatuser, + minOppgavelisteIdentFilter, + ).sortedByDescending { it.opprettet } } - } - fun genererStatsForOppgaver(innloggetSaksbehandlerIdent: String): OppgavebenkStats { - return oppgaveDao.hentAntallOppgaver(innloggetSaksbehandlerIdent) - } + fun genererStatsForOppgaver(innloggetSaksbehandlerIdent: String): OppgavebenkStats = + oppgaveDao.hentAntallOppgaver(innloggetSaksbehandlerIdent) private fun sjekkOmkanTildeleAttestantOppgave(): Boolean { val appUser = Kontekst.get().AppUser @@ -310,11 +309,13 @@ class OppgaveService( // TODO: hentEndringerForOppgave Kan fjernes over tid fun saksbehandlerSomFattetVedtak(oppgave: OppgaveIntern): String? = - oppgave.forrigeSaksbehandlerIdent ?: oppgaveDao.hentEndringerForOppgave(oppgave.id) + oppgave.forrigeSaksbehandlerIdent ?: oppgaveDao + .hentEndringerForOppgave(oppgave.id) .sortedByDescending { it.tidspunkt } .firstOrNull(OppgaveEndring::sendtTilAttestering) ?.oppgaveFoer - ?.saksbehandler?.ident + ?.saksbehandler + ?.ident // TODO: Slå sammen med de 3 andre "ferdigstill"-funksjonene fun ferdigStillOppgaveUnderBehandling( @@ -388,7 +389,8 @@ class OppgaveService( val behandlingHendelser = if (oppgave.kilde == OppgaveKilde.BEHANDLING) { - hendelseDao.finnHendelserIBehandling(UUID.fromString(oppgave.referanse)) + hendelseDao + .finnHendelserIBehandling(UUID.fromString(oppgave.referanse)) .map { val hendelse = EndringMapper.mapBehandlingHendelse(it) GenerellEndringshendelse( @@ -464,18 +466,15 @@ class OppgaveService( } } - fun hentOppgaverForSak(sakId: Long): List { - return oppgaveDao.hentOppgaverForSak(sakId) - } + fun hentOppgaverForSak(sakId: Long): List = oppgaveDao.hentOppgaverForSak(sakId) - fun hentOppgaverForReferanse(referanse: String): List { - return oppgaveDao.hentOppgaverForReferanse(referanse) - } + fun hentOppgaverForReferanse(referanse: String): List = oppgaveDao.hentOppgaverForReferanse(referanse) fun hentForrigeStatus(oppgaveId: UUID): Status { val oppgave = hentOppgave(oppgaveId) - return oppgaveDao.hentEndringerForOppgave(oppgaveId) + return oppgaveDao + .hentEndringerForOppgave(oppgaveId) .sortedByDescending { it.tidspunkt } .first { it.oppgaveEtter.status != oppgave.status } .oppgaveEtter.status @@ -511,7 +510,8 @@ class OppgaveService( } fun hentOppgaveUnderBehandling(referanse: String) = - oppgaveDao.hentOppgaverForReferanse(referanse) + oppgaveDao + .hentOppgaverForReferanse(referanse) .singleOrNull(OppgaveIntern::erUnderBehandling) .also { if (it == null) { @@ -569,17 +569,20 @@ class OppgaveService( private fun opprettOppgave(oppgaveIntern: OppgaveIntern): OppgaveIntern { var oppgaveLagres = oppgaveIntern if (oppgaveIntern.frist === null) { - val enMaanedFrem = oppgaveIntern.opprettet.toLocalDatetimeUTC().plusMonths(1L).toTidspunkt() + val enMaanedFrem = + oppgaveIntern.opprettet + .toLocalDatetimeUTC() + .plusMonths(1L) + .toTidspunkt() oppgaveLagres = oppgaveIntern.copy(frist = enMaanedFrem) } oppgaveDao.opprettOppgave(oppgaveLagres) return oppgaveDao.hentOppgave(oppgaveLagres.id)!! } - fun hentOppgave(oppgaveId: UUID): OppgaveIntern { - return oppgaveDao.hentOppgave(oppgaveId) + fun hentOppgave(oppgaveId: UUID): OppgaveIntern = + oppgaveDao.hentOppgave(oppgaveId) ?: throw InternfeilException("Oppgave med id=$oppgaveId ikke funnet!") - } /** * Skal kun brukes til: @@ -589,7 +592,8 @@ class OppgaveService( fun avbrytAapneOppgaverMedReferanse(referanse: String) { logger.info("Avbryter åpne oppgaver med referanse=$referanse") - oppgaveDao.hentOppgaverForReferanse(referanse) + oppgaveDao + .hentOppgaverForReferanse(referanse) .filterNot(OppgaveIntern::erAvsluttet) .forEach { oppgaveDao.endreStatusPaaOppgave(it.id, Status.AVBRUTT) } } @@ -612,54 +616,74 @@ class OppgaveService( } } -class BrukerManglerAttestantRolleException(ident: String) : UgyldigForespoerselException( - code = "BRUKER_ER_IKKE_ATTESTANT", - detail = "Bruker $ident mangler attestant rolle for tildeling", -) - -class ManglerOppgaveUnderBehandling(msg: String) : UgyldigForespoerselException( - code = "MANGLER_OPPGAVE_UNDER_BEHANDLING", - detail = msg, -) - -class ForMangeOppgaverUnderBehandling(msg: String) : UgyldigForespoerselException( - code = "FOR_MANGE_OPPGAVER_UNDER_BEHANDLING", - detail = msg, -) - -class OppgaveTilhoererAnnenSaksbehandler(oppgaveId: UUID) : UgyldigForespoerselException( - code = "OPPGAVE_TILHOERER_ANNEN_SAKSBEHANDLER", - detail = "Kan ikke lukke oppgave som tilhører en annen saksbehandler", - meta = mapOf("oppgaveId" to oppgaveId), -) - -class OppgaveIkkeTildeltSaksbehandler(oppgaveId: UUID) : UgyldigForespoerselException( - code = "OPPGAVE_IKKE_TILDELT_SAKSBEHANDLER", - detail = "Oppgaven er ikke tildelt en saksbehandler", - meta = mapOf("oppgaveId" to oppgaveId), -) - -class OppgaveKanIkkeEndres(oppgaveId: UUID, status: Status) : UgyldigForespoerselException( - code = "OPPGAVE_KAN_IKKE_ENDRES", - detail = "Oppgaven kan ikke endres siden den har status $status", - meta = mapOf("oppgaveId" to oppgaveId), -) - -class FristTilbakeITid(oppgaveId: UUID) : UgyldigForespoerselException( - code = "FRIST_TILBAKE_I_TID", - detail = "Frist kan ikke settes tilbake i tid", - meta = mapOf("oppgaveId" to oppgaveId), -) - -class OppgaveAlleredeTildeltSaksbehandler(oppgaveId: UUID, saksbehandler: String?) : ForespoerselException( - status = HttpStatusCode.Conflict.value, - code = "OPPGAVE_ALLEREDE_TILDELT_SAKSBEHANDLER", - detail = "Oppgaven er allerede tildelt saksbehandler $saksbehandler", - meta = mapOf("oppgaveId" to oppgaveId), -) - -class OppgaveIkkeFunnet(oppgaveId: UUID) : IkkeFunnetException( - code = "OPPGAVE_IKKE_FUNNET", - detail = "Oppgaven finnes ikke", - meta = mapOf("oppgaveId" to oppgaveId), -) +class BrukerManglerAttestantRolleException( + ident: String, +) : UgyldigForespoerselException( + code = "BRUKER_ER_IKKE_ATTESTANT", + detail = "Bruker $ident mangler attestant rolle for tildeling", + ) + +class ManglerOppgaveUnderBehandling( + msg: String, +) : UgyldigForespoerselException( + code = "MANGLER_OPPGAVE_UNDER_BEHANDLING", + detail = msg, + ) + +class ForMangeOppgaverUnderBehandling( + msg: String, +) : UgyldigForespoerselException( + code = "FOR_MANGE_OPPGAVER_UNDER_BEHANDLING", + detail = msg, + ) + +class OppgaveTilhoererAnnenSaksbehandler( + oppgaveId: UUID, +) : UgyldigForespoerselException( + code = "OPPGAVE_TILHOERER_ANNEN_SAKSBEHANDLER", + detail = "Kan ikke lukke oppgave som tilhører en annen saksbehandler", + meta = mapOf("oppgaveId" to oppgaveId), + ) + +class OppgaveIkkeTildeltSaksbehandler( + oppgaveId: UUID, +) : UgyldigForespoerselException( + code = "OPPGAVE_IKKE_TILDELT_SAKSBEHANDLER", + detail = "Oppgaven er ikke tildelt en saksbehandler", + meta = mapOf("oppgaveId" to oppgaveId), + ) + +class OppgaveKanIkkeEndres( + oppgaveId: UUID, + status: Status, +) : UgyldigForespoerselException( + code = "OPPGAVE_KAN_IKKE_ENDRES", + detail = "Oppgaven kan ikke endres siden den har status $status", + meta = mapOf("oppgaveId" to oppgaveId), + ) + +class FristTilbakeITid( + oppgaveId: UUID, +) : UgyldigForespoerselException( + code = "FRIST_TILBAKE_I_TID", + detail = "Frist kan ikke settes tilbake i tid", + meta = mapOf("oppgaveId" to oppgaveId), + ) + +class OppgaveAlleredeTildeltSaksbehandler( + oppgaveId: UUID, + saksbehandler: String?, +) : ForespoerselException( + status = HttpStatusCode.Conflict.value, + code = "OPPGAVE_ALLEREDE_TILDELT_SAKSBEHANDLER", + detail = "Oppgaven er allerede tildelt saksbehandler $saksbehandler", + meta = mapOf("oppgaveId" to oppgaveId), + ) + +class OppgaveIkkeFunnet( + oppgaveId: UUID, +) : IkkeFunnetException( + code = "OPPGAVE_IKKE_FUNNET", + detail = "Oppgaven finnes ikke", + meta = mapOf("oppgaveId" to oppgaveId), + ) diff --git a/apps/etterlatte-behandling/src/main/kotlin/oppgaveGosys/GosysOppgaveKlient.kt b/apps/etterlatte-behandling/src/main/kotlin/oppgaveGosys/GosysOppgaveKlient.kt index 7b4f0e0231b..5d2c121acc5 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/oppgaveGosys/GosysOppgaveKlient.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/oppgaveGosys/GosysOppgaveKlient.kt @@ -23,7 +23,10 @@ import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo import org.slf4j.LoggerFactory import java.time.LocalDate -data class GosysOppgaver(val antallTreffTotalt: Int, val oppgaver: List) +data class GosysOppgaver( + val antallTreffTotalt: Int, + val oppgaver: List, +) @JsonIgnoreProperties(ignoreUnknown = true) data class GosysApiOppgave( @@ -98,7 +101,10 @@ interface GosysOppgaveKlient { ): GosysApiOppgave } -class GosysOppgaveKlientImpl(config: Config, httpClient: HttpClient) : GosysOppgaveKlient { +class GosysOppgaveKlientImpl( + config: Config, + httpClient: HttpClient, +) : GosysOppgaveKlient { private val logger = LoggerFactory.getLogger(GosysOppgaveKlient::class.java) private val azureAdClient = AzureAdClient(config) @@ -133,8 +139,7 @@ class GosysOppgaveKlientImpl(config: Config, httpClient: HttpClient) : GosysOppg url = "$resourceUrl/api/v1/oppgaver?$filters", ), brukerTokenInfo = brukerTokenInfo, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { errorResponse -> throw errorResponse }, ) @@ -163,8 +168,7 @@ class GosysOppgaveKlientImpl(config: Config, httpClient: HttpClient) : GosysOppg url = "$resourceUrl/api/v1/oppgaver?$filters", ), brukerTokenInfo = brukerTokenInfo, - ) - .mapBoth( + ).mapBoth( success = { resource -> objectMapper.readValue(resource.response.toString()) }, failure = { errorResponse -> throw errorResponse }, ) @@ -189,8 +193,7 @@ class GosysOppgaveKlientImpl(config: Config, httpClient: HttpClient) : GosysOppg url = "$resourceUrl/api/v1/oppgaver/$id", ), brukerTokenInfo = brukerTokenInfo, - ) - .mapBoth( + ).mapBoth( success = { resource -> deserialize(resource.response.toString()) }, failure = { errorResponse -> throw errorResponse }, ) @@ -275,8 +278,7 @@ class GosysOppgaveKlientImpl(config: Config, httpClient: HttpClient) : GosysOppg ), brukerTokenInfo = brukerTokenInfo, patchBody = objectMapper.writeValueAsString(body), - ) - .mapBoth( + ).mapBoth( success = { resource -> deserialize(resource.response.toString()) }, failure = { errorResponse -> throw errorResponse }, ) @@ -303,14 +305,17 @@ data class EndreStatusRequest( val beskrivelse: String? = null, ) -class GosysTimeout : ForespoerselException( - status = HttpStatusCode.RequestTimeout.value, - code = "GOSYS_TIMEOUT", - detail = "Henting av oppgave(er) fra Gosys tok for lang tid. Prøv igjen senere.", -) - -class GosysKonfliktException(detail: String) : ForespoerselException( - status = HttpStatusCode.Conflict.value, - code = "GOSYS_OPTIMISTISK_LAAS", - detail = detail, -) +class GosysTimeout : + ForespoerselException( + status = HttpStatusCode.RequestTimeout.value, + code = "GOSYS_TIMEOUT", + detail = "Henting av oppgave(er) fra Gosys tok for lang tid. Prøv igjen senere.", + ) + +class GosysKonfliktException( + detail: String, +) : ForespoerselException( + status = HttpStatusCode.Conflict.value, + code = "GOSYS_OPTIMISTISK_LAAS", + detail = detail, + ) diff --git a/apps/etterlatte-behandling/src/main/kotlin/oppgaveGosys/GosysOppgaveRoute.kt b/apps/etterlatte-behandling/src/main/kotlin/oppgaveGosys/GosysOppgaveRoute.kt index 3d9d260eaab..b0848aa2de4 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/oppgaveGosys/GosysOppgaveRoute.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/oppgaveGosys/GosysOppgaveRoute.kt @@ -25,7 +25,10 @@ internal fun Route.gosysOppgaveRoute(gosysService: GosysOppgaveService) { val saksbehandler = call.request.queryParameters["saksbehandler"].takeUnless { it.isNullOrBlank() } val tema = call.request.queryParameters["tema"].takeUnless { it.isNullOrBlank() } val enhet = call.request.queryParameters["enhet"].takeUnless { it.isNullOrBlank() } - val harTildeling = call.request.queryParameters["harTildeling"].takeUnless { it.isNullOrBlank() }?.toBooleanStrictOrNull() + val harTildeling = + call.request.queryParameters["harTildeling"] + .takeUnless { it.isNullOrBlank() } + ?.toBooleanStrictOrNull() call.respond(gosysService.hentOppgaver(saksbehandler, tema, enhet, harTildeling, brukerTokenInfo)) } diff --git a/apps/etterlatte-behandling/src/main/kotlin/oppgaveGosys/GosysOppgaveService.kt b/apps/etterlatte-behandling/src/main/kotlin/oppgaveGosys/GosysOppgaveService.kt index ff560981159..3f89da83dfa 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/oppgaveGosys/GosysOppgaveService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/oppgaveGosys/GosysOppgaveService.kt @@ -81,7 +81,8 @@ class GosysOppgaveServiceImpl( private val logger = LoggerFactory.getLogger(this::class.java) private val cache = - Caffeine.newBuilder() + Caffeine + .newBuilder() .expireAfterWrite(Duration.ofMinutes(5)) .build() @@ -122,19 +123,20 @@ class GosysOppgaveServiceImpl( val alleGosysOppgaver = coroutineScope { - enheterSomSkalSoekesEtter.map { - async { - gosysOppgaveKlient.hentOppgaver( - saksbehandler = saksbehandler, - tema = temaListe, - enhetsnr = it, - harTildeling = harTildeling, - brukerTokenInfo = brukerTokenInfo, - ) - } - }.map { - it.await() - }.flatMap { it.oppgaver } + enheterSomSkalSoekesEtter + .map { + async { + gosysOppgaveKlient.hentOppgaver( + saksbehandler = saksbehandler, + tema = temaListe, + enhetsnr = it, + harTildeling = harTildeling, + brukerTokenInfo = brukerTokenInfo, + ) + } + }.map { + it.await() + }.flatMap { it.oppgaver } } val gosysOppgaver = GosysOppgaver(alleGosysOppgaver.size, alleGosysOppgaver) @@ -170,11 +172,11 @@ class GosysOppgaveServiceImpl( override suspend fun hentOppgave( id: Long, brukerTokenInfo: BrukerTokenInfo, - ): GosysOppgave { - return cache.getIfPresent(id) ?: gosysOppgaveKlient.hentOppgave(id, brukerTokenInfo) + ): GosysOppgave = + cache.getIfPresent(id) ?: gosysOppgaveKlient + .hentOppgave(id, brukerTokenInfo) .let { it.tilGosysOppgave() } .also { cache.put(id, it) } - } override suspend fun flyttTilGjenny( oppgaveId: Long, @@ -225,32 +227,30 @@ class GosysOppgaveServiceImpl( oppgaveVersjon: Long, tilordnes: String, brukerTokenInfo: BrukerTokenInfo, - ): Long { - return gosysOppgaveKlient.tildelOppgaveTilSaksbehandler( - oppgaveId, - oppgaveVersjon, - tilordnes, - brukerTokenInfo, - ).versjon - } + ): Long = + gosysOppgaveKlient + .tildelOppgaveTilSaksbehandler( + oppgaveId, + oppgaveVersjon, + tilordnes, + brukerTokenInfo, + ).versjon override suspend fun endreFrist( oppgaveId: String, oppgaveVersjon: Long, nyFrist: Tidspunkt, brukerTokenInfo: BrukerTokenInfo, - ): Long { - return gosysOppgaveKlient.endreFrist(oppgaveId, oppgaveVersjon, nyFrist.toLocalDate(), brukerTokenInfo).versjon - } + ): Long = gosysOppgaveKlient.endreFrist(oppgaveId, oppgaveVersjon, nyFrist.toLocalDate(), brukerTokenInfo).versjon override suspend fun ferdigstill( oppgaveId: String, oppgaveVersjon: Long, brukerTokenInfo: BrukerTokenInfo, - ): GosysOppgave { - return gosysOppgaveKlient.ferdigstill(oppgaveId, oppgaveVersjon, brukerTokenInfo) + ): GosysOppgave = + gosysOppgaveKlient + .ferdigstill(oppgaveId, oppgaveVersjon, brukerTokenInfo) .let { it.tilGosysOppgave() } - } override suspend fun feilregistrer( oppgaveId: String, @@ -268,8 +268,8 @@ class GosysOppgaveServiceImpl( } companion object { - private fun GosysApiOppgave.tilGosysOppgave(): GosysOppgave { - return GosysOppgave( + private fun GosysApiOppgave.tilGosysOppgave(): GosysOppgave = + GosysOppgave( id = this.id, versjon = this.versjon, status = this.status, @@ -286,11 +286,11 @@ class GosysOppgaveServiceImpl( journalpostId = this.journalpostId, bruker = this.bruker, ) - } } } -class StoetterKunFlyttingAvJournalfoeringsoppgave : UgyldigForespoerselException( - code = "UGYLDIG_OPPGAVETYPE_FOR_FLYTTING", - detail = "Støtter foreløpig kun flytting av journalføringsoppgaver", -) +class StoetterKunFlyttingAvJournalfoeringsoppgave : + UgyldigForespoerselException( + code = "UGYLDIG_OPPGAVETYPE_FOR_FLYTTING", + detail = "Støtter foreløpig kun flytting av journalføringsoppgaver", + ) diff --git a/apps/etterlatte-behandling/src/main/kotlin/sak/SakDao.kt b/apps/etterlatte-behandling/src/main/kotlin/sak/SakDao.kt index fd136225238..d56eafad5bc 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/sak/SakDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/sak/SakDao.kt @@ -40,7 +40,9 @@ data class SakMedUtlandstilknytning( } } -class SakDao(private val connectionAutoclosing: ConnectionAutoclosing) { +class SakDao( + private val connectionAutoclosing: ConnectionAutoclosing, +) { private val mapTilSak: ResultSet.() -> Sak = { Sak( sakType = enumValueOf(getString("sakType")), @@ -67,8 +69,8 @@ class SakDao(private val connectionAutoclosing: ConnectionAutoclosing) { } } - fun finnSakerMedGraderingOgSkjerming(sakIder: List): List { - return connectionAutoclosing.hentConnection { connection -> + fun finnSakerMedGraderingOgSkjerming(sakIder: List): List = + connectionAutoclosing.hentConnection { connection -> with(connection) { val statement = prepareStatement( @@ -83,13 +85,12 @@ class SakDao(private val connectionAutoclosing: ConnectionAutoclosing) { } } } - } fun oppdaterAdresseBeskyttelse( sakId: Long, adressebeskyttelseGradering: AdressebeskyttelseGradering, - ): Int { - return connectionAutoclosing.hentConnection { connection -> + ): Int = + connectionAutoclosing.hentConnection { connection -> with(connection) { val statement = prepareStatement("UPDATE sak SET adressebeskyttelse = ? where id = ?") statement.setString(1, adressebeskyttelseGradering.name) @@ -102,7 +103,6 @@ class SakDao(private val connectionAutoclosing: ConnectionAutoclosing) { } } } - } fun hentSaker( kjoering: String, @@ -110,8 +110,8 @@ class SakDao(private val connectionAutoclosing: ConnectionAutoclosing) { spesifikkeSaker: List, ekskluderteSaker: List, sakType: SakType? = null, - ): List { - return connectionAutoclosing.hentConnection { connection -> + ): List = + connectionAutoclosing.hentConnection { connection -> with(connection) { val statement = prepareStatement( @@ -133,8 +133,8 @@ class SakDao(private val connectionAutoclosing: ConnectionAutoclosing) { ${if (ekskluderteSaker.isEmpty()) "" else " and NOT(id = any(?))"} ${if (sakType == null) "" else " and s.saktype = ?"} ORDER by id ASC - LIMIT $antall""" - .trimMargin(), + LIMIT $antall + """.trimMargin(), ) var paramIndex = 1 if (spesifikkeSaker.isNotEmpty()) { @@ -150,25 +150,25 @@ class SakDao(private val connectionAutoclosing: ConnectionAutoclosing) { paramIndex += 1 } - statement.executeQuery() + statement + .executeQuery() .toList(mapTilSak) } } - } - fun hentSak(id: Long): Sak? { - return connectionAutoclosing.hentConnection { connection -> + fun hentSak(id: Long): Sak? = + connectionAutoclosing.hentConnection { connection -> with(connection) { val statement = prepareStatement("SELECT id, sakType, fnr, enhet from sak where id = ?") statement.setLong(1, id) - statement.executeQuery() + statement + .executeQuery() .singleOrNull(mapTilSak) } } - } - fun finnSakMedGraderingOgSkjerming(id: Long): SakMedGraderingOgSkjermet { - return connectionAutoclosing.hentConnection { connection -> + fun finnSakMedGraderingOgSkjerming(id: Long): SakMedGraderingOgSkjermet = + connectionAutoclosing.hentConnection { connection -> val statement = connection.prepareStatement("SELECT id, adressebeskyttelse, erSkjermet, enhet from sak where id = ?") statement.setLong(1, id) statement.executeQuery().single { @@ -183,10 +183,9 @@ class SakDao(private val connectionAutoclosing: ConnectionAutoclosing) { ) } } - } - fun finnFlyktningForSak(id: Long): Flyktning? { - return connectionAutoclosing.hentConnection { connection -> + fun finnFlyktningForSak(id: Long): Flyktning? = + connectionAutoclosing.hentConnection { connection -> with(connection) { val statement = prepareStatement("SELECT flyktning from sak where id = ?") statement.setLong(1, id) @@ -195,14 +194,13 @@ class SakDao(private val connectionAutoclosing: ConnectionAutoclosing) { } } } - } fun opprettSak( fnr: String, type: SakType, enhet: String, - ): Sak { - return connectionAutoclosing.hentConnection { connection -> + ): Sak = + connectionAutoclosing.hentConnection { connection -> with(connection) { val statement = prepareStatement( @@ -213,12 +211,12 @@ class SakDao(private val connectionAutoclosing: ConnectionAutoclosing) { statement.setString(3, enhet) statement.setTidspunkt(4, Tidspunkt.now()) requireNotNull( - statement.executeQuery() + statement + .executeQuery() .singleOrNull(mapTilSak), ) { "Kunne ikke opprette sak for fnr: $fnr" } } } - } fun oppdaterEnheterPaaSaker(saker: List) { connectionAutoclosing.hentConnection { connection -> @@ -244,8 +242,8 @@ class SakDao(private val connectionAutoclosing: ConnectionAutoclosing) { fun finnSaker( fnr: String, type: SakType? = null, - ): List { - return connectionAutoclosing.hentConnection { connection -> + ): List = + connectionAutoclosing.hentConnection { connection -> with(connection) { val statement = prepareStatement( @@ -259,17 +257,17 @@ class SakDao(private val connectionAutoclosing: ConnectionAutoclosing) { statement.setString(1, fnr) statement.setBoolean(2, type == null) statement.setString(3, type?.name) - statement.executeQuery() + statement + .executeQuery() .toList(mapTilSak) } } - } fun markerSakerMedSkjerming( sakIder: List, skjermet: Boolean, - ): Int { - return connectionAutoclosing.hentConnection { + ): Int = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -284,10 +282,9 @@ class SakDao(private val connectionAutoclosing: ConnectionAutoclosing) { statement.executeUpdate() } } - } - fun hentSakerMedIder(sakIder: List): List { - return connectionAutoclosing.hentConnection { + fun hentSakerMedIder(sakIder: List): List = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -298,9 +295,9 @@ class SakDao(private val connectionAutoclosing: ConnectionAutoclosing) { """.trimIndent(), ) statement.setArray(1, createArrayOf("bigint", sakIder.toTypedArray())) - statement.executeQuery() + statement + .executeQuery() .toList(mapTilSak) } } - } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/sak/SakRoutes.kt b/apps/etterlatte-behandling/src/main/kotlin/sak/SakRoutes.kt index 7708954bd45..4017aaabf3b 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/sak/SakRoutes.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/sak/SakRoutes.kt @@ -85,7 +85,8 @@ internal fun Route.sakSystemRoutes( val sisteIverksatteBehandling = inTransaction { - behandlingService.hentSisteIverksatte(sakId) + behandlingService + .hentSisteIverksatte(sakId) ?.let { SisteIverksatteBehandling(it.id) } } @@ -117,13 +118,15 @@ internal fun Route.sakSystemRoutes( } } -class PersonManglerSak : IkkeFunnetException( - code = "PERSON_MANGLER_SAK", - detail = "Personen har ingen saker i Gjenny", -) +class PersonManglerSak : + IkkeFunnetException( + code = "PERSON_MANGLER_SAK", + detail = "Personen har ingen saker i Gjenny", + ) -class SakIkkeFunnetException(message: String) : - UgyldigForespoerselException( +class SakIkkeFunnetException( + message: String, +) : UgyldigForespoerselException( code = "FANT_INGEN_SAK", detail = message, ) @@ -280,7 +283,10 @@ data class EnhetRequest( val enhet: String, ) -data class FoersteVirkDto(val foersteIverksatteVirkISak: LocalDate, val sakId: Long) +data class FoersteVirkDto( + val foersteIverksatteVirkISak: LocalDate, + val sakId: Long, +) data class SakerDto( val saker: Map, diff --git a/apps/etterlatte-behandling/src/main/kotlin/sak/SakService.kt b/apps/etterlatte-behandling/src/main/kotlin/sak/SakService.kt index 1ef25cc8ce1..cca99f49b75 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/sak/SakService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/sak/SakService.kt @@ -95,8 +95,9 @@ interface SakService { fun hentSakerMedIder(sakIder: List): Map } -class ManglerTilgangTilEnhet(enheter: List) : - UgyldigForespoerselException( +class ManglerTilgangTilEnhet( + enheter: List, +) : UgyldigForespoerselException( code = "MANGLER_TILGANG_TIL_ENHET", detail = "Mangler tilgang til enhet $enheter", ) @@ -146,12 +147,12 @@ class SakServiceImpl( spesifikkeSaker: List, ekskluderteSaker: List, sakType: SakType?, - ): List { - return dao.hentSaker(kjoering, antall, spesifikkeSaker, ekskluderteSaker, sakType) + ): List = + dao + .hentSaker(kjoering, antall, spesifikkeSaker, ekskluderteSaker, sakType) .also { logger.info("Henta ${it.size} saker før filtrering") } .filterForEnheter() .also { logger.info("Henta ${it.size} saker etter filtrering") } - } private fun finnSakForPerson( person: String, @@ -169,9 +170,7 @@ class SakServiceImpl( sakType: SakType? = null, ) = dao.finnSaker(person, sakType) - override fun finnSaker(person: String): List { - return finnSakerForPerson(person).filterForEnheter() - } + override fun finnSaker(person: String): List = finnSakerForPerson(person).filterForEnheter() override fun markerSakerMedSkjerming( sakIder: List, @@ -204,7 +203,8 @@ class SakServiceImpl( krrKlient.hentDigitalKontaktinformasjon(fnr) } - return kontaktInfo?.spraak + return kontaktInfo + ?.spraak ?.toLowerCasePreservingASCIIRules() ?.let { when (it) { @@ -276,7 +276,8 @@ class SakServiceImpl( } private fun SakMedGraderingOgSkjermet.gradertEnhetsnummerErIkkeAlene() { - if (this.enhetNr == Enheter.STRENGT_FORTROLIG.enhetNr && this.adressebeskyttelseGradering !in + if (this.enhetNr == Enheter.STRENGT_FORTROLIG.enhetNr && + this.adressebeskyttelseGradering !in listOf( AdressebeskyttelseGradering.STRENGT_FORTROLIG, AdressebeskyttelseGradering.STRENGT_FORTROLIG_UTLAND, @@ -347,9 +348,7 @@ class SakServiceImpl( override fun oppdaterAdressebeskyttelse( sakId: Long, adressebeskyttelseGradering: AdressebeskyttelseGradering, - ): Int { - return dao.oppdaterAdresseBeskyttelse(sakId, adressebeskyttelseGradering) - } + ): Int = dao.oppdaterAdresseBeskyttelse(sakId, adressebeskyttelseGradering) private fun sjekkSkjerming( fnr: String, @@ -371,20 +370,14 @@ class SakServiceImpl( dao.oppdaterEnheterPaaSaker(saker) } - override fun sjekkOmSakerErGradert(sakIder: List): List { - return dao.finnSakerMedGraderingOgSkjerming(sakIder) - } + override fun sjekkOmSakerErGradert(sakIder: List): List = dao.finnSakerMedGraderingOgSkjerming(sakIder) override fun finnSak( person: String, type: SakType, - ): Sak? { - return finnSakForPerson(person, type).sjekkEnhet() - } + ): Sak? = finnSakForPerson(person, type).sjekkEnhet() - override fun finnSak(id: Long): Sak? { - return dao.hentSak(id).sjekkEnhet() - } + override fun finnSak(id: Long): Sak? = dao.hentSak(id).sjekkEnhet() override fun finnFlyktningForSak(id: Long): Flyktning? = dao.hentSak(id).sjekkEnhet()?.let { dao.finnFlyktningForSak(id) } @@ -411,7 +404,5 @@ class SakServiceImpl( private fun filterSakerForEnheter( enheterSomSkalFiltreres: List, saker: List, - ): List { - return saker.filter { it.enhet !in enheterSomSkalFiltreres } - } + ): List = saker.filter { it.enhet !in enheterSomSkalFiltreres } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/sak/SakTilgangDao.kt b/apps/etterlatte-behandling/src/main/kotlin/sak/SakTilgangDao.kt index 6e8dd31f1d9..0dd0addb81f 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/sak/SakTilgangDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/sak/SakTilgangDao.kt @@ -5,7 +5,9 @@ import no.nav.etterlatte.libs.database.singleOrNull import no.nav.etterlatte.libs.database.toList import javax.sql.DataSource -class SakTilgangDao(private val datasource: DataSource) { +class SakTilgangDao( + private val datasource: DataSource, +) { fun finnSakerMedGraderingOgSkjerming(fnr: String): List { datasource.connection.use { connection -> val statement = connection.prepareStatement("SELECT id, adressebeskyttelse, erSkjermet, enhet from sak where fnr = ?") diff --git a/apps/etterlatte-behandling/src/main/kotlin/sak/TilgangService.kt b/apps/etterlatte-behandling/src/main/kotlin/sak/TilgangService.kt index 9cd3a81c14b..a89862b3857 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/sak/TilgangService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/sak/TilgangService.kt @@ -64,9 +64,10 @@ class TilgangServiceImpl( if (finnSakerMedGradering.isEmpty()) { return true } - return finnSakerMedGradering.map { - harTilgangSjekker(it, saksbehandlerMedRoller) - }.all { it } + return finnSakerMedGradering + .map { + harTilgangSjekker(it, saksbehandlerMedRoller) + }.all { it } } override fun harTilgangTilOppgave( @@ -125,32 +126,29 @@ class TilgangServiceImpl( private fun harTilgangSjekker( sak: SakMedGraderingOgSkjermet, saksbehandlerMedRoller: SaksbehandlerMedRoller, - ): Boolean { - return kanBehandleEgenAnsatt(sak, saksbehandlerMedRoller) && + ): Boolean = + kanBehandleEgenAnsatt(sak, saksbehandlerMedRoller) && kanBehandleAdressebeskyttelse(sak, saksbehandlerMedRoller) - } private fun kanBehandleEgenAnsatt( sak: SakMedGraderingOgSkjermet, saksbehandlerMedRoller: SaksbehandlerMedRoller, - ): Boolean { - return when (sak.erSkjermet) { + ): Boolean = + when (sak.erSkjermet) { true -> saksbehandlerMedRoller.harRolleEgenAnsatt() false -> true null -> true } - } private fun kanBehandleAdressebeskyttelse( sak: SakMedGraderingOgSkjermet, saksbehandlerMedRoller: SaksbehandlerMedRoller, - ): Boolean { - return when (sak.adressebeskyttelseGradering) { + ): Boolean = + when (sak.adressebeskyttelseGradering) { AdressebeskyttelseGradering.STRENGT_FORTROLIG_UTLAND -> saksbehandlerMedRoller.harRolleStrengtFortrolig() AdressebeskyttelseGradering.STRENGT_FORTROLIG -> saksbehandlerMedRoller.harRolleStrengtFortrolig() AdressebeskyttelseGradering.FORTROLIG -> saksbehandlerMedRoller.harRolleFortrolig() AdressebeskyttelseGradering.UGRADERT -> true else -> true } - } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/saksbehandler/SaksbehandlerInfoDao.kt b/apps/etterlatte-behandling/src/main/kotlin/saksbehandler/SaksbehandlerInfoDao.kt index afc4964c1f5..608d2e99382 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/saksbehandler/SaksbehandlerInfoDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/saksbehandler/SaksbehandlerInfoDao.kt @@ -9,9 +9,11 @@ import no.nav.etterlatte.libs.database.single import no.nav.etterlatte.libs.database.singleOrNull import no.nav.etterlatte.libs.database.toList -class SaksbehandlerInfoDao(private val connectionAutoclosing: ConnectionAutoclosing) { - fun hentSaksbehandlerNavn(ident: String): String? { - return connectionAutoclosing.hentConnection { +class SaksbehandlerInfoDao( + private val connectionAutoclosing: ConnectionAutoclosing, +) { + fun hentSaksbehandlerNavn(ident: String): String? = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -26,10 +28,9 @@ class SaksbehandlerInfoDao(private val connectionAutoclosing: ConnectionAutoclos } } } - } - fun hentSaksbehandlereForEnhet(enhet: String): List { - return connectionAutoclosing.hentConnection { + fun hentSaksbehandlereForEnhet(enhet: String): List = + connectionAutoclosing.hentConnection { with(it) { val statement = prepareStatement( @@ -47,10 +48,9 @@ class SaksbehandlerInfoDao(private val connectionAutoclosing: ConnectionAutoclos } } } - } - fun hentSaksbehandlerEnheter(ident: String): List? { - return connectionAutoclosing.hentConnection { connection -> + fun hentSaksbehandlerEnheter(ident: String): List? = + connectionAutoclosing.hentConnection { connection -> with(connection) { val statement = prepareStatement( @@ -65,10 +65,9 @@ class SaksbehandlerInfoDao(private val connectionAutoclosing: ConnectionAutoclos } } } - } - fun hentalleSaksbehandlere(): List { - return connectionAutoclosing.hentConnection { + fun hentalleSaksbehandlere(): List = + connectionAutoclosing.hentConnection { with(it) { val statement = it.prepareStatement( @@ -76,12 +75,13 @@ class SaksbehandlerInfoDao(private val connectionAutoclosing: ConnectionAutoclos select distinct saksbehandler from oppgave; """.trimIndent(), ) - statement.executeQuery().toList { - getString("saksbehandler") - }.filterNotNull() + statement + .executeQuery() + .toList { + getString("saksbehandler") + }.filterNotNull() } } - } fun upsertSaksbehandlerNavn(saksbehandler: SaksbehandlerInfo) { connectionAutoclosing.hentConnection { diff --git a/apps/etterlatte-behandling/src/main/kotlin/saksbehandler/SaksbehandlerService.kt b/apps/etterlatte-behandling/src/main/kotlin/saksbehandler/SaksbehandlerService.kt index 8f2255711d6..63c4a1ef4d9 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/saksbehandler/SaksbehandlerService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/saksbehandler/SaksbehandlerService.kt @@ -81,8 +81,7 @@ class SaksbehandlerServiceImpl( } } - private fun hentEnheterForSaksbehandler(ident: String): List { - return dao.hentSaksbehandlerEnheter(ident) + private fun hentEnheterForSaksbehandler(ident: String): List = + dao.hentSaksbehandlerEnheter(ident) ?: runBlocking { axsysKlient.hentEnheterForIdent(ident) } - } } diff --git a/apps/etterlatte-behandling/src/main/kotlin/tilgangsstyring/AzureGroup.kt b/apps/etterlatte-behandling/src/main/kotlin/tilgangsstyring/AzureGroup.kt index a91a7f8575b..a07280857e0 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/tilgangsstyring/AzureGroup.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/tilgangsstyring/AzureGroup.kt @@ -1,6 +1,8 @@ package no.nav.etterlatte.tilgangsstyring -enum class AzureGroup(val envKey: String) { +enum class AzureGroup( + val envKey: String, +) { ATTESTANT("AZUREAD_ATTESTANT_GROUPID"), ATTESTANT_GJENNY("AZUREAD_ATTESTANT_GJENNY_GROUPID"), SAKSBEHANDLER("AZUREAD_SAKSBEHANDLER_GROUPID"), diff --git a/apps/etterlatte-behandling/src/test/kotlin/DatabaseContextTest.kt b/apps/etterlatte-behandling/src/test/kotlin/DatabaseContextTest.kt index fb92112fc98..b545e53e3a4 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/DatabaseContextTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/DatabaseContextTest.kt @@ -10,12 +10,12 @@ import javax.sql.DataSource Har vi flyter som kun bruker daoer som en vanlig sb flyt så bruker man DatabaseContext.kt i testen sin Kontekst.set */ -class DatabaseContextTest(private val ds: DataSource) : DatabaseKontekst { +class DatabaseContextTest( + private val ds: DataSource, +) : DatabaseKontekst { override fun activeTx(): Connection = ds.connection - override fun harIntransaction(): Boolean { - return true - } + override fun harIntransaction(): Boolean = true override fun inTransaction(block: () -> T): T { // NOOPP @@ -23,9 +23,11 @@ class DatabaseContextTest(private val ds: DataSource) : DatabaseKontekst { } } -class ConnectionAutoclosingTest(val dataSource: DataSource) : ConnectionAutoclosing() { - override fun hentConnection(block: (connection: Connection) -> T): T { - return if (manglerKontekst()) { +class ConnectionAutoclosingTest( + val dataSource: DataSource, +) : ConnectionAutoclosing() { + override fun hentConnection(block: (connection: Connection) -> T): T = + if (manglerKontekst()) { dataSource.connection.use { block(it) } @@ -33,5 +35,4 @@ class ConnectionAutoclosingTest(val dataSource: DataSource) : ConnectionAutoclos val activeTx = DatabaseContextTest(dataSource).activeTx() block(activeTx).also { activeTx.close() } } - } } diff --git a/apps/etterlatte-behandling/src/test/kotlin/OmregningIntegrationTest.kt b/apps/etterlatte-behandling/src/test/kotlin/OmregningIntegrationTest.kt index 4983dbca8a8..e73f241cbd2 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/OmregningIntegrationTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/OmregningIntegrationTest.kt @@ -44,8 +44,8 @@ class OmregningIntegrationTest : BehandlingIntegrationTest() { private var sakId: Long = 0L - fun opprettSakMedFoerstegangsbehandling(fnr: String): Pair { - return inTransaction { + fun opprettSakMedFoerstegangsbehandling(fnr: String): Pair = + inTransaction { val sak = applicationContext.sakDao.opprettSak(fnr, SakType.BARNEPENSJON, Enheter.defaultEnhet.enhetNr) @@ -61,7 +61,6 @@ class OmregningIntegrationTest : BehandlingIntegrationTest() { )?.behandling Pair(sak, behandling as Foerstegangsbehandling) } - } private fun iverksettFoerstegangsbehandling( sak: Sak, @@ -85,7 +84,8 @@ class OmregningIntegrationTest : BehandlingIntegrationTest() { val virkningstidspunkt = virkningstidspunktVurdering() val iverksattBehandling = - behandling.copy(kommerBarnetTilgode = kommerBarnetTilgode) + behandling + .copy(kommerBarnetTilgode = kommerBarnetTilgode) .oppdaterGyldighetsproeving(gyldighetsresultatVurdering()) .oppdaterVirkningstidspunkt(virkningstidspunkt) .tilVilkaarsvurdert() @@ -110,32 +110,34 @@ class OmregningIntegrationTest : BehandlingIntegrationTest() { val (sak, behandling) = opprettSakMedFoerstegangsbehandling(i.toString()) iverksettFoerstegangsbehandling(sak, behandling) val (omregning) = - client.post("/omregning") { - addAuthToken(this@OmregningIntegrationTest.systemBruker) + client + .post("/omregning") { + addAuthToken(this@OmregningIntegrationTest.systemBruker) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + Omregningshendelse( + sakId, + LocalDate.now(), + null, + Prosesstype.AUTOMATISK, + ), + ) + }.let { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + it.body() + } + + client + .get("/behandlinger/$omregning") { + addAuthToken(tokenSaksbehandler) header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody( - Omregningshendelse( - sakId, - LocalDate.now(), - null, - Prosesstype.AUTOMATISK, - ), - ) }.let { Assertions.assertEquals(HttpStatusCode.OK, it.status) - it.body() - } - - client.get("/behandlinger/$omregning") { - addAuthToken(tokenSaksbehandler) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - }.let { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - it.body().also { behandling -> - Assertions.assertEquals(omregning, behandling.id) - Assertions.assertEquals(sakId, behandling.sak) + it.body().also { behandling -> + Assertions.assertEquals(omregning, behandling.id) + Assertions.assertEquals(sakId, behandling.sak) + } } - } } } } @@ -149,13 +151,14 @@ class OmregningIntegrationTest : BehandlingIntegrationTest() { module(applicationContext) } - client.post("/omregning") { - addAuthToken(this@OmregningIntegrationTest.systemBruker) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody(Omregningshendelse(sak.id, LocalDate.now(), null, Prosesstype.AUTOMATISK)) - }.also { - Assertions.assertEquals(HttpStatusCode.InternalServerError, it.status) - } + client + .post("/omregning") { + addAuthToken(this@OmregningIntegrationTest.systemBruker) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody(Omregningshendelse(sak.id, LocalDate.now(), null, Prosesstype.AUTOMATISK)) + }.also { + Assertions.assertEquals(HttpStatusCode.InternalServerError, it.status) + } } } } diff --git a/apps/etterlatte-behandling/src/test/kotlin/TestHelper.kt b/apps/etterlatte-behandling/src/test/kotlin/TestHelper.kt index 986ab4e2d88..ae713c28326 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/TestHelper.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/TestHelper.kt @@ -100,17 +100,11 @@ fun lagContext( testUser: User, databaseContext: DatabaseKontekst = object : DatabaseKontekst { - override fun activeTx(): Connection { - throw IllegalArgumentException() - } + override fun activeTx(): Connection = throw IllegalArgumentException() - override fun harIntransaction(): Boolean { - throw NotImplementedException("not implemented") - } + override fun harIntransaction(): Boolean = throw NotImplementedException("not implemented") - override fun inTransaction(block: () -> T): T { - return block() - } + override fun inTransaction(block: () -> T): T = block() }, sakTilgangDao: SakTilgangDao = mockedSakTilgangDao(), ) = Context( @@ -160,8 +154,8 @@ fun mockSaksbehandler( harRolleStrengtFortrolig: Boolean = false, harRolleEgenAnsatt: Boolean = false, enheter: List = listOf(Enheter.defaultEnhet.enhetNr), -): SaksbehandlerMedEnheterOgRoller { - return mockk { +): SaksbehandlerMedEnheterOgRoller = + mockk { every { saksbehandlerMedRoller } returns mockk { every { saksbehandler } returns Saksbehandler("accessToken", ident, null) @@ -172,7 +166,6 @@ fun mockSaksbehandler( every { name() } returns ident every { enheter() } returns enheter } -} fun opprettBehandling( type: BehandlingType, diff --git a/apps/etterlatte-behandling/src/test/kotlin/VerdikjedeTest.kt b/apps/etterlatte-behandling/src/test/kotlin/VerdikjedeTest.kt index fdfb1caefcc..a262b18325e 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/VerdikjedeTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/VerdikjedeTest.kt @@ -112,330 +112,354 @@ class VerdikjedeTest : BehandlingIntegrationTest() { assertTrue(applicationContext.featureToggleService.isEnabled(FellesFeatureToggle.NoOperationToggle, false)) - client.get("/saker/1") { - addAuthToken(tokenSaksbehandler) - }.apply { - assertEquals(HttpStatusCode.NotFound, status) - } - val sak: Sak = - client.post("/personer/saker/${SakType.BARNEPENSJON}") { + client + .get("/saker/1") { addAuthToken(tokenSaksbehandler) - contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) }.apply { - assertEquals(HttpStatusCode.OK, status) - }.body() - - client.get("/saker/${sak.id}") { - addAuthToken(tokenSaksbehandler) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - val lestSak: Sak = it.body() - assertEquals(fnr, lestSak.ident) - assertEquals(SakType.BARNEPENSJON, lestSak.sakType) - } + assertEquals(HttpStatusCode.NotFound, status) + } + val sak: Sak = + client + .post("/personer/saker/${SakType.BARNEPENSJON}") { + addAuthToken(tokenSaksbehandler) + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + }.apply { + assertEquals(HttpStatusCode.OK, status) + }.body() + + client + .get("/saker/${sak.id}") { + addAuthToken(tokenSaksbehandler) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + val lestSak: Sak = it.body() + assertEquals(fnr, lestSak.ident) + assertEquals(SakType.BARNEPENSJON, lestSak.sakType) + } val behandlingId = - client.post("/behandlinger/opprettbehandling") { - addAuthToken(this@VerdikjedeTest.systemBruker) + client + .post("/behandlinger/opprettbehandling") { + addAuthToken(this@VerdikjedeTest.systemBruker) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + BehandlingsBehov( + 1, + Persongalleri("søker", "innsender", emptyList(), emptyList(), emptyList()), + Tidspunkt.now().toLocalDatetimeUTC().toString(), + ), + ) + }.let { + assertEquals(HttpStatusCode.OK, it.status) + UUID.fromString(it.body()) + } + behandlingOpprettet = behandlingId + + client + .get("/behandlinger/$behandlingId") { + addAuthToken(tokenSaksbehandler) header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody( - BehandlingsBehov( - 1, - Persongalleri("søker", "innsender", emptyList(), emptyList(), emptyList()), - Tidspunkt.now().toLocalDatetimeUTC().toString(), - ), - ) - }.let { + }.also { assertEquals(HttpStatusCode.OK, it.status) - UUID.fromString(it.body()) + it.body() } - behandlingOpprettet = behandlingId - - client.get("/behandlinger/$behandlingId") { - addAuthToken(tokenSaksbehandler) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - it.body() - } val oppgaver: List = - client.get("/api/oppgaver") { + client + .get("/api/oppgaver") { + addAuthToken(tokenSaksbehandler) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + }.body() + + val oppgaverforbehandling = oppgaver.filter { it.referanse == behandlingId.toString() } + client + .post("/api/oppgaver/${oppgaverforbehandling[0].id}/tildel-saksbehandler/") { addAuthToken(tokenSaksbehandler) header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody(SaksbehandlerEndringDto("Saksbehandler01")) }.also { assertEquals(HttpStatusCode.OK, it.status) - }.body() - - val oppgaverforbehandling = oppgaver.filter { it.referanse == behandlingId.toString() } - client.post("/api/oppgaver/${oppgaverforbehandling[0].id}/tildel-saksbehandler/") { - addAuthToken(tokenSaksbehandler) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody(SaksbehandlerEndringDto("Saksbehandler01")) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - } + } - client.post("/behandlinger/$behandlingId/gyldigfremsatt") { - addAuthToken(tokenSaksbehandler) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody( - GyldighetsResultat( - VurderingsResultat.OPPFYLT, - listOf( - VurdertGyldighet( - GyldighetsTyper.INNSENDER_ER_FORELDER, - VurderingsResultat.OPPFYLT, - "innsenderFnr", + client + .post("/behandlinger/$behandlingId/gyldigfremsatt") { + addAuthToken(tokenSaksbehandler) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + GyldighetsResultat( + VurderingsResultat.OPPFYLT, + listOf( + VurdertGyldighet( + GyldighetsTyper.INNSENDER_ER_FORELDER, + VurderingsResultat.OPPFYLT, + "innsenderFnr", + ), ), + Tidspunkt.now().toLocalDatetimeUTC(), ), - Tidspunkt.now().toLocalDatetimeUTC(), - ), - ) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - } + ) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + } - client.get("/behandlinger/$behandlingId") { - addAuthToken(tokenSaksbehandler) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - val behandling: DetaljertBehandling = it.body() - assertNotNull(behandling.id) - assertEquals("soeker", behandling.soeker) - } + client + .get("/behandlinger/$behandlingId") { + addAuthToken(tokenSaksbehandler) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + val behandling: DetaljertBehandling = it.body() + assertNotNull(behandling.id) + assertEquals("soeker", behandling.soeker) + } - client.post("/api/behandling/$behandlingId/utlandstilknytning") { - addAuthToken(tokenSaksbehandler) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody(UtlandstilknytningRequest(UtlandstilknytningType.NASJONAL, "begrunnelse")) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - } + client + .post("/api/behandling/$behandlingId/utlandstilknytning") { + addAuthToken(tokenSaksbehandler) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody(UtlandstilknytningRequest(UtlandstilknytningType.NASJONAL, "begrunnelse")) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + } - client.post("/api/behandling/$behandlingId/virkningstidspunkt") { - addAuthToken(tokenSaksbehandler) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody( - mapOf("dato" to "2022-02-01T01:00:00.000Z", "begrunnelse" to "En begrunnelse"), - ) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - val expected = - FastsettVirkningstidspunktResponse( - YearMonth.of(2022, 2), - Grunnlagsopplysning.Saksbehandler.create("Saksbehandler01"), - "En begrunnelse", - null, + client + .post("/api/behandling/$behandlingId/virkningstidspunkt") { + addAuthToken(tokenSaksbehandler) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + mapOf("dato" to "2022-02-01T01:00:00.000Z", "begrunnelse" to "En begrunnelse"), ) - assertEquals(expected.dato, it.body().dato) - assertEquals(expected.kilde.ident, it.body().kilde.ident) - assertEquals(expected.begrunnelse, it.body().begrunnelse) - } + }.also { + assertEquals(HttpStatusCode.OK, it.status) + val expected = + FastsettVirkningstidspunktResponse( + YearMonth.of(2022, 2), + Grunnlagsopplysning.Saksbehandler.create("Saksbehandler01"), + "En begrunnelse", + null, + ) + assertEquals(expected.dato, it.body().dato) + assertEquals(expected.kilde.ident, it.body().kilde.ident) + assertEquals(expected.begrunnelse, it.body().begrunnelse) + } - client.post("/api/behandling/$behandlingId/kommerbarnettilgode") { - addAuthToken(tokenSaksbehandler) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody(JaNeiMedBegrunnelse(JaNei.JA, "begrunnelse")) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - } + client + .post("/api/behandling/$behandlingId/kommerbarnettilgode") { + addAuthToken(tokenSaksbehandler) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody(JaNeiMedBegrunnelse(JaNei.JA, "begrunnelse")) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + } val dataSource = applicationContext.dataSource - client.get("/behandlinger/$behandlingId/vilkaarsvurder") { - addAuthToken(tokenSaksbehandler) - }.also { - val actual = - BehandlingDao( - KommerBarnetTilGodeDao(ConnectionAutoclosingTest(dataSource)), - RevurderingDao(ConnectionAutoclosingTest(dataSource)), - ConnectionAutoclosingTest(dataSource), - ).hentBehandling(behandlingId)!! - assertEquals(BehandlingStatus.OPPRETTET, actual.status) - - assertEquals(HttpStatusCode.OK, it.status) - } + client + .get("/behandlinger/$behandlingId/vilkaarsvurder") { + addAuthToken(tokenSaksbehandler) + }.also { + val actual = + BehandlingDao( + KommerBarnetTilGodeDao(ConnectionAutoclosingTest(dataSource)), + RevurderingDao(ConnectionAutoclosingTest(dataSource)), + ConnectionAutoclosingTest(dataSource), + ).hentBehandling(behandlingId)!! + assertEquals(BehandlingStatus.OPPRETTET, actual.status) - client.post("/behandlinger/$behandlingId/vilkaarsvurder") { - addAuthToken(tokenSaksbehandler) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody("{}") - }.also { - val actual = - BehandlingDao( - KommerBarnetTilGodeDao(ConnectionAutoclosingTest(dataSource)), - RevurderingDao(ConnectionAutoclosingTest(dataSource)), - ConnectionAutoclosingTest(dataSource), - ).hentBehandling(behandlingId)!! - assertEquals(BehandlingStatus.VILKAARSVURDERT, actual.status) - - assertEquals(HttpStatusCode.OK, it.status) - } + assertEquals(HttpStatusCode.OK, it.status) + } - client.post("/behandlinger/$behandlingId/oppdaterTrygdetid") { - addAuthToken(tokenSaksbehandler) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody("{}") - }.also { - val actual = - BehandlingDao( - KommerBarnetTilGodeDao(ConnectionAutoclosingTest(dataSource)), - RevurderingDao(ConnectionAutoclosingTest(dataSource)), - ConnectionAutoclosingTest(dataSource), - ).hentBehandling(behandlingId)!! - assertEquals(BehandlingStatus.TRYGDETID_OPPDATERT, actual.status) - - assertEquals(HttpStatusCode.OK, it.status) - } + client + .post("/behandlinger/$behandlingId/vilkaarsvurder") { + addAuthToken(tokenSaksbehandler) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody("{}") + }.also { + val actual = + BehandlingDao( + KommerBarnetTilGodeDao(ConnectionAutoclosingTest(dataSource)), + RevurderingDao(ConnectionAutoclosingTest(dataSource)), + ConnectionAutoclosingTest(dataSource), + ).hentBehandling(behandlingId)!! + assertEquals(BehandlingStatus.VILKAARSVURDERT, actual.status) - client.post("/behandlinger/$behandlingId/beregn") { - addAuthToken(tokenSaksbehandler) - }.also { - val actual = - BehandlingDao( - KommerBarnetTilGodeDao(ConnectionAutoclosingTest(dataSource)), - RevurderingDao(ConnectionAutoclosingTest(dataSource)), - ConnectionAutoclosingTest(dataSource), - ).hentBehandling(behandlingId)!! - assertEquals(BehandlingStatus.BEREGNET, actual.status) - - assertEquals(HttpStatusCode.OK, it.status) - } + assertEquals(HttpStatusCode.OK, it.status) + } - client.post("/fattvedtak") { - addAuthToken(tokenSaksbehandler) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody( - VedtakEndringDTO( - sakIdOgReferanse = - SakIdOgReferanse( - sakId = sak.id, - referanse = behandlingId.toString(), - ), - vedtakHendelse = VedtakHendelse(123L, Tidspunkt.now(), "Saksbehandler01", null), - vedtakType = VedtakType.INNVILGELSE, - ), - ) - }.also { - val actual = - BehandlingDao( - KommerBarnetTilGodeDao(ConnectionAutoclosingTest(dataSource)), - RevurderingDao(ConnectionAutoclosingTest(dataSource)), - ConnectionAutoclosingTest(dataSource), - ).hentBehandling(behandlingId)!! - assertEquals(BehandlingStatus.FATTET_VEDTAK, actual.status) - - assertEquals(HttpStatusCode.OK, it.status) - } + client + .post("/behandlinger/$behandlingId/oppdaterTrygdetid") { + addAuthToken(tokenSaksbehandler) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody("{}") + }.also { + val actual = + BehandlingDao( + KommerBarnetTilGodeDao(ConnectionAutoclosingTest(dataSource)), + RevurderingDao(ConnectionAutoclosingTest(dataSource)), + ConnectionAutoclosingTest(dataSource), + ).hentBehandling(behandlingId)!! + assertEquals(BehandlingStatus.TRYGDETID_OPPDATERT, actual.status) - val oppgaveroppgaveliste: List = - client.get("/api/oppgaver") { - addAuthToken(tokenAttestant) + assertEquals(HttpStatusCode.OK, it.status) + } + + client + .post("/behandlinger/$behandlingId/beregn") { + addAuthToken(tokenSaksbehandler) + }.also { + val actual = + BehandlingDao( + KommerBarnetTilGodeDao(ConnectionAutoclosingTest(dataSource)), + RevurderingDao(ConnectionAutoclosingTest(dataSource)), + ConnectionAutoclosingTest(dataSource), + ).hentBehandling(behandlingId)!! + assertEquals(BehandlingStatus.BEREGNET, actual.status) + + assertEquals(HttpStatusCode.OK, it.status) + } + + client + .post("/fattvedtak") { + addAuthToken(tokenSaksbehandler) header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + VedtakEndringDTO( + sakIdOgReferanse = + SakIdOgReferanse( + sakId = sak.id, + referanse = behandlingId.toString(), + ), + vedtakHendelse = VedtakHendelse(123L, Tidspunkt.now(), "Saksbehandler01", null), + vedtakType = VedtakType.INNVILGELSE, + ), + ) }.also { + val actual = + BehandlingDao( + KommerBarnetTilGodeDao(ConnectionAutoclosingTest(dataSource)), + RevurderingDao(ConnectionAutoclosingTest(dataSource)), + ConnectionAutoclosingTest(dataSource), + ).hentBehandling(behandlingId)!! + assertEquals(BehandlingStatus.FATTET_VEDTAK, actual.status) + assertEquals(HttpStatusCode.OK, it.status) - }.body() + } + + val oppgaveroppgaveliste: List = + client + .get("/api/oppgaver") { + addAuthToken(tokenAttestant) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + }.body() val oppgaverforattestant = oppgaveroppgaveliste.filter { it.referanse == behandlingId.toString() } val saksbehandler02 = "Saksbehandler02" - client.post("/api/oppgaver/${oppgaverforattestant[0].id}/tildel-saksbehandler") { - addAuthToken(tokenAttestant) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody(SaksbehandlerEndringDto(saksbehandler02)) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - } + client + .post("/api/oppgaver/${oppgaverforattestant[0].id}/tildel-saksbehandler") { + addAuthToken(tokenAttestant) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody(SaksbehandlerEndringDto(saksbehandler02)) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + } - client.post("/attestervedtak") { - addAuthToken(tokenAttestant) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody( - VedtakEndringDTO( - sakIdOgReferanse = - SakIdOgReferanse( - sakId = sak.id, - referanse = behandlingId.toString(), - ), - vedtakHendelse = VedtakHendelse(123L, Tidspunkt.now(), saksbehandler02, null, null), - vedtakType = VedtakType.INNVILGELSE, - ), - ) - }.also { - val actual = - BehandlingDao( - KommerBarnetTilGodeDao(ConnectionAutoclosingTest(dataSource)), - RevurderingDao(ConnectionAutoclosingTest(dataSource)), - ConnectionAutoclosingTest(dataSource), - ).hentBehandling(behandlingId)!! - assertEquals(BehandlingStatus.ATTESTERT, actual.status) - - assertEquals(HttpStatusCode.OK, it.status) - } + client + .post("/attestervedtak") { + addAuthToken(tokenAttestant) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + VedtakEndringDTO( + sakIdOgReferanse = + SakIdOgReferanse( + sakId = sak.id, + referanse = behandlingId.toString(), + ), + vedtakHendelse = VedtakHendelse(123L, Tidspunkt.now(), saksbehandler02, null, null), + vedtakType = VedtakType.INNVILGELSE, + ), + ) + }.also { + val actual = + BehandlingDao( + KommerBarnetTilGodeDao(ConnectionAutoclosingTest(dataSource)), + RevurderingDao(ConnectionAutoclosingTest(dataSource)), + ConnectionAutoclosingTest(dataSource), + ).hentBehandling(behandlingId)!! + assertEquals(BehandlingStatus.ATTESTERT, actual.status) - client.post("/behandlinger/$behandlingId/iverksett") { - addAuthToken(tokenSaksbehandler) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody( - VedtakHendelse( - 12L, - Tidspunkt.now(), - null, - null, - null, - ), - ) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - } + assertEquals(HttpStatusCode.OK, it.status) + } - client.get("/behandlinger/$behandlingId") { - addAuthToken(tokenSaksbehandler) - }.also { - val behandling = it.body() + client + .post("/behandlinger/$behandlingId/iverksett") { + addAuthToken(tokenSaksbehandler) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + VedtakHendelse( + 12L, + Tidspunkt.now(), + null, + null, + null, + ), + ) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + } - assertEquals(HttpStatusCode.OK, it.status) - assertEquals(BehandlingStatus.IVERKSATT, behandling.status) - } + client + .get("/behandlinger/$behandlingId") { + addAuthToken(tokenSaksbehandler) + }.also { + val behandling = it.body() + + assertEquals(HttpStatusCode.OK, it.status) + assertEquals(BehandlingStatus.IVERKSATT, behandling.status) + } // KLAGE // Sniker seg inn her siden vi trenger en sak med en iverksatt behandling val klage: Klage = - client.post("/api/klage/opprett/${sak.id}") { - addAuthToken(tokenSaksbehandler) - contentType(ContentType.Application.Json) - setBody( - InnkommendeKlageDto( - mottattDato = OffsetDateTime.now().toString(), - journalpostId = "123546", - innsender = "en innsender", - ), - ) - }.body() + client + .post("/api/klage/opprett/${sak.id}") { + addAuthToken(tokenSaksbehandler) + contentType(ContentType.Application.Json) + setBody( + InnkommendeKlageDto( + mottattDato = OffsetDateTime.now().toString(), + journalpostId = "123546", + innsender = "en innsender", + ), + ) + }.body() val medOppdatertFormkrav: Klage = - client.put("/api/klage/${klage.id}/formkrav") { - addAuthToken(tokenSaksbehandler) - contentType(ContentType.Application.Json) - setBody( - VurdereFormkravDto( - Formkrav( - vedtaketKlagenGjelder = - VedtaketKlagenGjelder( - 123L.toString(), - UUID.randomUUID().toString(), - datoAttestert = null, - vedtakType = VedtakType.INNVILGELSE, - ), - erKlagerPartISaken = JaNei.JA, - erKlagenSignert = JaNei.JA, - gjelderKlagenNoeKonkretIVedtaket = JaNei.JA, - erKlagenFramsattInnenFrist = JaNei.JA, - erFormkraveneOppfylt = JaNei.JA, + client + .put("/api/klage/${klage.id}/formkrav") { + addAuthToken(tokenSaksbehandler) + contentType(ContentType.Application.Json) + setBody( + VurdereFormkravDto( + Formkrav( + vedtaketKlagenGjelder = + VedtaketKlagenGjelder( + 123L.toString(), + UUID.randomUUID().toString(), + datoAttestert = null, + vedtakType = VedtakType.INNVILGELSE, + ), + erKlagerPartISaken = JaNei.JA, + erKlagenSignert = JaNei.JA, + gjelderKlagenNoeKonkretIVedtaket = JaNei.JA, + erKlagenFramsattInnenFrist = JaNei.JA, + erFormkraveneOppfylt = JaNei.JA, + ), ), - ), - ) - }.body() + ) + }.body() client.put("/api/klage/${medOppdatertFormkrav.id}/initieltutfall") { addAuthToken(tokenSaksbehandler) contentType(ContentType.Application.Json) @@ -444,145 +468,157 @@ class VerdikjedeTest : BehandlingIntegrationTest() { ) } val medUtfall = - client.put("/api/klage/${medOppdatertFormkrav.id}/utfall") { - addAuthToken(tokenSaksbehandler) - contentType(ContentType.Application.Json) - setBody( - VurdertUtfallDto( - KlageUtfallUtenBrev.DelvisOmgjoering( - omgjoering = - KlageOmgjoering( - grunnForOmgjoering = GrunnForOmgjoering.FEIL_LOVANVENDELSE, - begrunnelse = "Vi skjønte ikke", - ), - innstilling = - InnstillingTilKabalUtenBrev( - lovhjemmel = KabalHjemmel.FTRL_3_5_TRYGDETID.name, - internKommentar = "En tekst", - innstillingTekst = "En ekstra tekst", - ), + client + .put("/api/klage/${medOppdatertFormkrav.id}/utfall") { + addAuthToken(tokenSaksbehandler) + contentType(ContentType.Application.Json) + setBody( + VurdertUtfallDto( + KlageUtfallUtenBrev.DelvisOmgjoering( + omgjoering = + KlageOmgjoering( + grunnForOmgjoering = GrunnForOmgjoering.FEIL_LOVANVENDELSE, + begrunnelse = "Vi skjønte ikke", + ), + innstilling = + InnstillingTilKabalUtenBrev( + lovhjemmel = KabalHjemmel.FTRL_3_5_TRYGDETID.name, + internKommentar = "En tekst", + innstillingTekst = "En ekstra tekst", + ), + ), ), - ), - ) - }.body() + ) + }.body() val oppgaverKlage: List = - client.get("/api/oppgaver") { + client + .get("/api/oppgaver") { + addAuthToken(tokenSaksbehandler) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + }.body() + val oppgaverforbehandlingKlage = oppgaverKlage.filter { it.referanse == klage.id.toString() } + client + .post("/api/oppgaver/${oppgaverforbehandlingKlage[0].id}/tildel-saksbehandler/") { addAuthToken(tokenSaksbehandler) header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody(SaksbehandlerEndringDto("Saksbehandler01")) }.also { assertEquals(HttpStatusCode.OK, it.status) - }.body() - val oppgaverforbehandlingKlage = oppgaverKlage.filter { it.referanse == klage.id.toString() } - client.post("/api/oppgaver/${oppgaverforbehandlingKlage[0].id}/tildel-saksbehandler/") { - addAuthToken(tokenSaksbehandler) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody(SaksbehandlerEndringDto("Saksbehandler01")) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - } + } val ferdigstiltKlage = - client.post("/api/klage/${medUtfall.id}/ferdigstill") { - addAuthToken(tokenSaksbehandler) - }.body() + client + .post("/api/klage/${medUtfall.id}/ferdigstill") { + addAuthToken(tokenSaksbehandler) + }.body() assertNotNull(ferdigstiltKlage.resultat?.opprettetOppgaveOmgjoeringId) assertNotNull(ferdigstiltKlage.resultat?.sendtInnstillingsbrev) - client.post("/grunnlagsendringshendelse/doedshendelse") { - addAuthToken(this@VerdikjedeTest.systemBruker) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody(DoedshendelsePdl("1", Endringstype.OPPRETTET, fnr, LocalDate.now())) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - } - - client.post("/grunnlagsendringshendelse/doedshendelse") { - addAuthToken(this@VerdikjedeTest.systemBruker) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody(DoedshendelsePdl("1", Endringstype.OPPRETTET, fnr, LocalDate.now())) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - } + client + .post("/grunnlagsendringshendelse/doedshendelse") { + addAuthToken(this@VerdikjedeTest.systemBruker) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody(DoedshendelsePdl("1", Endringstype.OPPRETTET, fnr, LocalDate.now())) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + } - client.post("/grunnlagsendringshendelse/utflyttingshendelse") { - addAuthToken(this@VerdikjedeTest.systemBruker) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody( - UtflyttingsHendelse( - hendelseId = "1", - endringstype = Endringstype.OPPRETTET, - fnr = fnr, - tilflyttingsLand = null, - tilflyttingsstedIUtlandet = null, - utflyttingsdato = null, - ), - ) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - } + client + .post("/grunnlagsendringshendelse/doedshendelse") { + addAuthToken(this@VerdikjedeTest.systemBruker) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody(DoedshendelsePdl("1", Endringstype.OPPRETTET, fnr, LocalDate.now())) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + } - client.post("/grunnlagsendringshendelse/forelderbarnrelasjonhendelse") { - addAuthToken(this@VerdikjedeTest.systemBruker) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody( - ForelderBarnRelasjonHendelse( - hendelseId = "1", - endringstype = Endringstype.OPPRETTET, - fnr = fnr, - relatertPersonsIdent = null, - relatertPersonsRolle = "", - minRolleForPerson = "", - relatertPersonUtenFolkeregisteridentifikator = null, - ), - ) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - } + client + .post("/grunnlagsendringshendelse/utflyttingshendelse") { + addAuthToken(this@VerdikjedeTest.systemBruker) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + UtflyttingsHendelse( + hendelseId = "1", + endringstype = Endringstype.OPPRETTET, + fnr = fnr, + tilflyttingsLand = null, + tilflyttingsstedIUtlandet = null, + utflyttingsdato = null, + ), + ) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + } - val behandlingIdNyFoerstegangsbehandling = - client.post("/behandlinger/opprettbehandling") { + client + .post("/grunnlagsendringshendelse/forelderbarnrelasjonhendelse") { addAuthToken(this@VerdikjedeTest.systemBruker) header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) setBody( - BehandlingsBehov( - 1, - Persongalleri(fnr, "innsender", emptyList(), emptyList(), emptyList()), - Tidspunkt.now().toLocalDatetimeUTC().toString(), + ForelderBarnRelasjonHendelse( + hendelseId = "1", + endringstype = Endringstype.OPPRETTET, + fnr = fnr, + relatertPersonsIdent = null, + relatertPersonsRolle = "", + minRolleForPerson = "", + relatertPersonUtenFolkeregisteridentifikator = null, ), ) - }.let { + }.also { assertEquals(HttpStatusCode.OK, it.status) - UUID.fromString(it.body()) } - client.post("/api/behandling/$behandlingIdNyFoerstegangsbehandling/avbryt") { - addAuthToken(systemBruker) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - } + val behandlingIdNyFoerstegangsbehandling = + client + .post("/behandlinger/opprettbehandling") { + addAuthToken(this@VerdikjedeTest.systemBruker) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + BehandlingsBehov( + 1, + Persongalleri(fnr, "innsender", emptyList(), emptyList(), emptyList()), + Tidspunkt.now().toLocalDatetimeUTC().toString(), + ), + ) + }.let { + assertEquals(HttpStatusCode.OK, it.status) + UUID.fromString(it.body()) + } + + client + .post("/api/behandling/$behandlingIdNyFoerstegangsbehandling/avbryt") { + addAuthToken(systemBruker) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + } - client.post("/grunnlagsendringshendelse/adressebeskyttelse") { - addAuthToken(this@VerdikjedeTest.systemBruker) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody( - Adressebeskyttelse( - hendelseId = "1", - endringstype = Endringstype.OPPRETTET, - fnr = fnr, - adressebeskyttelseGradering = AdressebeskyttelseGradering.STRENGT_FORTROLIG, - ), - ) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - } + client + .post("/grunnlagsendringshendelse/adressebeskyttelse") { + addAuthToken(this@VerdikjedeTest.systemBruker) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + Adressebeskyttelse( + hendelseId = "1", + endringstype = Endringstype.OPPRETTET, + fnr = fnr, + adressebeskyttelseGradering = AdressebeskyttelseGradering.STRENGT_FORTROLIG, + ), + ) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + } - client.get("/behandlinger/$behandlingId") { - addAuthToken(tokenSaksbehandler) - }.also { - assertEquals(HttpStatusCode.NotFound, it.status) // 404 pga adressebeskyttelse - } + client + .get("/behandlinger/$behandlingId") { + addAuthToken(tokenSaksbehandler) + }.also { + assertEquals(HttpStatusCode.NotFound, it.status) // 404 pga adressebeskyttelse + } } kotlin.runCatching { sleep(3000) } diff --git a/apps/etterlatte-behandling/src/test/kotlin/adressebeskyttelse/AdressebeskyttelseTest.kt b/apps/etterlatte-behandling/src/test/kotlin/adressebeskyttelse/AdressebeskyttelseTest.kt index 7a273c8a4e0..e86c520c70c 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/adressebeskyttelse/AdressebeskyttelseTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/adressebeskyttelse/AdressebeskyttelseTest.kt @@ -66,45 +66,49 @@ class AdressebeskyttelseTest : BehandlingIntegrationTest() { } val sak: Sak = - client.post("personer/saker/${SakType.BARNEPENSJON}") { - addAuthToken(tokenSaksbehandler) - contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + client + .post("personer/saker/${SakType.BARNEPENSJON}") { + addAuthToken(tokenSaksbehandler) + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + }.let { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + it.body() + } + Assertions.assertNotNull(sak.id) + + val behandlingId = + client + .post("/behandlinger/opprettbehandling") { + addAuthToken(tokenSaksbehandler) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + BehandlingsBehov( + sak.id, + Persongalleri(fnr, "innsender", emptyList(), emptyList(), emptyList()), + Tidspunkt.now().toLocalDatetimeUTC().toString(), + ), + ) + }.let { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + UUID.fromString(it.body()) + } + + client + .get("/behandlinger/$behandlingId") { + addAuthToken(this@AdressebeskyttelseTest.systemBruker) }.let { Assertions.assertEquals(HttpStatusCode.OK, it.status) - it.body() } - Assertions.assertNotNull(sak.id) - val behandlingId = - client.post("/behandlinger/opprettbehandling") { + client + .get("/behandlinger/$behandlingId") { addAuthToken(tokenSaksbehandler) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody( - BehandlingsBehov( - sak.id, - Persongalleri(fnr, "innsender", emptyList(), emptyList(), emptyList()), - Tidspunkt.now().toLocalDatetimeUTC().toString(), - ), - ) }.let { Assertions.assertEquals(HttpStatusCode.OK, it.status) - UUID.fromString(it.body()) } - client.get("/behandlinger/$behandlingId") { - addAuthToken(this@AdressebeskyttelseTest.systemBruker) - }.let { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - } - - client.get("/behandlinger/$behandlingId") { - addAuthToken(tokenSaksbehandler) - }.let { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - } - client.post("/grunnlagsendringshendelse/adressebeskyttelse") { addAuthToken(this@AdressebeskyttelseTest.systemBruker) header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) @@ -118,23 +122,26 @@ class AdressebeskyttelseTest : BehandlingIntegrationTest() { ) } - client.get("/behandlinger/$behandlingId") { - addAuthToken(tokenSaksbehandler) - }.let { - Assertions.assertEquals(HttpStatusCode.NotFound, it.status) - } + client + .get("/behandlinger/$behandlingId") { + addAuthToken(tokenSaksbehandler) + }.let { + Assertions.assertEquals(HttpStatusCode.NotFound, it.status) + } // smoketest - client.get("/fakeurlwithbehandlingsid/$behandlingId") { - addAuthToken(tokenSaksbehandler) - }.let { - Assertions.assertEquals(HttpStatusCode.NotFound, it.status) - } + client + .get("/fakeurlwithbehandlingsid/$behandlingId") { + addAuthToken(tokenSaksbehandler) + }.let { + Assertions.assertEquals(HttpStatusCode.NotFound, it.status) + } // systemBruker skal alltid ha tilgang - client.get("/behandlinger/$behandlingId") { - addAuthToken(this@AdressebeskyttelseTest.systemBruker) - }.let { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - } + client + .get("/behandlinger/$behandlingId") { + addAuthToken(this@AdressebeskyttelseTest.systemBruker) + }.let { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + } } } @@ -149,38 +156,41 @@ class AdressebeskyttelseTest : BehandlingIntegrationTest() { } val sak: Sak = - httpClient.post("personer/saker/${SakType.BARNEPENSJON}") { - addAuthToken(tokenSaksbehandler) - contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) - }.let { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - it.body() - } + httpClient + .post("personer/saker/${SakType.BARNEPENSJON}") { + addAuthToken(tokenSaksbehandler) + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + }.let { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + it.body() + } Assertions.assertNotNull(sak.id) val behandlingId = - httpClient.post("/behandlinger/opprettbehandling") { + httpClient + .post("/behandlinger/opprettbehandling") { + addAuthToken(tokenSaksbehandler) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + BehandlingsBehov( + sak.id, + Persongalleri(fnr, "innsender", emptyList(), emptyList(), emptyList()), + Tidspunkt.now().toLocalDatetimeUTC().toString(), + ), + ) + }.let { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + UUID.fromString(it.body()) + } + + httpClient + .get("/behandlinger/$behandlingId") { addAuthToken(tokenSaksbehandler) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody( - BehandlingsBehov( - sak.id, - Persongalleri(fnr, "innsender", emptyList(), emptyList(), emptyList()), - Tidspunkt.now().toLocalDatetimeUTC().toString(), - ), - ) }.let { Assertions.assertEquals(HttpStatusCode.OK, it.status) - UUID.fromString(it.body()) } - httpClient.get("/behandlinger/$behandlingId") { - addAuthToken(tokenSaksbehandler) - }.let { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - } - httpClient.post("/grunnlagsendringshendelse/adressebeskyttelse") { addAuthToken(this@AdressebeskyttelseTest.systemBruker) header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) @@ -207,45 +217,49 @@ class AdressebeskyttelseTest : BehandlingIntegrationTest() { } val sak: Sak = - client.post("personer/saker/${SakType.BARNEPENSJON}") { - addAuthToken(tokenSaksbehandler) - contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) - }.let { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - it.body() - } + client + .post("personer/saker/${SakType.BARNEPENSJON}") { + addAuthToken(tokenSaksbehandler) + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + }.let { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + it.body() + } Assertions.assertNotNull(sak.id) val behandlingId = - client.post("/behandlinger/opprettbehandling") { - addAuthToken(tokenSaksbehandler) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody( - BehandlingsBehov( - sak.id, - Persongalleri(fnr, "innsender", emptyList(), emptyList(), emptyList()), - Tidspunkt.now().toLocalDatetimeUTC().toString(), - ), - ) + client + .post("/behandlinger/opprettbehandling") { + addAuthToken(tokenSaksbehandler) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + BehandlingsBehov( + sak.id, + Persongalleri(fnr, "innsender", emptyList(), emptyList(), emptyList()), + Tidspunkt.now().toLocalDatetimeUTC().toString(), + ), + ) + }.let { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + UUID.fromString(it.body()) + } + + client + .get("/behandlinger/$behandlingId") { + addAuthToken(this@AdressebeskyttelseTest.systemBruker) }.let { Assertions.assertEquals(HttpStatusCode.OK, it.status) - UUID.fromString(it.body()) } - client.get("/behandlinger/$behandlingId") { - addAuthToken(this@AdressebeskyttelseTest.systemBruker) - }.let { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - } - val harTilgang: Boolean = - client.get("/$TILGANG_ROUTE_PATH/behandling/$behandlingId?$SKRIVETILGANG_CALL_QUERYPARAMETER=true") { - addAuthToken(tokenSaksbehandler) - }.let { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - it.body() - } + client + .get("/$TILGANG_ROUTE_PATH/behandling/$behandlingId?$SKRIVETILGANG_CALL_QUERYPARAMETER=true") { + addAuthToken(tokenSaksbehandler) + }.let { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + it.body() + } Assertions.assertTrue(harTilgang) client.post("/grunnlagsendringshendelse/adressebeskyttelse") { @@ -262,12 +276,13 @@ class AdressebeskyttelseTest : BehandlingIntegrationTest() { } val harIkkeTilgang: Boolean = - client.get("/$TILGANG_ROUTE_PATH/behandling/$behandlingId?$SKRIVETILGANG_CALL_QUERYPARAMETER=true") { - addAuthToken(tokenSaksbehandler) - }.let { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - it.body() - } + client + .get("/$TILGANG_ROUTE_PATH/behandling/$behandlingId?$SKRIVETILGANG_CALL_QUERYPARAMETER=true") { + addAuthToken(tokenSaksbehandler) + }.let { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + it.body() + } Assertions.assertFalse(harIkkeTilgang) } } @@ -281,13 +296,14 @@ class AdressebeskyttelseTest : BehandlingIntegrationTest() { module(applicationContext) } - httpClient.post("/personer/saker/${SakType.BARNEPENSJON}") { - addAuthToken(tokenSaksbehandler) - contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) - }.apply { - Assertions.assertEquals(HttpStatusCode.OK, status) - }.body() + httpClient + .post("/personer/saker/${SakType.BARNEPENSJON}") { + addAuthToken(tokenSaksbehandler) + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + }.apply { + Assertions.assertEquals(HttpStatusCode.OK, status) + }.body() httpClient.post("/grunnlagsendringshendelse/adressebeskyttelse") { addAuthToken(this@AdressebeskyttelseTest.systemBruker) @@ -302,13 +318,14 @@ class AdressebeskyttelseTest : BehandlingIntegrationTest() { ) } - httpClient.post("/personer/saker/${SakType.BARNEPENSJON}") { - addAuthToken(tokenSaksbehandler) - contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) - }.apply { - Assertions.assertEquals(HttpStatusCode.NotFound, status) - } + httpClient + .post("/personer/saker/${SakType.BARNEPENSJON}") { + addAuthToken(tokenSaksbehandler) + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + }.apply { + Assertions.assertEquals(HttpStatusCode.NotFound, status) + } } } } diff --git a/apps/etterlatte-behandling/src/test/kotlin/adressebeskyttelse/TilgangServiceTest.kt b/apps/etterlatte-behandling/src/test/kotlin/adressebeskyttelse/TilgangServiceTest.kt index f82e91d5606..808d202fdd5 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/adressebeskyttelse/TilgangServiceTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/adressebeskyttelse/TilgangServiceTest.kt @@ -53,7 +53,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class TilgangServiceTest(val dataSource: DataSource) { +internal class TilgangServiceTest( + val dataSource: DataSource, +) { private lateinit var tilgangService: TilgangService private lateinit var sakService: SakService private lateinit var sakRepo: SakDao diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingDaoReguleringTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingDaoReguleringTest.kt index 26cc355b1ae..edc931b41d7 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingDaoReguleringTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingDaoReguleringTest.kt @@ -25,7 +25,9 @@ import org.junit.jupiter.params.provider.MethodSource import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) -internal class BehandlingDaoReguleringTest(val dataSource: DataSource) { +internal class BehandlingDaoReguleringTest( + val dataSource: DataSource, +) { companion object { @RegisterExtension private val dbExtension = DatabaseExtension() diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingDaoTest.kt index f5e75c0d967..51781070d5d 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingDaoTest.kt @@ -43,7 +43,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class BehandlingDaoTest(val dataSource: DataSource) { +internal class BehandlingDaoTest( + val dataSource: DataSource, +) { private lateinit var sakRepo: SakDao private lateinit var behandlingRepo: BehandlingDao private lateinit var kommerBarnetTilGodeDao: KommerBarnetTilGodeDao diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingFactoryTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingFactoryTest.kt index f0e8edebdc9..cb7b108dfe9 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingFactoryTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingFactoryTest.kt @@ -198,13 +198,16 @@ class BehandlingFactoryTest { } returns mockOppgave val resultat = - behandlingFactory.opprettBehandling( - 1, - persongalleri, - datoNaa.toString(), - Vedtaksloesning.GJENNY, - behandlingFactory.hentDataForOpprettBehandling(1), - )!!.also { it.sendMeldingForHendelse() }.behandling + behandlingFactory + .opprettBehandling( + 1, + persongalleri, + datoNaa.toString(), + Vedtaksloesning.GJENNY, + behandlingFactory.hentDataForOpprettBehandling(1), + )!! + .also { it.sendMeldingForHendelse() } + .behandling Assertions.assertEquals(opprettetBehandling, resultat) Assertions.assertEquals(opprettetBehandling.sak, resultat.sak) @@ -289,13 +292,16 @@ class BehandlingFactoryTest { } returns mockOppgave val foerstegangsbehandling = - behandlingFactory.opprettBehandling( - 1, - persongalleri, - datoNaa.toString(), - Vedtaksloesning.GJENNY, - behandlingFactory.hentDataForOpprettBehandling(1), - )!!.also { it.sendMeldingForHendelse() }.behandling + behandlingFactory + .opprettBehandling( + 1, + persongalleri, + datoNaa.toString(), + Vedtaksloesning.GJENNY, + behandlingFactory.hentDataForOpprettBehandling(1), + )!! + .also { it.sendMeldingForHendelse() } + .behandling Assertions.assertTrue(foerstegangsbehandling is Foerstegangsbehandling) @@ -378,13 +384,16 @@ class BehandlingFactoryTest { } just runs val foerstegangsbehandling = - behandlingFactory.opprettBehandling( - 1, - persongalleri, - datoNaa.toString(), - Vedtaksloesning.GJENNY, - behandlingFactory.hentDataForOpprettBehandling(1), - )!!.also { it.sendMeldingForHendelse() }.behandling + behandlingFactory + .opprettBehandling( + 1, + persongalleri, + datoNaa.toString(), + Vedtaksloesning.GJENNY, + behandlingFactory.hentDataForOpprettBehandling(1), + )!! + .also { it.sendMeldingForHendelse() } + .behandling Assertions.assertTrue(foerstegangsbehandling is Foerstegangsbehandling) @@ -393,13 +402,14 @@ class BehandlingFactoryTest { } returns listOf(underArbeidBehandling) val nyfoerstegangsbehandling = - behandlingFactory.opprettBehandling( - 1, - persongalleri, - datoNaa.toString(), - Vedtaksloesning.GJENNY, - behandlingFactory.hentDataForOpprettBehandling(1), - )?.also { it.sendMeldingForHendelse() } + behandlingFactory + .opprettBehandling( + 1, + persongalleri, + datoNaa.toString(), + Vedtaksloesning.GJENNY, + behandlingFactory.hentDataForOpprettBehandling(1), + )?.also { it.sendMeldingForHendelse() } ?.behandling Assertions.assertTrue(nyfoerstegangsbehandling is Foerstegangsbehandling) @@ -489,13 +499,16 @@ class BehandlingFactoryTest { } just runs val foerstegangsbehandling = - behandlingFactory.opprettBehandling( - 1, - persongalleri, - datoNaa.toString(), - Vedtaksloesning.GJENNY, - behandlingFactory.hentDataForOpprettBehandling(1), - )!!.also { it.sendMeldingForHendelse() }.behandling + behandlingFactory + .opprettBehandling( + 1, + persongalleri, + datoNaa.toString(), + Vedtaksloesning.GJENNY, + behandlingFactory.hentDataForOpprettBehandling(1), + )!! + .also { it.sendMeldingForHendelse() } + .behandling Assertions.assertTrue(foerstegangsbehandling is Foerstegangsbehandling) @@ -547,13 +560,15 @@ class BehandlingFactoryTest { ) val revurderingsBehandling = - behandlingFactory.opprettBehandling( - 1, - persongalleri, - datoNaa.toString(), - Vedtaksloesning.GJENNY, - behandlingFactory.hentDataForOpprettBehandling(1), - )?.also { it.sendMeldingForHendelse() }?.behandling + behandlingFactory + .opprettBehandling( + 1, + persongalleri, + datoNaa.toString(), + Vedtaksloesning.GJENNY, + behandlingFactory.hentDataForOpprettBehandling(1), + )?.also { it.sendMeldingForHendelse() } + ?.behandling Assertions.assertTrue(revurderingsBehandling is Revurdering) verify { grunnlagService.leggInnNyttGrunnlag(any(), any()) diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingServiceImplTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingServiceImplTest.kt index f1ed91d54c4..153b4bd91be 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingServiceImplTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingServiceImplTest.kt @@ -282,13 +282,9 @@ internal class BehandlingServiceImplTest { nyKontekstMedBrukerOgDatabaseContext( mockSaksbehandler("ident"), object : DatabaseKontekst { - override fun activeTx(): Connection { - throw IllegalArgumentException() - } + override fun activeTx(): Connection = throw IllegalArgumentException() - override fun harIntransaction(): Boolean { - throw NotImplementedException("not implemented") - } + override fun harIntransaction(): Boolean = throw NotImplementedException("not implemented") override fun inTransaction(block: () -> T): T { try { diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/AktivitetspliktDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/AktivitetspliktDaoTest.kt index bbcf2867157..e1764e3318a 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/AktivitetspliktDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/AktivitetspliktDaoTest.kt @@ -22,7 +22,9 @@ import java.util.UUID import javax.sql.DataSource @ExtendWith(DatabaseExtension::class) -class AktivitetspliktDaoTest(ds: DataSource) { +class AktivitetspliktDaoTest( + ds: DataSource, +) { private val dao = AktivitetspliktDao(ConnectionAutoclosingTest(ds)) private val sakDao = SakDao(ConnectionAutoclosingTest(ds)) diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktAktivitetsgradDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktAktivitetsgradDaoTest.kt index 8dcac782b20..ef67d8161c3 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktAktivitetsgradDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktAktivitetsgradDaoTest.kt @@ -27,7 +27,9 @@ import java.util.UUID import javax.sql.DataSource @ExtendWith(DatabaseExtension::class) -class AktivitetspliktAktivitetsgradDaoTest(ds: DataSource) { +class AktivitetspliktAktivitetsgradDaoTest( + ds: DataSource, +) { private val dao = AktivitetspliktAktivitetsgradDao(ConnectionAutoclosingTest(ds)) private val sakDao = SakDao(ConnectionAutoclosingTest(ds)) private val oppgaveDao = OppgaveDaoImpl(ConnectionAutoclosingTest(ds)) diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktUnntakDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktUnntakDaoTest.kt index 7fb17c0f776..115393e5819 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktUnntakDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/aktivitetsplikt/vurdering/AktivitetspliktUnntakDaoTest.kt @@ -27,7 +27,9 @@ import java.util.UUID import javax.sql.DataSource @ExtendWith(DatabaseExtension::class) -class AktivitetspliktUnntakDaoTest(ds: DataSource) { +class AktivitetspliktUnntakDaoTest( + ds: DataSource, +) { private val dao = AktivitetspliktUnntakDao(ConnectionAutoclosingTest(ds)) private val sakDao = SakDao(ConnectionAutoclosingTest(ds)) private val oppgaveDao = OppgaveDaoImpl(ConnectionAutoclosingTest(ds)) diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/behandlinginfo/BehandlingInfoDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/behandlinginfo/BehandlingInfoDaoTest.kt index 187dfe03f25..9594c04aeaf 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/behandlinginfo/BehandlingInfoDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/behandlinginfo/BehandlingInfoDaoTest.kt @@ -32,7 +32,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class BehandlingInfoDaoTest(val dataSource: DataSource) { +internal class BehandlingInfoDaoTest( + val dataSource: DataSource, +) { private lateinit var behandlingDao: BehandlingDao private lateinit var sakDao: SakDao private lateinit var dao: BehandlingInfoDao diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/bosattutland/BosattUtlandDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/bosattutland/BosattUtlandDaoTest.kt index 65671dc2256..423f27834dc 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/bosattutland/BosattUtlandDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/bosattutland/BosattUtlandDaoTest.kt @@ -15,7 +15,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class BosattUtlandDaoTest(val dataSource: DataSource) { +internal class BosattUtlandDaoTest( + val dataSource: DataSource, +) { private lateinit var bosattUtlandDao: BosattUtlandDao @BeforeAll diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/domain/RevurderingTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/domain/RevurderingTest.kt index dfe9567a70f..037270ee5cd 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/domain/RevurderingTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/domain/RevurderingTest.kt @@ -22,31 +22,38 @@ internal class RevurderingTest { @Test fun `regulering kan endre tilstander`() { val id = UUID.randomUUID() - Revurdering.opprett( - id = id, - sak = - Sak( - ident = "", - sakType = SakType.BARNEPENSJON, - id = 1, - enhet = Enheter.defaultEnhet.enhetNr, - ), - behandlingOpprettet = Tidspunkt.now().toLocalDatetimeUTC(), - sistEndret = Tidspunkt.now().toLocalDatetimeUTC(), - status = BehandlingStatus.OPPRETTET, - kommerBarnetTilgode = kommerBarnetTilGodeVurdering(id), - virkningstidspunkt = virkningstidspunktVurdering(), - utlandstilknytning = null, - boddEllerArbeidetUtlandet = null, - revurderingsaarsak = Revurderingaarsak.REGULERING, - prosesstype = Prosesstype.MANUELL, - kilde = Vedtaksloesning.GJENNY, - revurderingInfo = null, - begrunnelse = null, - relatertBehandlingId = null, - sendeBrev = true, - ).tilVilkaarsvurdert().tilTrygdetidOppdatert().tilBeregnet() - .tilVilkaarsvurdert().tilTrygdetidOppdatert().tilBeregnet().tilFattetVedtak().tilAttestert() + Revurdering + .opprett( + id = id, + sak = + Sak( + ident = "", + sakType = SakType.BARNEPENSJON, + id = 1, + enhet = Enheter.defaultEnhet.enhetNr, + ), + behandlingOpprettet = Tidspunkt.now().toLocalDatetimeUTC(), + sistEndret = Tidspunkt.now().toLocalDatetimeUTC(), + status = BehandlingStatus.OPPRETTET, + kommerBarnetTilgode = kommerBarnetTilGodeVurdering(id), + virkningstidspunkt = virkningstidspunktVurdering(), + utlandstilknytning = null, + boddEllerArbeidetUtlandet = null, + revurderingsaarsak = Revurderingaarsak.REGULERING, + prosesstype = Prosesstype.MANUELL, + kilde = Vedtaksloesning.GJENNY, + revurderingInfo = null, + begrunnelse = null, + relatertBehandlingId = null, + sendeBrev = true, + ).tilVilkaarsvurdert() + .tilTrygdetidOppdatert() + .tilBeregnet() + .tilVilkaarsvurdert() + .tilTrygdetidOppdatert() + .tilBeregnet() + .tilFattetVedtak() + .tilAttestert() .tilIverksatt() } @@ -74,8 +81,15 @@ internal class RevurderingTest { @Test fun `kan endre status gjennom gyldig statusendringsflyt - samordning`() { val actual = - revurdering.tilVilkaarsvurdert().tilTrygdetidOppdatert().tilBeregnet().tilFattetVedtak() - .tilAttestert().tilTilSamordning().tilSamordnet().tilIverksatt() + revurdering + .tilVilkaarsvurdert() + .tilTrygdetidOppdatert() + .tilBeregnet() + .tilFattetVedtak() + .tilAttestert() + .tilTilSamordning() + .tilSamordnet() + .tilIverksatt() Assertions.assertEquals(BehandlingStatus.IVERKSATT, actual.status) } @@ -164,7 +178,12 @@ internal class RevurderingTest { @Test fun fattet() { - val fattet = revurdering.tilVilkaarsvurdert().tilTrygdetidOppdatert().tilBeregnet().tilFattetVedtak() + val fattet = + revurdering + .tilVilkaarsvurdert() + .tilTrygdetidOppdatert() + .tilBeregnet() + .tilFattetVedtak() assertKanGaaTilAlleStatuser(fattet) } diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/generellbehandling/GenerellBehandlingDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/generellbehandling/GenerellBehandlingDaoTest.kt index c63ea151c9c..69728b1fe0c 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/generellbehandling/GenerellBehandlingDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/generellbehandling/GenerellBehandlingDaoTest.kt @@ -19,7 +19,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class GenerellBehandlingDaoTest(val dataSource: DataSource) { +internal class GenerellBehandlingDaoTest( + val dataSource: DataSource, +) { private lateinit var dao: GenerellBehandlingDao @BeforeAll diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/generellbehandling/GenerellBehandlingServiceTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/generellbehandling/GenerellBehandlingServiceTest.kt index 25145449ad6..5603bddb304 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/generellbehandling/GenerellBehandlingServiceTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/generellbehandling/GenerellBehandlingServiceTest.kt @@ -64,7 +64,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class GenerellBehandlingServiceTest(val dataSource: DataSource) { +internal class GenerellBehandlingServiceTest( + val dataSource: DataSource, +) { private lateinit var dao: GenerellBehandlingDao private lateinit var oppgaveDao: OppgaveDao private lateinit var hendelseDao: HendelseDao @@ -173,10 +175,11 @@ internal class GenerellBehandlingServiceTest(val dataSource: DataSource) { } returns grunnlagsopplysningMedPersonopplysning val manueltOpprettetBehandling = - GenerellBehandling.opprettFraType( - GenerellBehandling.GenerellBehandlingType.KRAVPAKKE_UTLAND, - sak.id, - ).copy(tilknyttetBehandling = foerstegangsbehandling.id, status = GenerellBehandling.Status.ATTESTERT) + GenerellBehandling + .opprettFraType( + GenerellBehandling.GenerellBehandlingType.KRAVPAKKE_UTLAND, + sak.id, + ).copy(tilknyttetBehandling = foerstegangsbehandling.id, status = GenerellBehandling.Status.ATTESTERT) val opprettBehandlingGenerell = service.opprettBehandling(manueltOpprettetBehandling, SAKSBEHANDLER) val kravpakkeMedArbeidetUtlandet = runBlocking { service.hentKravpakkeForSak(sak.id, brukerTokenInfo) } @@ -574,7 +577,8 @@ internal class GenerellBehandlingServiceTest(val dataSource: DataSource) { val attestant = ATTESTANT val attesteringsOppgave = - oppgaveService.hentOppgaverForReferanse(opprettBehandling.id.toString()) + oppgaveService + .hentOppgaverForReferanse(opprettBehandling.id.toString()) .single(OppgaveIntern::erAttestering) val trettidagerfrem = Tidspunkt.now().plus(30L, ChronoUnit.DAYS).toNorskLocalDate() @@ -669,7 +673,8 @@ internal class GenerellBehandlingServiceTest(val dataSource: DataSource) { service.sendTilAttestering(behandlingMedKravpakke, SAKSBEHANDLER) val nyAttesteringsoppgave = - oppgaveService.hentOppgaverForReferanse(behandling.id.toString()) + oppgaveService + .hentOppgaverForReferanse(behandling.id.toString()) .single(OppgaveIntern::erAttestering) oppgaveService.tildelSaksbehandler(nyAttesteringsoppgave.id, ATTESTANT.ident) diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/klage/KlageDaoImplTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/klage/KlageDaoImplTest.kt index 5e69d923019..2d71f166414 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/klage/KlageDaoImplTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/klage/KlageDaoImplTest.kt @@ -31,7 +31,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class KlageDaoImplTest(val dataSource: DataSource) { +internal class KlageDaoImplTest( + val dataSource: DataSource, +) { private lateinit var sakRepo: SakDao private lateinit var klageDao: KlageDaoImpl diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/klage/KlageRoutesIntegrationTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/klage/KlageRoutesIntegrationTest.kt index 319f4e5d67c..377c2e0d00c 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/klage/KlageRoutesIntegrationTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/klage/KlageRoutesIntegrationTest.kt @@ -155,7 +155,8 @@ class KlageRoutesIntegrationTest : BehandlingIntegrationTest() { assertEquals(HttpStatusCode.NotFound, it.status) } val hentetMedTilgang = - client.getAndAssertOk("/api/klage/${klage.id}", tokenSaksbehandlerMedStrengtFortrolig) + client + .getAndAssertOk("/api/klage/${klage.id}", tokenSaksbehandlerMedStrengtFortrolig) .body() assertEquals( klage.copy(sak = klage.sak.copy(enhet = Enheter.STRENGT_FORTROLIG.enhetNr)), @@ -214,11 +215,12 @@ class KlageRoutesIntegrationTest : BehandlingIntegrationTest() { vurderFormkrav(opprettKlage(sak, client), client) val oppdatertKlage = - client.putAndAssertOk( - "/api/klage/${klage.id}/initieltutfall", - tokenSaksbehandler, - InitieltUtfallMedBegrunnelseDto(KlageUtfall.STADFESTE_VEDTAK, "Begrunnelse"), - ).body() + client + .putAndAssertOk( + "/api/klage/${klage.id}/initieltutfall", + tokenSaksbehandler, + InitieltUtfallMedBegrunnelseDto(KlageUtfall.STADFESTE_VEDTAK, "Begrunnelse"), + ).body() oppdatertKlage shouldBeEqual hentKlage(client, klage.id) with(oppdatertKlage.initieltUtfall!!) { @@ -267,11 +269,12 @@ class KlageRoutesIntegrationTest : BehandlingIntegrationTest() { tildelOppgavenForKlagen(client, klage, attestantIdent) val attestert: Klage = - client.postAndAssertOk( - "/api/klage/${klage.id}/vedtak/attester", - tokenAttestant, - KlageAttesterRequest("Laissez un commentaire ici"), - ).body() + client + .postAndAssertOk( + "/api/klage/${klage.id}/vedtak/attester", + tokenAttestant, + KlageAttesterRequest("Laissez un commentaire ici"), + ).body() coVerifyAll { vedtakKlient.lagreVedtakKlage(any(), any()) @@ -304,11 +307,12 @@ class KlageRoutesIntegrationTest : BehandlingIntegrationTest() { tildelOppgavenForKlagen(client, klage, attestantIdent) val underkjent: Klage = - client.postAndAssertOk( - "/api/klage/${klage.id}/vedtak/underkjenn", - tokenAttestant, - KlageUnderkjennRequest("Laissez un commentaire ici, s'il te plait", "VALGT_BEGRUNNELSE"), - ).body() + client + .postAndAssertOk( + "/api/klage/${klage.id}/vedtak/underkjenn", + tokenAttestant, + KlageUnderkjennRequest("Laissez un commentaire ici, s'il te plait", "VALGT_BEGRUNNELSE"), + ).body() coVerifyAll { vedtakKlient.lagreVedtakKlage(any(), any()) @@ -323,7 +327,8 @@ class KlageRoutesIntegrationTest : BehandlingIntegrationTest() { } val hendelserIBehandling: List = - client.getAndAssertOk("/api/sak/${sak.id}/hendelser", tokenAttestant) + client + .getAndAssertOk("/api/sak/${sak.id}/hendelser", tokenAttestant) .body>() .filter { it.behandlingId == klage.id } @@ -335,13 +340,14 @@ class KlageRoutesIntegrationTest : BehandlingIntegrationTest() { private suspend fun opprettSak(client: HttpClient): Sak { val fnr = SOEKER_FOEDSELSNUMMER.value val sak: Sak = - client.post("/personer/saker/${SakType.BARNEPENSJON}") { - addAuthToken(tokenSaksbehandler) - contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) - }.apply { - assertEquals(HttpStatusCode.OK, status) - }.body() + client + .post("/personer/saker/${SakType.BARNEPENSJON}") { + addAuthToken(tokenSaksbehandler) + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + }.apply { + assertEquals(HttpStatusCode.OK, status) + }.body() return sak } @@ -351,17 +357,18 @@ class KlageRoutesIntegrationTest : BehandlingIntegrationTest() { mottattDato: String = OffsetDateTime.now().toString(), ): Klage { val klage: Klage = - client.post("/api/klage/opprett/${sak.id}") { - addAuthToken(tokenSaksbehandler) - contentType(ContentType.Application.Json) - setBody( - mapOf( - "mottattDato" to mottattDato, - "journalpostId" to "", - "innsender" to "En klager", - ).toJson(), - ) - }.body() + client + .post("/api/klage/opprett/${sak.id}") { + addAuthToken(tokenSaksbehandler) + contentType(ContentType.Application.Json) + setBody( + mapOf( + "mottattDato" to mottattDato, + "journalpostId" to "", + "innsender" to "En klager", + ).toJson(), + ) + }.body() return klage } @@ -399,41 +406,41 @@ class KlageRoutesIntegrationTest : BehandlingIntegrationTest() { klage: Klage, client: HttpClient, erKlagenFramsattInnenFrist: JaNei = JaNei.JA, - ): Klage { - return client.put("/api/klage/${klage.id}/formkrav") { - addAuthToken(tokenSaksbehandler) - contentType(ContentType.Application.Json) - setBody( - VurdereFormkravDto( - Formkrav( - begrunnelse = "Begrunnelse", - erFormkraveneOppfylt = JaNei.JA, - erKlagenSignert = JaNei.JA, - erKlagerPartISaken = JaNei.JA, - vedtaketKlagenGjelder = - VedtaketKlagenGjelder( - "12", - UUID.randomUUID().toString(), - ZonedDateTime.now(), - null, - ), - gjelderKlagenNoeKonkretIVedtaket = JaNei.JA, - erKlagenFramsattInnenFrist = erKlagenFramsattInnenFrist, + ): Klage = + client + .put("/api/klage/${klage.id}/formkrav") { + addAuthToken(tokenSaksbehandler) + contentType(ContentType.Application.Json) + setBody( + VurdereFormkravDto( + Formkrav( + begrunnelse = "Begrunnelse", + erFormkraveneOppfylt = JaNei.JA, + erKlagenSignert = JaNei.JA, + erKlagerPartISaken = JaNei.JA, + vedtaketKlagenGjelder = + VedtaketKlagenGjelder( + "12", + UUID.randomUUID().toString(), + ZonedDateTime.now(), + null, + ), + gjelderKlagenNoeKonkretIVedtaket = JaNei.JA, + erKlagenFramsattInnenFrist = erKlagenFramsattInnenFrist, + ), ), - ), - ) - }.body() - } + ) + }.body() private suspend fun fattVedtak( klage: Klage, client: HttpClient, - ): Klage { - return client.post("/api/klage/${klage.id}/vedtak/fatt") { - addAuthToken(tokenSaksbehandler) - contentType(ContentType.Application.Json) - }.body() - } + ): Klage = + client + .post("/api/klage/${klage.id}/vedtak/fatt") { + addAuthToken(tokenSaksbehandler) + contentType(ContentType.Application.Json) + }.body() private suspend fun opprettKlageOgFattVedtakOmAvvisning( client: HttpClient, @@ -454,24 +461,26 @@ class KlageRoutesIntegrationTest : BehandlingIntegrationTest() { saksbehandler: String, ) { val oppgaver: List = - client.get("/api/oppgaver") { - addAuthToken(tokenSaksbehandler) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - }.body() + client + .get("/api/oppgaver") { + addAuthToken(tokenSaksbehandler) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + }.body() val oppgave = oppgaver.single { it.referanse == klage.id.toString() } println("Tildeler oppgave ${oppgave.id} til saksbehandler $saksbehandler for klage ${klage.id}") - client.post("/api/oppgaver/${oppgave.id}/tildel-saksbehandler") { - val dto = SaksbehandlerEndringDto(saksbehandler) - addAuthToken(tokenSaksbehandler) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody(dto) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - } + client + .post("/api/oppgaver/${oppgave.id}/tildel-saksbehandler") { + val dto = SaksbehandlerEndringDto(saksbehandler) + addAuthToken(tokenSaksbehandler) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody(dto) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + } } private suspend fun hentKlage( @@ -484,17 +493,16 @@ class KlageRoutesIntegrationTest : BehandlingIntegrationTest() { url: String, token: String, block: ((HttpResponse) -> Unit)? = null, - ): HttpResponse { - return get(url, token, block) + ): HttpResponse = + get(url, token, block) .also { assertEquals(HttpStatusCode.OK, it.status) } - } private fun HttpClient.get( url: String, token: String, block: ((HttpResponse) -> Unit)? = null, - ): HttpResponse { - return runBlocking { + ): HttpResponse = + runBlocking { val response = get(url) { addAuthToken(token) @@ -502,19 +510,17 @@ class KlageRoutesIntegrationTest : BehandlingIntegrationTest() { block?.invoke(response) response } - } private suspend fun HttpClient.postAndAssertOk( s: String, token: String, body: Any? = null, - ): HttpResponse { - return post(s) { + ): HttpResponse = + post(s) { contentType(ContentType.Application.Json) setBody(body) addAuthToken(token) } - } private suspend fun HttpClient.patchAndAssertOk( url: String, @@ -534,13 +540,12 @@ class KlageRoutesIntegrationTest : BehandlingIntegrationTest() { url: String, token: String, body: Any? = null, - ): HttpResponse { - return put(url) { + ): HttpResponse = + put(url) { contentType(ContentType.Application.Json) setBody(body) addAuthToken(token) } - } private fun withTestApplication(block: suspend (client: HttpClient) -> Unit) { testApplication { diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/klage/KlageServiceImplTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/klage/KlageServiceImplTest.kt index 9979d48a11b..f4bc49a853d 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/klage/KlageServiceImplTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/klage/KlageServiceImplTest.kt @@ -392,8 +392,10 @@ internal class KlageServiceImplTest : BehandlingIntegrationTest() { inTransaction { val omgjoeringsOppgave = - oppgaveService.hentOppgaverForReferanse(klage.id.toString()) - .single { it.type == OppgaveType.OMGJOERING }.also { + oppgaveService + .hentOppgaverForReferanse(klage.id.toString()) + .single { it.type == OppgaveType.OMGJOERING } + .also { it.saksbehandler shouldBe null it.sakId shouldBe klage.sak.id it.kilde shouldBe OppgaveKilde.BEHANDLING diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/klage/VedtaksbehandlingRoutesIntegrationTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/klage/VedtaksbehandlingRoutesIntegrationTest.kt index 252c8219418..f61abfd0189 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/klage/VedtaksbehandlingRoutesIntegrationTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/klage/VedtaksbehandlingRoutesIntegrationTest.kt @@ -212,17 +212,18 @@ class VedtaksbehandlingRoutesIntegrationTest : BehandlingIntegrationTest() { sak: Sak, ): Klage { val klage: Klage = - client.post("/api/klage/opprett/${sak.id}") { - addAuthToken(tokenSaksbehandler) - contentType(ContentType.Application.Json) - setBody( - InnkommendeKlageDto( - mottattDato = OffsetDateTime.now().toString(), - journalpostId = "", - innsender = "En klager", - ), - ) - }.body() + client + .post("/api/klage/opprett/${sak.id}") { + addAuthToken(tokenSaksbehandler) + contentType(ContentType.Application.Json) + setBody( + InnkommendeKlageDto( + mottattDato = OffsetDateTime.now().toString(), + journalpostId = "", + innsender = "En klager", + ), + ) + }.body() return klage } diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/revurdering/RevurderingServiceIntegrationTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/revurdering/RevurderingServiceIntegrationTest.kt index f34b433612e..c0dfe7bdc9c 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/revurdering/RevurderingServiceIntegrationTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/revurdering/RevurderingServiceIntegrationTest.kt @@ -799,7 +799,8 @@ class RevurderingServiceIntegrationTest : BehandlingIntegrationTest() { saksbehandler = saksbehandler, ) applicationContext.klageService.ferdigstillKlage(klageId = klage.id, saksbehandler = saksbehandler) - applicationContext.oppgaveService.hentOppgaverForSak(sak.id) + applicationContext.oppgaveService + .hentOppgaverForSak(sak.id) .first { it.type == OppgaveType.OMGJOERING } } inTransaction { diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/sjekkliste/SjekklisteIntegrationTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/sjekkliste/SjekklisteIntegrationTest.kt index eba7d21980b..44a07ff173c 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/sjekkliste/SjekklisteIntegrationTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/sjekkliste/SjekklisteIntegrationTest.kt @@ -27,7 +27,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -class SjekklisteIntegrationTest(val dataSource: DataSource) { +class SjekklisteIntegrationTest( + val dataSource: DataSource, +) { private val user = mockk().apply { every { this@apply.name() } returns "Z123456" diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/tilbakekreving/TilbakekrevingDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/tilbakekreving/TilbakekrevingDaoTest.kt index 3293a8de8f7..3492bd610fa 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/tilbakekreving/TilbakekrevingDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/tilbakekreving/TilbakekrevingDaoTest.kt @@ -22,7 +22,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -class TilbakekrevingDaoTest(val dataSource: DataSource) { +class TilbakekrevingDaoTest( + val dataSource: DataSource, +) { private lateinit var sakDao: SakDao private lateinit var tilbakekrevingDao: TilbakekrevingDao diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/tilbakekreving/TilbakekrevingRoutesIntegrationTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/tilbakekreving/TilbakekrevingRoutesIntegrationTest.kt index 5b05657bf0d..348c0b51c33 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/tilbakekreving/TilbakekrevingRoutesIntegrationTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/tilbakekreving/TilbakekrevingRoutesIntegrationTest.kt @@ -88,10 +88,11 @@ class TilbakekrevingRoutesIntegrationTest : BehandlingIntegrationTest() { ) val oppdatertTilbakekreving: TilbakekrevingBehandling = - client.getAndAssertOk( - "/api/tilbakekreving/${tilbakekreving.id}", - tokenSaksbehandler, - ).body() + client + .getAndAssertOk( + "/api/tilbakekreving/${tilbakekreving.id}", + tokenSaksbehandler, + ).body() oppdatertTilbakekreving.tilbakekreving.vurdering?.beskrivelse shouldBe "en ny beskrivelse" } @@ -114,12 +115,15 @@ class TilbakekrevingRoutesIntegrationTest : BehandlingIntegrationTest() { ) val oppdatertTilbakekreving: TilbakekrevingBehandling = - client.getAndAssertOk( - "/api/tilbakekreving/${tilbakekreving.id}", - tokenSaksbehandler, - ).body() - - oppdatertTilbakekreving.tilbakekreving.perioder.first().ytelse.nettoTilbakekreving shouldBe 100 + client + .getAndAssertOk( + "/api/tilbakekreving/${tilbakekreving.id}", + tokenSaksbehandler, + ).body() + + oppdatertTilbakekreving.tilbakekreving.perioder + .first() + .ytelse.nettoTilbakekreving shouldBe 100 } } @@ -205,10 +209,11 @@ class TilbakekrevingRoutesIntegrationTest : BehandlingIntegrationTest() { ) val oppdatertTilbakekreving: TilbakekrevingBehandling = - client.getAndAssertOk( - "/api/tilbakekreving/${tilbakekreving.id}", - tokenSaksbehandler, - ).body() + client + .getAndAssertOk( + "/api/tilbakekreving/${tilbakekreving.id}", + tokenSaksbehandler, + ).body() oppdatertTilbakekreving.sendeBrev shouldBe false } @@ -222,10 +227,11 @@ class TilbakekrevingRoutesIntegrationTest : BehandlingIntegrationTest() { val tilbakekreving = opprettTilbakekreving(sak, client) val tilbakekrevinger: List = - client.getAndAssertOk( - "/api/tilbakekreving/sak/${tilbakekreving.sak.id}", - tokenSaksbehandler, - ).body() + client + .getAndAssertOk( + "/api/tilbakekreving/sak/${tilbakekreving.sak.id}", + tokenSaksbehandler, + ).body() tilbakekrevinger.size shouldBe 1 } @@ -303,24 +309,26 @@ class TilbakekrevingRoutesIntegrationTest : BehandlingIntegrationTest() { client: HttpClient, ): TilbakekrevingBehandling { val tilbakekreving: TilbakekrevingBehandling = - client.post("/tilbakekreving/${sak.id}") { - addAuthToken(systemBruker) - contentType(ContentType.Application.Json) - setBody(kravgrunnlag(sak)) - }.body() + client + .post("/tilbakekreving/${sak.id}") { + addAuthToken(systemBruker) + contentType(ContentType.Application.Json) + setBody(kravgrunnlag(sak)) + }.body() return tilbakekreving } private suspend fun opprettSak(client: HttpClient): Sak { val fnr = SOEKER_FOEDSELSNUMMER.value val sak: Sak = - client.post("/personer/saker/${SakType.BARNEPENSJON}") { - addAuthToken(tokenSaksbehandler) - contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) - }.apply { - assertEquals(HttpStatusCode.OK, status) - }.body() + client + .post("/personer/saker/${SakType.BARNEPENSJON}") { + addAuthToken(tokenSaksbehandler) + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + }.apply { + assertEquals(HttpStatusCode.OK, status) + }.body() return sak } @@ -328,17 +336,16 @@ class TilbakekrevingRoutesIntegrationTest : BehandlingIntegrationTest() { url: String, token: String, block: ((HttpResponse) -> Unit)? = null, - ): HttpResponse { - return get(url, token, block) + ): HttpResponse = + get(url, token, block) .also { assertEquals(HttpStatusCode.OK, it.status) } - } private fun HttpClient.get( url: String, token: String, block: ((HttpResponse) -> Unit)? = null, - ): HttpResponse { - return runBlocking { + ): HttpResponse = + runBlocking { val response = get(url) { addAuthToken(token) @@ -346,31 +353,28 @@ class TilbakekrevingRoutesIntegrationTest : BehandlingIntegrationTest() { block?.invoke(response) response } - } private suspend fun HttpClient.postAndAssertOk( s: String, token: String, body: Any? = null, - ): HttpResponse { - return post(s) { + ): HttpResponse = + post(s) { contentType(ContentType.Application.Json) setBody(body) addAuthToken(token) } - } private suspend fun HttpClient.putAndAssertOk( url: String, token: String, body: Any? = null, - ): HttpResponse { - return put(url) { + ): HttpResponse = + put(url) { contentType(ContentType.Application.Json) setBody(body) addAuthToken(token) }.also { assertEquals(HttpStatusCode.OK, it.status) } - } private fun withTestApplication(block: suspend (client: HttpClient) -> Unit) { testApplication { diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/tilbakekreving/TilbakekrevingServiceIntegrationTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/tilbakekreving/TilbakekrevingServiceIntegrationTest.kt index 491cd102029..3f32bb6c745 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/tilbakekreving/TilbakekrevingServiceIntegrationTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/tilbakekreving/TilbakekrevingServiceIntegrationTest.kt @@ -453,19 +453,18 @@ internal class TilbakekrevingServiceIntegrationTest : BehandlingIntegrationTest( private fun tilbakekrevingsvedtak( saksbehandler: Saksbehandler, enhet: String, - ): TilbakekrevingVedtakLagretDto { - return TilbakekrevingVedtakLagretDto( + ): TilbakekrevingVedtakLagretDto = + TilbakekrevingVedtakLagretDto( id = 1L, fattetAv = saksbehandler.ident, enhet = enhet, dato = LocalDate.now(), ) - } private fun tilbakekrevingPerioder(tilbakekreving: TilbakekrevingBehandling) = listOf(oppdatertPeriode(tilbakekreving)) - private fun oppdatertPeriode(tilbakekreving: TilbakekrevingBehandling): TilbakekrevingPeriode { - return tilbakekreving.tilbakekreving.perioder.first().let { + private fun oppdatertPeriode(tilbakekreving: TilbakekrevingBehandling): TilbakekrevingPeriode = + tilbakekreving.tilbakekreving.perioder.first().let { it.copy( ytelse = it.ytelse.copy( @@ -480,7 +479,6 @@ internal class TilbakekrevingServiceIntegrationTest : BehandlingIntegrationTest( ), ) } - } private fun opprettetBrevDto(brevId: Long) = OpprettetBrevDto( diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/vedtaksbehandling/VedtaksbehandlingDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/vedtaksbehandling/VedtaksbehandlingDaoTest.kt index 127e7679330..6dd81aefa8b 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/vedtaksbehandling/VedtaksbehandlingDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/vedtaksbehandling/VedtaksbehandlingDaoTest.kt @@ -40,7 +40,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class VedtaksbehandlingDaoTest(val dataSource: DataSource) { +internal class VedtaksbehandlingDaoTest( + val dataSource: DataSource, +) { private lateinit var sakRepo: SakDao private lateinit var vedtaksbehandlingDao: VedtaksbehandlingDao private lateinit var behandlingDao: BehandlingDao @@ -88,7 +90,8 @@ internal class VedtaksbehandlingDaoTest(val dataSource: DataSource) { val sak1 = sakRepo.opprettSak("123", SakType.BARNEPENSJON, Enheter.defaultEnhet.enhetNr) val klage = - Klage.ny(sak1, InnkommendeKlage(LocalDate.now(), "JP-24601", "Jean")) + Klage + .ny(sak1, InnkommendeKlage(LocalDate.now(), "JP-24601", "Jean")) .copy(status = KlageStatus.UTFALL_VURDERT) klageDao.lagreKlage(klage) diff --git a/apps/etterlatte-behandling/src/test/kotlin/common/TidligsteIverksatteVirkningstidspunktKtTest.kt b/apps/etterlatte-behandling/src/test/kotlin/common/TidligsteIverksatteVirkningstidspunktKtTest.kt index e56b741ea27..6afae0d3172 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/common/TidligsteIverksatteVirkningstidspunktKtTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/common/TidligsteIverksatteVirkningstidspunktKtTest.kt @@ -90,8 +90,8 @@ class TidligsteIverksatteVirkningstidspunktKtTest { private fun mockBehandlingMedStatusOgVirkdato( behandlingStatus: BehandlingStatus, virkDato: YearMonth? = null, - ): Behandling { - return mockk { + ): Behandling = + mockk { every { status } returns behandlingStatus if (virkDato != null) { every { virkningstidspunkt } returns @@ -102,5 +102,4 @@ class TidligsteIverksatteVirkningstidspunktKtTest { every { virkningstidspunkt } returns null } } - } } diff --git a/apps/etterlatte-behandling/src/test/kotlin/egenansatt/EgenAnsattRouteTest.kt b/apps/etterlatte-behandling/src/test/kotlin/egenansatt/EgenAnsattRouteTest.kt index b5ab997ac5c..b81b6cfae16 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/egenansatt/EgenAnsattRouteTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/egenansatt/EgenAnsattRouteTest.kt @@ -81,74 +81,79 @@ class EgenAnsattRouteTest : BehandlingIntegrationTest() { } returns GeografiskTilknytning(kommune = "0301") val sak: Sak = - client.post("personer/saker/${SakType.BARNEPENSJON}") { - addAuthToken(tokenSaksbehandler) - contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - }.let { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - it.body() - } + client + .post("personer/saker/${SakType.BARNEPENSJON}") { + addAuthToken(tokenSaksbehandler) + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + }.let { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + it.body() + } Assertions.assertNotNull(sak.id) Assertions.assertEquals(Enheter.PORSGRUNN.enhetNr, sak.enhet) - client.post("egenansatt") { - addAuthToken(this@EgenAnsattRouteTest.systemBruker) - contentType(ContentType.Application.Json) - setBody( - EgenAnsattSkjermet( - fnr = fnr, - inntruffet = Tidspunkt.now(), - skjermet = true, - ), - ) - }.let { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - } - - val saketterSkjerming: Sak = - client.post("personer/saker/${SakType.BARNEPENSJON}") { + client + .post("egenansatt") { addAuthToken(this@EgenAnsattRouteTest.systemBruker) contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + EgenAnsattSkjermet( + fnr = fnr, + inntruffet = Tidspunkt.now(), + skjermet = true, + ), + ) }.let { Assertions.assertEquals(HttpStatusCode.OK, it.status) - it.body() } + val saketterSkjerming: Sak = + client + .post("personer/saker/${SakType.BARNEPENSJON}") { + addAuthToken(this@EgenAnsattRouteTest.systemBruker) + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + }.let { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + it.body() + } + Assertions.assertEquals(sak.id, saketterSkjerming.id) // Denne skal alltid settes hvis noen blir skjermet hvis de ikke er adressebeskyttet(se test under) Assertions.assertEquals(Enheter.EGNE_ANSATTE.enhetNr, saketterSkjerming.enhet) val steinkjer = ArbeidsFordelingEnhet(Enheter.STEINKJER.navn, Enheter.STEINKJER.enhetNr) coEvery { norg2Klient.hentArbeidsfordelingForOmraadeOgTema(any()) } returns listOf(steinkjer) - client.post("egenansatt") { - addAuthToken(this@EgenAnsattRouteTest.systemBruker) - contentType(ContentType.Application.Json) - setBody( - EgenAnsattSkjermet( - fnr = fnr, - inntruffet = Tidspunkt.now(), - skjermet = false, - ), - ) - }.let { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - } - - val sakUtenSkjermingIgjen: Sak = - client.post("personer/saker/${SakType.BARNEPENSJON}") { + client + .post("egenansatt") { addAuthToken(this@EgenAnsattRouteTest.systemBruker) contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + EgenAnsattSkjermet( + fnr = fnr, + inntruffet = Tidspunkt.now(), + skjermet = false, + ), + ) }.let { Assertions.assertEquals(HttpStatusCode.OK, it.status) - it.body() } + val sakUtenSkjermingIgjen: Sak = + client + .post("personer/saker/${SakType.BARNEPENSJON}") { + addAuthToken(this@EgenAnsattRouteTest.systemBruker) + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + }.let { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + it.body() + } + Assertions.assertEquals(sak.id, sakUtenSkjermingIgjen.id) Assertions.assertEquals(steinkjer.enhetNr, sakUtenSkjermingIgjen.enhet) } @@ -179,33 +184,35 @@ class EgenAnsattRouteTest : BehandlingIntegrationTest() { } returns GeografiskTilknytning(kommune = "0301") val sak: Sak = - client.post("personer/saker/${SakType.BARNEPENSJON}") { - addAuthToken(tokenSaksbehandler) - contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - }.let { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - it.body() - } + client + .post("personer/saker/${SakType.BARNEPENSJON}") { + addAuthToken(tokenSaksbehandler) + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + }.let { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + it.body() + } Assertions.assertNotNull(sak.id) Assertions.assertEquals(Enheter.PORSGRUNN.enhetNr, sak.enhet) val behandlingId = - client.post("/behandlinger/opprettbehandling") { - addAuthToken(tokenSaksbehandler) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody( - BehandlingsBehov( - sak.id, - Persongalleri(fnr, "innsender", emptyList(), emptyList(), emptyList()), - Tidspunkt.now().toLocalDatetimeUTC().toString(), - ), - ) - }.let { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - UUID.fromString(it.body()) - } + client + .post("/behandlinger/opprettbehandling") { + addAuthToken(tokenSaksbehandler) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + BehandlingsBehov( + sak.id, + Persongalleri(fnr, "innsender", emptyList(), emptyList(), emptyList()), + Tidspunkt.now().toLocalDatetimeUTC().toString(), + ), + ) + }.let { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + UUID.fromString(it.body()) + } client.post("/grunnlagsendringshendelse/adressebeskyttelse") { addAuthToken(this@EgenAnsattRouteTest.systemBruker) @@ -220,37 +227,40 @@ class EgenAnsattRouteTest : BehandlingIntegrationTest() { ) } - client.get("/behandlinger/$behandlingId") { - addAuthToken(this@EgenAnsattRouteTest.systemBruker) - }.let { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - } - - client.post("egenansatt") { - addAuthToken(this@EgenAnsattRouteTest.systemBruker) - contentType(ContentType.Application.Json) - setBody( - EgenAnsattSkjermet( - fnr = fnr, - inntruffet = Tidspunkt.now(), - skjermet = true, - ), - ) - }.let { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - } + client + .get("/behandlinger/$behandlingId") { + addAuthToken(this@EgenAnsattRouteTest.systemBruker) + }.let { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + } - val adressebeskyttetUtenSkjerming: Sak = - client.post("personer/saker/${SakType.BARNEPENSJON}") { + client + .post("egenansatt") { addAuthToken(this@EgenAnsattRouteTest.systemBruker) contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + EgenAnsattSkjermet( + fnr = fnr, + inntruffet = Tidspunkt.now(), + skjermet = true, + ), + ) }.let { Assertions.assertEquals(HttpStatusCode.OK, it.status) - it.body() } + val adressebeskyttetUtenSkjerming: Sak = + client + .post("personer/saker/${SakType.BARNEPENSJON}") { + addAuthToken(this@EgenAnsattRouteTest.systemBruker) + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + }.let { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + it.body() + } + Assertions.assertNotNull(adressebeskyttetUtenSkjerming.id) Assertions.assertEquals(Enheter.STRENGT_FORTROLIG.enhetNr, adressebeskyttetUtenSkjerming.enhet) } diff --git a/apps/etterlatte-behandling/src/test/kotlin/egenansatt/EgenAnsattServiceTest.kt b/apps/etterlatte-behandling/src/test/kotlin/egenansatt/EgenAnsattServiceTest.kt index 3a78ed30995..6403596852b 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/egenansatt/EgenAnsattServiceTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/egenansatt/EgenAnsattServiceTest.kt @@ -46,7 +46,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class EgenAnsattServiceTest(val dataSource: DataSource) { +internal class EgenAnsattServiceTest( + val dataSource: DataSource, +) { private val sikkerLogg: Logger = sikkerlogger() private lateinit var sakRepo: SakDao diff --git a/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/GrunnlagsendringshendelseDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/GrunnlagsendringshendelseDaoTest.kt index 91a6d19b475..774dcd39dc3 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/GrunnlagsendringshendelseDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/GrunnlagsendringshendelseDaoTest.kt @@ -42,7 +42,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class GrunnlagsendringshendelseDaoTest(val dataSource: DataSource) { +internal class GrunnlagsendringshendelseDaoTest( + val dataSource: DataSource, +) { private lateinit var sakRepo: SakDao private lateinit var grunnlagsendringshendelsesRepo: GrunnlagsendringshendelseDao private lateinit var behandlingRepo: BehandlingDao diff --git a/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/GrunnlagsendringshendelseRouteTest.kt b/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/GrunnlagsendringshendelseRouteTest.kt index 6af223ef6de..89fbdd80527 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/GrunnlagsendringshendelseRouteTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/GrunnlagsendringshendelseRouteTest.kt @@ -52,83 +52,89 @@ class GrunnlagsendringshendelseRouteTest : BehandlingIntegrationTest() { } val sak: Sak = - client.post("personer/saker/${SakType.BARNEPENSJON}") { - addAuthToken(tokenSaksbehandler) - contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + client + .post("personer/saker/${SakType.BARNEPENSJON}") { + addAuthToken(tokenSaksbehandler) + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + }.let { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + it.body() + } + Assertions.assertNotNull(sak.id) + + val behandlingId = + client + .post("/behandlinger/opprettbehandling") { + addAuthToken(tokenSaksbehandler) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + BehandlingsBehov( + sak.id, + Persongalleri(fnr, "innsender", emptyList(), emptyList(), emptyList()), + Tidspunkt.now().toLocalDatetimeUTC().toString(), + ), + ) + }.let { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + UUID.fromString(it.body()) + } + + client + .get("/behandlinger/$behandlingId") { + addAuthToken(this@GrunnlagsendringshendelseRouteTest.systemBruker) }.let { Assertions.assertEquals(HttpStatusCode.OK, it.status) - it.body() } - Assertions.assertNotNull(sak.id) - val behandlingId = - client.post("/behandlinger/opprettbehandling") { - addAuthToken(tokenSaksbehandler) + client + .post("/grunnlagsendringshendelse/adressebeskyttelse") { + addAuthToken(this@GrunnlagsendringshendelseRouteTest.systemBruker) header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) setBody( - BehandlingsBehov( - sak.id, - Persongalleri(fnr, "innsender", emptyList(), emptyList(), emptyList()), - Tidspunkt.now().toLocalDatetimeUTC().toString(), + Adressebeskyttelse( + hendelseId = "1", + fnr = fnr, + adressebeskyttelseGradering = AdressebeskyttelseGradering.STRENGT_FORTROLIG, + endringstype = Endringstype.OPPRETTET, ), ) - }.let { + }.also { Assertions.assertEquals(HttpStatusCode.OK, it.status) - UUID.fromString(it.body()) } - client.get("/behandlinger/$behandlingId") { - addAuthToken(this@GrunnlagsendringshendelseRouteTest.systemBruker) - }.let { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - } - - client.post("/grunnlagsendringshendelse/adressebeskyttelse") { - addAuthToken(this@GrunnlagsendringshendelseRouteTest.systemBruker) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody( - Adressebeskyttelse( - hendelseId = "1", - fnr = fnr, - adressebeskyttelseGradering = AdressebeskyttelseGradering.STRENGT_FORTROLIG, - endringstype = Endringstype.OPPRETTET, - ), - ) - }.also { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - } - - client.post("/grunnlagsendringshendelse/adressebeskyttelse") { - addAuthToken(this@GrunnlagsendringshendelseRouteTest.systemBruker) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody( - Adressebeskyttelse( - hendelseId = "1", - fnr = fnr, - adressebeskyttelseGradering = AdressebeskyttelseGradering.FORTROLIG, - endringstype = Endringstype.OPPRETTET, - ), - ) - }.also { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - } + client + .post("/grunnlagsendringshendelse/adressebeskyttelse") { + addAuthToken(this@GrunnlagsendringshendelseRouteTest.systemBruker) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + Adressebeskyttelse( + hendelseId = "1", + fnr = fnr, + adressebeskyttelseGradering = AdressebeskyttelseGradering.FORTROLIG, + endringstype = Endringstype.OPPRETTET, + ), + ) + }.also { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + } - client.post("/grunnlagsendringshendelse/adressebeskyttelse") { - addAuthToken(this@GrunnlagsendringshendelseRouteTest.systemBruker) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody( - Adressebeskyttelse( - hendelseId = "1", - fnr = fnr, - adressebeskyttelseGradering = AdressebeskyttelseGradering.UGRADERT, - endringstype = Endringstype.OPPRETTET, - ), - ) - }.also { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - } + client + .post("/grunnlagsendringshendelse/adressebeskyttelse") { + addAuthToken(this@GrunnlagsendringshendelseRouteTest.systemBruker) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody( + Adressebeskyttelse( + hendelseId = "1", + fnr = fnr, + adressebeskyttelseGradering = AdressebeskyttelseGradering.UGRADERT, + endringstype = Endringstype.OPPRETTET, + ), + ) + }.also { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + } } } } diff --git a/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/doedshendelse/DoedshendelseDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/doedshendelse/DoedshendelseDaoTest.kt index 4494e86828b..89c6c2ab631 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/doedshendelse/DoedshendelseDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/doedshendelse/DoedshendelseDaoTest.kt @@ -26,7 +26,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -class DoedshendelseDaoTest(val dataSource: DataSource) { +class DoedshendelseDaoTest( + val dataSource: DataSource, +) { private lateinit var doedshendelseDao: DoedshendelseDao @BeforeAll @@ -45,13 +47,14 @@ class DoedshendelseDaoTest(val dataSource: DataSource) { fun `Kan hente ferdige doedshendelser med status og relasjon BARN `() { val avdoedFnr = "12345678902" val doedshendelseInternal = - DoedshendelseInternal.nyHendelse( - avdoedFnr = avdoedFnr, - avdoedDoedsdato = LocalDate.now(), - beroertFnr = "12345678901", - relasjon = Relasjon.BARN, - endringstype = Endringstype.OPPRETTET, - ).copy(utfall = Utfall.BREV, status = FERDIG) + DoedshendelseInternal + .nyHendelse( + avdoedFnr = avdoedFnr, + avdoedDoedsdato = LocalDate.now(), + beroertFnr = "12345678901", + relasjon = Relasjon.BARN, + endringstype = Endringstype.OPPRETTET, + ).copy(utfall = Utfall.BREV, status = FERDIG) val result = DoedshendelseReminder( diff --git a/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/doedshendelse/DoedshendelseJobServiceTest.kt b/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/doedshendelse/DoedshendelseJobServiceTest.kt index 4f21879f73a..d082b7fa2f9 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/doedshendelse/DoedshendelseJobServiceTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/doedshendelse/DoedshendelseJobServiceTest.kt @@ -137,13 +137,14 @@ class DoedshendelseJobServiceTest { @Test fun `skal avbryte hendelse hvis avdoed er ikke er registert doed i PDL`() { val doedshendelseInternal = - DoedshendelseInternal.nyHendelse( - avdoedFnr = AVDOED2_FOEDSELSNUMMER.value, - avdoedDoedsdato = LocalDate.now(), - beroertFnr = "12345678901", - relasjon = Relasjon.BARN, - endringstype = Endringstype.OPPRETTET, - ).copy(endret = LocalDateTime.now().minusDays(femDagerGammel.toLong()).toTidspunkt()) + DoedshendelseInternal + .nyHendelse( + avdoedFnr = AVDOED2_FOEDSELSNUMMER.value, + avdoedDoedsdato = LocalDate.now(), + beroertFnr = "12345678901", + relasjon = Relasjon.BARN, + endringstype = Endringstype.OPPRETTET, + ).copy(endret = LocalDateTime.now().minusDays(femDagerGammel.toLong()).toTidspunkt()) every { dao.hentDoedshendelserMedStatus(any()) } returns listOf(doedshendelseInternal) every { dao.oppdaterDoedshendelse(any()) } returns Unit @@ -161,13 +162,14 @@ class DoedshendelseJobServiceTest { @Test fun `skal ferdigstille doedshendelse med status ferdig og sette oppgaveId`() { val doedshendelseInternal = - DoedshendelseInternal.nyHendelse( - avdoedFnr = AVDOED2_FOEDSELSNUMMER.value, - avdoedDoedsdato = LocalDate.now(), - beroertFnr = "12345678901", - relasjon = Relasjon.BARN, - endringstype = Endringstype.OPPRETTET, - ).copy(endret = LocalDateTime.now().minusDays(femDagerGammel.toLong()).toTidspunkt()) + DoedshendelseInternal + .nyHendelse( + avdoedFnr = AVDOED2_FOEDSELSNUMMER.value, + avdoedDoedsdato = LocalDate.now(), + beroertFnr = "12345678901", + relasjon = Relasjon.BARN, + endringstype = Endringstype.OPPRETTET, + ).copy(endret = LocalDateTime.now().minusDays(femDagerGammel.toLong()).toTidspunkt()) every { dao.hentDoedshendelserMedStatus(any()) } returns listOf(doedshendelseInternal) every { dao.oppdaterDoedshendelse(any()) } returns Unit @@ -192,13 +194,14 @@ class DoedshendelseJobServiceTest { @Test fun `skal ikke opprette oppgave for doedshendelse dersom feature-toggle er av`() { val doedshendelseInternal = - DoedshendelseInternal.nyHendelse( - avdoedFnr = AVDOED2_FOEDSELSNUMMER.value, - avdoedDoedsdato = LocalDate.now(), - beroertFnr = "12345678901", - relasjon = Relasjon.BARN, - endringstype = Endringstype.OPPRETTET, - ).copy(endret = LocalDateTime.now().minusDays(femDagerGammel.toLong()).toTidspunkt()) + DoedshendelseInternal + .nyHendelse( + avdoedFnr = AVDOED2_FOEDSELSNUMMER.value, + avdoedDoedsdato = LocalDate.now(), + beroertFnr = "12345678901", + relasjon = Relasjon.BARN, + endringstype = Endringstype.OPPRETTET, + ).copy(endret = LocalDateTime.now().minusDays(femDagerGammel.toLong()).toTidspunkt()) every { dao.hentDoedshendelserMedStatus(any()) } returns listOf(doedshendelseInternal) every { dao.oppdaterDoedshendelse(any()) } returns Unit @@ -224,13 +227,14 @@ class DoedshendelseJobServiceTest { @Test fun `Skal sjekke sende med bor i utlandet til brev`() { val doedshendelseInternal = - DoedshendelseInternal.nyHendelse( - avdoedFnr = AVDOED2_FOEDSELSNUMMER.value, - avdoedDoedsdato = LocalDate.now(), - beroertFnr = "12345678901", - relasjon = Relasjon.BARN, - endringstype = Endringstype.OPPRETTET, - ).copy(endret = LocalDateTime.now().minusDays(femDagerGammel.toLong()).toTidspunkt()) + DoedshendelseInternal + .nyHendelse( + avdoedFnr = AVDOED2_FOEDSELSNUMMER.value, + avdoedDoedsdato = LocalDate.now(), + beroertFnr = "12345678901", + relasjon = Relasjon.BARN, + endringstype = Endringstype.OPPRETTET, + ).copy(endret = LocalDateTime.now().minusDays(femDagerGammel.toLong()).toTidspunkt()) every { dao.hentDoedshendelserMedStatus(any()) } returns listOf(doedshendelseInternal) every { dao.oppdaterDoedshendelse(any()) } returns Unit diff --git a/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/doedshendelse/DoedshendelseRouteTest.kt b/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/doedshendelse/DoedshendelseRouteTest.kt index 94af1563732..d29609029b6 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/doedshendelse/DoedshendelseRouteTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/grunnlagsendring/doedshendelse/DoedshendelseRouteTest.kt @@ -38,7 +38,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class DoedshendelseRouteTest(val dataSource: DataSource) { +internal class DoedshendelseRouteTest( + val dataSource: DataSource, +) { private val mockOAuth2Server = MockOAuth2Server() private val pdlTjenesterKlient = spyk() private val doedshendelseDao: DoedshendelseDao = DoedshendelseDao(ConnectionAutoclosingTest(dataSource)) @@ -88,13 +90,14 @@ internal class DoedshendelseRouteTest(val dataSource: DataSource) { doedshendelseDao.oppdaterDoedshendelse(doedshendelseInternal.copy(sakId = sakId)) val brevId = 12314L withTestApplication { client -> - client.post("/doedshendelse/brevdistribuert") { - header(HttpHeaders.Authorization, "Bearer $saksbehandlerToken") - contentType(ContentType.Application.Json) - setBody(DoedshendelseBrevDistribuert(sakId, brevId)) - }.also { - Assertions.assertEquals(HttpStatusCode.NotFound, it.status) - } + client + .post("/doedshendelse/brevdistribuert") { + header(HttpHeaders.Authorization, "Bearer $saksbehandlerToken") + contentType(ContentType.Application.Json) + setBody(DoedshendelseBrevDistribuert(sakId, brevId)) + }.also { + Assertions.assertEquals(HttpStatusCode.NotFound, it.status) + } } val hentDoedshendelserForPerson = doedshendelseDao.hentDoedshendelserForPerson(avdoedFnr) hentDoedshendelserForPerson.size shouldBe 1 @@ -118,13 +121,14 @@ internal class DoedshendelseRouteTest(val dataSource: DataSource) { doedshendelseDao.oppdaterDoedshendelse(doedshendelseInternal.copy(sakId = sakId)) val brevId = 12314L withTestApplication { client -> - client.post("/doedshendelse/brevdistribuert") { - header(HttpHeaders.Authorization, "Bearer $systemBruker") - contentType(ContentType.Application.Json) - setBody(DoedshendelseBrevDistribuert(sakId, brevId)) - }.also { - Assertions.assertEquals(HttpStatusCode.OK, it.status) - } + client + .post("/doedshendelse/brevdistribuert") { + header(HttpHeaders.Authorization, "Bearer $systemBruker") + contentType(ContentType.Application.Json) + setBody(DoedshendelseBrevDistribuert(sakId, brevId)) + }.also { + Assertions.assertEquals(HttpStatusCode.OK, it.status) + } } val hentDoedshendelserForPerson = doedshendelseDao.hentDoedshendelserForPerson(avdoedFnr) hentDoedshendelserForPerson.size shouldBe 1 diff --git a/apps/etterlatte-behandling/src/test/kotlin/institusjonsopphold/institusjonsopphold/InstitusjonsoppholdDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/institusjonsopphold/institusjonsopphold/InstitusjonsoppholdDaoTest.kt index f30967612ee..15732b5f7a4 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/institusjonsopphold/institusjonsopphold/InstitusjonsoppholdDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/institusjonsopphold/institusjonsopphold/InstitusjonsoppholdDaoTest.kt @@ -16,7 +16,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class InstitusjonsoppholdDaoTest(val dataSource: DataSource) { +internal class InstitusjonsoppholdDaoTest( + val dataSource: DataSource, +) { private lateinit var institusjonsoppholdDao: InstitusjonsoppholdDao @BeforeAll diff --git a/apps/etterlatte-behandling/src/test/kotlin/integration/BehandlingIntegrationTest.kt b/apps/etterlatte-behandling/src/test/kotlin/integration/BehandlingIntegrationTest.kt index 2b1e474df37..b8240db9437 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/integration/BehandlingIntegrationTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/integration/BehandlingIntegrationTest.kt @@ -51,32 +51,35 @@ abstract class BehandlingIntegrationTest { applicationContext = ApplicationContext( env = - System.getenv().toMutableMap().apply { - put("KAFKA_RAPID_TOPIC", "test") - put("DB_HOST", props.host) - put("DB_USERNAME", props.username) - put("DB_PASSWORD", props.password) - put("DB_PORT", props.firstMappedPort.toString()) - put("DB_DATABASE", props.databaseName) - put("AZUREAD_ATTESTANT_GROUPID", azureAdAttestantClaim) - put("AZUREAD_ATTESTANT_GJENNY_GROUPID", azureAdAttestantGjennyClaim) - put("AZUREAD_SAKSBEHANDLER_GROUPID", azureAdSaksbehandlerClaim) - put("AZUREAD_STRENGT_FORTROLIG_GROUPID", azureAdStrengtFortroligClaim) - put("AZUREAD_EGEN_ANSATT_GROUPID", azureAdEgenAnsattClaim) - put("AZUREAD_FORTROLIG_GROUPID", azureAdFortroligClaim) - put("AZUREAD_NASJONAL_TILGANG_UTEN_LOGG_GROUPID", azureAdNasjonUtenLoggClaim) - put("AZUREAD_NASJONAL_TILGANG_MED_LOGG_GROUPID", azureAdNasjonMedLoggClaim) - put("NORG2_URL", "http://localhost") - put("NAVANSATT_URL", "http://localhost") - put("SKJERMING_URL", "http://localhost") - put("OPPGAVE_URL", "http://localhost") - put("PEN_URL", "http://localhost") - put("PEN_CLIENT_ID", "ddd52335-cfe8-4ee9-9e68-416a5ab26efa") - put("ETTERLATTE_KLAGE_API_URL", "http://localhost") - put("ETTERLATTE_TILBAKEKREVING_URL", "http://localhost") - put("ETTERLATTE_MIGRERING_URL", "http://localhost") - put("OPPGAVE_SCOPE", "scope") - }.let { Miljoevariabler(it) }, + System + .getenv() + .toMutableMap() + .apply { + put("KAFKA_RAPID_TOPIC", "test") + put("DB_HOST", props.host) + put("DB_USERNAME", props.username) + put("DB_PASSWORD", props.password) + put("DB_PORT", props.firstMappedPort.toString()) + put("DB_DATABASE", props.databaseName) + put("AZUREAD_ATTESTANT_GROUPID", azureAdAttestantClaim) + put("AZUREAD_ATTESTANT_GJENNY_GROUPID", azureAdAttestantGjennyClaim) + put("AZUREAD_SAKSBEHANDLER_GROUPID", azureAdSaksbehandlerClaim) + put("AZUREAD_STRENGT_FORTROLIG_GROUPID", azureAdStrengtFortroligClaim) + put("AZUREAD_EGEN_ANSATT_GROUPID", azureAdEgenAnsattClaim) + put("AZUREAD_FORTROLIG_GROUPID", azureAdFortroligClaim) + put("AZUREAD_NASJONAL_TILGANG_UTEN_LOGG_GROUPID", azureAdNasjonUtenLoggClaim) + put("AZUREAD_NASJONAL_TILGANG_MED_LOGG_GROUPID", azureAdNasjonMedLoggClaim) + put("NORG2_URL", "http://localhost") + put("NAVANSATT_URL", "http://localhost") + put("SKJERMING_URL", "http://localhost") + put("OPPGAVE_URL", "http://localhost") + put("PEN_URL", "http://localhost") + put("PEN_CLIENT_ID", "ddd52335-cfe8-4ee9-9e68-416a5ab26efa") + put("ETTERLATTE_KLAGE_API_URL", "http://localhost") + put("ETTERLATTE_TILBAKEKREVING_URL", "http://localhost") + put("ETTERLATTE_MIGRERING_URL", "http://localhost") + put("OPPGAVE_SCOPE", "scope") + }.let { Miljoevariabler(it) }, config = ConfigFactory.parseMap( mapOf( diff --git a/apps/etterlatte-behandling/src/test/kotlin/integration/EksterneKlienter.kt b/apps/etterlatte-behandling/src/test/kotlin/integration/EksterneKlienter.kt index 9aab613704a..3233593cbb3 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/integration/EksterneKlienter.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/integration/EksterneKlienter.kt @@ -70,8 +70,8 @@ class GrunnlagKlientTest : GrunnlagKlient { override suspend fun hentPersongalleri( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): Grunnlagsopplysning { - return Grunnlagsopplysning( + ): Grunnlagsopplysning = + Grunnlagsopplysning( id = UUID.randomUUID(), kilde = Grunnlagsopplysning.Privatperson("fnr", Tidspunkt.now()), meta = emptyMap().toObjectNode(), @@ -85,7 +85,6 @@ class GrunnlagKlientTest : GrunnlagKlient { listOf("gjenlevende"), ), ) - } } class BeregningKlientTest : BeregningKlient { @@ -100,81 +99,68 @@ class VedtakKlientTest : VedtakKlient { tilbakekrevingBehandling: TilbakekrevingBehandling, brukerTokenInfo: BrukerTokenInfo, enhet: String, - ): Long { - return 123L - } + ): Long = 123L override suspend fun fattVedtakTilbakekreving( tilbakekrevingId: UUID, brukerTokenInfo: BrukerTokenInfo, enhet: String, - ): Long { - return 123L - } + ): Long = 123L override suspend fun attesterVedtakTilbakekreving( tilbakekrevingId: UUID, brukerTokenInfo: BrukerTokenInfo, enhet: String, - ): TilbakekrevingVedtakLagretDto { - return TilbakekrevingVedtakLagretDto( + ): TilbakekrevingVedtakLagretDto = + TilbakekrevingVedtakLagretDto( id = 123L, fattetAv = "saksbehandler", enhet = "enhet", dato = LocalDate.now(), ) - } override suspend fun underkjennVedtakTilbakekreving( tilbakekrevingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): Long { - return 123L - } + ): Long = 123L override suspend fun lagreVedtakKlage( klage: Klage, brukerTokenInfo: BrukerTokenInfo, - ): VedtakDto { - return mockk { + ): VedtakDto = + mockk { every { id } returns 123L } - } override suspend fun fattVedtakKlage( klage: Klage, brukerTokenInfo: BrukerTokenInfo, - ): VedtakDto { - return mockk { + ): VedtakDto = + mockk { every { id } returns 123L } - } override suspend fun attesterVedtakKlage( klage: Klage, brukerTokenInfo: BrukerTokenInfo, - ): VedtakDto { - return mockk { + ): VedtakDto = + mockk { every { id } returns 123L } - } override suspend fun underkjennVedtakKlage( klageId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): VedtakDto { - return mockk { + ): VedtakDto = + mockk { every { id } returns 123L } - } override suspend fun sakHarLopendeVedtakPaaDato( sakId: Long, dato: LocalDate, brukerTokenInfo: BrukerTokenInfo, - ): LoependeYtelseDTO { - return LoependeYtelseDTO(true, false, LocalDate.now()) - } + ): LoependeYtelseDTO = LoependeYtelseDTO(true, false, LocalDate.now()) } class TilbakekrevingKlientTest : TilbakekrevingKlient { @@ -192,9 +178,7 @@ class TilbakekrevingKlientTest : TilbakekrevingKlient { override val endpoint: String get() = "endpoint" - override suspend fun ping(konsument: String?): PingResult { - return PingResultUp(serviceName, ServiceStatus.UP, "endpoint", serviceName) - } + override suspend fun ping(konsument: String?): PingResult = PingResultUp(serviceName, ServiceStatus.UP, "endpoint", serviceName) } class BrevApiKlientTest : BrevApiKlient { @@ -203,17 +187,13 @@ class BrevApiKlientTest : BrevApiKlient { override suspend fun opprettKlageOversendelsesbrevISak( klageId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): OpprettetBrevDto { - return opprettetBrevDto(brevId++) - } + ): OpprettetBrevDto = opprettetBrevDto(brevId++) override suspend fun opprettVedtaksbrev( behandlingId: UUID, sakId: Long, brukerTokenInfo: BrukerTokenInfo, - ): OpprettetBrevDto { - return opprettetBrevDto(brevId++) - } + ): OpprettetBrevDto = opprettetBrevDto(brevId++) override suspend fun ferdigstillVedtaksbrev( behandlingId: UUID, @@ -233,25 +213,19 @@ class BrevApiKlientTest : BrevApiKlient { sakId: Long, brevId: Long, brukerTokenInfo: BrukerTokenInfo, - ): JournalpostIdDto { - return JournalpostIdDto(UUID.randomUUID().toString()) - } + ): JournalpostIdDto = JournalpostIdDto(UUID.randomUUID().toString()) override suspend fun distribuerBrev( sakId: Long, brevId: Long, brukerTokenInfo: BrukerTokenInfo, - ): BestillingsIdDto { - return BestillingsIdDto(UUID.randomUUID().toString()) - } + ): BestillingsIdDto = BestillingsIdDto(UUID.randomUUID().toString()) override suspend fun hentBrev( sakId: Long, brevId: Long, brukerTokenInfo: BrukerTokenInfo, - ): OpprettetBrevDto { - return opprettetBrevDto(brevId) - } + ): OpprettetBrevDto = opprettetBrevDto(brevId) override suspend fun slettVedtaksbrev( klageId: UUID, @@ -262,9 +236,7 @@ class BrevApiKlientTest : BrevApiKlient { override suspend fun journalfoerNotatKa( klage: Klage, brukerInfoToken: BrukerTokenInfo, - ): OpprettJournalpostDto { - return OpprettJournalpostDto(UUID.randomUUID().toString()) - } + ): OpprettJournalpostDto = OpprettJournalpostDto(UUID.randomUUID().toString()) override suspend fun slettOversendelsesbrev( klageId: UUID, @@ -275,16 +247,12 @@ class BrevApiKlientTest : BrevApiKlient { override suspend fun hentVedtaksbrev( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): OpprettetBrevDto { - return opprettetBrevDto(brevId) - } + ): OpprettetBrevDto = opprettetBrevDto(brevId) override suspend fun hentOversendelsesbrev( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): OpprettetBrevDto { - return opprettetBrevDto(brevId) - } + ): OpprettetBrevDto = opprettetBrevDto(brevId) private fun opprettetBrevDto(brevId: Long) = OpprettetBrevDto( @@ -308,42 +276,32 @@ class GosysOppgaveKlientTest : GosysOppgaveKlient { enhetsnr: String?, harTildeling: Boolean?, brukerTokenInfo: BrukerTokenInfo, - ): GosysOppgaver { - return GosysOppgaver(0, emptyList()) - } + ): GosysOppgaver = GosysOppgaver(0, emptyList()) override suspend fun hentJournalfoeringsoppgave( journalpostId: String, brukerTokenInfo: BrukerTokenInfo, - ): GosysOppgaver { - return GosysOppgaver(0, emptyList()) - } + ): GosysOppgaver = GosysOppgaver(0, emptyList()) override suspend fun hentOppgave( id: Long, brukerTokenInfo: BrukerTokenInfo, - ): GosysApiOppgave { - return gosysApiOppgave() - } + ): GosysApiOppgave = gosysApiOppgave() override suspend fun ferdigstill( id: String, oppgaveVersjon: Long, brukerTokenInfo: BrukerTokenInfo, - ): GosysApiOppgave { - return gosysApiOppgave() - } + ): GosysApiOppgave = gosysApiOppgave() override suspend fun feilregistrer( id: String, request: EndreStatusRequest, brukerTokenInfo: BrukerTokenInfo, - ): GosysApiOppgave { - return gosysApiOppgave() - } + ): GosysApiOppgave = gosysApiOppgave() - private fun gosysApiOppgave(): GosysApiOppgave { - return GosysApiOppgave( + private fun gosysApiOppgave(): GosysApiOppgave = + GosysApiOppgave( 1, 2, "EYB", @@ -358,41 +316,31 @@ class GosysOppgaveKlientTest : GosysOppgaveKlient { LocalDate.now(), bruker = null, ) - } override suspend fun tildelOppgaveTilSaksbehandler( oppgaveId: String, oppgaveVersjon: Long, tildeles: String, brukerTokenInfo: BrukerTokenInfo, - ): GosysApiOppgave { - return gosysApiOppgave() - } + ): GosysApiOppgave = gosysApiOppgave() override suspend fun endreFrist( oppgaveId: String, oppgaveVersjon: Long, nyFrist: LocalDate, brukerTokenInfo: BrukerTokenInfo, - ): GosysApiOppgave { - return gosysApiOppgave() - } + ): GosysApiOppgave = gosysApiOppgave() } class Norg2KlientTest : Norg2Klient { - override fun hentArbeidsfordelingForOmraadeOgTema(request: ArbeidsFordelingRequest): List { - return listOf(ArbeidsFordelingEnhet(Enheter.STEINKJER.navn, Enheter.STEINKJER.enhetNr)) - } + override fun hentArbeidsfordelingForOmraadeOgTema(request: ArbeidsFordelingRequest): List = + listOf(ArbeidsFordelingEnhet(Enheter.STEINKJER.navn, Enheter.STEINKJER.enhetNr)) - override suspend fun hentNavkontorForOmraade(omraade: String): Navkontor { - return Navkontor("1202 NAV BERGEN SØR", "4808") - } + override suspend fun hentNavkontorForOmraade(omraade: String): Navkontor = Navkontor("1202 NAV BERGEN SØR", "4808") } class NavAnsattKlientTest : NavAnsattKlient { - override suspend fun hentSaksbehanderNavn(ident: String): SaksbehandlerInfo? { - return SaksbehandlerInfo("ident", "Max Manus") - } + override suspend fun hentSaksbehanderNavn(ident: String): SaksbehandlerInfo? = SaksbehandlerInfo("ident", "Max Manus") override val serviceName: String get() = "Navansatt" @@ -401,20 +349,16 @@ class NavAnsattKlientTest : NavAnsattKlient { override val endpoint: String get() = "endpoint" - override suspend fun ping(konsument: String?): PingResult { - return PingResultUp(serviceName, ServiceStatus.UP, "endpoint", serviceName) - } + override suspend fun ping(konsument: String?): PingResult = PingResultUp(serviceName, ServiceStatus.UP, "endpoint", serviceName) } class PesysKlientTest : PesysKlient { - override suspend fun hentSaker(fnr: String): List { - return emptyList() - } + override suspend fun hentSaker(fnr: String): List = emptyList() } class KrrklientTest : KrrKlient { - override suspend fun hentDigitalKontaktinformasjon(fnr: String): DigitalKontaktinformasjon? { - return DigitalKontaktinformasjon( + override suspend fun hentDigitalKontaktinformasjon(fnr: String): DigitalKontaktinformasjon? = + DigitalKontaktinformasjon( personident = "", aktiv = true, kanVarsles = true, @@ -424,16 +368,14 @@ class KrrklientTest : KrrKlient { mobiltelefonnummer = null, sikkerDigitalPostkasse = null, ) - } } class AxsysKlientTest : AxsysKlient { - override suspend fun hentEnheterForIdent(ident: String): List { - return listOf( + override suspend fun hentEnheterForIdent(ident: String): List = + listOf( SaksbehandlerEnhet(Enheter.defaultEnhet.enhetNr, Enheter.defaultEnhet.navn), SaksbehandlerEnhet(Enheter.STEINKJER.enhetNr, Enheter.STEINKJER.navn), ) - } override val serviceName: String get() = "Axsys" @@ -442,9 +384,7 @@ class AxsysKlientTest : AxsysKlient { override val endpoint: String get() = "endpoint" - override suspend fun ping(konsument: String?): PingResult { - return PingResultUp(serviceName, ServiceStatus.UP, "endpoint", serviceName) - } + override suspend fun ping(konsument: String?): PingResult = PingResultUp(serviceName, ServiceStatus.UP, "endpoint", serviceName) } class PdltjenesterKlientTest : PdlTjenesterKlient { @@ -452,34 +392,24 @@ class PdltjenesterKlientTest : PdlTjenesterKlient { foedselsnummer: String, rolle: PersonRolle, saktype: SakType, - ): PersonDTO { - return mockPerson() - } + ): PersonDTO = mockPerson() override fun hentPdlModellFlereSaktyper( foedselsnummer: String, rolle: PersonRolle, saktyper: List, - ): PersonDTO { - return mockPerson() - } + ): PersonDTO = mockPerson() override fun hentGeografiskTilknytning( foedselsnummer: String, saktype: SakType, - ): GeografiskTilknytning { - return GeografiskTilknytning(kommune = "0301") - } + ): GeografiskTilknytning = GeografiskTilknytning(kommune = "0301") - override fun hentFolkeregisterIdenterForAktoerIdBolk(aktoerIds: Set): Map { - return emptyMap() - } + override fun hentFolkeregisterIdenterForAktoerIdBolk(aktoerIds: Set): Map = emptyMap() override suspend fun hentAdressebeskyttelseForPerson( hentAdressebeskyttelseRequest: HentAdressebeskyttelseRequest, - ): AdressebeskyttelseGradering { - return AdressebeskyttelseGradering.UGRADERT - } + ): AdressebeskyttelseGradering = AdressebeskyttelseGradering.UGRADERT override val serviceName: String get() = "Pdl tjenester" @@ -488,7 +418,5 @@ class PdltjenesterKlientTest : PdlTjenesterKlient { override val endpoint: String get() = "endpoint" - override suspend fun ping(konsument: String?): PingResult { - return PingResultUp(serviceName, ServiceStatus.UP, "endpoint", serviceName) - } + override suspend fun ping(konsument: String?): PingResult = PingResultUp(serviceName, ServiceStatus.UP, "endpoint", serviceName) } diff --git a/apps/etterlatte-behandling/src/test/kotlin/metrics/BehandlingMetricsOppgaveTest.kt b/apps/etterlatte-behandling/src/test/kotlin/metrics/BehandlingMetricsOppgaveTest.kt index 944484d1145..4b10cd8820a 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/metrics/BehandlingMetricsOppgaveTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/metrics/BehandlingMetricsOppgaveTest.kt @@ -26,7 +26,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class BehandlingMetricsOppgaveTest(private val ds: DataSource) { +internal class BehandlingMetricsOppgaveTest( + private val ds: DataSource, +) { private lateinit var oppgaveDao: OppgaveDaoImpl private lateinit var sakDao: SakDao @@ -55,19 +57,31 @@ internal class BehandlingMetricsOppgaveTest(private val ds: DataSource) { inner class Oppgaver { @Test fun `Metrikker for oppgaver labels i riktig rekkefoelge`() { - val metrikker = behandlingMetrics.oppgaver.collect().first().samples + val metrikker = + behandlingMetrics.oppgaver + .collect() + .first() + .samples metrikker.first().labelNames shouldContainExactly listOf("status", "enhet", "saktype") } @Test fun `Metrikker for oppgaver totalt`() { - val metrikker = behandlingMetrics.oppgaver.collect().first().samples + val metrikker = + behandlingMetrics.oppgaver + .collect() + .first() + .samples metrikker.size shouldBe 4 } @Test fun `Metrikker for oppgaver status`() { - val metrikker = behandlingMetrics.oppgaver.collect().first().samples + val metrikker = + behandlingMetrics.oppgaver + .collect() + .first() + .samples metrikker.filter { it.labelValues[0] == Status.NY.name }.size shouldBe 1 metrikker.filter { it.labelValues[0] == Status.UNDER_BEHANDLING.name }.size shouldBe 1 metrikker.filter { it.labelValues[0] == Status.FEILREGISTRERT.name }.size shouldBe 1 @@ -76,14 +90,22 @@ internal class BehandlingMetricsOppgaveTest(private val ds: DataSource) { @Test fun `Metrikker for oppgaver enhet`() { - val metrikker = behandlingMetrics.oppgaver.collect().first().samples + val metrikker = + behandlingMetrics.oppgaver + .collect() + .first() + .samples metrikker.filter { it.labelValues[1] == Enheter.AALESUND.enhetNr }.size shouldBe 2 metrikker.filter { it.labelValues[1] == Enheter.PORSGRUNN.enhetNr }.size shouldBe 2 } @Test fun `Metrikker for oppgaver saktype`() { - val metrikker = behandlingMetrics.oppgaver.collect().first().samples + val metrikker = + behandlingMetrics.oppgaver + .collect() + .first() + .samples metrikker.filter { it.labelValues[2] == SakType.BARNEPENSJON.name }.size shouldBe 2 metrikker.filter { it.labelValues[2] == SakType.OMSTILLINGSSTOENAD.name }.size shouldBe 2 } @@ -93,13 +115,21 @@ internal class BehandlingMetricsOppgaveTest(private val ds: DataSource) { inner class Saksbehandler { @Test fun `Metrikker for saksbehandler labels i riktig rekkefoelge`() { - val metrikker = behandlingMetrics.saksbehandler.collect().first().samples + val metrikker = + behandlingMetrics.saksbehandler + .collect() + .first() + .samples metrikker.first().labelNames shouldContainExactly listOf("enhet") } @Test fun `Metrikker for oppgaver totalt og per enhet`() { - val metrikker = behandlingMetrics.saksbehandler.collect().first().samples + val metrikker = + behandlingMetrics.saksbehandler + .collect() + .first() + .samples metrikker.first { it.labelValues[0] == Enheter.AALESUND.enhetNr }.value shouldBe 2 metrikker.first { it.labelValues[0] == Enheter.PORSGRUNN.enhetNr }.value shouldBe 2 metrikker.first { it.labelValues[0] == "Totalt" }.value shouldBe 3 diff --git a/apps/etterlatte-behandling/src/test/kotlin/metrics/BehandlingMetricsTest.kt b/apps/etterlatte-behandling/src/test/kotlin/metrics/BehandlingMetricsTest.kt index 7643eb1c4b5..637df229346 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/metrics/BehandlingMetricsTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/metrics/BehandlingMetricsTest.kt @@ -27,7 +27,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class BehandlingMetricsTest(private val ds: DataSource) { +internal class BehandlingMetricsTest( + private val ds: DataSource, +) { private lateinit var behandlingMetrikkerDao: BehandlingMetrikkerDao private lateinit var oppgaveDao: OppgaveMetrikkerDao private lateinit var behandlingRepo: BehandlingDao @@ -59,7 +61,11 @@ internal class BehandlingMetricsTest(private val ds: DataSource) { @Test fun `Metrikker for behandlinger skal ha labels i riktig rekkefoelge`() { - val metrikker = behandlingMetrics.behandlinger.collect().first().samples + val metrikker = + behandlingMetrics.behandlinger + .collect() + .first() + .samples metrikker.first().labelNames shouldContainExactly listOf( "saktype", @@ -73,48 +79,76 @@ internal class BehandlingMetricsTest(private val ds: DataSource) { @Test fun `Henter riktig antall totalt`() { - val metrikker = behandlingMetrics.behandlinger.collect().first().samples + val metrikker = + behandlingMetrics.behandlinger + .collect() + .first() + .samples metrikker.size shouldBe 5 } @Test fun `Henter riktig antall for saktype`() { - val metrikker = behandlingMetrics.behandlinger.collect().first().samples + val metrikker = + behandlingMetrics.behandlinger + .collect() + .first() + .samples metrikker.filter { it.labelValues[0] == SakType.BARNEPENSJON.name }.size shouldBe 4 metrikker.filter { it.labelValues[0] == SakType.OMSTILLINGSSTOENAD.name }.size shouldBe 1 } @Test fun `Henter riktig antall for behandlingstyper`() { - val metrikker = behandlingMetrics.behandlinger.collect().first().samples + val metrikker = + behandlingMetrics.behandlinger + .collect() + .first() + .samples metrikker.filter { it.labelValues[1] == BehandlingType.FØRSTEGANGSBEHANDLING.name }.size shouldBe 4 metrikker.filter { it.labelValues[1] == BehandlingType.REVURDERING.name }.size shouldBe 1 } @Test fun `Henter riktig antall for status`() { - val metrikker = behandlingMetrics.behandlinger.collect().first().samples + val metrikker = + behandlingMetrics.behandlinger + .collect() + .first() + .samples metrikker.filter { it.labelValues[2] == BehandlingStatus.IVERKSATT.name }.size shouldBe 2 metrikker.filter { it.labelValues[2] == BehandlingStatus.OPPRETTET.name }.size shouldBe 3 } @Test fun `Henter riktig antall for revuderingsaarsak`() { - val metrikker = behandlingMetrics.behandlinger.collect().first().samples + val metrikker = + behandlingMetrics.behandlinger + .collect() + .first() + .samples metrikker.filter { it.labelValues[3] == "null" }.size shouldBe 4 // Førstegangsbehandling metrikker.filter { it.labelValues[3] == Revurderingaarsak.REGULERING.name }.size shouldBe 1 } @Test fun `Henter riktig antall for kilde`() { - val metrikker = behandlingMetrics.behandlinger.collect().first().samples + val metrikker = + behandlingMetrics.behandlinger + .collect() + .first() + .samples metrikker.filter { it.labelValues[4] == Vedtaksloesning.GJENNY.name }.size shouldBe 3 metrikker.filter { it.labelValues[4] == Vedtaksloesning.PESYS.name }.size shouldBe 2 } @Test fun `Henter riktig antall for automatiskMigrert`() { - val metrikker = behandlingMetrics.behandlinger.collect().first().samples + val metrikker = + behandlingMetrics.behandlinger + .collect() + .first() + .samples metrikker.filter { it.labelValues[5] == "true" }.size shouldBe 1 metrikker.filter { it.labelValues[5] == "false" }.size shouldBe 4 } diff --git a/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveDaoReguleringTest.kt b/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveDaoReguleringTest.kt index 23490149f49..519df4b2ae2 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveDaoReguleringTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveDaoReguleringTest.kt @@ -32,7 +32,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class OppgaveDaoReguleringTest(val dataSource: DataSource) { +internal class OppgaveDaoReguleringTest( + val dataSource: DataSource, +) { private lateinit var oppgaveDao: OppgaveDao private lateinit var oppgaveDaoMedEndringssporing: OppgaveDaoMedEndringssporing private lateinit var sakDao: SakDao diff --git a/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveDaoTest.kt index 6ed5281d064..27a2694580f 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveDaoTest.kt @@ -31,7 +31,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class OppgaveDaoTest(val dataSource: DataSource) { +internal class OppgaveDaoTest( + val dataSource: DataSource, +) { private lateinit var oppgaveDao: OppgaveDao private lateinit var sakDao: SakDao private lateinit var saktilgangDao: SakTilgangDao diff --git a/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveRoutesTest.kt b/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveRoutesTest.kt index 70a714666e5..7ca935a2e2f 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveRoutesTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveRoutesTest.kt @@ -58,76 +58,82 @@ class OppgaveRoutesTest : BehandlingIntegrationTest() { } val sak: Sak = - client.post("/personer/saker/${SakType.BARNEPENSJON}") { - addAuthToken(tokenSaksbehandler) - contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) - }.apply { - assertEquals(HttpStatusCode.OK, status) - }.body() + client + .post("/personer/saker/${SakType.BARNEPENSJON}") { + addAuthToken(tokenSaksbehandler) + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + }.apply { + assertEquals(HttpStatusCode.OK, status) + }.body() val referanse = UUID.randomUUID().toString() val oppgave = - client.post("/oppgaver/sak/${sak.id}/opprett") { - val dto = - NyOppgaveDto(OppgaveKilde.EKSTERN, OppgaveType.JOURNALFOERING, "Mottatt journalpost", referanse) + client + .post("/oppgaver/sak/${sak.id}/opprett") { + val dto = + NyOppgaveDto(OppgaveKilde.EKSTERN, OppgaveType.JOURNALFOERING, "Mottatt journalpost", referanse) + + addAuthToken(this@OppgaveRoutesTest.systemBruker) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody(dto) + }.let { + assertEquals(HttpStatusCode.OK, it.status) + val lestOppgave: OppgaveIntern = it.body() + assertEquals(fnr, lestOppgave.fnr) + assertEquals(referanse, lestOppgave.referanse) + assertEquals(OppgaveType.JOURNALFOERING, lestOppgave.type) + lestOppgave + } + hentOppgave(client, oppgave.id) + + client + .post("/api/oppgaver/${oppgave.id}/tildel-saksbehandler") { + val dto = SaksbehandlerEndringDto(this@OppgaveRoutesTest.systemBruker) addAuthToken(this@OppgaveRoutesTest.systemBruker) header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) setBody(dto) - }.let { + }.also { assertEquals(HttpStatusCode.OK, it.status) - val lestOppgave: OppgaveIntern = it.body() - assertEquals(fnr, lestOppgave.fnr) - assertEquals(referanse, lestOppgave.referanse) - assertEquals(OppgaveType.JOURNALFOERING, lestOppgave.type) - lestOppgave } - hentOppgave(client, oppgave.id) - - client.post("/api/oppgaver/${oppgave.id}/tildel-saksbehandler") { - val dto = SaksbehandlerEndringDto(this@OppgaveRoutesTest.systemBruker) - addAuthToken(this@OppgaveRoutesTest.systemBruker) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody(dto) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - } - - client.put("/api/oppgaver/${oppgave.id}/frist") { - val dto = RedigerFristRequest(Tidspunkt.now().plus(28, ChronoUnit.DAYS)) - addAuthToken(this@OppgaveRoutesTest.systemBruker) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody(dto) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - } + client + .put("/api/oppgaver/${oppgave.id}/frist") { + val dto = RedigerFristRequest(Tidspunkt.now().plus(28, ChronoUnit.DAYS)) + addAuthToken(this@OppgaveRoutesTest.systemBruker) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody(dto) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + } - client.post("/api/oppgaver/${oppgave.id}/sett-paa-vent") { - val dto = EndrePaaVentRequest(PaaVentAarsak.OPPLYSNING_FRA_ANDRE, "", true) - addAuthToken(this@OppgaveRoutesTest.systemBruker) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody(dto) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - } + client + .post("/api/oppgaver/${oppgave.id}/sett-paa-vent") { + val dto = EndrePaaVentRequest(PaaVentAarsak.OPPLYSNING_FRA_ANDRE, "", true) + addAuthToken(this@OppgaveRoutesTest.systemBruker) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody(dto) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + } assertEquals(hentOppgave(client, oppgave.id).status, Status.PAA_VENT) - client.put("/oppgaver/ventefrist-gaar-ut") { - val dto = - VentefristGaarUtRequest( - dato = LocalDate.now().plusMonths(3), - type = setOf(OppgaveType.JOURNALFOERING), - oppgaveKilde = setOf(OppgaveKilde.EKSTERN), - oppgaver = listOf(), - ) - addAuthToken(this@OppgaveRoutesTest.systemBruker) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - setBody(dto) - }.also { - assertEquals(HttpStatusCode.OK, it.status) - } + client + .put("/oppgaver/ventefrist-gaar-ut") { + val dto = + VentefristGaarUtRequest( + dato = LocalDate.now().plusMonths(3), + type = setOf(OppgaveType.JOURNALFOERING), + oppgaveKilde = setOf(OppgaveKilde.EKSTERN), + oppgaver = listOf(), + ) + addAuthToken(this@OppgaveRoutesTest.systemBruker) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + setBody(dto) + }.also { + assertEquals(HttpStatusCode.OK, it.status) + } assertEquals(hentOppgave(client, oppgave.id).status, Status.UNDER_BEHANDLING) } } @@ -136,10 +142,11 @@ class OppgaveRoutesTest : BehandlingIntegrationTest() { client: HttpClient, oppgaveId: UUID, ): OppgaveIntern = - client.get("/api/oppgaver/$oppgaveId") { - addAuthToken(this@OppgaveRoutesTest.systemBruker) - }.let { - assertEquals(HttpStatusCode.OK, it.status) - it.body() - } + client + .get("/api/oppgaver/$oppgaveId") { + addAuthToken(this@OppgaveRoutesTest.systemBruker) + }.let { + assertEquals(HttpStatusCode.OK, it.status) + it.body() + } } diff --git a/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveServiceTest.kt b/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveServiceTest.kt index 1479269c247..c0b182d61c3 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveServiceTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/oppgave/OppgaveServiceTest.kt @@ -54,7 +54,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class OppgaveServiceTest(val dataSource: DataSource) { +internal class OppgaveServiceTest( + val dataSource: DataSource, +) { private val sakDao: SakDao = SakDao(ConnectionAutoclosingTest(dataSource)) private val oppgaveDao: OppgaveDao = spyk(OppgaveDaoImpl(ConnectionAutoclosingTest(dataSource))) private val hendelser: BehandlingHendelserKafkaProducer = mockk() @@ -472,7 +474,12 @@ internal class OppgaveServiceTest(val dataSource: DataSource) { null, ) oppgaveService.tildelSaksbehandler(nyOppgave.id, "nysaksbehandler") - val nyFrist = Tidspunkt.now().toLocalDatetimeUTC().plusMonths(4L).toTidspunkt() + val nyFrist = + Tidspunkt + .now() + .toLocalDatetimeUTC() + .plusMonths(4L) + .toTidspunkt() oppgaveService.redigerFrist(nyOppgave.id, nyFrist) val oppgaveMedNyFrist = oppgaveService.hentOppgave(nyOppgave.id) assertEquals(nyFrist, oppgaveMedNyFrist.frist) @@ -549,7 +556,12 @@ internal class OppgaveServiceTest(val dataSource: DataSource) { null, ) oppgaveService.tildelSaksbehandler(nyOppgave.id, "nysaksbehandler") - val nyFrist = Tidspunkt.now().toLocalDatetimeUTC().minusMonths(1L).toTidspunkt() + val nyFrist = + Tidspunkt + .now() + .toLocalDatetimeUTC() + .minusMonths(1L) + .toTidspunkt() assertThrows { oppgaveService.redigerFrist(nyOppgave.id, nyFrist) @@ -572,7 +584,12 @@ internal class OppgaveServiceTest(val dataSource: DataSource) { assertThrows { oppgaveService.redigerFrist( oppgaveId = nyOppgave.id, - frist = Tidspunkt.now().toLocalDatetimeUTC().plusMonths(1L).toTidspunkt(), + frist = + Tidspunkt + .now() + .toLocalDatetimeUTC() + .plusMonths(1L) + .toTidspunkt(), ) } val lagretOppgave = oppgaveService.hentOppgave(nyOppgave.id) diff --git a/apps/etterlatte-behandling/src/test/kotlin/sak/SakDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/sak/SakDaoTest.kt index 92df911598f..97ff3ade70f 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/sak/SakDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/sak/SakDaoTest.kt @@ -38,7 +38,9 @@ import java.time.LocalDate import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) -internal class SakDaoTest(val dataSource: DataSource) { +internal class SakDaoTest( + val dataSource: DataSource, +) { private lateinit var sakRepo: SakDao private lateinit var tilgangService: TilgangService private lateinit var behandlingRepo: BehandlingDao @@ -84,47 +86,53 @@ internal class SakDaoTest(val dataSource: DataSource) { // setter opprettet dato fra behandling dataSource.connection.use { - it.prepareStatement( - """ - UPDATE sak as s - SET opprettet = (select behandling_opprettet from behandling as b where b.sak_id = s.id); - """.trimIndent(), - ).executeUpdate() + it + .prepareStatement( + """ + UPDATE sak as s + SET opprettet = (select behandling_opprettet from behandling as b where b.sak_id = s.id); + """.trimIndent(), + ).executeUpdate() } val saker = dataSource.connection.use { - it.prepareStatement( - """ - select fnr, opprettet from sak; - """.trimIndent(), - ).executeQuery().toList { - Pair(getString("fnr"), getTidspunktOrNull("opprettet")) - } + it + .prepareStatement( + """ + select fnr, opprettet from sak; + """.trimIndent(), + ).executeQuery() + .toList { + Pair(getString("fnr"), getTidspunktOrNull("opprettet")) + } } val sakmedTidligereDato = saker.find { it.first === fnrMedBehandling } sakmedTidligereDato?.second?.toLocalDate()?.shouldBeToday() dataSource.connection.use { - it.prepareStatement( - """ - UPDATE sak - SET opprettet = 'yesterday'::TIMESTAMP - WHERE sak.opprettet IS NULL; - """.trimIndent(), - ).executeUpdate() + it + .prepareStatement( + """ + UPDATE sak + SET opprettet = 'yesterday'::TIMESTAMP + WHERE sak.opprettet IS NULL; + """.trimIndent(), + ).executeUpdate() } val beggesakerMedDato = dataSource.connection.use { - it.prepareStatement( - """ - select fnr, opprettet from sak; - """.trimIndent(), - ).executeQuery().toList { - Pair(getString("fnr"), getTidspunktOrNull("opprettet")) - } + it + .prepareStatement( + """ + select fnr, opprettet from sak; + """.trimIndent(), + ).executeQuery() + .toList { + Pair(getString("fnr"), getTidspunktOrNull("opprettet")) + } } val sakmedBehandlingsdato = beggesakerMedDato.find { it.first === fnrMedBehandling } @@ -329,10 +337,12 @@ internal class SakDaoTest(val dataSource: DataSource) { sakRepo.opprettSak("fnr3", SakType.BARNEPENSJON, Enheter.PORSGRUNN.enhetNr) sakRepo.opprettSak("fnr4", SakType.OMSTILLINGSSTOENAD, Enheter.PORSGRUNN.enhetNr) - sakRepo.hentSaker("", 100, emptyList(), emptyList(), SakType.BARNEPENSJON) + sakRepo + .hentSaker("", 100, emptyList(), emptyList(), SakType.BARNEPENSJON) .map { it.ident } shouldContainExactlyInAnyOrder listOf("fnr1", "fnr2", "fnr3") - sakRepo.hentSaker("", 100, emptyList(), emptyList(), SakType.OMSTILLINGSSTOENAD) + sakRepo + .hentSaker("", 100, emptyList(), emptyList(), SakType.OMSTILLINGSSTOENAD) .map { it.ident } shouldBe listOf("fnr4") val saker = sakRepo.hentSaker("", 2, emptyList(), emptyList(), SakType.BARNEPENSJON) diff --git a/apps/etterlatte-behandling/src/test/kotlin/saksbehandler/SaksbehandlerInfoDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/saksbehandler/SaksbehandlerInfoDaoTest.kt index e01938cd702..573a7496b3e 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/saksbehandler/SaksbehandlerInfoDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/saksbehandler/SaksbehandlerInfoDaoTest.kt @@ -15,7 +15,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class SaksbehandlerInfoDaoTest(val dataSource: DataSource) { +internal class SaksbehandlerInfoDaoTest( + val dataSource: DataSource, +) { private lateinit var saksbehandlerInfoDao: SaksbehandlerInfoDao @BeforeAll diff --git a/apps/etterlatte-behandling/src/test/kotlin/saksbehandler/SaksbehandlerServiceImplTest.kt b/apps/etterlatte-behandling/src/test/kotlin/saksbehandler/SaksbehandlerServiceImplTest.kt index d9137256960..35cde04860a 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/saksbehandler/SaksbehandlerServiceImplTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/saksbehandler/SaksbehandlerServiceImplTest.kt @@ -30,7 +30,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -class SaksbehandlerServiceImplTest(val dataSource: DataSource) { +class SaksbehandlerServiceImplTest( + val dataSource: DataSource, +) { private lateinit var dao: SaksbehandlerInfoDao private val axsysKlient: AxsysKlient = mockk() private val navansattKlient: NavAnsattKlient = mockk() diff --git a/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/Application.kt b/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/Application.kt index 2b83642ba5a..9b67f7694a0 100644 --- a/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/Application.kt +++ b/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/Application.kt @@ -9,15 +9,17 @@ import no.nav.helse.rapids_rivers.RapidApplication fun main() { val rapidEnv = getRapidEnv() - RapidApplication.create(rapidEnv).also { rapidsConnection -> - val beregningService = AppBuilder(Miljoevariabler(rapidEnv)).createBeregningService() - OmregningHendelserBeregningRiver( - rapidsConnection, - beregningService, - ) - SjekkOmOverstyrtBeregningRiver( - rapidsConnection, - beregningService, - ) - }.start() + RapidApplication + .create(rapidEnv) + .also { rapidsConnection -> + val beregningService = AppBuilder(Miljoevariabler(rapidEnv)).createBeregningService() + OmregningHendelserBeregningRiver( + rapidsConnection, + beregningService, + ) + SjekkOmOverstyrtBeregningRiver( + rapidsConnection, + beregningService, + ) + }.start() } diff --git a/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/AppBuilder.kt b/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/AppBuilder.kt index eeaa9464630..51c6e3c44a1 100644 --- a/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/AppBuilder.kt +++ b/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/AppBuilder.kt @@ -5,7 +5,9 @@ import io.ktor.client.HttpClient import no.nav.etterlatte.libs.common.Miljoevariabler import no.nav.etterlatte.libs.ktor.httpClientClientCredentials -class AppBuilder(props: Miljoevariabler) { +class AppBuilder( + props: Miljoevariabler, +) { private val beregningapp: HttpClient by lazy { httpClientClientCredentials( azureAppClientId = props.requireEnvValue("AZURE_APP_CLIENT_ID"), @@ -16,7 +18,5 @@ class AppBuilder(props: Miljoevariabler) { ) } - fun createBeregningService(): BeregningService { - return BeregningService(beregningapp, "http://etterlatte-beregning") - } + fun createBeregningService(): BeregningService = BeregningService(beregningapp, "http://etterlatte-beregning") } diff --git a/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/BeregningService.kt b/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/BeregningService.kt index 4f3c298e527..2ccff6ba058 100644 --- a/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/BeregningService.kt +++ b/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/BeregningService.kt @@ -52,7 +52,8 @@ class BeregningService( } suspend fun hentGrunnbeloep(): Grunnbeloep = - beregningApp.get("$url/api/beregning/grunnbeloep") + beregningApp + .get("$url/api/beregning/grunnbeloep") .also { require(it.status.isSuccess()) } .body() } diff --git a/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/OmregningHendelserBeregningRiver.kt b/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/OmregningHendelserBeregningRiver.kt index 2ab8eb05e79..f1f6884c63a 100644 --- a/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/OmregningHendelserBeregningRiver.kt +++ b/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/OmregningHendelserBeregningRiver.kt @@ -88,7 +88,8 @@ internal class OmregningHendelserBeregningRiver( return if (sakType == SakType.OMSTILLINGSSTOENAD) { val avkorting = - beregningService.regulerAvkorting(behandlingId, behandlingViOmregnerFra) + beregningService + .regulerAvkorting(behandlingId, behandlingViOmregnerFra) .body() Pair(beregning, avkorting) } else { @@ -102,7 +103,11 @@ internal class OmregningHendelserBeregningRiver( g: Grunnbeloep, behandlingId: UUID, ) { - val dato = ny.beregningsperioder.first().datoFOM.atDay(1) + val dato = + ny.beregningsperioder + .first() + .datoFOM + .atDay(1) val sistePeriodeNy = requireNotNull(ny.beregningsperioder.paaDato(dato)) val nyttBeloep = sistePeriodeNy.utbetaltBeloep val sistePeriodeGammel = gammel.beregningsperioder.paaDato(dato) @@ -152,17 +157,28 @@ internal class OmregningHendelserBeregningRiver( private fun List.paaDato(dato: LocalDate) = filter { it.datoFOM.atDay(1) <= dato } - .firstOrNull { it.datoTOM == null || it.datoTOM?.plusMonths(1)?.atDay(1)?.isAfter(dato) == true } + .firstOrNull { + it.datoTOM == null || + it.datoTOM + ?.plusMonths(1) + ?.atDay(1) + ?.isAfter(dato) == true + } } -class MindreEnnForrigeBehandling(behandlingId: UUID) : ForespoerselException( - code = "OMREGNING_UTENFOR_TOLERANSEGRENSE_MINDRE", - detail = "Ny beregning for behandling $behandlingId gir lavere sum enn forrige beregning. Skal ikke skje under omregning.", - status = HttpStatusCode.ExpectationFailed.value, -) +class MindreEnnForrigeBehandling( + behandlingId: UUID, +) : ForespoerselException( + code = "OMREGNING_UTENFOR_TOLERANSEGRENSE_MINDRE", + detail = "Ny beregning for behandling $behandlingId gir lavere sum enn forrige beregning. Skal ikke skje under omregning.", + status = HttpStatusCode.ExpectationFailed.value, + ) -class ForStorOekning(behandlingId: UUID, endring: BigDecimal) : ForespoerselException( - code = "OMREGNING_UTENFOR_TOLERANSEGRENSE_FOR_STOR_OEKNING", - detail = "Ny beregning for behandling $behandlingId gir for stor økning fra forrige omregning. Endringa var $endring", - status = HttpStatusCode.ExpectationFailed.value, -) +class ForStorOekning( + behandlingId: UUID, + endring: BigDecimal, +) : ForespoerselException( + code = "OMREGNING_UTENFOR_TOLERANSEGRENSE_FOR_STOR_OEKNING", + detail = "Ny beregning for behandling $behandlingId gir for stor økning fra forrige omregning. Endringa var $endring", + status = HttpStatusCode.ExpectationFailed.value, + ) diff --git a/apps/etterlatte-beregning-kafka/src/test/kotlin/no/nav/etterlatte/beregningkafka/OmregningsHendelserTest.kt b/apps/etterlatte-beregning-kafka/src/test/kotlin/no/nav/etterlatte/beregningkafka/OmregningsHendelserTest.kt index 4dde380a528..98ad5a41af7 100644 --- a/apps/etterlatte-beregning-kafka/src/test/kotlin/no/nav/etterlatte/beregningkafka/OmregningsHendelserTest.kt +++ b/apps/etterlatte-beregning-kafka/src/test/kotlin/no/nav/etterlatte/beregningkafka/OmregningsHendelserTest.kt @@ -88,7 +88,10 @@ internal class OmregningsHendelserTest { Assertions.assertEquals(2, inspector.inspektør.size) Assertions.assertEquals( beregningDTO.toJson(), - inspector.inspektør.message(1).get(BEREGNING_KEY).toJson(), + inspector.inspektør + .message(1) + .get(BEREGNING_KEY) + .toJson(), ) } diff --git a/apps/etterlatte-beregning-kafka/src/test/kotlin/no/nav/etterlatte/beregningkafka/SjekkOmOverstyrtBeregningRiverTest.kt b/apps/etterlatte-beregning-kafka/src/test/kotlin/no/nav/etterlatte/beregningkafka/SjekkOmOverstyrtBeregningRiverTest.kt index a9b8f98a476..bb7fbc6be4f 100644 --- a/apps/etterlatte-beregning-kafka/src/test/kotlin/no/nav/etterlatte/beregningkafka/SjekkOmOverstyrtBeregningRiverTest.kt +++ b/apps/etterlatte-beregning-kafka/src/test/kotlin/no/nav/etterlatte/beregningkafka/SjekkOmOverstyrtBeregningRiverTest.kt @@ -54,7 +54,10 @@ internal class SjekkOmOverstyrtBeregningRiverTest { assertEquals(inspector.inspektør.size, 1) assertEquals( - inspector.inspektør.message(0).get("@event_name").textValue(), + inspector.inspektør + .message(0) + .get("@event_name") + .textValue(), ReguleringHendelseType.UTFORT_SJEKK_AAPEN_OVERSTYRT.lagEventnameForType(), ) } @@ -71,7 +74,10 @@ internal class SjekkOmOverstyrtBeregningRiverTest { assertEquals(inspector.inspektør.size, 1) assertEquals( - inspector.inspektør.message(0).get("@event_name").textValue(), + inspector.inspektør + .message(0) + .get("@event_name") + .textValue(), ReguleringHendelseType.UTFORT_SJEKK_AAPEN_OVERSTYRT.lagEventnameForType(), ) } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/ApplicationBuilder.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/ApplicationBuilder.kt index e3c400c7523..f439daab903 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/ApplicationBuilder.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/ApplicationBuilder.kt @@ -224,10 +224,10 @@ class ApplicationBuilder { private val tilgangssjekker = Tilgangssjekker(config, httpClient()) private val rapidsConnection: RapidsConnection = - RapidApplication.Builder( - RapidApplication.RapidApplicationConfig.fromEnv(env, configFromEnvironment(env)), - ) - .withKtorModule { + RapidApplication + .Builder( + RapidApplication.RapidApplicationConfig.fromEnv(env, configFromEnvironment(env)), + ).withKtorModule { restModule(sikkerLogg, routePrefix = "api", config = HoconApplicationConfig(config)) { brevRoute(brevService, pdfService, brevdistribuerer, tilgangssjekker, grunnlagKlient, behandlingKlient) vedtaksbrevRoute(vedtaksbrevService, tilgangssjekker) @@ -236,8 +236,7 @@ class ApplicationBuilder { notatRoute(notatService, nyNotatService, tilgangssjekker) oversendelseBrevRoute(oversendelseBrevService, tilgangssjekker) } - } - .build() + }.build() .apply { val brevgenerering = StartInformasjonsbrevgenereringRiver( @@ -286,7 +285,8 @@ class ApplicationBuilder { it.install(Auth) { clientCredential { config = - env.toMutableMap() + env + .toMutableMap() .apply { put("AZURE_APP_OUTBOUND_SCOPE", requireNotNull(get(scope))) } } } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/BrevParametre.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/BrevParametre.kt index ac0c553445d..d7eb67b3f77 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/BrevParametre.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/BrevParametre.kt @@ -23,17 +23,14 @@ sealed class BrevParametre { val nasjonalEllerUtland: NasjonalEllerUtland, override val brevkode: EtterlatteBrevKode = EtterlatteBrevKode.OMSTILLINGSSTOENAD_AKTIVITETSPLIKT_INFORMASJON_4MND_INNHOLD, ) : BrevParametre() { - override fun brevDataMapping(req: RedigerbarTekstRequest): BrevDataRedigerbar { - return AktivitetspliktBrevdata(aktivitetsgrad, utbetaling, redusertEtterInntekt, nasjonalEllerUtland) - } + override fun brevDataMapping(req: RedigerbarTekstRequest): BrevDataRedigerbar = + AktivitetspliktBrevdata(aktivitetsgrad, utbetaling, redusertEtterInntekt, nasjonalEllerUtland) } @JsonTypeName("TOMT_BREV") - class TomtBrev() : BrevParametre() { + class TomtBrev : BrevParametre() { override val brevkode: EtterlatteBrevKode = EtterlatteBrevKode.TOM_DELMAL - override fun brevDataMapping(req: RedigerbarTekstRequest): BrevDataRedigerbar { - return ManueltBrevData() - } + override fun brevDataMapping(req: RedigerbarTekstRequest): BrevDataRedigerbar = ManueltBrevData() } } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/BrevRoute.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/BrevRoute.kt index 67326865d49..39f5ff7fbff 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/BrevRoute.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/BrevRoute.kt @@ -164,7 +164,8 @@ fun Route.brevRoute( } } - post { // TODO: sjekk om unused, erstattet med /spesifikk? + post { + // TODO: sjekk om unused, erstattet med /spesifikk? withSakId(tilgangssjekker, skrivetilgang = true) { sakId -> logger.info("Oppretter nytt brev på sak=$sakId)") diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/BrevService.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/BrevService.kt index 625569edb17..02ef8efc888 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/BrevService.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/BrevService.kt @@ -24,13 +24,9 @@ class BrevService( ) { private val logger = LoggerFactory.getLogger(BrevService::class.java) - fun hentBrev(id: BrevID): Brev { - return db.hentBrev(id) - } + fun hentBrev(id: BrevID): Brev = db.hentBrev(id) - fun hentBrevForSak(sakId: Long): List { - return db.hentBrevForSak(sakId) - } + fun hentBrevForSak(sakId: Long): List = db.hentBrevForSak(sakId) suspend fun opprettNyttManueltBrev( sakId: Long, @@ -38,14 +34,15 @@ class BrevService( brevkode: EtterlatteBrevKode, brevDataMapping: suspend (RedigerbarTekstRequest) -> BrevDataRedigerbar, ): Brev = - brevoppretter.opprettBrev( - sakId = sakId, - behandlingId = null, - bruker = bruker, - brevKode = { brevkode }, - brevtype = brevkode.brevtype, - brevDataMapping = brevDataMapping, - ).first + brevoppretter + .opprettBrev( + sakId = sakId, + behandlingId = null, + bruker = bruker, + brevKode = { brevkode }, + brevtype = brevkode.brevtype, + brevDataMapping = brevDataMapping, + ).first data class BrevPayload( val hoveddel: Slate?, @@ -54,11 +51,13 @@ class BrevService( fun hentBrevPayload(id: BrevID): BrevPayload { val hoveddel = - db.hentBrevPayload(id) + db + .hentBrevPayload(id) .also { logger.info("Hentet payload for brev (id=$id)") } val vedlegg = - db.hentBrevPayloadVedlegg(id) + db + .hentBrevPayloadVedlegg(id) .also { logger.info("Hentet payload til vedlegg for brev (id=$id)") } return BrevPayload(hoveddel, vedlegg) @@ -69,7 +68,8 @@ class BrevService( payload: Slate, ): Int { sjekkOmBrevKanEndres(id) - return db.oppdaterPayload(id, payload) + return db + .oppdaterPayload(id, payload) .also { logger.info("Payload for brev (id=$id) oppdatert") } } @@ -78,7 +78,8 @@ class BrevService( payload: List, ): Int { sjekkOmBrevKanEndres(id) - return db.oppdaterPayloadVedlegg(id, payload) + return db + .oppdaterPayloadVedlegg(id, payload) .also { logger.info("Vedlegg payload for brev (id=$id) oppdatert") } } @@ -87,7 +88,8 @@ class BrevService( mottaker: Mottaker, ): Int { sjekkOmBrevKanEndres(id) - return db.oppdaterMottaker(id, mottaker) + return db + .oppdaterMottaker(id, mottaker) .also { logger.info("Mottaker på brev (id=$id) oppdatert") } } @@ -96,7 +98,8 @@ class BrevService( tittel: String, ): Int { sjekkOmBrevKanEndres(id) - return db.oppdaterTittel(id, tittel) + return db + .oppdaterTittel(id, tittel) .also { logger.info("Tittel på brev (id=$id) oppdatert") } } @@ -106,7 +109,8 @@ class BrevService( ) { sjekkOmBrevKanEndres(id) - db.oppdaterSpraak(id, spraak) + db + .oppdaterSpraak(id, spraak) .also { logger.info("Språk i brev (id=$id) endret til $spraak") } } @@ -167,12 +171,14 @@ class BrevService( } } -class BrevKanIkkeEndres(brev: Brev) : UgyldigForespoerselException( - code = "BREV_KAN_IKKE_ENDRES", - detail = "Brevet kan ikke endres siden det har status ${brev.status.name.lowercase()}", - meta = - mapOf( - "brevId" to brev.id, - "status" to brev.status, - ), -) +class BrevKanIkkeEndres( + brev: Brev, +) : UgyldigForespoerselException( + code = "BREV_KAN_IKKE_ENDRES", + detail = "Brevet kan ikke endres siden det har status ${brev.status.name.lowercase()}", + meta = + mapOf( + "brevId" to brev.id, + "status" to brev.status, + ), + ) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/Brevoppretter.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/Brevoppretter.kt index f3dc2a4df6b..968c1106bd7 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/Brevoppretter.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/Brevoppretter.kt @@ -198,8 +198,10 @@ private data class OpprettBrevRequest( val innholdVedlegg: List?, ) -class KanIkkeOppretteVedtaksbrev(behandlingId: UUID) : UgyldigForespoerselException( - code = "KAN_IKKE_ENDRE_VEDTAKSBREV", - detail = "Statusen til behandlingen tillater ikke at det opprettes vedtaksbrev", - meta = mapOf("behandlingId" to behandlingId), -) +class KanIkkeOppretteVedtaksbrev( + behandlingId: UUID, +) : UgyldigForespoerselException( + code = "KAN_IKKE_ENDRE_VEDTAKSBREV", + detail = "Statusen til behandlingen tillater ikke at det opprettes vedtaksbrev", + meta = mapOf("behandlingId" to behandlingId), + ) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/JournalfoerBrevService.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/JournalfoerBrevService.kt index c1784d05735..a28a73d9b9b 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/JournalfoerBrevService.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/JournalfoerBrevService.kt @@ -89,7 +89,8 @@ class JournalfoerBrevService( db.settBrevJournalfoert(brev.id, response) } else { logger.info("Kunne ikke ferdigstille journalpost. Forsøker på nytt...") - dokarkivService.ferdigstillJournalpost(response.journalpostId, sak.enhet) + dokarkivService + .ferdigstillJournalpost(response.journalpostId, sak.enhet) .also { db.settBrevJournalfoert(brev.id, response.copy(journalpostferdigstilt = it)) } } @@ -140,12 +141,15 @@ class JournalfoerBrevService( } } -class FeilStatusForJournalfoering(brevID: BrevID, status: Status) : UgyldigForespoerselException( - code = "FEIL_STATUS_FOR_JOURNALFOERING", - detail = "Kan ikke journalføre brev $brevID med status ${status.name.lowercase()}", - meta = - mapOf( - "brevId" to brevID, - "status" to status, - ), -) +class FeilStatusForJournalfoering( + brevID: BrevID, + status: Status, +) : UgyldigForespoerselException( + code = "FEIL_STATUS_FOR_JOURNALFOERING", + detail = "Kan ikke journalføre brev $brevID med status ${status.name.lowercase()}", + meta = + mapOf( + "brevId" to brevID, + "status" to status, + ), + ) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/MigreringBrevDataService.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/MigreringBrevDataService.kt index 8edde188f0e..e08b424d417 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/MigreringBrevDataService.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/MigreringBrevDataService.kt @@ -8,7 +8,9 @@ import no.nav.etterlatte.libs.common.Vedtaksloesning import no.nav.etterlatte.libs.common.feilhaandtering.InternfeilException import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo -class MigreringBrevDataService(private val brevdataFacade: BrevdataFacade) { +class MigreringBrevDataService( + private val brevdataFacade: BrevdataFacade, +) { suspend fun opprettMigreringBrevdata( generellBrevData: GenerellBrevData, brukerTokenInfo: BrukerTokenInfo, diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/PDFGenerator.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/PDFGenerator.kt index a6686ec2e35..5054cf4decf 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/PDFGenerator.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/PDFGenerator.kt @@ -107,7 +107,8 @@ class PDFGenerator( sakType = sak.sakType, ) - return brevbakerService.genererPdf(brev.id, brevRequest) + return brevbakerService + .genererPdf(brev.id, brevRequest) .also { lagrePdfHvisVedtakFattet(generellBrevData, brev, it) } } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/PDFService.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/PDFService.kt index 47d080b19d5..c5f470f16fc 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/PDFService.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/PDFService.kt @@ -19,7 +19,10 @@ import no.nav.etterlatte.libs.common.sak.Sak import no.nav.etterlatte.libs.common.tidspunkt.Tidspunkt import org.slf4j.LoggerFactory -class PDFService(private val db: BrevRepository, private val virusScanService: VirusScanService) { +class PDFService( + private val db: BrevRepository, + private val virusScanService: VirusScanService, +) { private val logger = LoggerFactory.getLogger(this::class.java) suspend fun lagreOpplastaPDF( @@ -29,7 +32,8 @@ class PDFService(private val db: BrevRepository, private val virusScanService: V val request = multiPart .first { it is PartData.FormItem } - .let { it as PartData.FormItem }.value + .let { it as PartData.FormItem } + .value .let { objectMapper.readValue(it) } val fil: ByteArray = diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/RedigerbartVedleggHenter.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/RedigerbartVedleggHenter.kt index ac5b9b1e7b1..2e3db276dd6 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/RedigerbartVedleggHenter.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/RedigerbartVedleggHenter.kt @@ -15,7 +15,10 @@ import no.nav.etterlatte.libs.common.behandling.SakType import no.nav.etterlatte.libs.common.vedtak.VedtakType import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo -class RedigerbartVedleggHenter(private val brevbakerService: BrevbakerService, private val brevdataFacade: BrevdataFacade) { +class RedigerbartVedleggHenter( + private val brevbakerService: BrevbakerService, + private val brevdataFacade: BrevdataFacade, +) { suspend fun hentInitiellPayloadVedlegg( bruker: BrukerTokenInfo, generellBrevData: GenerellBrevData, diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/VedtaksbrevService.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/VedtaksbrevService.kt index 879f8d1bf90..089be58994e 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/VedtaksbrevService.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/VedtaksbrevService.kt @@ -203,36 +203,47 @@ class VedtaksbrevService( } } -class UgyldigStatusKanIkkeFerdigstilles(id: BrevID, status: Status) : UgyldigForespoerselException( - code = "UGYLDIG_STATUS_BREV", - detail = "Brevet kan ikke ferdigstilles når status er ${status.name.lowercase()}", - meta = - mapOf( - "id" to id, - "status" to status, - ), -) - -class VedtaksbrevKanIkkeSlettes(brevId: BrevID, detalj: String) : IkkeTillattException( - code = "VEDTAKSBREV_KAN_IKKE_SLETTES", - detail = "Vedtaksbrevet kan ikke slettes: $detalj", - meta = - mapOf( - "id" to brevId, - ), -) - -class UgyldigMottakerKanIkkeFerdigstilles(id: BrevID) : UgyldigForespoerselException( - code = "UGYLDIG_MOTTAKER_BREV", - detail = "Brevet kan ikke ferdigstilles med ugyldig mottaker og/eller adresse", - meta = - mapOf( - "id" to id, - ), -) - -class SaksbehandlerOgAttestantSammePerson(saksbehandler: String, attestant: String) : UgyldigForespoerselException( - code = "SAKSBEHANDLER_OG_ATTESTANT_SAMME_PERSON", - detail = "Kan ikke ferdigstille vedtaksbrevet når saksbehandler ($saksbehandler) og attestant ($attestant) er samme person.", - meta = mapOf("saksbehandler" to saksbehandler, "attestant" to attestant), -) +class UgyldigStatusKanIkkeFerdigstilles( + id: BrevID, + status: Status, +) : UgyldigForespoerselException( + code = "UGYLDIG_STATUS_BREV", + detail = "Brevet kan ikke ferdigstilles når status er ${status.name.lowercase()}", + meta = + mapOf( + "id" to id, + "status" to status, + ), + ) + +class VedtaksbrevKanIkkeSlettes( + brevId: BrevID, + detalj: String, +) : IkkeTillattException( + code = "VEDTAKSBREV_KAN_IKKE_SLETTES", + detail = "Vedtaksbrevet kan ikke slettes: $detalj", + meta = + mapOf( + "id" to brevId, + ), + ) + +class UgyldigMottakerKanIkkeFerdigstilles( + id: BrevID, +) : UgyldigForespoerselException( + code = "UGYLDIG_MOTTAKER_BREV", + detail = "Brevet kan ikke ferdigstilles med ugyldig mottaker og/eller adresse", + meta = + mapOf( + "id" to id, + ), + ) + +class SaksbehandlerOgAttestantSammePerson( + saksbehandler: String, + attestant: String, +) : UgyldigForespoerselException( + code = "SAKSBEHANDLER_OG_ATTESTANT_SAMME_PERSON", + detail = "Kan ikke ferdigstille vedtaksbrevet når saksbehandler ($saksbehandler) og attestant ($attestant) er samme person.", + meta = mapOf("saksbehandler" to saksbehandler, "attestant" to attestant), + ) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/Norg2Klient.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/Norg2Klient.kt index 6f8eccd7cc1..6d53f9afd83 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/Norg2Klient.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/Norg2Klient.kt @@ -17,7 +17,8 @@ class Norg2Klient( private val logger = LoggerFactory.getLogger(Norg2Klient::class.java) private val cache = - Caffeine.newBuilder() + Caffeine + .newBuilder() .expireAfterWrite(Duration.ofDays(1)) .build() @@ -35,7 +36,8 @@ class Norg2Klient( if (response.status.isSuccess()) { logger.info("Hentet enhet fra Norg2 for enhet $enhet") - response.body() + response + .body() .apply { kontaktinfo = hentKontaktinformasjon(enhet) } .also { cache.put(enhet, it) } } else { diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/RegoppslagKlient.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/RegoppslagKlient.kt index b56a9c13406..86cfa37ed21 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/RegoppslagKlient.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/RegoppslagKlient.kt @@ -25,7 +25,8 @@ class RegoppslagKlient( private val logger = LoggerFactory.getLogger(RegoppslagKlient::class.java) private val cache = - Caffeine.newBuilder() + Caffeine + .newBuilder() .expireAfterWrite(Duration.ofMinutes(15)) .build() @@ -42,12 +43,12 @@ class RegoppslagKlient( } else { logger.info("Ingen cachet mottakeradresse funnet. Henter fra regoppslag") - client.post("$url/rest/postadresse") { - behandlingsnummer(sakType) - contentType(ContentType.Application.Json) - setBody(RegoppslagRequest(ident)) - } - .body() + client + .post("$url/rest/postadresse") { + behandlingsnummer(sakType) + contentType(ContentType.Application.Json) + setBody(RegoppslagRequest(ident)) + }.body() .also { sikkerLogg.info("Respons fra regoppslag: $it") cache.put(ident, it) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/enhetsregister/BrregKlient.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/enhetsregister/BrregKlient.kt index dcbe6adba9e..1c06e74e1bd 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/enhetsregister/BrregKlient.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/enhetsregister/BrregKlient.kt @@ -10,7 +10,10 @@ import io.ktor.http.ContentType import io.ktor.http.isSuccess import org.slf4j.LoggerFactory -class BrregKlient(private val httpClient: HttpClient, private val host: String) { +class BrregKlient( + private val httpClient: HttpClient, + private val host: String, +) { private val logger = LoggerFactory.getLogger(BrregService::class.java) suspend fun hentEnheter(): List { @@ -40,8 +43,12 @@ class BrregKlient(private val httpClient: HttpClient, private val host: String) } } -class ResponseWrapper(val _embedded: Embedded?) { - class Embedded(val enheter: List) +class ResponseWrapper( + val _embedded: Embedded?, +) { + class Embedded( + val enheter: List, + ) } @JsonIgnoreProperties(ignoreUnknown = true) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/enhetsregister/BrregService.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/enhetsregister/BrregService.kt index b6c36e1e3fe..ef6dc214923 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/enhetsregister/BrregService.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/enhetsregister/BrregService.kt @@ -5,11 +5,14 @@ import org.slf4j.LoggerFactory import java.time.Duration import java.time.LocalDate -class BrregService(private val klient: BrregKlient) { +class BrregService( + private val klient: BrregKlient, +) { private val logger = LoggerFactory.getLogger(BrregService::class.java) private val cache = - Caffeine.newBuilder() + Caffeine + .newBuilder() .expireAfterWrite(Duration.ofDays(1)) .build>() diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/navansatt/NavansattKlient.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/navansatt/NavansattKlient.kt index 4621a461022..fbd7405655a 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/navansatt/NavansattKlient.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/adresse/navansatt/NavansattKlient.kt @@ -15,7 +15,8 @@ class NavansattKlient( private val logger = LoggerFactory.getLogger(NavansattKlient::class.java) private val cache = - Caffeine.newBuilder() + Caffeine + .newBuilder() .expireAfterWrite(Duration.ofMinutes(15)) .build() diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/behandling/Behandling.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/behandling/Behandling.kt index e38983ba182..c3b51cf464f 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/behandling/Behandling.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/behandling/Behandling.kt @@ -42,7 +42,12 @@ data class GenerellBrevData( // Tidligere erMigrering - Vil si saker som er løpende i Pesys når det vedtas i Gjenny og opphøres etter vedtaket. fun loependeIPesys() = systemkilde == Vedtaksloesning.PESYS && behandlingId != null && revurderingsaarsak == null - fun vedtakstype() = forenkletVedtak?.type?.name?.lowercase()?.replace("_", " ") + fun vedtakstype() = + forenkletVedtak + ?.type + ?.name + ?.lowercase() + ?.replace("_", " ") fun erForeldreloes() = with(personerISak) { diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/behandling/Grunnlagmapper.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/behandling/Grunnlagmapper.kt index 3de24d8dff8..6e360b58150 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/behandling/Grunnlagmapper.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/behandling/Grunnlagmapper.kt @@ -130,7 +130,11 @@ private fun Grunnlag.hentForelderVerge(): ForelderVerge? { } private fun Grunnlag.erAnsvarligForelder(gjenlevende: Grunnlagsdata): Boolean { - val soekersAnsvarligeForeldre = this.soeker.hentFamilierelasjon()?.verdi?.ansvarligeForeldre ?: emptyList() + val soekersAnsvarligeForeldre = + this.soeker + .hentFamilierelasjon() + ?.verdi + ?.ansvarligeForeldre ?: emptyList() return soekersAnsvarligeForeldre.contains(gjenlevende.hentFoedselsnummer()?.verdi) } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/behandling/Personer.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/behandling/Personer.kt index 02272ed3932..2ed52d2ba0c 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/behandling/Personer.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/behandling/Personer.kt @@ -14,7 +14,9 @@ data class PersonerISak( fun soekerOgEventuellVerge(): SoekerOgEventuellVerge = SoekerOgEventuellVerge(soeker, verge) } -data class Innsender(val fnr: Foedselsnummer) +data class Innsender( + val fnr: Foedselsnummer, +) data class Soeker( val fornavn: String, diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/brevbaker/BlockTilSlateKonverterer.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/brevbaker/BlockTilSlateKonverterer.kt index fa005fa6bc7..7379b16db2e 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/brevbaker/BlockTilSlateKonverterer.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/brevbaker/BlockTilSlateKonverterer.kt @@ -48,12 +48,14 @@ object BlockTilSlateKonverterer { LetterMarkup.ParagraphContent.Type.ITEM_LIST -> { opprettElementFraInnerELementsOgNullstill(innerElements, elements) - Slate.Element( - type = Slate.ElementType.BULLETED_LIST, - children = - (it as LetterMarkup.ParagraphContent.ItemList).items - .map { item -> konverterListItem(item) }, - ).let { element -> elements.add(element) } + Slate + .Element( + type = Slate.ElementType.BULLETED_LIST, + children = + (it as LetterMarkup.ParagraphContent.ItemList) + .items + .map { item -> konverterListItem(item) }, + ).let { element -> elements.add(element) } } else -> { throw IllegalArgumentException("Ukjent type: ${it.type}") diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/brevbaker/BrevbakerKlient.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/brevbaker/BrevbakerKlient.kt index 4e3c17c9404..495a172e01e 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/brevbaker/BrevbakerKlient.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/brevbaker/BrevbakerKlient.kt @@ -18,22 +18,26 @@ import java.time.Duration import kotlin.time.DurationUnit import kotlin.time.measureTimedValue -class BrevbakerKlient(private val client: HttpClient, private val apiUrl: String) { +class BrevbakerKlient( + private val client: HttpClient, + private val apiUrl: String, +) { private val logger = LoggerFactory.getLogger(BrevbakerKlient::class.java) private val sikkerlogg = sikkerlogger() suspend fun genererPdf(brevRequest: BrevbakerRequest): BrevbakerPdfResponse = try { measureTimedValue { - client.post("$apiUrl/etterlatte/pdf") { - contentType(ContentType.Application.Json) - setBody(brevRequest) - timeout { - socketTimeoutMillis = Duration.ofMinutes(3).toMillis() - requestTimeoutMillis = Duration.ofMinutes(4).toMillis() - connectTimeoutMillis = Duration.ofMinutes(1).toMillis() - } - }.body() + client + .post("$apiUrl/etterlatte/pdf") { + contentType(ContentType.Application.Json) + setBody(brevRequest) + timeout { + socketTimeoutMillis = Duration.ofMinutes(3).toMillis() + requestTimeoutMillis = Duration.ofMinutes(4).toMillis() + connectTimeoutMillis = Duration.ofMinutes(1).toMillis() + } + }.body() }.let { (result, duration) -> logger.info("Fullført brevbaker pdf OK (${duration.toString(DurationUnit.SECONDS, 2)})") result @@ -46,10 +50,11 @@ class BrevbakerKlient(private val client: HttpClient, private val apiUrl: String suspend fun genererHTML(brevRequest: BrevbakerRequest): BrevbakerHTMLResponse = try { measureTimedValue { - client.post("$apiUrl/etterlatte/html") { - contentType(ContentType.Application.Json) - setBody(brevRequest.toJsonNode()) - }.body() + client + .post("$apiUrl/etterlatte/html") { + contentType(ContentType.Application.Json) + setBody(brevRequest.toJsonNode()) + }.body() }.let { (result, duration) -> logger.info("Fullført brevbaker HTML OK (${duration.toString(DurationUnit.SECONDS, 2)})") result @@ -62,10 +67,11 @@ class BrevbakerKlient(private val client: HttpClient, private val apiUrl: String suspend fun genererJSON(brevRequest: BrevbakerRequest): LetterMarkup = try { measureTimedValue { - client.post("$apiUrl/etterlatte/json") { - contentType(ContentType.Application.Json) - setBody(brevRequest.toJsonNode()) - }.body() + client + .post("$apiUrl/etterlatte/json") { + contentType(ContentType.Application.Json) + setBody(brevRequest.toJsonNode()) + }.body() }.let { (result, duration) -> logger.info("Fullført brevbaker JSON OK (${duration.toString(DurationUnit.SECONDS, 2)})") result @@ -76,10 +82,19 @@ class BrevbakerKlient(private val client: HttpClient, private val apiUrl: String } } -class BrevbakerException(msg: String, cause: Throwable) : Exception(msg, cause) +class BrevbakerException( + msg: String, + cause: Throwable, +) : Exception(msg, cause) -class BrevbakerPdfResponse(val base64pdf: String, val letterMetadata: LetterMetadata) +class BrevbakerPdfResponse( + val base64pdf: String, + val letterMetadata: LetterMetadata, +) -class BrevbakerHTMLResponse(val html: Map, val letterMetadata: LetterMetadata) +class BrevbakerHTMLResponse( + val html: Map, + val letterMetadata: LetterMetadata, +) private fun BrevbakerRequest.toJsonNode(): JsonNode = objectMapper.readTree(toJson()) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/brevbaker/BrevbakerRequest.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/brevbaker/BrevbakerRequest.kt index 290ea95dd3b..2b6781d7ea5 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/brevbaker/BrevbakerRequest.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/brevbaker/BrevbakerRequest.kt @@ -101,14 +101,16 @@ enum class LanguageCode { ; companion object { - fun spraakToLanguageCode(spraak: Spraak): LanguageCode { - return when (spraak) { + fun spraakToLanguageCode(spraak: Spraak): LanguageCode = + when (spraak) { Spraak.EN -> ENGLISH Spraak.NB -> BOKMAL Spraak.NN -> NYNORSK } - } } } -data class SoekerOgEventuellVerge(val soeker: Soeker, val verge: Verge?) +data class SoekerOgEventuellVerge( + val soeker: Soeker, + val verge: Verge?, +) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/brevbaker/BrevbakerService.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/brevbaker/BrevbakerService.kt index 8632b6b39ba..cfd8629d514 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/brevbaker/BrevbakerService.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/brevbaker/BrevbakerService.kt @@ -12,7 +12,10 @@ import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo import org.slf4j.LoggerFactory import java.util.Base64 -class BrevbakerService(private val brevbakerKlient: BrevbakerKlient, private val adresseService: AdresseService) { +class BrevbakerService( + private val brevbakerKlient: BrevbakerKlient, + private val adresseService: AdresseService, +) { private val logger = LoggerFactory.getLogger(this::class.java) suspend fun genererPdf( @@ -21,7 +24,9 @@ class BrevbakerService(private val brevbakerKlient: BrevbakerKlient, private val ): Pdf { val brevbakerResponse = retryOgPakkUt { brevbakerKlient.genererPdf(brevRequest) } - return Base64.getDecoder().decode(brevbakerResponse.base64pdf) + return Base64 + .getDecoder() + .decode(brevbakerResponse.base64pdf) .let { Pdf(it) } .also { logger.info("Generert brev (id=$brevID) med størrelse: ${it.bytes.size}") } } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/db/BrevRepository.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/db/BrevRepository.kt index e95192dd3fc..2fa90eb6972 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/db/BrevRepository.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/db/BrevRepository.kt @@ -47,7 +47,9 @@ import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo import java.util.UUID import javax.sql.DataSource -class BrevRepository(private val ds: DataSource) { +class BrevRepository( + private val ds: DataSource, +) { fun hentBrev(id: BrevID): Brev = using(sessionOf(ds)) { it.run(queryOf(HENT_BREV_QUERY, id).map(tilBrev).asSingle) @@ -90,18 +92,20 @@ class BrevRepository(private val ds: DataSource) { id: BrevID, payload: Slate, ) = ds.transaction { tx -> - tx.run( - queryOf( - OPPDATER_INNHOLD_PAYLOAD, - mapOf( - "brev_id" to id, - "spraak" to Spraak.NB.name, - "payload" to payload.toJson(), - ), - ).asUpdate, - ).also { require(it == 1) } + tx + .run( + queryOf( + OPPDATER_INNHOLD_PAYLOAD, + mapOf( + "brev_id" to id, + "spraak" to Spraak.NB.name, + "payload" to payload.toJson(), + ), + ).asUpdate, + ).also { require(it == 1) } - tx.lagreHendelse(id, Status.OPPDATERT, payload.toJson()) + tx + .lagreHendelse(id, Status.OPPDATERT, payload.toJson()) .also { require(it == 1) } } @@ -109,18 +113,20 @@ class BrevRepository(private val ds: DataSource) { id: BrevID, payload: List, ) = ds.transaction { tx -> - tx.run( - queryOf( - OPPDATER_INNHOLD_PAYLOAD_VEDLEGG, - mapOf( - "brev_id" to id, - "spraak" to Spraak.NB.name, - "payload_vedlegg" to payload.toJson(), - ), - ).asUpdate, - ).also { require(it == 1) } + tx + .run( + queryOf( + OPPDATER_INNHOLD_PAYLOAD_VEDLEGG, + mapOf( + "brev_id" to id, + "spraak" to Spraak.NB.name, + "payload_vedlegg" to payload.toJson(), + ), + ).asUpdate, + ).also { require(it == 1) } - tx.lagreHendelse(id, Status.OPPDATERT, payload.toJson()) + tx + .lagreHendelse(id, Status.OPPDATERT, payload.toJson()) .also { require(it == 1) } } @@ -128,27 +134,29 @@ class BrevRepository(private val ds: DataSource) { id: BrevID, mottaker: Mottaker, ) = ds.transaction { tx -> - tx.run( - queryOf( - OPPDATER_MOTTAKER_QUERY, - mapOf( - "brev_id" to id, - "foedselsnummer" to mottaker.foedselsnummer?.value?.let { it.ifBlank { null } }, - "orgnummer" to mottaker.orgnummer?.let { it.ifBlank { null } }, - "navn" to mottaker.navn, - "adressetype" to mottaker.adresse.adresseType, - "adresselinje1" to mottaker.adresse.adresselinje1, - "adresselinje2" to mottaker.adresse.adresselinje2, - "adresselinje3" to mottaker.adresse.adresselinje3, - "postnummer" to mottaker.adresse.postnummer, - "poststed" to mottaker.adresse.poststed, - "landkode" to mottaker.adresse.landkode, - "land" to mottaker.adresse.land, - ), - ).asUpdate, - ).also { require(it == 1) } + tx + .run( + queryOf( + OPPDATER_MOTTAKER_QUERY, + mapOf( + "brev_id" to id, + "foedselsnummer" to mottaker.foedselsnummer?.value?.let { it.ifBlank { null } }, + "orgnummer" to mottaker.orgnummer?.let { it.ifBlank { null } }, + "navn" to mottaker.navn, + "adressetype" to mottaker.adresse.adresseType, + "adresselinje1" to mottaker.adresse.adresselinje1, + "adresselinje2" to mottaker.adresse.adresselinje2, + "adresselinje3" to mottaker.adresse.adresselinje3, + "postnummer" to mottaker.adresse.postnummer, + "poststed" to mottaker.adresse.poststed, + "landkode" to mottaker.adresse.landkode, + "land" to mottaker.adresse.land, + ), + ).asUpdate, + ).also { require(it == 1) } - tx.lagreHendelse(id, Status.OPPDATERT, mottaker.toJson()) + tx + .lagreHendelse(id, Status.OPPDATERT, mottaker.toJson()) .also { require(it == 1) } } @@ -156,17 +164,19 @@ class BrevRepository(private val ds: DataSource) { id: BrevID, tittel: String, ) = ds.transaction { tx -> - tx.run( - queryOf( - OPPDATER_TITTEL_QUERY, - mapOf( - "brev_id" to id, - "tittel" to tittel, - ), - ).asUpdate, - ).also { require(it == 1) } + tx + .run( + queryOf( + OPPDATER_TITTEL_QUERY, + mapOf( + "brev_id" to id, + "tittel" to tittel, + ), + ).asUpdate, + ).also { require(it == 1) } - tx.lagreHendelse(id, Status.OPPDATERT, tittel.toJson()) + tx + .lagreHendelse(id, Status.OPPDATERT, tittel.toJson()) .also { require(it == 1) } } @@ -174,17 +184,19 @@ class BrevRepository(private val ds: DataSource) { id: BrevID, spraak: Spraak, ) = ds.transaction { tx -> - tx.run( - queryOf( - OPPDATER_SPRAAK_QUERY, - mapOf( - "brev_id" to id, - "spraak" to spraak.name, - ), - ).asUpdate, - ).also { require(it == 1) } + tx + .run( + queryOf( + OPPDATER_SPRAAK_QUERY, + mapOf( + "brev_id" to id, + "spraak" to spraak.name, + ), + ).asUpdate, + ).also { require(it == 1) } - tx.lagreHendelse(id, Status.OPPDATERT, spraak.toJson()) + tx + .lagreHendelse(id, Status.OPPDATERT, spraak.toJson()) .also { require(it == 1) } } @@ -193,15 +205,16 @@ class BrevRepository(private val ds: DataSource) { pdf: Pdf, ) { ds.transaction { tx -> - tx.run( - queryOf( - OPPRETT_PDF_QUERY, - mapOf( - "brev_id" to id, - "bytes" to pdf.bytes, - ), - ).asUpdate, - ).also { oppdatert -> require(oppdatert == 1) } + tx + .run( + queryOf( + OPPRETT_PDF_QUERY, + mapOf( + "brev_id" to id, + "bytes" to pdf.bytes, + ), + ).asUpdate, + ).also { oppdatert -> require(oppdatert == 1) } tx.lagreHendelse(id, Status.FERDIGSTILT) } @@ -212,15 +225,16 @@ class BrevRepository(private val ds: DataSource) { pdf: Pdf, ) { using(sessionOf(ds)) { - it.run( - queryOf( - OPPRETT_ELLER_OPPDATER_PDF_QUERY, - mapOf( - "brev_id" to id, - "bytes" to pdf.bytes, - ), - ).asUpdate, - ).also { oppdatert -> require(oppdatert == 1) } + it + .run( + queryOf( + OPPRETT_ELLER_OPPDATER_PDF_QUERY, + mapOf( + "brev_id" to id, + "bytes" to pdf.bytes, + ), + ).asUpdate, + ).also { oppdatert -> require(oppdatert == 1) } } } @@ -257,40 +271,43 @@ class BrevRepository(private val ds: DataSource) { requireNotNull(id) { "Brev ikke opprettet!" } - tx.run( - queryOf( - OPPRETT_MOTTAKER_QUERY, - mapOf( - "brev_id" to id, - "foedselsnummer" to ulagretBrev.mottaker.foedselsnummer?.value, - "orgnummer" to ulagretBrev.mottaker.orgnummer, - "navn" to ulagretBrev.mottaker.navn, - "adressetype" to ulagretBrev.mottaker.adresse.adresseType, - "adresselinje1" to ulagretBrev.mottaker.adresse.adresselinje1, - "adresselinje2" to ulagretBrev.mottaker.adresse.adresselinje2, - "adresselinje3" to ulagretBrev.mottaker.adresse.adresselinje3, - "postnummer" to ulagretBrev.mottaker.adresse.postnummer, - "poststed" to ulagretBrev.mottaker.adresse.poststed, - "landkode" to ulagretBrev.mottaker.adresse.landkode, - "land" to ulagretBrev.mottaker.adresse.land, - ), - ).asUpdate, - ).also { opprettet -> require(opprettet == 1) } + tx + .run( + queryOf( + OPPRETT_MOTTAKER_QUERY, + mapOf( + "brev_id" to id, + "foedselsnummer" to ulagretBrev.mottaker.foedselsnummer?.value, + "orgnummer" to ulagretBrev.mottaker.orgnummer, + "navn" to ulagretBrev.mottaker.navn, + "adressetype" to ulagretBrev.mottaker.adresse.adresseType, + "adresselinje1" to ulagretBrev.mottaker.adresse.adresselinje1, + "adresselinje2" to ulagretBrev.mottaker.adresse.adresselinje2, + "adresselinje3" to ulagretBrev.mottaker.adresse.adresselinje3, + "postnummer" to ulagretBrev.mottaker.adresse.postnummer, + "poststed" to ulagretBrev.mottaker.adresse.poststed, + "landkode" to ulagretBrev.mottaker.adresse.landkode, + "land" to ulagretBrev.mottaker.adresse.land, + ), + ).asUpdate, + ).also { opprettet -> require(opprettet == 1) } - tx.run( - queryOf( - OPPRETT_INNHOLD_QUERY, - mapOf( - "brev_id" to id, - "tittel" to ulagretBrev.innhold.tittel, - "spraak" to ulagretBrev.innhold.spraak.name, - "payload" to ulagretBrev.innhold.payload?.toJson(), - "payload_vedlegg" to ulagretBrev.innholdVedlegg?.toJson(), - ), - ).asUpdate, - ).also { opprettet -> require(opprettet == 1) } + tx + .run( + queryOf( + OPPRETT_INNHOLD_QUERY, + mapOf( + "brev_id" to id, + "tittel" to ulagretBrev.innhold.tittel, + "spraak" to ulagretBrev.innhold.spraak.name, + "payload" to ulagretBrev.innhold.payload?.toJson(), + "payload_vedlegg" to ulagretBrev.innholdVedlegg?.toJson(), + ), + ).asUpdate, + ).also { opprettet -> require(opprettet == 1) } - tx.lagreHendelse(id, Status.OPPRETTET, ulagretBrev.opprettet) + tx + .lagreHendelse(id, Status.OPPRETTET, ulagretBrev.opprettet) .also { oppdatert -> require(oppdatert == 1) } opprettBrevFra(id, ulagretBrev) @@ -301,13 +318,14 @@ class BrevRepository(private val ds: DataSource) { journalpostResponse: OpprettJournalpostResponse, ): Boolean = ds.transaction { tx -> - tx.run( - queryOf( - "UPDATE brev SET journalpost_id = ? WHERE id = ?", - journalpostResponse.journalpostId, - brevId, - ).asUpdate, - ).also { oppdatert -> require(oppdatert == 1) } + tx + .run( + queryOf( + "UPDATE brev SET journalpost_id = ? WHERE id = ?", + journalpostResponse.journalpostId, + brevId, + ).asUpdate, + ).also { oppdatert -> require(oppdatert == 1) } tx.lagreHendelse(brevId, Status.JOURNALFOERT, journalpostResponse.toJson()) > 0 } @@ -316,7 +334,8 @@ class BrevRepository(private val ds: DataSource) { using(sessionOf(ds)) { it.run( queryOf("SELECT journalpost_id FROM brev WHERE id = ?", brevId) - .map { row -> row.string("journalpost_id") }.asSingle, + .map { row -> row.string("journalpost_id") } + .asSingle, ) } @@ -325,13 +344,14 @@ class BrevRepository(private val ds: DataSource) { distResponse: DistribuerJournalpostResponse, ): Boolean = ds.transaction { tx -> - tx.run( - queryOf( - "UPDATE brev SET bestilling_id = ? WHERE id = ?", - distResponse.bestillingsId, - brevId, - ).asUpdate, - ).also { oppdatert -> require(oppdatert == 1) } + tx + .run( + queryOf( + "UPDATE brev SET bestilling_id = ? WHERE id = ?", + distResponse.bestillingsId, + brevId, + ).asUpdate, + ).also { oppdatert -> require(oppdatert == 1) } tx.lagreHendelse(brevId, Status.DISTRIBUERT, distResponse.toJson()) > 0 } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/distribusjon/Brevdistribuerer.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/distribusjon/Brevdistribuerer.kt index 404216d88ca..64c1e472f27 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/distribusjon/Brevdistribuerer.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/distribusjon/Brevdistribuerer.kt @@ -37,22 +37,26 @@ class Brevdistribuerer( "Mottaker må være satt for å kunne distribuere brevet (id: $id)" } - return distribusjonService.distribuerJournalpost( - brevId = brev.id, - journalpostId = journalpostId, - type = distribusjonsType, - tidspunkt = DistribusjonsTidspunktType.KJERNETID, - adresse = mottaker.adresse, - ).also { logger.info("Distribuerte brev $id") } + return distribusjonService + .distribuerJournalpost( + brevId = brev.id, + journalpostId = journalpostId, + type = distribusjonsType, + tidspunkt = DistribusjonsTidspunktType.KJERNETID, + adresse = mottaker.adresse, + ).also { logger.info("Distribuerte brev $id") } } } -class FeilStatusForDistribusjon(brevID: BrevID, status: Status) : UgyldigForespoerselException( - code = "FEIL_STATUS_FOR_DISTRIBUSJON", - detail = "Kan ikke distribuere brev med status ${status.name.lowercase()}", - meta = - mapOf( - "brevId" to brevID, - "status" to status, - ), -) +class FeilStatusForDistribusjon( + brevID: BrevID, + status: Status, +) : UgyldigForespoerselException( + code = "FEIL_STATUS_FOR_DISTRIBUSJON", + detail = "Kan ikke distribuere brev med status ${status.name.lowercase()}", + meta = + mapOf( + "brevId" to brevID, + "status" to status, + ), + ) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/distribusjon/DistribusjonKlient.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/distribusjon/DistribusjonKlient.kt index 9892a073b55..39d34a4f799 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/distribusjon/DistribusjonKlient.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/distribusjon/DistribusjonKlient.kt @@ -13,32 +13,36 @@ import io.ktor.http.contentType import no.nav.etterlatte.libs.common.feilhaandtering.ForespoerselException import org.slf4j.LoggerFactory -class DistribusjonKlient(private val client: HttpClient, private val url: String) { +class DistribusjonKlient( + private val client: HttpClient, + private val url: String, +) { private val logger = LoggerFactory.getLogger(DistribusjonKlient::class.java) internal suspend fun distribuerJournalpost(request: DistribuerJournalpostRequest): DistribuerJournalpostResponse = - client.post("$url/distribuerjournalpost") { - accept(ContentType.Application.Json) - contentType(ContentType.Application.Json) - setBody(request) - }.let { - when (it.status) { - HttpStatusCode.OK -> it.body() - HttpStatusCode.Conflict -> it.body() - else -> { - logger.error("Fikk statuskode ${it.status} fra dokdist: ${it.bodyAsText()}") + client + .post("$url/distribuerjournalpost") { + accept(ContentType.Application.Json) + contentType(ContentType.Application.Json) + setBody(request) + }.let { + when (it.status) { + HttpStatusCode.OK -> it.body() + HttpStatusCode.Conflict -> it.body() + else -> { + logger.error("Fikk statuskode ${it.status} fra dokdist: ${it.bodyAsText()}") - throw ForespoerselException( - status = it.status.value, - code = "UKJENT_FEIL_DOKDIST", - detail = "Ukjent respons fra dokumentdistribusjon", - meta = - mapOf( - "journalpostId" to request.journalpostId, - ), - cause = ResponseException(it, "Ukjent feil fra dokdist"), - ) + throw ForespoerselException( + status = it.status.value, + code = "UKJENT_FEIL_DOKDIST", + detail = "Ukjent respons fra dokumentdistribusjon", + meta = + mapOf( + "journalpostId" to request.journalpostId, + ), + cause = ResponseException(it, "Ukjent feil fra dokdist"), + ) + } } } - } } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/distribusjon/DistribusjonModell.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/distribusjon/DistribusjonModell.kt index ebeadcd45d1..7b0c32bf820 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/distribusjon/DistribusjonModell.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/distribusjon/DistribusjonModell.kt @@ -56,5 +56,7 @@ enum class DistribusjonsTidspunktType { KJERNETID, // KJERNETID (07:00-23:00) } -data class DistribuerJournalpostResponse(val bestillingsId: BestillingsID) +data class DistribuerJournalpostResponse( + val bestillingsId: BestillingsID, +) typealias BestillingsID = String diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/distribusjon/DistribusjonService.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/distribusjon/DistribusjonService.kt index 96f94ecbd05..29610a534e2 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/distribusjon/DistribusjonService.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/distribusjon/DistribusjonService.kt @@ -47,7 +47,8 @@ internal class DistribusjonServiceImpl( dokumentProdApp = "etterlatte-brev-api", ) - klient.distribuerJournalpost(request) + klient + .distribuerJournalpost(request) .also { db.settBrevDistribuert(brevId, it) } .bestillingsId } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokarkiv/DokarkivKlient.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokarkiv/DokarkivKlient.kt index 75eb9b94342..13c6d59a171 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokarkiv/DokarkivKlient.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokarkiv/DokarkivKlient.kt @@ -17,7 +17,10 @@ import no.nav.etterlatte.libs.common.feilhaandtering.ForespoerselException import no.nav.etterlatte.libs.common.feilhaandtering.UgyldigForespoerselException import org.slf4j.LoggerFactory -class DokarkivKlient(private val client: HttpClient, private val url: String) { +class DokarkivKlient( + private val client: HttpClient, + private val url: String, +) { private val logger = LoggerFactory.getLogger(DokarkivKlient::class.java) internal suspend fun opprettJournalpost( @@ -32,14 +35,16 @@ class DokarkivKlient(private val client: HttpClient, private val url: String) { } return if (response.status.isSuccess()) { - response.body() + response + .body() .also { logger.info( "Journalpost opprettet (journalpostId=${it.journalpostId}, ferdigstilt=${it.journalpostferdigstilt})", ) } } else if (response.status == HttpStatusCode.Conflict) { - response.body() + response + .body() .also { logger.warn("Konflikt ved lagring av journalpost ${it.journalpostId}") } } else { logger.error("Feil oppsto på opprett journalpost: ${response.bodyAsText()}") @@ -159,10 +164,15 @@ class DokarkivKlient(private val client: HttpClient, private val url: String) { } } -data class FerdigstillJournalpostRequest(val journalfoerendeEnhet: String) - -class KunneIkkeFerdigstilleJournalpost(journalpostId: String, melding: String? = null) : UgyldigForespoerselException( - code = "KUNNE_IKKE_FERDIGSTILLE_JOURNALPOST", - detail = melding ?: "Kunne ikke ferdigstille journalpost med id=$journalpostId", - meta = mapOf("journalpostId" to journalpostId), +data class FerdigstillJournalpostRequest( + val journalfoerendeEnhet: String, ) + +class KunneIkkeFerdigstilleJournalpost( + journalpostId: String, + melding: String? = null, +) : UgyldigForespoerselException( + code = "KUNNE_IKKE_FERDIGSTILLE_JOURNALPOST", + detail = melding ?: "Kunne ikke ferdigstille journalpost med id=$journalpostId", + meta = mapOf("journalpostId" to journalpostId), + ) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokarkiv/DokarkivService.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokarkiv/DokarkivService.kt index f36ba55a803..5b749688ea4 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokarkiv/DokarkivService.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokarkiv/DokarkivService.kt @@ -27,7 +27,9 @@ interface DokarkivService { ): KnyttTilAnnenSakResponse } -internal class DokarkivServiceImpl(private val client: DokarkivKlient) : DokarkivService { +internal class DokarkivServiceImpl( + private val client: DokarkivKlient, +) : DokarkivService { private val logger = LoggerFactory.getLogger(DokarkivService::class.java) override suspend fun journalfoer(request: OpprettJournalpost): OpprettJournalpostResponse { @@ -81,9 +83,8 @@ internal class DokarkivServiceImpl(private val client: DokarkivKlient) : Dokarki override suspend fun knyttTilAnnenSak( journalpostId: String, request: KnyttTilAnnenSakRequest, - ): KnyttTilAnnenSakResponse { - return client.knyttTilAnnenSak(journalpostId, request).also { + ): KnyttTilAnnenSakResponse = + client.knyttTilAnnenSak(journalpostId, request).also { logger.info("Journalpost knyttet til annen sak (nyJournalpostId=${it.nyJournalpostId})\n$request") } - } } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokarkiv/Journalpost.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokarkiv/Journalpost.kt index de9be929831..e8f61e2c3f4 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokarkiv/Journalpost.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokarkiv/Journalpost.kt @@ -161,13 +161,17 @@ sealed class DokumentVariant { } } -enum class JournalPostType(val type: String) { +enum class JournalPostType( + val type: String, +) { NOTAT("NOTAT"), INNGAAENDE("INNGAAENDE"), UTGAAENDE("UTGAAENDE"), } -enum class DokumentKategori(val type: String) { +enum class DokumentKategori( + val type: String, +) { SOK("SOK"), VB("VB"), IB("IB"), diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokument/SafKlient.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokument/SafKlient.kt index 21f6c4f4682..8a9c9653c5e 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokument/SafKlient.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokument/SafKlient.kt @@ -45,10 +45,11 @@ class SafKlient( bruker: BrukerTokenInfo, ): ByteArray = try { - httpClient.get("$baseUrl/rest/hentdokument/$journalpostId/$dokumentInfoId/ARKIV") { - bearerAuth(getOboToken(bruker)) - contentType(ContentType.Application.Json) - }.body() + httpClient + .get("$baseUrl/rest/hentdokument/$journalpostId/$dokumentInfoId/ARKIV") { + bearerAuth(getOboToken(bruker)) + contentType(ContentType.Application.Json) + }.body() } catch (re: ResponseException) { logger.error("Feil i kall mot Saf: ${re.response.bodyAsText()}") @@ -166,11 +167,11 @@ class SafKlient( } } - private fun getQuery(name: String): String { - return javaClass.getResource(name)!! + private fun getQuery(name: String): String = + javaClass + .getResource(name)!! .readText() .replace(Regex("[\n\t]"), "") - } private suspend fun getOboToken(bruker: BrukerTokenInfo): String { val token = diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokument/SafService.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokument/SafService.kt index 63807ede4c4..29d72886acb 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokument/SafService.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/dokument/SafService.kt @@ -112,25 +112,30 @@ class SafService( } } -class JournalpostIkkeFunnet(journalpostId: String) : IkkeFunnetException( - code = "JOURNALPOST_IKKE_FUNNET", - detail = "Journalpost med journalpostId=$journalpostId ikke funnet i Joark", -) - -class IkkeTilgangTilJournalpost : ForespoerselException( - status = HttpStatusCode.Forbidden.value, - code = "IKKE_TILGANG_JOURNALPOST", - detail = "Ikke tilgang til å se journalposten", -) - -class SafServerError : ForespoerselException( - status = HttpStatusCode.InternalServerError.value, - code = "SAF_SERVER_ERROR", - detail = "Teknisk feil i Saf. Prøv igjen om litt", -) - -class UkjentFeilSaf : ForespoerselException( - status = HttpStatusCode.InternalServerError.value, - code = "UKJENT_FEIL_SAF", - detail = "Ukjent feil oppsto", -) +class JournalpostIkkeFunnet( + journalpostId: String, +) : IkkeFunnetException( + code = "JOURNALPOST_IKKE_FUNNET", + detail = "Journalpost med journalpostId=$journalpostId ikke funnet i Joark", + ) + +class IkkeTilgangTilJournalpost : + ForespoerselException( + status = HttpStatusCode.Forbidden.value, + code = "IKKE_TILGANG_JOURNALPOST", + detail = "Ikke tilgang til å se journalposten", + ) + +class SafServerError : + ForespoerselException( + status = HttpStatusCode.InternalServerError.value, + code = "SAF_SERVER_ERROR", + detail = "Teknisk feil i Saf. Prøv igjen om litt", + ) + +class UkjentFeilSaf : + ForespoerselException( + status = HttpStatusCode.InternalServerError.value, + code = "UKJENT_FEIL_SAF", + detail = "Ukjent feil oppsto", + ) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/BehandlingKlient.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/BehandlingKlient.kt index 858f6204a9d..cbf7ab2c630 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/BehandlingKlient.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/BehandlingKlient.kt @@ -18,7 +18,10 @@ import no.nav.etterlatte.libs.ktor.ktor.ktorobo.Resource import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo import java.util.UUID -class BehandlingKlient(config: Config, httpClient: HttpClient) { +class BehandlingKlient( + config: Config, + httpClient: HttpClient, +) { private val azureAdClient = AzureAdClient(config) private val downstreamResourceClient = DownstreamResourceClient(azureAdClient, httpClient) @@ -28,90 +31,85 @@ class BehandlingKlient(config: Config, httpClient: HttpClient) { internal suspend fun hentSak( sakId: Long, brukerTokenInfo: BrukerTokenInfo, - ): Sak { - return get( + ): Sak = + get( url = "$resourceUrl/saker/$sakId", onSuccess = { deserialize(it.response!!.toString()) }, errorMessage = { "Sjekking av tilgang for behandling med id =$sakId feilet" }, brukerTokenInfo = brukerTokenInfo, ) - } internal suspend fun hentSisteIverksatteBehandling( sakId: Long, brukerTokenInfo: BrukerTokenInfo, - ): SisteIverksatteBehandling { - return get( + ): SisteIverksatteBehandling = + get( url = "$resourceUrl/saker/$sakId/behandlinger/sisteIverksatte", onSuccess = { deserialize(it.response!!.toString()) }, errorMessage = { "Klarte ikke hente siste iverksatte behandling på sak med id=$sakId" }, brukerTokenInfo = brukerTokenInfo, ) - } internal suspend fun hentBrevutfall( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): BrevutfallDto? { - return get( + ): BrevutfallDto? = + get( url = "$resourceUrl/api/behandling/$behandlingId/info/brevutfall", onSuccess = { it.response?.toString()?.let(::deserialize) }, brukerTokenInfo = brukerTokenInfo, errorMessage = { "Henting av brevutfall for behandling med id=$behandlingId feilet" }, ) - } internal suspend fun hentEtterbetaling( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): EtterbetalingDTO? { - return get( + ): EtterbetalingDTO? = + get( url = "$resourceUrl/api/behandling/$behandlingId/info/etterbetaling", onSuccess = { it.response?.toString()?.let(::deserialize) }, errorMessage = { "Henting av etterbetaling for behandling med id=$behandlingId feilet" }, brukerTokenInfo = brukerTokenInfo, ) - } internal suspend fun hentBehandling( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): DetaljertBehandling { - return get( + ): DetaljertBehandling = + get( url = "$resourceUrl/behandlinger/$behandlingId", onSuccess = { deserialize(it.response!!.toString()) }, errorMessage = { "Klarte ikke hente behandling med id=$behandlingId" }, brukerTokenInfo = brukerTokenInfo, ) - } internal suspend fun hentVedtaksbehandlingKanRedigeres( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): Boolean { - return get( + ): Boolean = + get( url = "$resourceUrl/vedtaksbehandling/$behandlingId/redigerbar", onSuccess = { deserialize(it.response!!.toString()) }, errorMessage = { "Klarte ikke hente svar på om vedtaksbehandling med id=$behandlingId kan redigeres" }, brukerTokenInfo = brukerTokenInfo, ) - } private suspend fun get( url: String, onSuccess: (Resource) -> T, errorMessage: () -> String, brukerTokenInfo: BrukerTokenInfo, - ): T { - return retry { + ): T = + retry { try { - downstreamResourceClient.get( - resource = Resource(clientId = clientId, url = url), - brukerTokenInfo = brukerTokenInfo, - ).mapBoth( - success = onSuccess, - failure = { throwableErrorMessage -> throw throwableErrorMessage }, - ) + downstreamResourceClient + .get( + resource = Resource(clientId = clientId, url = url), + brukerTokenInfo = brukerTokenInfo, + ).mapBoth( + success = onSuccess, + failure = { throwableErrorMessage -> throw throwableErrorMessage }, + ) } catch (e: Exception) { throw e } @@ -123,20 +121,20 @@ class BehandlingKlient(config: Config, httpClient: HttpClient) { } } } - } suspend fun hentKlage( klageId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): Klage { - return get( + ): Klage = + get( url = "$resourceUrl/api/klage/$klageId", onSuccess = { deserialize(it.response!!.toString()) }, errorMessage = { "Kunne ikke hente klage med id=$klageId" }, brukerTokenInfo = brukerTokenInfo, ) - } } -class BehandlingKlientException(override val message: String, override val cause: Throwable? = null) : - Exception(message, cause) +class BehandlingKlientException( + override val message: String, + override val cause: Throwable? = null, +) : Exception(message, cause) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/BeregningKlient.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/BeregningKlient.kt index 7df62e15e52..9172a924fb7 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/BeregningKlient.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/BeregningKlient.kt @@ -18,7 +18,10 @@ import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo import org.slf4j.LoggerFactory import java.util.UUID -class BeregningKlient(config: Config, httpClient: HttpClient) { +class BeregningKlient( + config: Config, + httpClient: HttpClient, +) { private val logger = LoggerFactory.getLogger(BeregningKlient::class.java) private val azureAdClient = AzureAdClient(config) @@ -34,13 +37,14 @@ class BeregningKlient(config: Config, httpClient: HttpClient) { try { logger.info("Henter beregning (behandlingId: $behandlingId)") - return downstreamResourceClient.get( - Resource(clientId, "$resourceUrl/api/beregning/$behandlingId"), - brukerTokenInfo, - ).mapBoth( - success = { resource -> deserialize(resource.response.toString()) }, - failure = { errorResponse -> throw errorResponse }, - ) + return downstreamResourceClient + .get( + Resource(clientId, "$resourceUrl/api/beregning/$behandlingId"), + brukerTokenInfo, + ).mapBoth( + success = { resource -> deserialize(resource.response.toString()) }, + failure = { errorResponse -> throw errorResponse }, + ) } catch (e: Exception) { logger.error( "Henting av beregning for behandling med behandlingId=$behandlingId feilet", @@ -63,13 +67,14 @@ class BeregningKlient(config: Config, httpClient: HttpClient) { SakType.BARNEPENSJON -> "barnepensjon" SakType.OMSTILLINGSSTOENAD -> "omstillingstoenad" } - return downstreamResourceClient.get( - Resource(clientId, "$resourceUrl/api/beregning/beregningsgrunnlag/$behandlingId/$endepunkt"), - brukerTokenInfo, - ).mapBoth( - success = { resource -> deserialize(resource.response.toString()) }, - failure = { errorResponse -> throw errorResponse }, - ) + return downstreamResourceClient + .get( + Resource(clientId, "$resourceUrl/api/beregning/beregningsgrunnlag/$behandlingId/$endepunkt"), + brukerTokenInfo, + ).mapBoth( + success = { resource -> deserialize(resource.response.toString()) }, + failure = { errorResponse -> throw errorResponse }, + ) } catch (e: Exception) { logger.error( "Henting av beregningsgrunnlag for behandling med behandlingId=$behandlingId feilet", @@ -86,13 +91,14 @@ class BeregningKlient(config: Config, httpClient: HttpClient) { try { logger.info("Henter utregnet ytelse med grunnlag for behandlingId=$behandlingId") - return downstreamResourceClient.get( - Resource(clientId, "$resourceUrl/api/beregning/ytelse-med-grunnlag/$behandlingId"), - brukerTokenInfo, - ).mapBoth( - success = { resource -> deserialize(resource.response.toString()) }, - failure = { errorResponse -> throw errorResponse }, - ) + return downstreamResourceClient + .get( + Resource(clientId, "$resourceUrl/api/beregning/ytelse-med-grunnlag/$behandlingId"), + brukerTokenInfo, + ).mapBoth( + success = { resource -> deserialize(resource.response.toString()) }, + failure = { errorResponse -> throw errorResponse }, + ) } catch (re: ResponseException) { logger.error("Henting av utregnet ytelse med grunnlag for behandling med behandlingId=$behandlingId feilet", re) @@ -108,13 +114,14 @@ class BeregningKlient(config: Config, httpClient: HttpClient) { try { logger.info("Henter gjeldende grunnbeløp") - return downstreamResourceClient.get( - Resource(clientId, "$resourceUrl/api/beregning/grunnbeloep"), - brukerTokenInfo, - ).mapBoth( - success = { resource -> deserialize(resource.response.toString()) }, - failure = { errorResponse -> throw errorResponse }, - ) + return downstreamResourceClient + .get( + Resource(clientId, "$resourceUrl/api/beregning/grunnbeloep"), + brukerTokenInfo, + ).mapBoth( + success = { resource -> deserialize(resource.response.toString()) }, + failure = { errorResponse -> throw errorResponse }, + ) } catch (re: ResponseException) { logger.error("Henting av grunnbeløp feilet", re) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/BrevdataFacade.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/BrevdataFacade.kt index 81fb9686bcd..ca5c1281d13 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/BrevdataFacade.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/BrevdataFacade.kt @@ -46,24 +46,20 @@ class BrevdataFacade( suspend fun hentBrevutfall( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): BrevutfallDto? { - return behandlingKlient.hentBrevutfall(behandlingId, brukerTokenInfo) - } + ): BrevutfallDto? = behandlingKlient.hentBrevutfall(behandlingId, brukerTokenInfo) suspend fun hentEtterbetaling( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): EtterbetalingDTO? { - return behandlingKlient.hentEtterbetaling(behandlingId, brukerTokenInfo) - } + ): EtterbetalingDTO? = behandlingKlient.hentEtterbetaling(behandlingId, brukerTokenInfo) suspend fun hentGenerellBrevData( sakId: Long, behandlingId: UUID?, overstyrSpraak: Spraak? = null, brukerTokenInfo: BrukerTokenInfo, - ): GenerellBrevData { - return coroutineScope { + ): GenerellBrevData = + coroutineScope { val sakDeferred = async { sakService.hentSak(sakId, brukerTokenInfo) } val vedtakDeferred = behandlingId?.let { async { vedtaksvurderingKlient.hentVedtak(it, brukerTokenInfo) } } val brevutfallDeferred = behandlingId?.let { async { hentBrevutfall(it, brukerTokenInfo) } } @@ -99,14 +95,16 @@ class BrevdataFacade( vedtak?.vedtakFattet?.let { vedtak.attestasjon?.attestant ?: innloggetSaksbehandlerIdent } val behandling = - if (behandlingId != null && ( + if (behandlingId != null && + ( vedtak?.type in listOf( VedtakType.INNVILGELSE, VedtakType.AVSLAG, VedtakType.OPPHOER, VedtakType.ENDRING, - ) || vedtak == null + ) || + vedtak == null ) ) { behandlingKlient.hentBehandling(behandlingId, brukerTokenInfo) @@ -204,7 +202,6 @@ class BrevdataFacade( ) } } - } suspend fun hentKlage( klageId: UUID, @@ -239,15 +236,14 @@ class BrevdataFacade( virkningstidspunkt: YearMonth, vedtakType: VedtakType, brukerTokenInfo: BrukerTokenInfo, - ): Avkortingsinfo { - return beregningService.finnAvkortingsinfo( + ): Avkortingsinfo = + beregningService.finnAvkortingsinfo( behandlingId, sakType, virkningstidspunkt, vedtakType, brukerTokenInfo, ) - } suspend fun finnForrigeAvkortingsinfo( sakId: Long, @@ -277,8 +273,8 @@ class BrevdataFacade( ) = behandlingKlient.hentVedtaksbehandlingKanRedigeres(behandlingId, brukerTokenInfo) } -fun hentBenyttetTrygdetidOgProratabroek(beregningsperiode: CommonBeregningsperiode): Pair { - return when (beregningsperiode.beregningsMetode) { +fun hentBenyttetTrygdetidOgProratabroek(beregningsperiode: CommonBeregningsperiode): Pair = + when (beregningsperiode.beregningsMetode) { BeregningsMetode.NASJONAL -> Pair( beregningsperiode.samletNorskTrygdetid ?: throw SamletTeoretiskTrygdetidMangler(), @@ -295,21 +291,23 @@ fun hentBenyttetTrygdetidOgProratabroek(beregningsperiode: CommonBeregningsperio BeregningsMetode.BEST -> throw UgyldigBeregningsMetode() null -> beregningsperiode.trygdetid to null } -} -class UgyldigBeregningsMetode : UgyldigForespoerselException( - code = "UGYLDIG_BEREGNINGS_METODE", - detail = - "Kan ikke ha brukt beregningsmetode 'BEST' i en faktisk beregning, " + - "siden best velger mellom nasjonal eller prorata når det beregnes.", -) +class UgyldigBeregningsMetode : + UgyldigForespoerselException( + code = "UGYLDIG_BEREGNINGS_METODE", + detail = + "Kan ikke ha brukt beregningsmetode 'BEST' i en faktisk beregning, " + + "siden best velger mellom nasjonal eller prorata når det beregnes.", + ) -class SamletTeoretiskTrygdetidMangler : UgyldigForespoerselException( - code = "SAMLET_TEORETISK_TRYGDETID_MANGLER", - detail = "Samlet teoretisk trygdetid mangler i beregningen", -) +class SamletTeoretiskTrygdetidMangler : + UgyldigForespoerselException( + code = "SAMLET_TEORETISK_TRYGDETID_MANGLER", + detail = "Samlet teoretisk trygdetid mangler i beregningen", + ) -class BeregningsperiodeBroekMangler : UgyldigForespoerselException( - code = "BEREGNINGSPERIODE_BROEK_MANGLER", - detail = "Beregningsperioden mangler brøk", -) +class BeregningsperiodeBroekMangler : + UgyldigForespoerselException( + code = "BEREGNINGSPERIODE_BROEK_MANGLER", + detail = "Beregningsperioden mangler brøk", + ) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/GrunnlagKlient.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/GrunnlagKlient.kt index e9222a2668a..ca8835efb23 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/GrunnlagKlient.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/GrunnlagKlient.kt @@ -16,7 +16,10 @@ import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo import org.slf4j.LoggerFactory import java.util.UUID -class GrunnlagKlient(config: Config, httpClient: HttpClient) { +class GrunnlagKlient( + config: Config, + httpClient: HttpClient, +) { private val logger = LoggerFactory.getLogger(GrunnlagKlient::class.java) private val azureAdClient = AzureAdClient(config) @@ -32,13 +35,14 @@ class GrunnlagKlient(config: Config, httpClient: HttpClient) { try { logger.info("Henter grunnlag for sak med sakId=$sakid") - return downstreamResourceClient.get( - Resource(clientId, "$baseUrl/api/grunnlag/sak/$sakid"), - brukerTokenInfo, - ).mapBoth( - success = { resource -> resource.response.let { deserialize(it.toString()) } }, - failure = { throwableErrorMessage -> throw throwableErrorMessage }, - ) + return downstreamResourceClient + .get( + Resource(clientId, "$baseUrl/api/grunnlag/sak/$sakid"), + brukerTokenInfo, + ).mapBoth( + success = { resource -> resource.response.let { deserialize(it.toString()) } }, + failure = { throwableErrorMessage -> throw throwableErrorMessage }, + ) } catch (e: ResponseException) { logger.error("Henting av grunnlag for sak med sakId=$sakid feilet", e) @@ -57,13 +61,14 @@ class GrunnlagKlient(config: Config, httpClient: HttpClient) { try { logger.info("Henter grunnlag for behandling med id=$behandlingId") - return downstreamResourceClient.get( - Resource(clientId, "$baseUrl/api/grunnlag/behandling/$behandlingId"), - brukerTokenInfo, - ).mapBoth( - success = { resource -> resource.response.let { deserialize(it.toString()) } }, - failure = { throwableErrorMessage -> throw throwableErrorMessage }, - ) + return downstreamResourceClient + .get( + Resource(clientId, "$baseUrl/api/grunnlag/behandling/$behandlingId"), + brukerTokenInfo, + ).mapBoth( + success = { resource -> resource.response.let { deserialize(it.toString()) } }, + failure = { throwableErrorMessage -> throw throwableErrorMessage }, + ) } catch (e: ResponseException) { logger.error("Henting av grunnlag for behandling med id=$behandlingId feilet", e) @@ -82,14 +87,15 @@ class GrunnlagKlient(config: Config, httpClient: HttpClient) { try { logger.info("Oppdaterer grunnlag for sak med id=${sak.id}") - return downstreamResourceClient.post( - Resource(clientId, "$baseUrl/api/grunnlag/sak/${sak.id}/oppdater-grunnlag"), - brukerTokenInfo, - OppdaterGrunnlagRequest(sak.id, sak.sakType), - ).mapBoth( - success = { true }, - failure = { throwableErrorMessage -> throw throwableErrorMessage }, - ) + return downstreamResourceClient + .post( + Resource(clientId, "$baseUrl/api/grunnlag/sak/${sak.id}/oppdater-grunnlag"), + brukerTokenInfo, + OppdaterGrunnlagRequest(sak.id, sak.sakType), + ).mapBoth( + success = { true }, + failure = { throwableErrorMessage -> throw throwableErrorMessage }, + ) } catch (e: ResponseException) { logger.error("Oppdatering av grunnlag for sak med id=${sak.id} feilet", e) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/SakService.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/SakService.kt index ef81db050af..598abdd5ee2 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/SakService.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/SakService.kt @@ -3,7 +3,9 @@ package no.nav.etterlatte.brev.hentinformasjon import no.nav.etterlatte.brev.behandlingklient.BehandlingKlient import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo -class SakService(private val behandlingKlient: BehandlingKlient) { +class SakService( + private val behandlingKlient: BehandlingKlient, +) { suspend fun hentSak( sakId: Long, bruker: BrukerTokenInfo, diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/TrygdetidKlient.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/TrygdetidKlient.kt index 87377123e9d..6a68c4e2bd0 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/TrygdetidKlient.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/TrygdetidKlient.kt @@ -14,7 +14,10 @@ import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo import org.slf4j.LoggerFactory import java.util.UUID -class TrygdetidKlient(config: Config, httpClient: HttpClient) { +class TrygdetidKlient( + config: Config, + httpClient: HttpClient, +) { private val logger = LoggerFactory.getLogger(TrygdetidKlient::class.java) private val azureAdClient = AzureAdClient(config) private val downstreamResourceClient = DownstreamResourceClient(azureAdClient, httpClient) @@ -28,13 +31,14 @@ class TrygdetidKlient(config: Config, httpClient: HttpClient) { ): List { try { logger.info("Henter trygdetid med behandlingid $behandlingId") - return downstreamResourceClient.get( - Resource(clientId, "$resourceUrl/api/trygdetid_v2/$behandlingId"), - brukerTokenInfo, - ).mapBoth( - success = { resource -> resource.response.let { deserialize(it.toString()) } }, - failure = { throwableErrorMessage -> throw throwableErrorMessage }, - ) + return downstreamResourceClient + .get( + Resource(clientId, "$resourceUrl/api/trygdetid_v2/$behandlingId"), + brukerTokenInfo, + ).mapBoth( + success = { resource -> resource.response.let { deserialize(it.toString()) } }, + failure = { throwableErrorMessage -> throw throwableErrorMessage }, + ) } catch (re: ResponseException) { logger.error("Henting av trygdetid for sak med behandlingsid=$behandlingId feilet", re) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/VedtaksvurderingKlient.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/VedtaksvurderingKlient.kt index 0e359d8d882..98da42062ca 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/VedtaksvurderingKlient.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/VedtaksvurderingKlient.kt @@ -15,7 +15,10 @@ import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo import org.slf4j.LoggerFactory import java.util.UUID -class VedtaksvurderingKlient(config: Config, httpClient: HttpClient) { +class VedtaksvurderingKlient( + config: Config, + httpClient: HttpClient, +) { private val logger = LoggerFactory.getLogger(VedtaksvurderingKlient::class.java) private val azureAdClient = AzureAdClient(config) @@ -31,13 +34,14 @@ class VedtaksvurderingKlient(config: Config, httpClient: HttpClient) { try { logger.info("Henter vedtaksvurdering behandling med behandlingId=$behandlingId") - return downstreamResourceClient.get( - Resource(clientId, "$resourceUrl/api/vedtak/$behandlingId"), - brukerTokenInfo, - ).mapBoth( - success = { resource -> deserialize(resource.response.toString()) }, - failure = { errorResponse -> throw errorResponse }, - ) + return downstreamResourceClient + .get( + Resource(clientId, "$resourceUrl/api/vedtak/$behandlingId"), + brukerTokenInfo, + ).mapBoth( + success = { resource -> deserialize(resource.response.toString()) }, + failure = { errorResponse -> throw errorResponse }, + ) } catch (re: ResponseException) { if (re.response.status == HttpStatusCode.NotFound) { logger.info("Fant ikke vedtak for behandling $behandlingId. Dette er forventa hvis det f.eks. er et varselbrev.") diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/VedtaksvurderingService.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/VedtaksvurderingService.kt index c8cdc3b8a76..7b72a5c8184 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/VedtaksvurderingService.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/VedtaksvurderingService.kt @@ -4,7 +4,9 @@ import no.nav.etterlatte.libs.common.vedtak.VedtakStatus import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo import java.util.UUID -class VedtaksvurderingService(private val vedtaksvurderingKlient: VedtaksvurderingKlient) { +class VedtaksvurderingService( + private val vedtaksvurderingKlient: VedtaksvurderingKlient, +) { suspend fun hentVedtakSaksbehandlerOgStatus( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/beregning/BeregningService.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/beregning/BeregningService.kt index 676c232fea6..6b25c82b95e 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/beregning/BeregningService.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/beregning/BeregningService.kt @@ -18,7 +18,9 @@ import java.math.BigDecimal import java.time.YearMonth import java.util.UUID -class BeregningService(private val beregningKlient: BeregningKlient) { +class BeregningService( + private val beregningKlient: BeregningKlient, +) { suspend fun hentGrunnbeloep(bruker: BrukerTokenInfo) = beregningKlient.hentGrunnbeloep(bruker) suspend fun hentBeregning( diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/BrevData.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/BrevData.kt index 166882eafbd..b3c7de987b6 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/BrevData.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/BrevData.kt @@ -10,7 +10,12 @@ interface BrevDataFerdigstilling : BrevdataMedInnhold interface BrevDataRedigerbar : BrevData -data class ManueltBrevData(override val innhold: List = emptyList()) : BrevdataMedInnhold, BrevDataRedigerbar +data class ManueltBrevData( + override val innhold: List = emptyList(), +) : BrevdataMedInnhold, + BrevDataRedigerbar -data class ManueltBrevMedTittelData(override val innhold: List, val tittel: String? = null) : - BrevDataFerdigstilling +data class ManueltBrevMedTittelData( + override val innhold: List, + val tittel: String? = null, +) : BrevDataFerdigstilling diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/BrevDataMapperFerdigstillingVedtak.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/BrevDataMapperFerdigstillingVedtak.kt index c93ce0c9d67..5b72f8218db 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/BrevDataMapperFerdigstillingVedtak.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/BrevDataMapperFerdigstillingVedtak.kt @@ -39,7 +39,9 @@ data class BrevDataFerdigstillingRequest( val tittel: String? = null, ) -class BrevDataMapperFerdigstillingVedtak(private val brevdataFacade: BrevdataFacade) { +class BrevDataMapperFerdigstillingVedtak( + private val brevdataFacade: BrevdataFacade, +) { suspend fun brevDataFerdigstilling(request: BrevDataFerdigstillingRequest): BrevDataFerdigstilling { with(request) { if (generellBrevData.loependeIPesys()) { @@ -242,7 +244,9 @@ class BrevDataMapperFerdigstillingVedtak(private val brevdataFacade: BrevdataFac requireNotNull(trygdetid.await()).single(), requireNotNull(brevutfall.await()), generellBrevData.revurderingsaarsak, - generellBrevData.personerISak.avdoede.single().navn, + generellBrevData.personerISak.avdoede + .single() + .navn, ) } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/BrevModel.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/BrevModel.kt index 05b7378e001..418b2f5fc0a 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/BrevModel.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/BrevModel.kt @@ -57,7 +57,9 @@ fun opprettBrevFra( brevtype = opprettNyttBrev.brevtype, ) -class Pdf(val bytes: ByteArray) +class Pdf( + val bytes: ByteArray, +) data class BrevInnhold( val tittel: String, diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/Etterbetaling.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/Etterbetaling.kt index 7de0a9eaa99..989e9d15290 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/Etterbetaling.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/Etterbetaling.kt @@ -17,11 +17,15 @@ object Etterbetaling { val oppdatertListe = list.toMutableList() // Setter tilDato på nyeste periode innenfor hva som er satt i etterbetaling - oppdatertListe.firstOrNull()?.copy(datoTOM = dto.datoTom) + oppdatertListe + .firstOrNull() + ?.copy(datoTOM = dto.datoTom) ?.let { oppdatertListe[0] = it } // Setter fraDato på eldste periode innenfor hva som er satt i etterbetaling - oppdatertListe.lastOrNull()?.copy(datoFOM = dto.datoFom) + oppdatertListe + .lastOrNull() + ?.copy(datoFOM = dto.datoFom) ?.let { oppdatertListe[list.lastIndex] = it } oppdatertListe.toList() @@ -42,11 +46,15 @@ object Etterbetaling { val oppdatertListe = list.toMutableList() // Setter tilDato på nyeste periode innenfor hva som er satt i etterbetaling - oppdatertListe.firstOrNull()?.copy(datoTOM = dto.datoTom) + oppdatertListe + .firstOrNull() + ?.copy(datoTOM = dto.datoTom) ?.let { oppdatertListe[0] = it } // Setter fraDato på eldste periode innenfor hva som er satt i etterbetaling - oppdatertListe.lastOrNull()?.copy(datoFOM = dto.datoFom) + oppdatertListe + .lastOrNull() + ?.copy(datoFOM = dto.datoFom) ?.let { oppdatertListe[list.lastIndex] = it } oppdatertListe.toList() diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/EtterlatteBrev.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/EtterlatteBrev.kt index c26ddf0201c..f19d431b39c 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/EtterlatteBrev.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/EtterlatteBrev.kt @@ -157,7 +157,9 @@ fun TrygdetidDto.fromDto( prorataBroek = beregnetTrygdetid?.resultat?.prorataBroek, mindreEnnFireFemtedelerAvOpptjeningstiden = beregnetTrygdetid - ?.resultat?.fremtidigTrygdetidNorge?.mindreEnnFireFemtedelerAvOpptjeningstiden ?: false, + ?.resultat + ?.fremtidigTrygdetidNorge + ?.mindreEnnFireFemtedelerAvOpptjeningstiden ?: false, beregningsMetodeFraGrunnlag = beregningsMetodeFraGrunnlag, beregningsMetodeAnvendt = beregningsMetodeAnvendt, ) @@ -169,27 +171,32 @@ enum class FeilutbetalingType { } // Brukes der mangler med trygdetid ikke skal kunne skje men felt likevel er nullable -class ManglerMedTrygdetidVeBrukIBrev : UgyldigForespoerselException( - code = "MANGLER_TRYGDETID_VED_BREV", - detail = "Trygdetid har mangler ved bruk til brev", -) - -class ManglerAvdoedBruktTilTrygdetid : UgyldigForespoerselException( - code = "MANGLER_AVDOED_INFO_I_BEREGNING", - detail = "Det mangler avdød i beregning. Utfør beregning på nytt og prøv igjen.", -) - -class FantIkkeIdentTilTrygdetidBlantAvdoede : UgyldigForespoerselException( - code = "FANT_IKKE_TRYGDETID_IDENT_BLANT_AVDOEDE", - detail = "Ident knyttet til trygdetid er ikke blant avdøde knyttet til sak", -) - -class OverstyrtTrygdetidManglerAvdoed : UgyldigForespoerselException( - code = "OVERSTYRT_TRYGDETID_MANGLER_AVDOED", - detail = "Overstyrt trygdetid mangler avdød. Trygdetiden må overskrives med ny overstyrt trygdetid", -) - -class IngenStoetteForUkjentAvdoed : UgyldigForespoerselException( - code = "INGEN_STOETTE_FOR_UKJENT_AVDOED", - detail = "Brevløsningen støtter ikke ukjent avdød", -) +class ManglerMedTrygdetidVeBrukIBrev : + UgyldigForespoerselException( + code = "MANGLER_TRYGDETID_VED_BREV", + detail = "Trygdetid har mangler ved bruk til brev", + ) + +class ManglerAvdoedBruktTilTrygdetid : + UgyldigForespoerselException( + code = "MANGLER_AVDOED_INFO_I_BEREGNING", + detail = "Det mangler avdød i beregning. Utfør beregning på nytt og prøv igjen.", + ) + +class FantIkkeIdentTilTrygdetidBlantAvdoede : + UgyldigForespoerselException( + code = "FANT_IKKE_TRYGDETID_IDENT_BLANT_AVDOEDE", + detail = "Ident knyttet til trygdetid er ikke blant avdøde knyttet til sak", + ) + +class OverstyrtTrygdetidManglerAvdoed : + UgyldigForespoerselException( + code = "OVERSTYRT_TRYGDETID_MANGLER_AVDOED", + detail = "Overstyrt trygdetid mangler avdød. Trygdetiden må overskrives med ny overstyrt trygdetid", + ) + +class IngenStoetteForUkjentAvdoed : + UgyldigForespoerselException( + code = "INGEN_STOETTE_FOR_UKJENT_AVDOED", + detail = "Brevløsningen støtter ikke ukjent avdød", + ) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/bp/BarnepensjonInformasjonDoedsfall.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/bp/BarnepensjonInformasjonDoedsfall.kt index 51a6b49aba8..45614aacba3 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/bp/BarnepensjonInformasjonDoedsfall.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/bp/BarnepensjonInformasjonDoedsfall.kt @@ -10,7 +10,8 @@ data class BarnepensjonInformasjonDoedsfall( val avdoedNavn: String, val borIutland: Boolean, val erOver18aar: Boolean, -) : BrevDataRedigerbar, BrevdataMedInnhold { +) : BrevDataRedigerbar, + BrevdataMedInnhold { companion object { fun fra( generellBrevData: GenerellBrevData, @@ -19,7 +20,10 @@ data class BarnepensjonInformasjonDoedsfall( ): BarnepensjonInformasjonDoedsfall = BarnepensjonInformasjonDoedsfall( innhold = emptyList(), - avdoedNavn = generellBrevData.personerISak.avdoede.first().navn, + avdoedNavn = + generellBrevData.personerISak.avdoede + .first() + .navn, borIutland = borIutland, erOver18aar = erOver18aar, ) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/bp/BarnepensjonRevurdering.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/bp/BarnepensjonRevurdering.kt index 35505d0fef0..825ce779bfb 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/bp/BarnepensjonRevurdering.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/bp/BarnepensjonRevurdering.kt @@ -107,13 +107,12 @@ data class BarnepensjonRevurderingRedigerbartUtfall( etterbetaling: EtterbetalingDTO?, utbetalingsinfo: Utbetalingsinfo, brevutfall: BrevutfallDto, - ): BarnepensjonRevurderingRedigerbartUtfall { - return BarnepensjonRevurderingRedigerbartUtfall( + ): BarnepensjonRevurderingRedigerbartUtfall = + BarnepensjonRevurderingRedigerbartUtfall( erEtterbetaling = etterbetaling != null, harUtbetaling = utbetalingsinfo.beregningsperioder.any { it.utbetaltBeloep.value > 0 }, feilutbetaling = toFeilutbetalingType(requireNotNull(brevutfall.feilutbetaling?.valg)), brukerUnder18Aar = requireNotNull(brevutfall.aldersgruppe) == Aldersgruppe.UNDER_18, ) - } } } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/klage/AvvistKlageFerdigData.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/klage/AvvistKlageFerdigData.kt index 14aaf70bcd3..0fe9eeb74aa 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/klage/AvvistKlageFerdigData.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/klage/AvvistKlageFerdigData.kt @@ -8,18 +8,19 @@ import no.nav.etterlatte.brev.model.Slate import no.nav.etterlatte.libs.common.behandling.SakType import java.time.LocalDate -data class AvvistKlageFerdigData(override val innhold: List, val data: AvvistKlageInnholdBrevData) : - BrevDataFerdigstilling { +data class AvvistKlageFerdigData( + override val innhold: List, + val data: AvvistKlageInnholdBrevData, +) : BrevDataFerdigstilling { companion object { fun fra( generellBrevData: GenerellBrevData, innholdMedVedlegg: InnholdMedVedlegg, - ): AvvistKlageFerdigData { - return AvvistKlageFerdigData( + ): AvvistKlageFerdigData = + AvvistKlageFerdigData( innhold = innholdMedVedlegg.innhold(), data = AvvistKlageInnholdBrevData.fra(generellBrevData), ) - } } } @@ -34,7 +35,12 @@ data class AvvistKlageInnholdBrevData( return AvvistKlageInnholdBrevData( sakType = klage.sak.sakType, klageDato = klage.innkommendeDokument?.mottattDato ?: klage.opprettet.toLocalDate(), - datoForVedtaketKlagenGjelder = klage.formkrav?.formkrav?.vedtaketKlagenGjelder?.datoAttestert?.toLocalDate(), + datoForVedtaketKlagenGjelder = + klage.formkrav + ?.formkrav + ?.vedtaketKlagenGjelder + ?.datoAttestert + ?.toLocalDate(), ) } } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/oms/AktivitetspliktBrevdata.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/oms/AktivitetspliktBrevdata.kt index 7ed720eac21..46d2b0bc36e 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/oms/AktivitetspliktBrevdata.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/oms/AktivitetspliktBrevdata.kt @@ -6,8 +6,9 @@ data class AktivitetspliktBrevdata( val aktivitetsgrad: Aktivitetsgrad, val utbetaling: Boolean, val redusertEtterInntekt: Boolean, - val nasjonalEllerUtland: NasjonalEllerUtland + val nasjonalEllerUtland: NasjonalEllerUtland, ) : BrevDataRedigerbar enum class Aktivitetsgrad { IKKE_I_AKTIVITET, UNDER_50_PROSENT, OVER_50_PROSENT } + enum class NasjonalEllerUtland { NASJONAL, UTLAND } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/oms/OmstillingsstoenadAvslag.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/oms/OmstillingsstoenadAvslag.kt index 018a67847f6..9a1a595804e 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/oms/OmstillingsstoenadAvslag.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/oms/OmstillingsstoenadAvslag.kt @@ -22,12 +22,16 @@ data class OmstillingsstoenadAvslag( } } -data class OmstillingsstoenadAvslagRedigerbartUtfall(val avdoedNavn: String) : BrevDataRedigerbar { +data class OmstillingsstoenadAvslagRedigerbartUtfall( + val avdoedNavn: String, +) : BrevDataRedigerbar { companion object { fun fra(generellBrevData: GenerellBrevData) = OmstillingsstoenadAvslagRedigerbartUtfall( avdoedNavn = - generellBrevData.personerISak.avdoede.firstOrNull()?.navn + generellBrevData.personerISak.avdoede + .firstOrNull() + ?.navn ?: "", ) } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/oms/OmstillingsstoenadInformasjonDoedsfall.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/oms/OmstillingsstoenadInformasjonDoedsfall.kt index 51f99f2d5c0..25213caa270 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/oms/OmstillingsstoenadInformasjonDoedsfall.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/oms/OmstillingsstoenadInformasjonDoedsfall.kt @@ -9,7 +9,8 @@ class OmstillingsstoenadInformasjonDoedsfall( override val innhold: List, val avdoedNavn: String, val borIutland: Boolean, -) : BrevDataRedigerbar, BrevdataMedInnhold { +) : BrevDataRedigerbar, + BrevdataMedInnhold { companion object { fun fra( generellBrevData: GenerellBrevData, @@ -17,7 +18,10 @@ class OmstillingsstoenadInformasjonDoedsfall( ): OmstillingsstoenadInformasjonDoedsfall = OmstillingsstoenadInformasjonDoedsfall( innhold = emptyList(), - avdoedNavn = generellBrevData.personerISak.avdoede.first().navn, + avdoedNavn = + generellBrevData.personerISak.avdoede + .first() + .navn, borIutland = borIutland, ) } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/tilbakekreving/TilbakekrevingBrevData.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/tilbakekreving/TilbakekrevingBrevData.kt index 63cef5c6c64..02a801ab324 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/tilbakekreving/TilbakekrevingBrevData.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/model/tilbakekreving/TilbakekrevingBrevData.kt @@ -131,4 +131,6 @@ data class TilbakekrevingBeloeperData( val sumNettoRenter: Kroner, ) -class BrevDataTilbakerevingHarManglerException(message: String) : RuntimeException(message) +class BrevDataTilbakerevingHarManglerException( + message: String, +) : RuntimeException(message) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/Notat.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/Notat.kt index 3cdcfc38786..095f14fbac9 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/Notat.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/Notat.kt @@ -22,7 +22,9 @@ data class Notat( fun kanRedigeres() = journalpostId.isNullOrBlank() } -enum class NotatMal(val navn: String) { +enum class NotatMal( + val navn: String, +) { TOM_MAL("tom_mal"), NORDISK_VEDLEGG("nordisk_vedlegg"), } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/NotatRepository.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/NotatRepository.kt index e41384f2f26..e63c7645b5f 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/NotatRepository.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/NotatRepository.kt @@ -16,7 +16,9 @@ import no.nav.etterlatte.libs.database.transaction import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo import javax.sql.DataSource -class NotatRepository(private val ds: DataSource) { +class NotatRepository( + private val ds: DataSource, +) { fun hent(id: NotatID): Notat = using(sessionOf(ds)) { it.run( @@ -132,17 +134,18 @@ class NotatRepository(private val ds: DataSource) { tittel: String, bruker: BrukerTokenInfo, ) = ds.transaction { tx -> - tx.run( - queryOf( - "UPDATE notat SET tittel = :tittel WHERE id = :id", - mapOf( - "id" to id, - "tittel" to tittel, - ), - ).asUpdate, - ).also { oppdatert -> - require(oppdatert == 1) - } + tx + .run( + queryOf( + "UPDATE notat SET tittel = :tittel WHERE id = :id", + mapOf( + "id" to id, + "tittel" to tittel, + ), + ).asUpdate, + ).also { oppdatert -> + require(oppdatert == 1) + } tx.lagreHendelse(id, tittel.toJson(), bruker) } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/NotatRoute.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/NotatRoute.kt index 2fd2d6f93e1..bd6ca7645f2 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/NotatRoute.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/NotatRoute.kt @@ -49,9 +49,7 @@ sealed class StrukturertBrev { override val soekerFnr: String = klage.sak.ident override val behandlingId = klage.id - override fun tilLetterdata(): BrevbakerBlankettDTO { - return klage.tilBrevbakerBlankett() - } + override fun tilLetterdata(): BrevbakerBlankettDTO = klage.tilBrevbakerBlankett() } } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/NotatService.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/NotatService.kt index 751f54c3abf..3178283e669 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/NotatService.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/NotatService.kt @@ -105,8 +105,8 @@ class NotatService( notatData: StrukturertBrev, notatId: BrevID?, bruker: BrukerTokenInfo, - ): Pdf { - return brevbakerService.genererPdf( + ): Pdf = + brevbakerService.genererPdf( notatId, brevRequest = BrevbakerRequest.fraStrukturertBrev( @@ -114,7 +114,6 @@ class NotatService( felles = mapFelles(notatData.sak.id, notatData.sak.enhet, bruker), ), ) - } private suspend fun journalfoerInterntNotat( notat: Brev, @@ -186,13 +185,10 @@ class NotatService( suspend fun forhaandsvisNotat( notatData: StrukturertBrev, bruker: BrukerTokenInfo, - ): Pdf { - return genererPdfBrevbaker(notatData, null, bruker) - } + ): Pdf = genererPdfBrevbaker(notatData, null, bruker) - fun hentPdf(notatId: BrevID): Pdf { - return checkNotNull(brevRepository.hentPdf(notatId)) { + fun hentPdf(notatId: BrevID): Pdf = + checkNotNull(brevRepository.hentPdf(notatId)) { "Fant ikke generert pdf for notat med id=$notatId" } - } } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/NyNotatService.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/NyNotatService.kt index fbec87eb68d..06883c603ca 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/NyNotatService.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/NyNotatService.kt @@ -42,9 +42,7 @@ class NyNotatService( return notatRepository.hentForSak(sakId) } - fun hentPayload(id: NotatID): Slate { - return notatRepository.hentPayload(id) - } + fun hentPayload(id: NotatID): Slate = notatRepository.hentPayload(id) fun oppdaterPayload( id: NotatID, @@ -150,7 +148,8 @@ class NyNotatService( val sak = sakService.hentSak(notat.sakId, bruker) - return dokarkivService.journalfoer(mapTilJournalpostRequest(sak, notat, pdf)) + return dokarkivService + .journalfoer(mapTilJournalpostRequest(sak, notat, pdf)) .also { notatRepository.settJournalfoert(id, it, bruker) } @@ -192,12 +191,14 @@ class NyNotatService( } } -class KanIkkeEndreJournalfoertNotat : UgyldigForespoerselException( - code = "KAN_IKKE_ENDRE_JOURNALFOERT_NOTAT", - detail = "Notatet er journalført og kan ikke endres!", -) - -class NotatAlleredeJournalfoert : UgyldigForespoerselException( - code = "NOTAT_ALLEREDE_JOURNALFOERT", - detail = "Notatet er allerede journalført!", -) +class KanIkkeEndreJournalfoertNotat : + UgyldigForespoerselException( + code = "KAN_IKKE_ENDRE_JOURNALFOERT_NOTAT", + detail = "Notatet er journalført og kan ikke endres!", + ) + +class NotatAlleredeJournalfoert : + UgyldigForespoerselException( + code = "NOTAT_ALLEREDE_JOURNALFOERT", + detail = "Notatet er allerede journalført!", + ) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/PdfGeneratorKlient.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/PdfGeneratorKlient.kt index acb7126b392..73665eca337 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/PdfGeneratorKlient.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/notat/PdfGeneratorKlient.kt @@ -21,17 +21,21 @@ import org.slf4j.LoggerFactory * * @see: Pensjonsbrev - Brevbaker **/ -class PdfGeneratorKlient(private val klient: HttpClient, private val apiUrl: String) { +class PdfGeneratorKlient( + private val klient: HttpClient, + private val apiUrl: String, +) { private val logger = LoggerFactory.getLogger(this::class.java) suspend fun genererPdf(request: PdfGenRequest): ByteArray { logger.info("Genererer PDF med ey-pdfgen") - return klient.post("$apiUrl/notat/tom_mal") { - header(CORRELATION_ID, getCorrelationId()) - contentType(ContentType.Application.Json) - setBody(request) - }.body() + return klient + .post("$apiUrl/notat/tom_mal") { + header(CORRELATION_ID, getCorrelationId()) + contentType(ContentType.Application.Json) + setBody(request) + }.body() } } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/oversendelsebrev/OversendelseBrevService.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/oversendelsebrev/OversendelseBrevService.kt index 8c2e87c83eb..2882a0180d5 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/oversendelsebrev/OversendelseBrevService.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/oversendelsebrev/OversendelseBrevService.kt @@ -68,16 +68,16 @@ class OversendelseBrevServiceImpl( private val brevdataFacade: BrevdataFacade, private val behandlingKlient: BehandlingKlient, ) : OversendelseBrevService { - override fun hentOversendelseBrev(behandlingId: UUID): Brev? { - return brevRepository.hentBrevForBehandling(behandlingId, Brevtype.OVERSENDELSE_KLAGE).singleOrNull() - } + override fun hentOversendelseBrev(behandlingId: UUID): Brev? = + brevRepository.hentBrevForBehandling(behandlingId, Brevtype.OVERSENDELSE_KLAGE).singleOrNull() override suspend fun opprettOversendelseBrev( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, ): Brev { val eksisterendeBrev = - brevRepository.hentBrevForBehandling(behandlingId, Brevtype.OVERSENDELSE_KLAGE) + brevRepository + .hentBrevForBehandling(behandlingId, Brevtype.OVERSENDELSE_KLAGE) .singleOrNull() if (eksisterendeBrev != null) { return eksisterendeBrev @@ -211,7 +211,8 @@ class OversendelseBrevServiceImpl( brukerTokenInfo: BrukerTokenInfo, ) { val brev = - brevRepository.hentBrevForBehandling(behandlingId, Brevtype.OVERSENDELSE_KLAGE) + brevRepository + .hentBrevForBehandling(behandlingId, Brevtype.OVERSENDELSE_KLAGE) .singleOrNull() ?: return if (!brev.kanEndres()) { throw VedtaksbrevKanIkkeSlettes(brev.id, "Brevet har status (${brev.status})") @@ -260,7 +261,13 @@ data class OversendelseBrevFerdigstillingData( sakType = request.generellBrevData.sak.sakType, klageDato = klage.innkommendeDokument?.mottattDato ?: klage.opprettet.toLocalDate(), vedtakDato = - checkNotNull(klage.formkrav?.formkrav?.vedtaketKlagenGjelder?.datoAttestert?.toLocalDate()) { + checkNotNull( + klage.formkrav + ?.formkrav + ?.vedtaketKlagenGjelder + ?.datoAttestert + ?.toLocalDate(), + ) { "Klagen har en ugyldig referanse til når originalt vedtak ble attestert, klageId=${klage.id}" }, innstillingTekst = innstilling.innstillingTekst, @@ -273,7 +280,10 @@ data class OversendelseBrevFerdigstillingData( } } -class MismatchSakOgBrevException(brevId: BrevID, sakId: Long) : UgyldigForespoerselException( - code = "SAKID_MATCHER_IKKE", - detail = "Brevet med id=$brevId har ikke angitt sakId=$sakId", -) +class MismatchSakOgBrevException( + brevId: BrevID, + sakId: Long, +) : UgyldigForespoerselException( + code = "SAKID_MATCHER_IKKE", + detail = "Brevet med id=$brevId har ikke angitt sakId=$sakId", + ) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/varselbrev/VarselbrevService.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/varselbrev/VarselbrevService.kt index 335b9052e39..841b1be8edf 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/varselbrev/VarselbrevService.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/varselbrev/VarselbrevService.kt @@ -31,21 +31,22 @@ internal class VarselbrevService( val sakType = behandlingKlient.hentSak(sakId, brukerTokenInfo).sakType val brevkode = hentBrevkode(sakType) - return brevoppretter.opprettBrev( - sakId = sakId, - behandlingId = behandlingId, - bruker = brukerTokenInfo, - brevKode = { brevkode.redigering }, - brevtype = Brevtype.VARSEL, - ) { - BrevDataMapperRedigerbartUtfallVarsel.hentBrevDataRedigerbar( - sakType, - brukerTokenInfo, - it.generellBrevData.utlandstilknytning, - ) - }.let { - VarselbrevResponse(it.first, it.second, brevkode) - } + return brevoppretter + .opprettBrev( + sakId = sakId, + behandlingId = behandlingId, + bruker = brukerTokenInfo, + brevKode = { brevkode.redigering }, + brevtype = Brevtype.VARSEL, + ) { + BrevDataMapperRedigerbartUtfallVarsel.hentBrevDataRedigerbar( + sakType, + brukerTokenInfo, + it.generellBrevData.utlandstilknytning, + ) + }.let { + VarselbrevResponse(it.first, it.second, brevkode) + } } private fun hentBrevkode(sakType: SakType) = @@ -82,4 +83,8 @@ internal class VarselbrevService( ) } -data class VarselbrevResponse(val brev: Brev, val generellBrevData: GenerellBrevData, val brevkoder: Brevkoder) +data class VarselbrevResponse( + val brev: Brev, + val generellBrevData: GenerellBrevData, + val brevkoder: Brevkoder, +) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/virusskanning/VirusScanService.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/virusskanning/VirusScanService.kt index 4fae10b7170..27e1e9abf85 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/virusskanning/VirusScanService.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/virusskanning/VirusScanService.kt @@ -7,7 +7,9 @@ private const val MAKS_FILSTOERRELSE = 10 * 1024 * 1024 private val log: Logger = LoggerFactory.getLogger(VirusScanService::class.java) -class VirusScanService(private val clamAvClient: ClamAvClient) { +class VirusScanService( + private val clamAvClient: ClamAvClient, +) { suspend fun filHarVirus(request: VirusScanRequest): Boolean { log.info("Skanner fil for virus: ${request.tittel}") if (filErForStor(request.fil)) { @@ -15,7 +17,8 @@ class VirusScanService(private val clamAvClient: ClamAvClient) { return true } - return clamAvClient.skann(ClamAVRequest(filnavn = request.tittel, fil = request.fil)) + return clamAvClient + .skann(ClamAVRequest(filnavn = request.tittel, fil = request.fil)) .onEach { log.warn("Status for virussjekk for ${it.Filename}: ${it.Result} ") } .any { it.Result != Status.OK } } @@ -23,4 +26,7 @@ class VirusScanService(private val clamAvClient: ClamAvClient) { fun filErForStor(file: ByteArray) = file.size > (MAKS_FILSTOERRELSE).also { log.info("Fila er ${file.size} bytes") } -data class VirusScanRequest(val tittel: String, val fil: ByteArray) +data class VirusScanRequest( + val tittel: String, + val fil: ByteArray, +) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/rivers/OpprettJournalfoerOgDistribuerRiver.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/rivers/OpprettJournalfoerOgDistribuerRiver.kt index 0ff25f13caf..9df6332c43f 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/rivers/OpprettJournalfoerOgDistribuerRiver.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/rivers/OpprettJournalfoerOgDistribuerRiver.kt @@ -29,8 +29,10 @@ import no.nav.helse.rapids_rivers.MessageContext import no.nav.helse.rapids_rivers.RapidsConnection import org.slf4j.LoggerFactory -class OpprettJournalfoerOgDistribuerRiverException(override val detail: String, override val cause: Throwable?) : - InternfeilException(detail, cause) +class OpprettJournalfoerOgDistribuerRiverException( + override val detail: String, + override val cause: Throwable?, +) : InternfeilException(detail, cause) class OpprettJournalfoerOgDistribuerRiver( private val rapidsConnection: RapidsConnection, @@ -131,14 +133,15 @@ class OpprettJournalfoerOgDistribuerRiver( publish( sakId.toString(), - JsonMessage.newMessage( - BrevHendelseType.DISTRIBUERT.lagEventnameForType(), - mapOf( - BREV_ID_KEY to brevID, - SAK_ID_KEY to sakId, - BREV_KODE to brevkode.name, - ), - ).toJson(), + JsonMessage + .newMessage( + BrevHendelseType.DISTRIBUERT.lagEventnameForType(), + mapOf( + BREV_ID_KEY to brevID, + SAK_ID_KEY to sakId, + BREV_KODE to brevkode.name, + ), + ).toJson(), ) } diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/rivers/StartInformasjonsbrevgenereringRiver.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/rivers/StartInformasjonsbrevgenereringRiver.kt index 28eedbb21f4..3e68b9e8dda 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/rivers/StartInformasjonsbrevgenereringRiver.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/rivers/StartInformasjonsbrevgenereringRiver.kt @@ -51,20 +51,22 @@ class StartInformasjonsbrevgenereringRiver( } private fun lagMelding(brevgenereringRequest: BrevgenereringRequest) = - JsonMessage.newMessage( - listOf( - BrevRequestHendelseType.OPPRETT_BREV.lagParMedEventNameKey(), - FNR_KEY to (brevgenereringRequest.fnr), - BEHANDLING_ID_KEY to (brevgenereringRequest.behandlingId?.toString()), - BREVMAL_RIVER_KEY to brevgenereringRequest.brevmal.name, - SAK_TYPE_KEY to brevgenereringRequest.sakType.name, - ) - .filter { it.second != null } - .associate { it.first to it.second!! }, - ).toJson() + JsonMessage + .newMessage( + listOf( + BrevRequestHendelseType.OPPRETT_BREV.lagParMedEventNameKey(), + FNR_KEY to (brevgenereringRequest.fnr), + BEHANDLING_ID_KEY to (brevgenereringRequest.behandlingId?.toString()), + BREVMAL_RIVER_KEY to brevgenereringRequest.brevmal.name, + SAK_TYPE_KEY to brevgenereringRequest.sakType.name, + ).filter { it.second != null } + .associate { it.first to it.second!! }, + ).toJson() } -class StartBrevgenereringRepository(private val dataSource: DataSource) : Transactions { +class StartBrevgenereringRepository( + private val dataSource: DataSource, +) : Transactions { override fun inTransaction(block: StartBrevgenereringRepository.(TransactionalSession) -> R): R = dataSource.transaction { this.block(it) diff --git a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/NotatServiceTest.kt b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/NotatServiceTest.kt index c98a04ace54..76bd51627e9 100644 --- a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/NotatServiceTest.kt +++ b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/NotatServiceTest.kt @@ -41,7 +41,9 @@ import java.time.ZoneId import javax.sql.DataSource @ExtendWith(GenerellDatabaseExtension::class) -class NotatServiceTest(dataSource: DataSource) { +class NotatServiceTest( + dataSource: DataSource, +) { private val brevRepository: BrevRepository = BrevRepository(dataSource) private val adresseService: AdresseService = mockk() private val brevbakerService: BrevbakerService = mockk() @@ -141,51 +143,51 @@ class NotatServiceTest(dataSource: DataSource) { } } -private fun klageForInnstilling(sakId: Long): Klage { - return Klage.ny( - sak = - Sak( - ident = SOEKER_FOEDSELSNUMMER.value, - sakType = SakType.BARNEPENSJON, - id = sakId, - enhet = "4808", - ), - innkommendeDokument = null, - ).copy( - utfall = - KlageUtfallMedData.StadfesteVedtak( - innstilling = - InnstillingTilKabal( - lovhjemmel = KabalHjemmel.FTRL_18_4, - internKommentar = null, - brev = KlageOversendelsebrev(brevId = 123L), - innstillingTekst = "Hello", - ), - saksbehandler = - Grunnlagsopplysning.Saksbehandler( - ident = "", - tidspunkt = Tidspunkt.now(), - ), - ), - formkrav = - FormkravMedBeslutter( - formkrav = - Formkrav( - vedtaketKlagenGjelder = - VedtaketKlagenGjelder( - id = "", - behandlingId = "", - datoAttestert = LocalDate.now().atStartOfDay(ZoneId.systemDefault()), - vedtakType = VedtakType.INNVILGELSE, - ), - erKlagerPartISaken = JaNei.JA, - erKlagenSignert = JaNei.JA, - gjelderKlagenNoeKonkretIVedtaket = JaNei.JA, - erKlagenFramsattInnenFrist = JaNei.JA, - erFormkraveneOppfylt = JaNei.JA, - begrunnelse = null, - ), - saksbehandler = Grunnlagsopplysning.automatiskSaksbehandler, - ), - ) -} +private fun klageForInnstilling(sakId: Long): Klage = + Klage + .ny( + sak = + Sak( + ident = SOEKER_FOEDSELSNUMMER.value, + sakType = SakType.BARNEPENSJON, + id = sakId, + enhet = "4808", + ), + innkommendeDokument = null, + ).copy( + utfall = + KlageUtfallMedData.StadfesteVedtak( + innstilling = + InnstillingTilKabal( + lovhjemmel = KabalHjemmel.FTRL_18_4, + internKommentar = null, + brev = KlageOversendelsebrev(brevId = 123L), + innstillingTekst = "Hello", + ), + saksbehandler = + Grunnlagsopplysning.Saksbehandler( + ident = "", + tidspunkt = Tidspunkt.now(), + ), + ), + formkrav = + FormkravMedBeslutter( + formkrav = + Formkrav( + vedtaketKlagenGjelder = + VedtaketKlagenGjelder( + id = "", + behandlingId = "", + datoAttestert = LocalDate.now().atStartOfDay(ZoneId.systemDefault()), + vedtakType = VedtakType.INNVILGELSE, + ), + erKlagerPartISaken = JaNei.JA, + erKlagenSignert = JaNei.JA, + gjelderKlagenNoeKonkretIVedtaket = JaNei.JA, + erKlagenFramsattInnenFrist = JaNei.JA, + erFormkraveneOppfylt = JaNei.JA, + begrunnelse = null, + ), + saksbehandler = Grunnlagsopplysning.automatiskSaksbehandler, + ), + ) diff --git a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/VedtaksbrevServiceTest.kt b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/VedtaksbrevServiceTest.kt index 20b26fef674..32b4124f9d0 100644 --- a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/VedtaksbrevServiceTest.kt +++ b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/VedtaksbrevServiceTest.kt @@ -253,7 +253,11 @@ internal class VedtaksbrevServiceTest { coVerify { db.hentBrevForBehandling(BEHANDLING_ID, Brevtype.VEDTAK) brevdataFacade.hentGenerellBrevData(sakId, BEHANDLING_ID, null, any()) - adresseService.hentMottakerAdresse(sakType, behandling.personerISak.innsender!!.fnr.value) + adresseService.hentMottakerAdresse( + sakType, + behandling.personerISak.innsender!! + .fnr.value, + ) } verify { @@ -313,7 +317,11 @@ internal class VedtaksbrevServiceTest { coVerify { db.hentBrevForBehandling(BEHANDLING_ID, Brevtype.VEDTAK) brevdataFacade.hentGenerellBrevData(sakId, BEHANDLING_ID, null, any()) - adresseService.hentMottakerAdresse(sakType, behandling.personerISak.innsender!!.fnr.value) + adresseService.hentMottakerAdresse( + sakType, + behandling.personerISak.innsender!! + .fnr.value, + ) brevbakerService.hentRedigerbarTekstFraBrevbakeren(any()) } @@ -813,4 +821,6 @@ internal class VedtaksbrevServiceTest { ) } -data class ManueltBrevDataTest(override val innhold: List = emptyList()) : BrevDataFerdigstilling +data class ManueltBrevDataTest( + override val innhold: List = emptyList(), +) : BrevDataFerdigstilling diff --git a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/behandling/BehandlingTest.kt b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/behandling/BehandlingTest.kt index 3019ce12ee9..421148874e8 100644 --- a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/behandling/BehandlingTest.kt +++ b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/behandling/BehandlingTest.kt @@ -193,16 +193,17 @@ internal class BehandlingTest { ), Opplysningstype.SOEKER_PDL_V1 to opprettOpplysning( - personTestData(mapOf(soekersFoedselsnummer)).copy( - vergemaalEllerFremtidsfullmakt = - listOf( - VergemaalEllerFremtidsfullmakt( - null, - null, - VergeEllerFullmektig(vergesFnr, "Vergenavn", null, false), + personTestData(mapOf(soekersFoedselsnummer)) + .copy( + vergemaalEllerFremtidsfullmakt = + listOf( + VergemaalEllerFremtidsfullmakt( + null, + null, + VergeEllerFullmektig(vergesFnr, "Vergenavn", null, false), + ), ), - ), - ).toJsonNode(), + ).toJsonNode(), ), ), familie = emptyList(), diff --git a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/brevbaker/BlockTilSlateKonvertererTest.kt b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/brevbaker/BlockTilSlateKonvertererTest.kt index f2b080cbd21..1281ac3ca55 100644 --- a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/brevbaker/BlockTilSlateKonvertererTest.kt +++ b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/brevbaker/BlockTilSlateKonvertererTest.kt @@ -24,7 +24,8 @@ class BlockTilSlateKonvertererTest { fun `skal konvertere title1, title2 og paragraph til HEADING_TWO, HEADING_THREE og PARAGRAPH`() { val originalJson = this.javaClass - .getResource("/brevbaker/brevbaker_payload_med_title1_title2_og_paragraf.json")!!.readText() + .getResource("/brevbaker/brevbaker_payload_med_title1_title2_og_paragraf.json")!! + .readText() objectMapper.addMixIn(LetterMarkup.Block::class.java, BrevbakerJSONBlockMixIn::class.java) objectMapper.addMixIn(LetterMarkup.ParagraphContent::class.java, BrevbakerJSONParagraphMixIn::class.java) val letterMarkup = deserialize(originalJson) diff --git a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/db/BrevRepositoryIntegrationTest.kt b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/db/BrevRepositoryIntegrationTest.kt index 7523509182c..f07ec79f927 100644 --- a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/db/BrevRepositoryIntegrationTest.kt +++ b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/db/BrevRepositoryIntegrationTest.kt @@ -41,7 +41,9 @@ import javax.sql.DataSource import kotlin.random.Random @TestInstance(TestInstance.Lifecycle.PER_CLASS) -internal class BrevRepositoryIntegrationTest(private val dataSource: DataSource) { +internal class BrevRepositoryIntegrationTest( + private val dataSource: DataSource, +) { private val db = BrevRepository(dataSource) @AfterEach @@ -416,8 +418,15 @@ internal class BrevRepositoryIntegrationTest(private val dataSource: DataSource) ) val vedleggPayload = db.hentBrevPayloadVedlegg(opprettetBrev.id)!! - vedleggPayload.first().payload!!.elements.size shouldBeExactly 1 - vedleggPayload.first().payload!!.elements[0].type shouldBe Slate.ElementType.HEADING_TWO + vedleggPayload + .first() + .payload!! + .elements.size shouldBeExactly 1 + vedleggPayload + .first() + .payload!! + .elements[0] + .type shouldBe Slate.ElementType.HEADING_TWO } } diff --git a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/hentinformasjon/BrevdataFacadeImplTest.kt b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/hentinformasjon/BrevdataFacadeImplTest.kt index 68542a64262..871e0b46cd6 100644 --- a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/hentinformasjon/BrevdataFacadeImplTest.kt +++ b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/hentinformasjon/BrevdataFacadeImplTest.kt @@ -113,7 +113,12 @@ internal class BrevdataFacadeImplTest { Assertions.assertEquals("Mellom", mellomnavn) Assertions.assertEquals("Barn", etternavn) } - Assertions.assertEquals("Død Mellom Far", generellBrevData.personerISak.avdoede.first().navn) + Assertions.assertEquals( + "Død Mellom Far", + generellBrevData.personerISak.avdoede + .first() + .navn, + ) Assertions.assertEquals(VedtakType.INNVILGELSE, generellBrevData.forenkletVedtak?.type) Assertions.assertEquals(123L, generellBrevData.forenkletVedtak?.id) Assertions.assertEquals(ENHET, generellBrevData.forenkletVedtak?.sakenhet) @@ -142,7 +147,9 @@ internal class BrevdataFacadeImplTest { generellBrevData.sak.id shouldBe SAK_ID generellBrevData.behandlingId shouldBe BEHANDLING_ID generellBrevData.spraak shouldBe Spraak.EN - generellBrevData.personerISak.avdoede.first().navn shouldBe "Død Mellom Far" + generellBrevData.personerISak.avdoede + .first() + .navn shouldBe "Død Mellom Far" with(generellBrevData.personerISak.soeker) { fornavn shouldBe "Søker" mellomnavn shouldBe "Mellom" diff --git a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/notat/NyNotatServiceTest.kt b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/notat/NyNotatServiceTest.kt index 7acb66fb0f7..49f8dc06a37 100644 --- a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/notat/NyNotatServiceTest.kt +++ b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/notat/NyNotatServiceTest.kt @@ -35,7 +35,9 @@ import kotlin.random.Random @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class NyNotatServiceTest(dataSource: DataSource) { +internal class NyNotatServiceTest( + dataSource: DataSource, +) { private val pdfGeneratorKlientMock = mockk() private val dokarkivServiceMock = mockk() private val sakServiceMock = mockk() diff --git a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/oversendelsebrev/OversendelseBrevServiceImplTest.kt b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/oversendelsebrev/OversendelseBrevServiceImplTest.kt index 2295a4e455f..3b2e63d7b58 100644 --- a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/oversendelsebrev/OversendelseBrevServiceImplTest.kt +++ b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/oversendelsebrev/OversendelseBrevServiceImplTest.kt @@ -44,7 +44,9 @@ import javax.sql.DataSource @ExtendWith(DatabaseExtension::class) @TestInstance(TestInstance.Lifecycle.PER_CLASS) -class OversendelseBrevServiceImplTest(dataSource: DataSource) { +class OversendelseBrevServiceImplTest( + dataSource: DataSource, +) { val sakId = 148L private val behandlingId = UUID.randomUUID() private val saksbehandler = BrukerTokenInfo.of("token", "saksbehandler", null, null, null) @@ -80,8 +82,8 @@ class OversendelseBrevServiceImplTest(dataSource: DataSource) { verify { brevRepository.settBrevSlettet(oversendelsesbrev.id, any()) } } - private fun klage(): Klage { - return Klage( + private fun klage(): Klage = + Klage( behandlingId, Sak("ident", SakType.BARNEPENSJON, sakId, "einheit"), Tidspunkt.now(), @@ -95,7 +97,6 @@ class OversendelseBrevServiceImplTest(dataSource: DataSource) { aarsakTilAvbrytelse = null, initieltUtfall = null, ) - } private fun brevData() = GenerellBrevData( diff --git a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/varselbrev/VarselbrevTest.kt b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/varselbrev/VarselbrevTest.kt index 5d68851c056..797d6f582e7 100644 --- a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/varselbrev/VarselbrevTest.kt +++ b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/varselbrev/VarselbrevTest.kt @@ -36,7 +36,9 @@ import javax.sql.DataSource @ExtendWith(DatabaseExtension::class) @TestInstance(TestInstance.Lifecycle.PER_CLASS) -class VarselbrevTest(datasource: DataSource) { +class VarselbrevTest( + datasource: DataSource, +) { private lateinit var service: VarselbrevService private val brevRepository = BrevRepository(datasource) diff --git a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/rivers/InformasjonsbrevTest.kt b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/rivers/InformasjonsbrevTest.kt index 1eba1277754..73601092889 100644 --- a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/rivers/InformasjonsbrevTest.kt +++ b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/rivers/InformasjonsbrevTest.kt @@ -35,7 +35,9 @@ import javax.sql.DataSource @ExtendWith(DatabaseExtension::class) @TestInstance(TestInstance.Lifecycle.PER_CLASS) -class InformasjonsbrevTest(private val dataSource: DataSource) { +class InformasjonsbrevTest( + private val dataSource: DataSource, +) { private val behandlingId = UUID.randomUUID() @Test @@ -101,29 +103,31 @@ class InformasjonsbrevTest(private val dataSource: DataSource) { val fnr = get(FNR_KEY).also { assertEquals(SOEKER_FOEDSELSNUMMER.value, it.asText()) } val brevmal = get(BREVMAL_RIVER_KEY).also { assertEquals(brevkode.name, it.asText()) } val sakstype = get(SAK_TYPE_KEY).also { assertEquals(saktype.name, it.asText()) } - JsonMessage.newMessage( - mapOf( - BrevRequestHendelseType.OPPRETT_JOURNALFOER_OG_DISTRIBUER.lagParMedEventNameKey(), - FNR_KEY to fnr, - BREVMAL_RIVER_KEY to brevmal, - SAK_TYPE_KEY to sakstype, - SAK_ID_KEY to saksnr, - ), - ).also { testRapid.sendTestMessage(it.toJson()) } + JsonMessage + .newMessage( + mapOf( + BrevRequestHendelseType.OPPRETT_JOURNALFOER_OG_DISTRIBUER.lagParMedEventNameKey(), + FNR_KEY to fnr, + BREVMAL_RIVER_KEY to brevmal, + SAK_TYPE_KEY to sakstype, + SAK_ID_KEY to saksnr, + ), + ).also { testRapid.sendTestMessage(it.toJson()) } } with(testRapid.inspektør.message(1)) { val behandling = get(BEHANDLING_ID_KEY).also { assertEquals(behandlingId.toString(), it.asText()) } val brevmal = get(BREVMAL_RIVER_KEY).also { assertEquals(brevkode.name, it.asText()) } val sakstype = get(SAK_TYPE_KEY).also { assertEquals(saktype.name, it.asText()) } - JsonMessage.newMessage( - mapOf( - BrevRequestHendelseType.OPPRETT_JOURNALFOER_OG_DISTRIBUER.lagParMedEventNameKey(), - BEHANDLING_ID_KEY to behandling, - BREVMAL_RIVER_KEY to brevmal, - SAK_TYPE_KEY to sakstype, - SAK_ID_KEY to saksnr, - ), - ).also { testRapid.sendTestMessage(it.toJson()) } + JsonMessage + .newMessage( + mapOf( + BrevRequestHendelseType.OPPRETT_JOURNALFOER_OG_DISTRIBUER.lagParMedEventNameKey(), + BEHANDLING_ID_KEY to behandling, + BREVMAL_RIVER_KEY to brevmal, + SAK_TYPE_KEY to sakstype, + SAK_ID_KEY to saksnr, + ), + ).also { testRapid.sendTestMessage(it.toJson()) } } verify { brevdistribuerer.distribuer(brevId) } } @@ -138,8 +142,7 @@ class InformasjonsbrevTest(private val dataSource: DataSource) { "(${Databasetabell.FNR}, ${Databasetabell.BREVMAL}, ${Databasetabell.SAKTYPE}) " + "VALUES" + "('${SOEKER_FOEDSELSNUMMER.value}', '${brevkode.name}', '${saktype.name}');", - ) - .let { query -> tx.run(query.asUpdate) } + ).let { query -> tx.run(query.asUpdate) } } dataSource.transaction { tx -> queryOf( @@ -147,8 +150,7 @@ class InformasjonsbrevTest(private val dataSource: DataSource) { "(${Databasetabell.BEHANDLING_ID}, ${Databasetabell.BREVMAL}, ${Databasetabell.SAKTYPE}) " + "VALUES" + "('$behandlingId', '${brevkode.name}', '${saktype.name}');", - ) - .let { query -> tx.run(query.asUpdate) } + ).let { query -> tx.run(query.asUpdate) } } } } diff --git a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/rivers/JournalfoerVedtaksbrevRiverTest.kt b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/rivers/JournalfoerVedtaksbrevRiverTest.kt index d60ce107599..faced642c06 100644 --- a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/rivers/JournalfoerVedtaksbrevRiverTest.kt +++ b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/rivers/JournalfoerVedtaksbrevRiverTest.kt @@ -120,15 +120,14 @@ internal class JournalfoerVedtaksbrevRiverTest { verify { vedtaksbrevService wasNot Called } } - private fun opprettMelding(vedtak: VedtakDto): JsonMessage { - return JsonMessage.newMessage( + private fun opprettMelding(vedtak: VedtakDto): JsonMessage = + JsonMessage.newMessage( mapOf( CORRELATION_ID_KEY to UUID.randomUUID().toString(), VedtakKafkaHendelseHendelseType.ATTESTERT.lagParMedEventNameKey(), "vedtak" to vedtak, ), ) - } private fun opprettVedtak(behandlingType: BehandlingType = BehandlingType.FØRSTEGANGSBEHANDLING): VedtakDto { val behandlingId = UUID.randomUUID() diff --git a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/rivers/OpprettJournalfoerOgDistribuerTest.kt b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/rivers/OpprettJournalfoerOgDistribuerTest.kt index d43daf600ee..8f2ae4f8280 100644 --- a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/rivers/OpprettJournalfoerOgDistribuerTest.kt +++ b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/rivers/OpprettJournalfoerOgDistribuerTest.kt @@ -66,14 +66,15 @@ internal class OpprettJournalfoerOgDistribuer { } testRapid.sendTestMessage( - JsonMessage.newMessage( - mapOf( - CORRELATION_ID_KEY to UUID.randomUUID().toString(), - VedtakKafkaHendelseHendelseType.ATTESTERT.lagParMedEventNameKey(), - "vedtak" to lagVedtakDto(behandlingId), - KILDE_KEY to Vedtaksloesning.GJENNY.name, - ), - ).toJson(), + JsonMessage + .newMessage( + mapOf( + CORRELATION_ID_KEY to UUID.randomUUID().toString(), + VedtakKafkaHendelseHendelseType.ATTESTERT.lagParMedEventNameKey(), + "vedtak" to lagVedtakDto(behandlingId), + KILDE_KEY to Vedtaksloesning.GJENNY.name, + ), + ).toJson(), ) val distribuermelding = testRapid.hentMelding(0) diff --git a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/rivers/VedtaksbrevUnderkjentRiverTest.kt b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/rivers/VedtaksbrevUnderkjentRiverTest.kt index 27f6e816de7..8cbfc44858e 100644 --- a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/rivers/VedtaksbrevUnderkjentRiverTest.kt +++ b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/rivers/VedtaksbrevUnderkjentRiverTest.kt @@ -91,15 +91,14 @@ internal class VedtaksbrevUnderkjentRiverTest { verify(exactly = 1) { vedtaksbrevService.fjernFerdigstiltStatusUnderkjentVedtak(brev.id, any()) } } - private fun opprettMelding(vedtak: VedtakDto): JsonMessage { - return JsonMessage.newMessage( + private fun opprettMelding(vedtak: VedtakDto): JsonMessage = + JsonMessage.newMessage( mapOf( CORRELATION_ID_KEY to UUID.randomUUID().toString(), VedtakKafkaHendelseHendelseType.UNDERKJENT.lagParMedEventNameKey(), "vedtak" to vedtak, ), ) - } private fun opprettVedtak(behandlingType: BehandlingType = BehandlingType.FØRSTEGANGSBEHANDLING): VedtakDto { val behandlingsid = UUID.randomUUID() diff --git a/apps/etterlatte-egne-ansatte-lytter/src/main/kotlin/no/nav/etterlatte/kafka/BehandlingKlient.kt b/apps/etterlatte-egne-ansatte-lytter/src/main/kotlin/no/nav/etterlatte/kafka/BehandlingKlient.kt index 8261da71258..0742974343c 100644 --- a/apps/etterlatte-egne-ansatte-lytter/src/main/kotlin/no/nav/etterlatte/kafka/BehandlingKlient.kt +++ b/apps/etterlatte-egne-ansatte-lytter/src/main/kotlin/no/nav/etterlatte/kafka/BehandlingKlient.kt @@ -14,7 +14,10 @@ import no.nav.etterlatte.libs.common.tidspunkt.Tidspunkt import org.apache.kafka.clients.consumer.ConsumerRecord import org.slf4j.LoggerFactory -class BehandlingKlient(val behandlingHttpClient: HttpClient, val url: String) { +class BehandlingKlient( + val behandlingHttpClient: HttpClient, + val url: String, +) { private val logger = LoggerFactory.getLogger(this.javaClass.name) fun haandterHendelse(record: ConsumerRecord) { diff --git a/apps/etterlatte-egne-ansatte-lytter/src/main/kotlin/no/nav/etterlatte/kafka/KafkaEnvironment.kt b/apps/etterlatte-egne-ansatte-lytter/src/main/kotlin/no/nav/etterlatte/kafka/KafkaEnvironment.kt index 328b032022a..c454027888c 100644 --- a/apps/etterlatte-egne-ansatte-lytter/src/main/kotlin/no/nav/etterlatte/kafka/KafkaEnvironment.kt +++ b/apps/etterlatte-egne-ansatte-lytter/src/main/kotlin/no/nav/etterlatte/kafka/KafkaEnvironment.kt @@ -2,9 +2,10 @@ package no.nav.etterlatte.kafka import org.apache.kafka.common.serialization.StringDeserializer -class KafkaEnvironment : Kafkakonfigurasjon( - groupId = "SKJERMING_GROUP_ID", - deserializerClass = StringDeserializer::class.java, - userInfoConfigKey = Avrokonstanter.USER_INFO_CONFIG, - schemaRegistryUrlConfigKey = Avrokonstanter.SCHEMA_REGISTRY_URL_CONFIG, -) +class KafkaEnvironment : + Kafkakonfigurasjon( + groupId = "SKJERMING_GROUP_ID", + deserializerClass = StringDeserializer::class.java, + userInfoConfigKey = Avrokonstanter.USER_INFO_CONFIG, + schemaRegistryUrlConfigKey = Avrokonstanter.SCHEMA_REGISTRY_URL_CONFIG, + ) diff --git a/apps/etterlatte-grunnlag/src/main/kotlin/Application.kt b/apps/etterlatte-grunnlag/src/main/kotlin/Application.kt index b29ea55b442..f3282c932f3 100644 --- a/apps/etterlatte-grunnlag/src/main/kotlin/Application.kt +++ b/apps/etterlatte-grunnlag/src/main/kotlin/Application.kt @@ -84,7 +84,8 @@ class ApplicationBuilder { private val aldersovergangService = AldersovergangService(aldersovergangDao) private val rapidsConnection = - RapidApplication.Builder(RapidApplication.RapidApplicationConfig.fromEnv(env, configFromEnvironment(env))) + RapidApplication + .Builder(RapidApplication.RapidApplicationConfig.fromEnv(env, configFromEnvironment(env))) .withKtorModule { restModule(sikkerLogg, routePrefix = "api", config = HoconApplicationConfig(config)) { route("grunnlag") { @@ -94,8 +95,8 @@ class ApplicationBuilder { aldersovergangRoutes(aldersovergangService) } } - } - .build().apply { + }.build() + .apply { GrunnlagsversjoneringRiver(this, grunnlagService) GrunnlagHendelserRiver(this, grunnlagService) } diff --git a/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/GrunnlagHenter.kt b/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/GrunnlagHenter.kt index 6edc2baa73e..7a67b1c0943 100644 --- a/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/GrunnlagHenter.kt +++ b/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/GrunnlagHenter.kt @@ -27,8 +27,8 @@ class GrunnlagHenter( private val pdltjenesterKlient: PdlTjenesterKlientImpl, private val vergeService: VergeService, ) { - suspend fun hentGrunnlagsdata(opplysningsbehov: Opplysningsbehov): HentetGrunnlag { - return coroutineScope { + suspend fun hentGrunnlagsdata(opplysningsbehov: Opplysningsbehov): HentetGrunnlag = + coroutineScope { val persongalleri = opplysningsbehov.persongalleri val persongalleriFraPdl = pdltjenesterKlient.hentPersongalleri( @@ -101,7 +101,6 @@ class GrunnlagHenter( HentetGrunnlag(personopplysninger, saksopplysninger) } - } private suspend fun personopplysning( person: Deferred, @@ -159,8 +158,8 @@ class GrunnlagHenter( private fun Persongalleri.tilGrunnlagsopplysningFraSoeknad( overstyrtKilde: Grunnlagsopplysning.Kilde? = null, - ): Grunnlagsopplysning { - return Grunnlagsopplysning( + ): Grunnlagsopplysning = + Grunnlagsopplysning( id = UUID.randomUUID(), kilde = overstyrtKilde @@ -185,10 +184,9 @@ class GrunnlagHenter( fnr = null, periode = null, ) - } - private fun Persongalleri.tilGrunnlagsopplysningFraPdl(): Grunnlagsopplysning { - return Grunnlagsopplysning( + private fun Persongalleri.tilGrunnlagsopplysningFraPdl(): Grunnlagsopplysning = + Grunnlagsopplysning( id = UUID.randomUUID(), kilde = Grunnlagsopplysning.Pdl(Tidspunkt.now(), null, null), opplysningType = Opplysningstype.PERSONGALLERI_PDL_V1, @@ -198,5 +196,4 @@ class GrunnlagHenter( fnr = null, periode = null, ) - } } diff --git a/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/GrunnlagService.kt b/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/GrunnlagService.kt index 9d2051d37c7..4b15cd9673b 100644 --- a/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/GrunnlagService.kt +++ b/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/GrunnlagService.kt @@ -190,8 +190,7 @@ class RealGrunnlagService( GJENLEVENDE_FORELDER_PDL_V1, INNSENDER_PDL_V1, ).contains(it.opplysning.opplysningType) - } - .filter { persongalleri.inkluderer(it.opplysning) } + }.filter { persongalleri.inkluderer(it.opplysning) } .groupBy { it.opplysning.fnr to it.opplysning.opplysningType } .map { it.value.maxBy { opplysning -> opplysning.hendelseNummer } @@ -222,7 +221,8 @@ class RealGrunnlagService( override fun hentSakerOgRoller(fnr: Folkeregisteridentifikator): PersonMedSakerOgRoller { val result = - opplysningDao.finnAllePersongalleriHvorPersonFinnes(fnr) + opplysningDao + .finnAllePersongalleriHvorPersonFinnes(fnr) .map { it.sakId to deserialize(it.opplysning.opplysning.toJson()) } .map { (sakId, persongalleri) -> SakidOgRolle(sakId, rolle = mapTilRolle(fnr.value, persongalleri)) } .let { PersonMedSakerOgRoller(fnr.value, it) } @@ -239,16 +239,17 @@ class RealGrunnlagService( val grunnlag = hentOpplysningsgrunnlagForSak(sakId) ?: return null val personer = listOf(grunnlag.soeker) + grunnlag.familie - return personer.mapNotNull { - val navn = it.hentNavn()?.verdi ?: return@mapNotNull null - val fnr = it.hentFoedselsnummer()?.verdi ?: return@mapNotNull null - PersonMedNavn( - fnr = fnr, - fornavn = navn.fornavn, - etternavn = navn.etternavn, - mellomnavn = navn.mellomnavn, - ) - }.associateBy { it.fnr } + return personer + .mapNotNull { + val navn = it.hentNavn()?.verdi ?: return@mapNotNull null + val fnr = it.hentFoedselsnummer()?.verdi ?: return@mapNotNull null + PersonMedNavn( + fnr = fnr, + fornavn = navn.fornavn, + etternavn = navn.etternavn, + mellomnavn = navn.mellomnavn, + ) + }.associateBy { it.fnr } } override suspend fun opprettGrunnlag( @@ -305,12 +306,12 @@ class RealGrunnlagService( val grunnlag = hentOpplysningsgrunnlag(behandlingId) val soekerFnr = grunnlag?.soeker?.hentFoedselsnummer()?.verdi ?: return null val historiskForeldreansvar = - pdltjenesterKlient.hentHistoriskForeldreansvar( - soekerFnr, - PersonRolle.BARN, - SakType.BARNEPENSJON, - ) - .tilGrunnlagsopplysning(soekerFnr) + pdltjenesterKlient + .hentHistoriskForeldreansvar( + soekerFnr, + PersonRolle.BARN, + SakType.BARNEPENSJON, + ).tilGrunnlagsopplysning(soekerFnr) val hendelsenummer = opplysningDao.leggOpplysningTilGrunnlag(grunnlag.metadata.sakId, historiskForeldreansvar, soekerFnr) @@ -449,9 +450,7 @@ class RealGrunnlagService( override fun hentGrunnlagAvType( behandlingId: UUID, opplysningstype: Opplysningstype, - ): Grunnlagsopplysning? { - return opplysningDao.finnNyesteGrunnlagForBehandling(behandlingId, opplysningstype)?.opplysning - } + ): Grunnlagsopplysning? = opplysningDao.finnNyesteGrunnlagForBehandling(behandlingId, opplysningstype)?.opplysning override fun hentOpplysningstypeNavnFraFnr( fnr: Folkeregisteridentifikator, @@ -549,14 +548,15 @@ class RealGrunnlagService( val gjeldendeGrunnlag = opplysningDao.finnHendelserIGrunnlag(sakId).map { it.opplysning.id } val hendelsenummer = - nyeOpplysninger.mapNotNull { opplysning -> - if (opplysning.id in gjeldendeGrunnlag) { - logger.warn("Forsøker å lagre opplysning ${opplysning.id} i sak $sakId men den er allerede gjeldende") - null - } else { - opplysningDao.leggOpplysningTilGrunnlag(sakId, opplysning, fnr) - } - }.maxOrNull() + nyeOpplysninger + .mapNotNull { opplysning -> + if (opplysning.id in gjeldendeGrunnlag) { + logger.warn("Forsøker å lagre opplysning ${opplysning.id} i sak $sakId men den er allerede gjeldende") + null + } else { + opplysningDao.leggOpplysningTilGrunnlag(sakId, opplysning, fnr) + } + }.maxOrNull() if (hendelsenummer == null) { logger.error("Hendelsenummer er null – kan ikke oppdatere versjon for sak (id=$sakId)") @@ -577,14 +577,15 @@ class RealGrunnlagService( } val hendelsenummer = - nyeOpplysninger.mapNotNull { opplysning -> - if (opplysning.id in gjeldendeGrunnlag) { - logger.warn("Forsøker å lagre opplysning ${opplysning.id} i sak $sakId men den er allerede gjeldende") - null - } else { - opplysningDao.leggOpplysningTilGrunnlag(sakId, opplysning, fnr) - } - }.maxOrNull() + nyeOpplysninger + .mapNotNull { opplysning -> + if (opplysning.id in gjeldendeGrunnlag) { + logger.warn("Forsøker å lagre opplysning ${opplysning.id} i sak $sakId men den er allerede gjeldende") + null + } else { + opplysningDao.leggOpplysningTilGrunnlag(sakId, opplysning, fnr) + } + }.maxOrNull() if (hendelsenummer == null) { logger.error("Hendelsenummer er null – kan ikke oppdatere versjon for behandling (id=$behandlingId)") @@ -626,8 +627,8 @@ class RealGrunnlagService( ) } -private fun HistorikkForeldreansvar.tilGrunnlagsopplysning(fnr: Folkeregisteridentifikator): Grunnlagsopplysning { - return Grunnlagsopplysning( +private fun HistorikkForeldreansvar.tilGrunnlagsopplysning(fnr: Folkeregisteridentifikator): Grunnlagsopplysning = + Grunnlagsopplysning( id = UUID.randomUUID(), kilde = Grunnlagsopplysning.Pdl(Tidspunkt.now(), null, null), opplysningType = Opplysningstype.HISTORISK_FORELDREANSVAR, @@ -637,16 +638,14 @@ private fun HistorikkForeldreansvar.tilGrunnlagsopplysning(fnr: Folkeregisteride fnr = fnr, periode = null, ) -} -private fun Grunnlagsopplysning.asPersonopplysning(): Personopplysning { - return Personopplysning( +private fun Grunnlagsopplysning.asPersonopplysning(): Personopplysning = + Personopplysning( id = this.id, kilde = this.kilde.tilGenerellKilde(), opplysningType = this.opplysningType, opplysning = objectMapper.treeToValue(opplysning, Person::class.java), ) -} private fun Grunnlagsopplysning.Kilde.tilGenerellKilde() = when (this) { @@ -699,8 +698,9 @@ data class NavnOpplysningDTO( val foedselsnummer: String, ) -class LaastGrunnlagKanIkkeEndres(val behandlingId: UUID) : - IkkeTillattException( +class LaastGrunnlagKanIkkeEndres( + val behandlingId: UUID, +) : IkkeTillattException( code = "LAAST_GRUNNLAG_KAN_IKKE_ENDRES", detail = """ Kan ikke sette ny grunnlagsversjon på behandling som er @@ -728,4 +728,7 @@ data class GenerellKilde( val detalj: String? = null, ) -data class ForskjellMellomPersoner(val kunSak: List, val kunPdl: List) +data class ForskjellMellomPersoner( + val kunSak: List, + val kunPdl: List, +) diff --git a/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/OpplysningDao.kt b/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/OpplysningDao.kt index 5cf042e7fbe..6863aec130f 100644 --- a/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/OpplysningDao.kt +++ b/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/OpplysningDao.kt @@ -16,7 +16,9 @@ import java.time.YearMonth import java.util.UUID import javax.sql.DataSource -class OpplysningDao(private val datasource: DataSource) { +class OpplysningDao( + private val datasource: DataSource, +) { private val connection get() = datasource.connection data class GrunnlagHendelse( @@ -25,8 +27,8 @@ class OpplysningDao(private val datasource: DataSource) { val hendelseNummer: Long, ) - private fun ResultSet.asBehandlingOpplysning(): Grunnlagsopplysning { - return Grunnlagsopplysning( + private fun ResultSet.asBehandlingOpplysning(): Grunnlagsopplysning = + Grunnlagsopplysning( id = getObject("opplysning_id") as UUID, kilde = objectMapper.readValue(getString("kilde")), opplysningType = Opplysningstype.valueOf(getString("opplysning_type")), @@ -41,87 +43,88 @@ class OpplysningDao(private val datasource: DataSource) { ) }, ) - } - private fun ResultSet.asGrunnlagshendelse(): GrunnlagHendelse { - return GrunnlagHendelse( + private fun ResultSet.asGrunnlagshendelse(): GrunnlagHendelse = + GrunnlagHendelse( opplysning = asBehandlingOpplysning(), sakId = getLong("sak_id"), hendelseNummer = getLong("hendelsenummer"), ) - } fun hentAlleGrunnlagForSak(sakId: Long): List = connection.use { - it.prepareStatement( - """ - SELECT sak_id, opplysning_id, kilde, opplysning_type, opplysning, hendelsenummer, fnr, fom, tom - FROM grunnlagshendelse hendelse - WHERE hendelse.sak_id = ? - """.trimIndent(), - ) - .apply { + it + .prepareStatement( + """ + SELECT sak_id, opplysning_id, kilde, opplysning_type, opplysning, hendelsenummer, fnr, fom, tom + FROM grunnlagshendelse hendelse + WHERE hendelse.sak_id = ? + """.trimIndent(), + ).apply { setLong(1, sakId) - }.executeQuery().toList { asGrunnlagshendelse() } + }.executeQuery() + .toList { asGrunnlagshendelse() } } fun hentAlleGrunnlagForBehandling(behandlingId: UUID): List = connection.use { - it.prepareStatement( - """ - SELECT bv.sak_id, opplysning_id, kilde, opplysning_type, opplysning, hendelse.hendelsenummer, fnr, fom, tom - FROM grunnlagshendelse hendelse - LEFT JOIN behandling_versjon bv - ON bv.sak_id = hendelse.sak_id AND bv.hendelsenummer >= hendelse.hendelsenummer - WHERE bv.behandling_id = ? - """.trimIndent(), - ) - .apply { + it + .prepareStatement( + """ + SELECT bv.sak_id, opplysning_id, kilde, opplysning_type, opplysning, hendelse.hendelsenummer, fnr, fom, tom + FROM grunnlagshendelse hendelse + LEFT JOIN behandling_versjon bv + ON bv.sak_id = hendelse.sak_id AND bv.hendelsenummer >= hendelse.hendelsenummer + WHERE bv.behandling_id = ? + """.trimIndent(), + ).apply { setObject(1, behandlingId) - }.executeQuery().toList { asGrunnlagshendelse() } + }.executeQuery() + .toList { asGrunnlagshendelse() } } fun hentGrunnlagAvTypeForBehandling( behandlingId: UUID, vararg typer: Opplysningstype, - ): List { - return connection.use { - it.prepareStatement( - """ - SELECT bv.sak_id, opplysning_id, kilde, opplysning_type, opplysning, hendelse.hendelsenummer, fnr, fom, tom - FROM grunnlagshendelse hendelse - LEFT JOIN behandling_versjon bv - ON bv.sak_id = hendelse.sak_id AND bv.hendelsenummer >= hendelse.hendelsenummer - WHERE bv.behandling_id = ? - AND hendelse.opplysning_type = ANY(?) - """.trimIndent(), - ) - .apply { + ): List = + connection.use { + it + .prepareStatement( + """ + SELECT bv.sak_id, opplysning_id, kilde, opplysning_type, opplysning, hendelse.hendelsenummer, fnr, fom, tom + FROM grunnlagshendelse hendelse + LEFT JOIN behandling_versjon bv + ON bv.sak_id = hendelse.sak_id AND bv.hendelsenummer >= hendelse.hendelsenummer + WHERE bv.behandling_id = ? + AND hendelse.opplysning_type = ANY(?) + """.trimIndent(), + ).apply { setObject(1, behandlingId) val typeArray = it.createArrayOf("text", typer.map { t -> t.name }.toTypedArray()) setArray(2, typeArray) - }.executeQuery().toList { asGrunnlagshendelse() } + }.executeQuery() + .toList { asGrunnlagshendelse() } } - } fun finnHendelserIGrunnlag(sakId: Long): List = connection.use { - it.prepareStatement( - """ - SELECT sak_id, opplysning_id, kilde, opplysning_type, opplysning, hendelsenummer, fnr, fom, tom - FROM grunnlagshendelse hendelse - WHERE hendelse.sak_id = ? - AND NOT EXISTS( - SELECT 1 FROM grunnlagshendelse annen - WHERE annen.sak_id = hendelse.sak_id - AND hendelse.opplysning_type = annen.opplysning_type - AND annen.hendelsenummer > hendelse.hendelsenummer - ) - """.trimIndent(), - ) - .apply { + it + .prepareStatement( + """ + SELECT sak_id, opplysning_id, kilde, opplysning_type, opplysning, hendelsenummer, fnr, fom, tom + FROM grunnlagshendelse hendelse + WHERE hendelse.sak_id = ? + AND NOT EXISTS( + SELECT 1 FROM grunnlagshendelse annen + WHERE annen.sak_id = hendelse.sak_id + AND hendelse.opplysning_type = annen.opplysning_type + AND annen.hendelsenummer > hendelse.hendelsenummer + ) + """.trimIndent(), + ).apply { setLong(1, sakId) - }.executeQuery().toList { asGrunnlagshendelse() } + }.executeQuery() + .toList { asGrunnlagshendelse() } } fun finnNyesteOpplysningPaaFnr( @@ -129,26 +132,27 @@ class OpplysningDao(private val datasource: DataSource) { opplysningType: Opplysningstype, ): GrunnlagHendelse? = connection.use { - it.prepareStatement( - """ - SELECT sak_id, opplysning_id, kilde, opplysning_type, opplysning, hendelsenummer, fnr, fom, tom - FROM grunnlagshendelse hendelse - WHERE hendelse.fnr = ? - AND hendelse.opplysning_type = ? - AND NOT EXISTS( - SELECT 1 FROM grunnlagshendelse annen - WHERE annen.fnr = hendelse.fnr - AND hendelse.opplysning_type = annen.opplysning_type - AND annen.hendelsenummer > hendelse.hendelsenummer - ) - ORDER BY hendelsenummer DESC, sak_id DESC - LIMIT 1 - """.trimIndent(), - ) - .apply { + it + .prepareStatement( + """ + SELECT sak_id, opplysning_id, kilde, opplysning_type, opplysning, hendelsenummer, fnr, fom, tom + FROM grunnlagshendelse hendelse + WHERE hendelse.fnr = ? + AND hendelse.opplysning_type = ? + AND NOT EXISTS( + SELECT 1 FROM grunnlagshendelse annen + WHERE annen.fnr = hendelse.fnr + AND hendelse.opplysning_type = annen.opplysning_type + AND annen.hendelsenummer > hendelse.hendelsenummer + ) + ORDER BY hendelsenummer DESC, sak_id DESC + LIMIT 1 + """.trimIndent(), + ).apply { setString(1, fnr.value) setString(2, opplysningType.name) - }.executeQuery().singleOrNull { asGrunnlagshendelse() } + }.executeQuery() + .singleOrNull { asGrunnlagshendelse() } } fun finnNyesteGrunnlagForSak( @@ -156,24 +160,25 @@ class OpplysningDao(private val datasource: DataSource) { opplysningType: Opplysningstype, ): GrunnlagHendelse? = connection.use { - it.prepareStatement( - """ - SELECT sak_id, opplysning_id, kilde, opplysning_type, opplysning, hendelsenummer, fnr, fom, tom - FROM grunnlagshendelse hendelse - WHERE hendelse.sak_id = ? - AND hendelse.opplysning_type = ? - AND NOT EXISTS( - SELECT 1 FROM grunnlagshendelse annen - WHERE annen.sak_id = hendelse.sak_id - AND hendelse.opplysning_type = annen.opplysning_type - AND annen.hendelsenummer > hendelse.hendelsenummer - ) - """.trimIndent(), - ) - .apply { + it + .prepareStatement( + """ + SELECT sak_id, opplysning_id, kilde, opplysning_type, opplysning, hendelsenummer, fnr, fom, tom + FROM grunnlagshendelse hendelse + WHERE hendelse.sak_id = ? + AND hendelse.opplysning_type = ? + AND NOT EXISTS( + SELECT 1 FROM grunnlagshendelse annen + WHERE annen.sak_id = hendelse.sak_id + AND hendelse.opplysning_type = annen.opplysning_type + AND annen.hendelsenummer > hendelse.hendelsenummer + ) + """.trimIndent(), + ).apply { setLong(1, sakId) setString(2, opplysningType.name) - }.executeQuery().singleOrNull { asGrunnlagshendelse() } + }.executeQuery() + .singleOrNull { asGrunnlagshendelse() } } fun finnNyesteGrunnlagForBehandling( @@ -181,22 +186,23 @@ class OpplysningDao(private val datasource: DataSource) { opplysningType: Opplysningstype, ): GrunnlagHendelse? = connection.use { - it.prepareStatement( - """ - SELECT hendelse.sak_id, behandling_id, opplysning_id, kilde, opplysning_type, - opplysning, hendelse.hendelsenummer, fnr, fom, tom - FROM grunnlagshendelse hendelse - LEFT JOIN behandling_versjon versjon - ON versjon.sak_id = hendelse.sak_id AND versjon.hendelsenummer >= hendelse.hendelsenummer - WHERE versjon.behandling_id = ? - AND hendelse.opplysning_type = ? - ORDER BY hendelse.hendelsenummer DESC - """.trimIndent(), - ) - .apply { + it + .prepareStatement( + """ + SELECT hendelse.sak_id, behandling_id, opplysning_id, kilde, opplysning_type, + opplysning, hendelse.hendelsenummer, fnr, fom, tom + FROM grunnlagshendelse hendelse + LEFT JOIN behandling_versjon versjon + ON versjon.sak_id = hendelse.sak_id AND versjon.hendelsenummer >= hendelse.hendelsenummer + WHERE versjon.behandling_id = ? + AND hendelse.opplysning_type = ? + ORDER BY hendelse.hendelsenummer DESC + """.trimIndent(), + ).apply { setObject(1, behandlingId) setString(2, opplysningType.name) - }.executeQuery().firstOrNull { asGrunnlagshendelse() } + }.executeQuery() + .firstOrNull { asGrunnlagshendelse() } } fun leggOpplysningTilGrunnlag( @@ -205,12 +211,12 @@ class OpplysningDao(private val datasource: DataSource) { fnr: Folkeregisteridentifikator? = null, ): Long = connection.use { - it.prepareStatement( - """INSERT INTO grunnlagshendelse(opplysning_id, sak_id, opplysning, kilde, opplysning_type, hendelsenummer, fnr, fom, tom) + it + .prepareStatement( + """INSERT INTO grunnlagshendelse(opplysning_id, sak_id, opplysning, kilde, opplysning_type, hendelsenummer, fnr, fom, tom) | VALUES(?, ?, ?, ?, ?, COALESCE((select max (hendelsenummer) + 1 from grunnlagshendelse where sak_id = ?), 1), ?, ?, ?) returning hendelsenummer - """.trimMargin(), - ) - .apply { + """.trimMargin(), + ).apply { setObject(1, behandlingsopplysning.id) setLong(2, sakId) setString(3, behandlingsopplysning.opplysning.serialize()) @@ -220,7 +226,9 @@ class OpplysningDao(private val datasource: DataSource) { if (fnr != null) setString(7, fnr.value) else setNull(7, VARCHAR) behandlingsopplysning.periode?.fom?.let { setString(8, it.toString()) } ?: setNull(8, VARCHAR) behandlingsopplysning.periode?.tom?.let { setString(9, it.toString()) } ?: setNull(9, VARCHAR) - }.executeQuery().apply { next() }.getLong("hendelsenummer") + }.executeQuery() + .apply { next() } + .getLong("hendelsenummer") } fun oppdaterVersjonForBehandling( @@ -228,61 +236,71 @@ class OpplysningDao(private val datasource: DataSource) { sakId: Long, hendelsenummer: Long, ) = connection.use { - it.prepareStatement( - """ - INSERT INTO behandling_versjon (behandling_id, sak_id, hendelsenummer, laast) VALUES (?::UUID, ?, ?, ?) - ON CONFLICT (behandling_id) - DO UPDATE SET hendelsenummer = excluded.hendelsenummer - """.trimIndent(), - ).apply { - setObject(1, behandlingId) - setLong(2, sakId) - setLong(3, hendelsenummer) - setBoolean(4, false) - }.executeUpdate().also { require(it > 0) } + it + .prepareStatement( + """ + INSERT INTO behandling_versjon (behandling_id, sak_id, hendelsenummer, laast) VALUES (?::UUID, ?, ?, ?) + ON CONFLICT (behandling_id) + DO UPDATE SET hendelsenummer = excluded.hendelsenummer + """.trimIndent(), + ).apply { + setObject(1, behandlingId) + setLong(2, sakId) + setLong(3, hendelsenummer) + setBoolean(4, false) + }.executeUpdate() + .also { require(it > 0) } } fun laasGrunnlagVersjonForBehandling(behandlingId: UUID) = connection.use { - it.prepareStatement("UPDATE behandling_versjon SET laast = true WHERE behandling_id = ?::UUID") + it + .prepareStatement("UPDATE behandling_versjon SET laast = true WHERE behandling_id = ?::UUID") .apply { setObject(1, behandlingId) } .executeUpdate() } fun finnAllePersongalleriHvorPersonFinnes(fnr: Folkeregisteridentifikator): List = connection.use { - it.prepareStatement( - """ - SELECT * FROM grunnlagshendelse - WHERE opplysning LIKE ? - AND opplysning_type = ?; - """.trimIndent(), - ).apply { - setString(1, "%${fnr.value}%") - setString(2, Opplysningstype.PERSONGALLERI_V1.name) - }.executeQuery().toList { asGrunnlagshendelse() } + it + .prepareStatement( + """ + SELECT * FROM grunnlagshendelse + WHERE opplysning LIKE ? + AND opplysning_type = ?; + """.trimIndent(), + ).apply { + setString(1, "%${fnr.value}%") + setString(2, Opplysningstype.PERSONGALLERI_V1.name) + }.executeQuery() + .toList { asGrunnlagshendelse() } } fun finnAlleSakerForPerson(fnr: Folkeregisteridentifikator): Set = connection.use { - it.prepareStatement( - """ - SELECT distinct(sak_id) - FROM grunnlagshendelse - WHERE opplysning LIKE ? - OR fnr = ?; - """.trimIndent(), - ).apply { - setString(1, "%${fnr.value}%") - setString(2, fnr.value) - }.executeQuery().toList { getLong("sak_id") }.toSet() + it + .prepareStatement( + """ + SELECT distinct(sak_id) + FROM grunnlagshendelse + WHERE opplysning LIKE ? + OR fnr = ?; + """.trimIndent(), + ).apply { + setString(1, "%${fnr.value}%") + setString(2, fnr.value) + }.executeQuery() + .toList { getLong("sak_id") } + .toSet() } fun hentBehandlingVersjon(behandlingId: UUID): BehandlingGrunnlagVersjon? = connection.use { - it.prepareStatement("SELECT * FROM behandling_versjon WHERE behandling_id = ?::UUID") + it + .prepareStatement("SELECT * FROM behandling_versjon WHERE behandling_id = ?::UUID") .apply { setObject(1, behandlingId) } - .executeQuery().singleOrNull { + .executeQuery() + .singleOrNull { BehandlingGrunnlagVersjon( getObject("behandling_id") as UUID, getLong("sak_id"), diff --git a/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/OpplysningsBygger.kt b/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/OpplysningsBygger.kt index ad67c945d1c..4d316d66ce7 100644 --- a/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/OpplysningsBygger.kt +++ b/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/OpplysningsBygger.kt @@ -57,7 +57,10 @@ fun lagEnkelopplysningerFraPDL( return opplysningsbolk.hentOpplysninger() + gammalGrunnlagsopplysning } -class Opplysningsbolk(private val fnr: Folkeregisteridentifikator, private val innhentetTidspunkt: Tidspunkt) { +class Opplysningsbolk( + private val fnr: Folkeregisteridentifikator, + private val innhentetTidspunkt: Tidspunkt, +) { private val opplysninger = mutableListOf>() fun leggTilOpplysninger( @@ -100,15 +103,14 @@ fun lagPdlOpplysning( opplysningsType: Opplysningstype, opplysning: Person, tidspunktForInnhenting: Tidspunkt, -): Grunnlagsopplysning { - return Grunnlagsopplysning( +): Grunnlagsopplysning = + Grunnlagsopplysning( UUID.randomUUID(), Grunnlagsopplysning.Pdl(tidspunktForInnhenting, null, null), opplysningsType, objectMapper.createObjectNode(), opplysning.toJsonNode(), ) -} fun lagPdlPersonopplysning( tidspunktForInnhenting: Tidspunkt, @@ -116,8 +118,8 @@ fun lagPdlPersonopplysning( opplysning: OpplysningDTO, fnr: Folkeregisteridentifikator, periode: Periode? = null, -): Grunnlagsopplysning { - return Grunnlagsopplysning( +): Grunnlagsopplysning = + Grunnlagsopplysning( id = UUID.randomUUID(), kilde = Grunnlagsopplysning.Pdl( @@ -131,4 +133,3 @@ fun lagPdlPersonopplysning( fnr = fnr, periode = periode, ) -} diff --git a/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/OpplysningsgrunnlagMapper.kt b/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/OpplysningsgrunnlagMapper.kt index 3c89273c03d..cf3e6f01395 100644 --- a/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/OpplysningsgrunnlagMapper.kt +++ b/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/OpplysningsgrunnlagMapper.kt @@ -16,7 +16,8 @@ class OpplysningsgrunnlagMapper( val hendelser: List, ) { val opplysning: Opplysning = - hendelser.maxBy { hendelse -> hendelse.hendelseNummer } + hendelser + .maxBy { hendelse -> hendelse.hendelseNummer } .let { Opplysning.Konstant.create(it.opplysning) } val opplysningstype: Opplysningstype @@ -36,7 +37,8 @@ class OpplysningsgrunnlagMapper( val soekerMap = soeker.associateBy({ it.opplysningstype }, { it.opplysning }) val familieMap = familie - .groupBy { it.fnr }.values + .groupBy { it.fnr } + .values .map { familiemedlem -> familiemedlem.associateBy({ it.opplysningstype }, { it.opplysning }) } diff --git a/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/VergeService.kt b/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/VergeService.kt index bf63b11f8bd..ac2c708ab67 100644 --- a/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/VergeService.kt +++ b/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/VergeService.kt @@ -15,7 +15,9 @@ import org.slf4j.Logger import org.slf4j.LoggerFactory import java.util.UUID -class VergeService(private val persondataKlient: PersondataKlient) { +class VergeService( + private val persondataKlient: PersondataKlient, +) { private val logger = LoggerFactory.getLogger(VergeService::class.java) private val sikkerLogg: Logger = sikkerlogger() diff --git a/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/adresse/PersondataAdresse.kt b/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/adresse/PersondataAdresse.kt index 90320e79aee..8e8b109db51 100644 --- a/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/adresse/PersondataAdresse.kt +++ b/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/adresse/PersondataAdresse.kt @@ -71,8 +71,8 @@ data class VergePersonFormat( val vergePid: String, val navn: String?, ) : PersondataAdresse("VERGE_PERSON_POSTADRESSE", adresselinjer, adresseString) { - override fun tilFrittstaendeBrevMottaker(foedselsnummer: String): BrevMottaker { - return BrevMottaker( + override fun tilFrittstaendeBrevMottaker(foedselsnummer: String): BrevMottaker = + BrevMottaker( navn = navn ?: "Ukjent", foedselsnummer = MottakerFoedselsnummer(foedselsnummer), adresse = @@ -88,7 +88,6 @@ data class VergePersonFormat( ), adresseTypeIKilde = "VERGE_PERSON_POSTADRESSE", ) - } } data class RegoppslagFormat( @@ -96,8 +95,7 @@ data class RegoppslagFormat( override val adresseString: String?, val adresse: RegoppslagAdresse, val navn: String?, -) : - PersondataAdresse("REGOPPSLAG_ADRESSE", adresselinjer, adresseString) { +) : PersondataAdresse("REGOPPSLAG_ADRESSE", adresselinjer, adresseString) { override fun tilFrittstaendeBrevMottaker(foedselsnummer: String): BrevMottaker = BrevMottaker( navn = navn ?: "Ukjent", diff --git a/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/aldersovergang/AldersovergangDao.kt b/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/aldersovergang/AldersovergangDao.kt index 6d3d75a697b..8650ce4d1b4 100644 --- a/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/aldersovergang/AldersovergangDao.kt +++ b/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/aldersovergang/AldersovergangDao.kt @@ -10,7 +10,9 @@ import java.time.LocalDate import java.time.YearMonth import javax.sql.DataSource -class AldersovergangDao(private val datasource: DataSource) : Transactions { +class AldersovergangDao( + private val datasource: DataSource, +) : Transactions { override fun inTransaction(block: AldersovergangDao.(TransactionalSession) -> R): R = datasource.transaction { this.block(it) diff --git a/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/aldersovergang/AldersovergangService.kt b/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/aldersovergang/AldersovergangService.kt index b6a3da2ef55..a0c65c4d197 100644 --- a/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/aldersovergang/AldersovergangService.kt +++ b/apps/etterlatte-grunnlag/src/main/kotlin/grunnlag/aldersovergang/AldersovergangService.kt @@ -5,7 +5,9 @@ import no.nav.etterlatte.libs.common.person.PersonRolle import java.time.LocalDate import java.time.YearMonth -class AldersovergangService(private val dao: AldersovergangDao) { +class AldersovergangService( + private val dao: AldersovergangDao, +) { fun hentSoekereFoedtIEnGittMaaned(maaned: YearMonth) = dao.hentSoekereFoedtIEnGittMaaned(maaned) fun hentSakerHvorDoedsfallForekomIGittMaaned(behandlingsmaaned: YearMonth) = diff --git a/apps/etterlatte-grunnlag/src/main/kotlin/klienter/BehandlingKlient.kt b/apps/etterlatte-grunnlag/src/main/kotlin/klienter/BehandlingKlient.kt index e3c65572695..0a791196fba 100644 --- a/apps/etterlatte-grunnlag/src/main/kotlin/klienter/BehandlingKlient.kt +++ b/apps/etterlatte-grunnlag/src/main/kotlin/klienter/BehandlingKlient.kt @@ -19,17 +19,25 @@ import no.nav.etterlatte.libs.ktor.token.Saksbehandler import org.slf4j.LoggerFactory import java.util.UUID -interface BehandlingKlient : BehandlingTilgangsSjekk, SakTilgangsSjekk, PersonTilgangsSjekk { +interface BehandlingKlient : + BehandlingTilgangsSjekk, + SakTilgangsSjekk, + PersonTilgangsSjekk { suspend fun hentBehandling( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, ): DetaljertBehandling } -class BehandlingKlientException(override val message: String, override val cause: Throwable) : Exception(message, cause) +class BehandlingKlientException( + override val message: String, + override val cause: Throwable, +) : Exception(message, cause) -class BehandlingKlientImpl(config: Config, httpClient: HttpClient) : - BehandlingKlient { +class BehandlingKlientImpl( + config: Config, + httpClient: HttpClient, +) : BehandlingKlient { private val logger = LoggerFactory.getLogger(BehandlingKlient::class.java) private val azureAdClient = AzureAdClient(config) @@ -54,8 +62,7 @@ class BehandlingKlientImpl(config: Config, httpClient: HttpClient) : url = "$resourceUrl/behandlinger/$behandlingId", ), brukerTokenInfo = brukerTokenInfo, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { throwableErrorMessage -> throw throwableErrorMessage }, ) diff --git a/apps/etterlatte-grunnlag/src/main/kotlin/klienter/PdltjenesterKlient.kt b/apps/etterlatte-grunnlag/src/main/kotlin/klienter/PdltjenesterKlient.kt index 259ad6c7b96..eec5235bb3c 100644 --- a/apps/etterlatte-grunnlag/src/main/kotlin/klienter/PdltjenesterKlient.kt +++ b/apps/etterlatte-grunnlag/src/main/kotlin/klienter/PdltjenesterKlient.kt @@ -46,7 +46,10 @@ interface PdlTjenesterKlient { ): Persongalleri? } -class PdlTjenesterKlientImpl(private val pdl: HttpClient, private val url: String) : PdlTjenesterKlient { +class PdlTjenesterKlientImpl( + private val pdl: HttpClient, + private val url: String, +) : PdlTjenesterKlient { private val logger = LoggerFactory.getLogger(this::class.java) override fun hentPerson( @@ -57,10 +60,11 @@ class PdlTjenesterKlientImpl(private val pdl: HttpClient, private val url: Strin val personRequest = HentPersonRequest(Folkeregisteridentifikator.of(foedselsnummer), rolle, listOf(sakType)) val response = runBlocking { - pdl.post("$url/person") { - contentType(ContentType.Application.Json) - setBody(personRequest) - }.body() + pdl + .post("$url/person") { + contentType(ContentType.Application.Json) + setBody(personRequest) + }.body() } return response } @@ -69,8 +73,8 @@ class PdlTjenesterKlientImpl(private val pdl: HttpClient, private val url: Strin foedselsnummer: String, sakType: SakType, innsender: String?, - ): Persongalleri? { - return try { + ): Persongalleri? = + try { val persongalleriRequest = HentPersongalleriRequest( mottakerAvYtelsen = Folkeregisteridentifikator.of(foedselsnummer), @@ -80,10 +84,11 @@ class PdlTjenesterKlientImpl(private val pdl: HttpClient, private val url: Strin ?.takeIf { Folkeregisteridentifikator.isValid(it) } ?.let { Folkeregisteridentifikator.of(it) }, ) - pdl.post("$url/galleri") { - contentType(ContentType.Application.Json) - setBody(persongalleriRequest) - }.body() + pdl + .post("$url/galleri") { + contentType(ContentType.Application.Json) + setBody(persongalleriRequest) + }.body() } catch (e: Exception) { logger.warn( "Kunne ikke hente persongalleriet fra PDL, på grunn av feil. " + @@ -97,7 +102,6 @@ class PdlTjenesterKlientImpl(private val pdl: HttpClient, private val url: Strin ) null } - } override fun hentOpplysningsperson( foedselsnummer: String, @@ -107,10 +111,11 @@ class PdlTjenesterKlientImpl(private val pdl: HttpClient, private val url: Strin val personRequest = HentPersonRequest(Folkeregisteridentifikator.of(foedselsnummer), rolle, listOf(sakType)) val response = runBlocking { - pdl.post("$url/person/v2") { - contentType(ContentType.Application.Json) - setBody(personRequest) - }.body() + pdl + .post("$url/person/v2") { + contentType(ContentType.Application.Json) + setBody(personRequest) + }.body() } return response } @@ -122,10 +127,11 @@ class PdlTjenesterKlientImpl(private val pdl: HttpClient, private val url: Strin ): HistorikkForeldreansvar { val personRequest = HentPersonHistorikkForeldreAnsvarRequest(fnr, rolle, sakType) return runBlocking { - pdl.post("$url/foreldreansvar") { - contentType(ContentType.Application.Json) - setBody(personRequest) - }.body() + pdl + .post("$url/foreldreansvar") { + contentType(ContentType.Application.Json) + setBody(personRequest) + }.body() } } } diff --git a/apps/etterlatte-grunnlag/src/main/kotlin/klienter/PersondataKlient.kt b/apps/etterlatte-grunnlag/src/main/kotlin/klienter/PersondataKlient.kt index 480c8603167..55f7dd325b7 100644 --- a/apps/etterlatte-grunnlag/src/main/kotlin/klienter/PersondataKlient.kt +++ b/apps/etterlatte-grunnlag/src/main/kotlin/klienter/PersondataKlient.kt @@ -19,7 +19,10 @@ import no.nav.etterlatte.libs.common.objectMapper import no.nav.etterlatte.libs.common.retry import org.slf4j.LoggerFactory -class PersondataKlient(private val httpClient: HttpClient, private val apiUrl: String) { +class PersondataKlient( + private val httpClient: HttpClient, + private val apiUrl: String, +) { private val logger = LoggerFactory.getLogger(this::class.java) fun hentAdresseGittFnr(foedselsnummer: String): PersondataAdresse? { @@ -49,17 +52,18 @@ class PersondataKlient(private val httpClient: HttpClient, private val apiUrl: S private fun hentKontaktadresse( foedselsnummer: String, seEtterVerge: Boolean, - ): PersondataAdresse { - return runBlocking { + ): PersondataAdresse = + runBlocking { retry(times = 3) { val jsonResponse: String = - httpClient.get("$apiUrl/api/adresse/kontaktadresse") { - parameter("checkForVerge", seEtterVerge) - header("pid", foedselsnummer) - accept(Json) - contentType(Json) - setBody("") - }.body() + httpClient + .get("$apiUrl/api/adresse/kontaktadresse") { + parameter("checkForVerge", seEtterVerge) + header("pid", foedselsnummer) + accept(Json) + contentType(Json) + setBody("") + }.body() objectMapper.readValue(jsonResponse) }.let { when (it) { @@ -68,7 +72,6 @@ class PersondataKlient(private val httpClient: HttpClient, private val apiUrl: S } } } - } private fun erVergesAdresse(adresse: PersondataAdresse) = listOf("VERGE_PERSON_POSTADRESSE", "VERGE_SAMHANDLER_POSTADRESSE").contains(adresse.type) diff --git a/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/GrunnlagDbExtension.kt b/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/GrunnlagDbExtension.kt index 7f674bda489..8cebd3c4ecc 100644 --- a/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/GrunnlagDbExtension.kt +++ b/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/GrunnlagDbExtension.kt @@ -10,7 +10,9 @@ import org.junit.jupiter.api.extension.ExtensionContext TRUNCATE grunnlagshendelse """, ) -class GrunnlagDbExtension : GenerellDatabaseExtension(), AfterEachCallback { +class GrunnlagDbExtension : + GenerellDatabaseExtension(), + AfterEachCallback { override fun afterEach(context: ExtensionContext?) { resetDb() } diff --git a/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/GrunnlagHenterTest.kt b/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/GrunnlagHenterTest.kt index 0d7488275fb..e5fed0f51f5 100644 --- a/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/GrunnlagHenterTest.kt +++ b/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/GrunnlagHenterTest.kt @@ -46,7 +46,8 @@ class GrunnlagHenterTest { private val objectMapper: ObjectMapper get() { - return jacksonObjectMapper().registerModule(JavaTimeModule()) + return jacksonObjectMapper() + .registerModule(JavaTimeModule()) .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) } @@ -126,8 +127,8 @@ class GrunnlagHenterTest { ).toJsonNode(), ) - private fun soekersVerge(): List> { - return listOf( + private fun soekersVerge(): List> = + listOf( OpplysningDTO( VergemaalEllerFremtidsfullmakt( "", @@ -142,7 +143,6 @@ class GrunnlagHenterTest { "", ), ) - } private fun sampleVergeAdresse() = BrevMottaker( @@ -164,18 +164,19 @@ class GrunnlagHenterTest { jsonNode, ) - private fun grunnlagsopplysningVergesAdresse(): Grunnlagsopplysning { - return Grunnlagsopplysning( + private fun grunnlagsopplysningVergesAdresse(): Grunnlagsopplysning = + Grunnlagsopplysning( id = UUID.randomUUID(), kilde = kilde, opplysningType = Opplysningstype.VERGES_ADRESSE, - meta = no.nav.etterlatte.libs.common.objectMapper.createObjectNode(), + meta = + no.nav.etterlatte.libs.common.objectMapper + .createObjectNode(), opplysning = sampleVergeAdresse(), attestering = null, fnr = SOEKER_FOEDSELSNUMMER, periode = null, ) - } @Suppress("SameParameterValue") private fun vergemaal( diff --git a/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/GrunnlagServiceTest.kt b/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/GrunnlagServiceTest.kt index ae10d50d1fd..fc50f8ca286 100644 --- a/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/GrunnlagServiceTest.kt +++ b/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/GrunnlagServiceTest.kt @@ -210,7 +210,11 @@ internal class GrunnlagServiceTest { testData.soeker.foedselsnummer.value, testData.soeker.foedselsnummer.value, emptyList(), - listOf(testData.avdoede.first().foedselsnummer.value), + listOf( + testData.avdoede + .first() + .foedselsnummer.value, + ), listOf(testData.gjenlevende.foedselsnummer.value), ) val sakId = 1L @@ -250,12 +254,18 @@ internal class GrunnlagServiceTest { assertNotNull(grunnlag) if (grunnlag != null) { val hentetGalleriPaaSoeker = - grunnlag.sak.hentKonstantOpplysning( - PERSONGALLERI_V1, - )?.verdi ?: throw RuntimeException("failure") + grunnlag.sak + .hentKonstantOpplysning( + PERSONGALLERI_V1, + )?.verdi ?: throw RuntimeException("failure") assertEquals(testData.soeker.foedselsnummer.value, hentetGalleriPaaSoeker.soeker) assertEquals(testData.soeker.foedselsnummer.value, hentetGalleriPaaSoeker.innsender) - assertEquals(testData.avdoede.first().foedselsnummer.value, hentetGalleriPaaSoeker.avdoed.first()) + assertEquals( + testData.avdoede + .first() + .foedselsnummer.value, + hentetGalleriPaaSoeker.avdoed.first(), + ) assertEquals(testData.gjenlevende.foedselsnummer.value, hentetGalleriPaaSoeker.gjenlevende.first()) } } @@ -346,7 +356,9 @@ internal class GrunnlagServiceTest { assertEquals( 1, - grunnlagService.hentOpplysningsgrunnlagForSak(1)!!.soeker.values.size, + grunnlagService + .hentOpplysningsgrunnlagForSak(1)!! + .soeker.values.size, ) } @@ -608,7 +620,8 @@ internal class GrunnlagServiceTest { PERSONGALLERI_V1, id = statiskUuid, verdi = - testData.hentPersonGalleri() + testData + .hentPersonGalleri() .copy(innsender = INNSENDER_FOEDSELSNUMMER.value) .toJsonNode(), kilde = kilde, diff --git a/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/aldersovergang/AldersovergangServiceTest.kt b/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/aldersovergang/AldersovergangServiceTest.kt index 41c4e665cab..ddd7c252258 100644 --- a/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/aldersovergang/AldersovergangServiceTest.kt +++ b/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/aldersovergang/AldersovergangServiceTest.kt @@ -15,7 +15,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(GrunnlagDbExtension::class) -class AldersovergangServiceTest(private val dataSource: DataSource) { +class AldersovergangServiceTest( + private val dataSource: DataSource, +) { private val dao = AldersovergangDao(dataSource) private val service = AldersovergangService(dao) diff --git a/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/aldersovergang/AldersovergangTest.kt b/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/aldersovergang/AldersovergangTest.kt index 5897947a4b9..3647d1a7dd5 100644 --- a/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/aldersovergang/AldersovergangTest.kt +++ b/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/aldersovergang/AldersovergangTest.kt @@ -37,7 +37,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(GrunnlagDbExtension::class) -class AldersovergangTest(private val dataSource: DataSource) { +class AldersovergangTest( + private val dataSource: DataSource, +) { private val server = MockOAuth2Server() @BeforeAll diff --git a/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/itest/GrunnlagDaoIntegrationTest.kt b/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/itest/GrunnlagDaoIntegrationTest.kt index 231a389d7e6..93e9cd90e29 100644 --- a/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/itest/GrunnlagDaoIntegrationTest.kt +++ b/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/itest/GrunnlagDaoIntegrationTest.kt @@ -58,7 +58,9 @@ import kotlin.random.Random @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(GrunnlagDbExtension::class) -internal class GrunnlagDaoIntegrationTest(private val dataSource: DataSource) { +internal class GrunnlagDaoIntegrationTest( + private val dataSource: DataSource, +) { private lateinit var opplysningRepo: OpplysningDao @BeforeAll @@ -88,11 +90,21 @@ internal class GrunnlagDaoIntegrationTest(private val dataSource: DataSource) { assertEquals(1, opplysningRepo.finnHendelserIGrunnlag(1).size) assertEquals(1, opplysningRepo.finnHendelserIGrunnlag(2).size) - assertEquals(uuid, opplysningRepo.finnHendelserIGrunnlag(2).first().opplysning.id) + assertEquals( + uuid, + opplysningRepo + .finnHendelserIGrunnlag(2) + .first() + .opplysning.id, + ) assertEquals( datoMottat, - opplysningRepo.finnHendelserIGrunnlag(1) - .first().opplysning.let { objectMapper.treeToValue(it.opplysning) }.mottattDato, + opplysningRepo + .finnHendelserIGrunnlag(1) + .first() + .opplysning + .let { objectMapper.treeToValue(it.opplysning) } + .mottattDato, ) } @@ -109,10 +121,19 @@ internal class GrunnlagDaoIntegrationTest(private val dataSource: DataSource) { ).also { opplysningRepo.leggOpplysningTilGrunnlag(1, it, fnr) } assertEquals(1, opplysningRepo.finnHendelserIGrunnlag(1).size) - assertEquals(uuid, opplysningRepo.finnHendelserIGrunnlag(1).first().opplysning.id) + assertEquals( + uuid, + opplysningRepo + .finnHendelserIGrunnlag(1) + .first() + .opplysning.id, + ) assertEquals( fnr, - opplysningRepo.finnHendelserIGrunnlag(1).first().opplysning.fnr, + opplysningRepo + .finnHendelserIGrunnlag(1) + .first() + .opplysning.fnr, ) } @@ -437,8 +458,10 @@ internal class GrunnlagDaoIntegrationTest(private val dataSource: DataSource) { val versjoner = dataSource.connection.use { - it.prepareStatement("SELECT * FROM behandling_versjon WHERE sak_id = $sakId") - .executeQuery().toList { + it + .prepareStatement("SELECT * FROM behandling_versjon WHERE sak_id = $sakId") + .executeQuery() + .toList { BehandlingGrunnlagVersjon( getObject("behandling_id") as UUID, getLong("sak_id"), @@ -456,7 +479,27 @@ internal class GrunnlagDaoIntegrationTest(private val dataSource: DataSource) { private fun opprettMockPerson(fnr: Folkeregisteridentifikator): Person = Person( - UUID.randomUUID().toString(), null, UUID.randomUUID().toString(), fnr, null, 1234, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, + UUID.randomUUID().toString(), + null, + UUID.randomUUID().toString(), + fnr, + null, + 1234, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, ) } diff --git a/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/itest/RapidTest.kt b/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/itest/RapidTest.kt index 06348ec88d7..967db319e77 100644 --- a/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/itest/RapidTest.kt +++ b/apps/etterlatte-grunnlag/src/test/kotlin/grunnlag/itest/RapidTest.kt @@ -34,7 +34,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(GrunnlagDbExtension::class) -internal class RapidTest(private val dataSource: DataSource) { +internal class RapidTest( + private val dataSource: DataSource, +) { private lateinit var opplysningRepo: OpplysningDao private lateinit var grunnlagService: RealGrunnlagService private lateinit var inspector: TestRapid @@ -67,15 +69,16 @@ internal class RapidTest(private val dataSource: DataSource) { @Nested inner class NyOpplysning { private val melding = - JsonMessage.newMessage( - mapOf( - EventNames.NY_OPPLYSNING.lagParMedEventNameKey(), - OPPLYSNING_KEY to listOf(nyOpplysning), - FNR_KEY to fnr, - SAK_ID_KEY to 1, - BEHANDLING_ID_KEY to UUID.randomUUID(), - ), - ).toJson() + JsonMessage + .newMessage( + mapOf( + EventNames.NY_OPPLYSNING.lagParMedEventNameKey(), + OPPLYSNING_KEY to listOf(nyOpplysning), + FNR_KEY to fnr, + SAK_ID_KEY to 1, + BEHANDLING_ID_KEY to UUID.randomUUID(), + ), + ).toJson() @Test fun `ny enkeltopplysning lagres i databasen med riktige verdier`() { @@ -86,15 +89,16 @@ internal class RapidTest(private val dataSource: DataSource) { @Nested inner class Opplysningsbehov { private val melding = - JsonMessage.newMessage( - mapOf( - BEHOV_NAME_KEY to Opplysningstype.SOEKER_PDL_V1, - OPPLYSNING_KEY to listOf(nyOpplysning), - FNR_KEY to fnr, - SAK_ID_KEY to 1, - BEHANDLING_ID_KEY to UUID.randomUUID(), - ), - ).toJson() + JsonMessage + .newMessage( + mapOf( + BEHOV_NAME_KEY to Opplysningstype.SOEKER_PDL_V1, + OPPLYSNING_KEY to listOf(nyOpplysning), + FNR_KEY to fnr, + SAK_ID_KEY to 1, + BEHANDLING_ID_KEY to UUID.randomUUID(), + ), + ).toJson() @Test fun `ny enkeltopplysning lagres i databasen med riktige verdier`() { diff --git a/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/Application.kt b/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/Application.kt index bce162c07b0..4cfb691aa19 100644 --- a/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/Application.kt +++ b/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/Application.kt @@ -12,18 +12,20 @@ val sikkerLogg = sikkerlogger() fun main() { val rapidEnv = getRapidEnv() - RapidApplication.create(rapidEnv).also { rapidsConnection -> - val ab = AppBuilder(Miljoevariabler(rapidEnv)) + RapidApplication + .create(rapidEnv) + .also { rapidsConnection -> + val ab = AppBuilder(Miljoevariabler(rapidEnv)) - NySoeknadRiver( - rapidsConnection = rapidsConnection, - behandlingKlient = ab.behandlingKlient, - journalfoerSoeknadService = ab.journalfoerSoeknadService, - ) + NySoeknadRiver( + rapidsConnection = rapidsConnection, + behandlingKlient = ab.behandlingKlient, + journalfoerSoeknadService = ab.journalfoerSoeknadService, + ) - OpprettBehandlingRiver( - rapidsConnection, - ab.behandlingKlient, - ) - }.start() + OpprettBehandlingRiver( + rapidsConnection, + ab.behandlingKlient, + ) + }.start() } diff --git a/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/NySoeknadRiver.kt b/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/NySoeknadRiver.kt index a311a282cf0..227e34d41cd 100644 --- a/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/NySoeknadRiver.kt +++ b/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/NySoeknadRiver.kt @@ -93,8 +93,8 @@ internal class NySoeknadRiver( private fun finnEllerOpprettSak( fnr: String, sakType: SakType, - ): Sak? { - return try { + ): Sak? = + try { logger.info("Henter/oppretter sak ($sakType) i Gjenny") runBlocking { @@ -106,7 +106,6 @@ internal class NySoeknadRiver( // Svelg slik at Innsendt søknad vil retrye null } - } private fun JsonMessage.oppdaterMed( sakId: Long, diff --git a/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/OpprettBehandlingRiver.kt b/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/OpprettBehandlingRiver.kt index 621453c047e..ad058f7b07d 100644 --- a/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/OpprettBehandlingRiver.kt +++ b/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/OpprettBehandlingRiver.kt @@ -63,10 +63,11 @@ internal class OpprettBehandlingRiver( logger.info("Behandling $behandlingId startet på sak ${sak.id}") context.publish( - packet.apply { - set(GyldigSoeknadVurdert.sakIdKey, sak.id) - set(GyldigSoeknadVurdert.behandlingIdKey, behandlingId) - }.toJson(), + packet + .apply { + set(GyldigSoeknadVurdert.sakIdKey, sak.id) + set(GyldigSoeknadVurdert.behandlingIdKey, behandlingId) + }.toJson(), ) logger.info("Vurdert gyldighet av søknad om omstillingsstønad er fullført") } catch (e: Exception) { diff --git a/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/PersongalleriMapper.kt b/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/PersongalleriMapper.kt index 4f1c1c55dde..f43ce2b9e8f 100644 --- a/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/PersongalleriMapper.kt +++ b/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/PersongalleriMapper.kt @@ -26,14 +26,13 @@ object PersongalleriMapper { } } - private fun opprettPersongalleriOMS(soeknad: Omstillingsstoenad): Persongalleri { - return Persongalleri( + private fun opprettPersongalleriOMS(soeknad: Omstillingsstoenad): Persongalleri = + Persongalleri( soeker = soeknad.soeker.foedselsnummer.svar.value, innsender = soeknad.innsender.foedselsnummer.svar.value, avdoed = listOf(soeknad.avdoed.foedselsnummer.svar.value), soesken = soeknad.barn.map { it.foedselsnummer.svar.value }, ) - } private fun opprettPersongalleriBP(soeknad: Barnepensjon): Persongalleri { logger.info("Hent persongalleri fra søknad") @@ -44,7 +43,8 @@ object PersongalleriMapper { soesken = soeknad.soesken.map { it.foedselsnummer.svar.value }, avdoed = soeknad.foreldre.filter { it.type == PersonType.AVDOED }.map { it.foedselsnummer.svar.value }, gjenlevende = - soeknad.foreldre.filter { it.type == PersonType.GJENLEVENDE_FORELDER } + soeknad.foreldre + .filter { it.type == PersonType.GJENLEVENDE_FORELDER } .map { it.foedselsnummer.svar.value }, ) } diff --git a/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/client/BehandlingClient.kt b/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/client/BehandlingClient.kt index cc8fadf3b23..0d74ee5e974 100644 --- a/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/client/BehandlingClient.kt +++ b/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/client/BehandlingClient.kt @@ -25,40 +25,38 @@ class BehandlingClient( sak: Long, mottattDato: LocalDateTime, persongalleri: Persongalleri, - ): UUID { - return runBlocking { - sakOgBehandlingApp.post("$url/behandlinger/opprettbehandling") { - contentType(ContentType.Application.Json) - setBody(BehandlingsBehov(sak, persongalleri, mottattDato.toString())) - } - .also { require(it.status.isSuccess()) } + ): UUID = + runBlocking { + sakOgBehandlingApp + .post("$url/behandlinger/opprettbehandling") { + contentType(ContentType.Application.Json) + setBody(BehandlingsBehov(sak, persongalleri, mottattDato.toString())) + }.also { require(it.status.isSuccess()) } .body() }.let { UUID.fromString(it) } - } fun finnEllerOpprettSak( fnr: String, saktype: SakType, - ): Sak { - return runBlocking { - sakOgBehandlingApp.post("$url/personer/saker/$saktype") { - contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) - }.body() + ): Sak = + runBlocking { + sakOgBehandlingApp + .post("$url/personer/saker/$saktype") { + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + }.body() } - } fun lagreGyldighetsVurdering( behandlingId: UUID, gyldighet: GyldighetsResultat, - ) { - return runBlocking { - sakOgBehandlingApp.post("$url/behandlinger/$behandlingId/gyldigfremsatt") { + ) = runBlocking { + sakOgBehandlingApp + .post("$url/behandlinger/$behandlingId/gyldigfremsatt") { contentType(ContentType.Application.Json) setBody(gyldighet) }.body() - } } } diff --git a/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/config/AppBuilder.kt b/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/config/AppBuilder.kt index c76ffc6f864..e82aa749b0b 100644 --- a/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/config/AppBuilder.kt +++ b/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/config/AppBuilder.kt @@ -9,7 +9,9 @@ import no.nav.etterlatte.libs.common.Miljoevariabler import no.nav.etterlatte.libs.ktor.httpClient import no.nav.etterlatte.libs.ktor.ktor.clientCredential -class AppBuilder(private val env: Miljoevariabler) { +class AppBuilder( + private val env: Miljoevariabler, +) { val behandlingKlient: BehandlingClient by lazy { BehandlingClient( httpClient("BEHANDLING_AZURE_SCOPE"), @@ -33,7 +35,8 @@ class AppBuilder(private val env: Miljoevariabler) { it.install(Auth) { clientCredential { config = - env.props.toMutableMap() + env.props + .toMutableMap() .apply { put("AZURE_APP_OUTBOUND_SCOPE", requireNotNull(get(scope))) } } } diff --git a/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/journalfoering/DokarkivKlient.kt b/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/journalfoering/DokarkivKlient.kt index c3a65423ae0..9acd3aa76d4 100644 --- a/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/journalfoering/DokarkivKlient.kt +++ b/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/journalfoering/DokarkivKlient.kt @@ -14,7 +14,10 @@ import io.ktor.http.isSuccess import no.nav.etterlatte.libs.common.feilhaandtering.ForespoerselException import org.slf4j.LoggerFactory -class DokarkivKlient(private val client: HttpClient, private val url: String) { +class DokarkivKlient( + private val client: HttpClient, + private val url: String, +) { private val logger = LoggerFactory.getLogger(DokarkivKlient::class.java) internal suspend fun opprettJournalpost(request: OpprettJournalpostRequest): OpprettJournalpostResponse { @@ -26,14 +29,16 @@ class DokarkivKlient(private val client: HttpClient, private val url: String) { } return if (response.status.isSuccess()) { - response.body() + response + .body() .also { logger.info( "Journalpost opprettet (journalpostId=${it.journalpostId}, ferdigstilt=${it.journalpostferdigstilt})", ) } } else if (response.status == HttpStatusCode.Conflict) { - response.body() + response + .body() .also { logger.warn("Konflikt ved lagring av journalpost ${it.journalpostId}") } } else { logger.error("Feil oppsto på opprett journalpost: ${response.bodyAsText()}") @@ -95,19 +100,25 @@ sealed class DokumentVariant { } @Suppress("unused") -data class JournalpostSak(val fagsakId: String) { +data class JournalpostSak( + val fagsakId: String, +) { val sakstype: String = "FAGSAK" val fagsaksystem: String = "EY" } @Suppress("unused") -data class AvsenderMottaker(val id: String) { +data class AvsenderMottaker( + val id: String, +) { val navn: String = "" val idType: String = "FNR" } @Suppress("unused") -data class Bruker(val id: String) { +data class Bruker( + val id: String, +) { val idType = "FNR" } diff --git a/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/pdf/PdfGeneratorKlient.kt b/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/pdf/PdfGeneratorKlient.kt index ae4a2ee5c5d..d874d4dfbf6 100644 --- a/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/pdf/PdfGeneratorKlient.kt +++ b/apps/etterlatte-gyldig-soeknad/src/main/kotlin/no/nav/etterlatte/gyldigsoeknad/pdf/PdfGeneratorKlient.kt @@ -18,14 +18,17 @@ interface PdfGenerator { ): ByteArray } -class PdfGeneratorKlient(private val client: HttpClient, private val apiUrl: String) : PdfGenerator { +class PdfGeneratorKlient( + private val client: HttpClient, + private val apiUrl: String, +) : PdfGenerator { override suspend fun genererPdf( input: JsonNode, template: String, - ): ByteArray { - return client.post("$apiUrl/$template") { - header("X-Correlation-ID", MDC.get("X-Correlation-ID") ?: UUID.randomUUID().toString()) - setBody(TextContent(input.toPrettyString(), ContentType.Application.Json)) - }.body() - } + ): ByteArray = + client + .post("$apiUrl/$template") { + header("X-Correlation-ID", MDC.get("X-Correlation-ID") ?: UUID.randomUUID().toString()) + setBody(TextContent(input.toPrettyString(), ContentType.Application.Json)) + }.body() } diff --git a/apps/etterlatte-gyldig-soeknad/src/test/kotlin/no/nav/etterlatte/gyldigsoeknad/NySoeknadRiverTest.kt b/apps/etterlatte-gyldig-soeknad/src/test/kotlin/no/nav/etterlatte/gyldigsoeknad/NySoeknadRiverTest.kt index 889dbac5b04..8ef00d0e119 100644 --- a/apps/etterlatte-gyldig-soeknad/src/test/kotlin/no/nav/etterlatte/gyldigsoeknad/NySoeknadRiverTest.kt +++ b/apps/etterlatte-gyldig-soeknad/src/test/kotlin/no/nav/etterlatte/gyldigsoeknad/NySoeknadRiverTest.kt @@ -204,10 +204,11 @@ internal class NySoeknadRiverTest { } private fun testRapid(block: TestRapid.() -> Unit) = - TestRapid().apply { - NySoeknadRiver(this, behandlingKlientMock, journalfoerSoeknadService) - block() - }.inspektør + TestRapid() + .apply { + NySoeknadRiver(this, behandlingKlientMock, journalfoerSoeknadService) + block() + }.inspektør companion object { val BARNEPENSJON_SOEKNAD = readFile("/innsendtsoeknad/barnepensjon.json") diff --git a/apps/etterlatte-gyldig-soeknad/src/test/kotlin/no/nav/etterlatte/gyldigsoeknad/OpprettBehandlingRiverTest.kt b/apps/etterlatte-gyldig-soeknad/src/test/kotlin/no/nav/etterlatte/gyldigsoeknad/OpprettBehandlingRiverTest.kt index 79c740b431a..2e31b8d73a9 100644 --- a/apps/etterlatte-gyldig-soeknad/src/test/kotlin/no/nav/etterlatte/gyldigsoeknad/OpprettBehandlingRiverTest.kt +++ b/apps/etterlatte-gyldig-soeknad/src/test/kotlin/no/nav/etterlatte/gyldigsoeknad/OpprettBehandlingRiverTest.kt @@ -4,9 +4,7 @@ import io.kotest.matchers.shouldBe import io.mockk.clearAllMocks import io.mockk.coVerify import io.mockk.every -import io.mockk.just import io.mockk.mockk -import io.mockk.runs import io.mockk.slot import io.mockk.verify import no.nav.etterlatte.gyldigsoeknad.client.BehandlingClient @@ -44,7 +42,7 @@ internal class OpprettBehandlingRiverTest { behandlingClientMock.finnEllerOpprettSak(any(), any()) } returns Sak(soeker, SakType.OMSTILLINGSSTOENAD, sakId, "4808") every { behandlingClientMock.opprettBehandling(any(), any(), any()) } returns behandlingId - every { behandlingClientMock.lagreGyldighetsVurdering(any(), any()) } just runs + every { behandlingClientMock.lagreGyldighetsVurdering(any(), any()) } returns "" val inspector = testRapid().apply { sendTestMessage(getJson("/behandlingsbehov/omstillingsstoenad.json")) }.inspektør val message = inspector.message(0) @@ -71,7 +69,7 @@ internal class OpprettBehandlingRiverTest { behandlingClientMock.finnEllerOpprettSak(any(), any()) } returns Sak(soeker, SakType.BARNEPENSJON, sakId, "4808") every { behandlingClientMock.opprettBehandling(any(), any(), any()) } returns behandlingId - every { behandlingClientMock.lagreGyldighetsVurdering(any(), any()) } just runs + every { behandlingClientMock.lagreGyldighetsVurdering(any(), any()) } returns "" val inspector = testRapid().apply { sendTestMessage(getJson("/behandlingsbehov/barnepensjon.json")) }.inspektør val message = inspector.message(0) diff --git a/apps/etterlatte-gyldig-soeknad/src/test/kotlin/no/nav/etterlatte/gyldigsoeknad/client/BehandlingClientTest.kt b/apps/etterlatte-gyldig-soeknad/src/test/kotlin/no/nav/etterlatte/gyldigsoeknad/client/BehandlingClientTest.kt index 3d85abe5f70..743a1b82163 100644 --- a/apps/etterlatte-gyldig-soeknad/src/test/kotlin/no/nav/etterlatte/gyldigsoeknad/client/BehandlingClientTest.kt +++ b/apps/etterlatte-gyldig-soeknad/src/test/kotlin/no/nav/etterlatte/gyldigsoeknad/client/BehandlingClientTest.kt @@ -42,9 +42,10 @@ internal class BehandlingClientTest { assertEquals(behandlingId, hentetSaksid) assertEquals( 1, - objectMapper.readValue( - (runBlocking { String(requestList[0].body.toByteArray()) }), - ).sakId, + objectMapper + .readValue( + (runBlocking { String(requestList[0].body.toByteArray()) }), + ).sakId, ) } diff --git a/apps/etterlatte-hendelser-joark/src/main/kotlin/Application.kt b/apps/etterlatte-hendelser-joark/src/main/kotlin/Application.kt index 64cc4554301..4eb97a6c486 100644 --- a/apps/etterlatte-hendelser-joark/src/main/kotlin/Application.kt +++ b/apps/etterlatte-hendelser-joark/src/main/kotlin/Application.kt @@ -12,7 +12,9 @@ fun main() { Server(ApplicationContext()).run() } -class Server(private val context: ApplicationContext) { +class Server( + private val context: ApplicationContext, +) { private val engine = initEmbeddedServerUtenRest( httpPort = context.httpPort, diff --git a/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/behandling/BehandlingKlient.kt b/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/behandling/BehandlingKlient.kt index d9b7e381a4e..8ede6188f0f 100644 --- a/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/behandling/BehandlingKlient.kt +++ b/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/behandling/BehandlingKlient.kt @@ -26,10 +26,12 @@ class BehandlingKlient( sakType: SakType, ): Long? = try { - httpClient.post("$url/personer/getsak/$sakType") { - contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) - }.body()["id"].longValue() + httpClient + .post("$url/personer/getsak/$sakType") { + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + }.body()["id"] + .longValue() } catch (re: ResponseException) { if (re.response.status == HttpStatusCode.NotFound) { null @@ -41,32 +43,34 @@ class BehandlingKlient( suspend fun hentEllerOpprettSak( fnr: String, sakType: SakType, - ): Long { - return httpClient.post("$url/personer/saker/$sakType") { - contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO(fnr)) - }.body()["id"].longValue() - } + ): Long = + httpClient + .post("$url/personer/saker/$sakType") { + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO(fnr)) + }.body()["id"] + .longValue() suspend fun opprettOppgave( sakId: Long, merknad: String, referanse: String, - ): UUID { - return httpClient.post("$url/oppgaver/sak/$sakId/opprett") { - contentType(ContentType.Application.Json) - setBody( - NyOppgaveDto( - OppgaveKilde.HENDELSE, - OppgaveType.JOURNALFOERING, - merknad, - referanse, - ), - ) - }.body().let { - UUID.fromString(it["id"].textValue()) - } - } + ): UUID = + httpClient + .post("$url/oppgaver/sak/$sakId/opprett") { + contentType(ContentType.Application.Json) + setBody( + NyOppgaveDto( + OppgaveKilde.HENDELSE, + OppgaveType.JOURNALFOERING, + merknad, + referanse, + ), + ) + }.body() + .let { + UUID.fromString(it["id"].textValue()) + } suspend fun avbrytOppgaver(referanse: String) { httpClient.put("$url/oppgaver/avbryt/referanse/$referanse") diff --git a/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/behandling/BehandlingService.kt b/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/behandling/BehandlingService.kt index 2e2a68beb3e..5ef9773228c 100644 --- a/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/behandling/BehandlingService.kt +++ b/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/behandling/BehandlingService.kt @@ -28,7 +28,8 @@ class BehandlingService( logger.info("Oppretter journalføringsoppgave for sak=$sakId") - return behandlingKlient.opprettOppgave(sakId, merknad, referanse = journalpostId) + return behandlingKlient + .opprettOppgave(sakId, merknad, referanse = journalpostId) .also { oppgaveId -> logger.info("Opprettet oppgave=$oppgaveId med sakId=$sakId for journalpost=$journalpostId") } diff --git a/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/config/ApplicationContext.kt b/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/config/ApplicationContext.kt index f1588cc087d..1d38416210b 100644 --- a/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/config/ApplicationContext.kt +++ b/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/config/ApplicationContext.kt @@ -12,7 +12,9 @@ import no.nav.etterlatte.joarkhendelser.pdl.PdlTjenesterKlient import no.nav.etterlatte.libs.common.requireEnvValue import no.nav.etterlatte.libs.ktor.httpClientClientCredentials -class ApplicationContext(env: Map = System.getenv()) { +class ApplicationContext( + env: Map = System.getenv(), +) { private val config: Config = ConfigFactory.load() private val behandlingKlient = diff --git a/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/config/KafkaEnvironment.kt b/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/config/KafkaEnvironment.kt index 6ca043d2768..fb5170fb555 100644 --- a/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/config/KafkaEnvironment.kt +++ b/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/config/KafkaEnvironment.kt @@ -6,11 +6,12 @@ import no.nav.etterlatte.kafka.Kafkakonfigurasjon import org.apache.kafka.common.IsolationLevel import java.util.Locale -class KafkaEnvironment : Kafkakonfigurasjon( - groupId = "JOARK_HENDELSE_GROUP_ID", - deserializerClass = KafkaAvroDeserializer::class.java, - userInfoConfigKey = Avrokonstanter.USER_INFO_CONFIG, - schemaRegistryUrlConfigKey = Avrokonstanter.SCHEMA_REGISTRY_URL_CONFIG, - isolationLevelConfig = IsolationLevel.READ_COMMITTED.toString().lowercase(Locale.getDefault()), - specificAvroReaderConfig = true, -) +class KafkaEnvironment : + Kafkakonfigurasjon( + groupId = "JOARK_HENDELSE_GROUP_ID", + deserializerClass = KafkaAvroDeserializer::class.java, + userInfoConfigKey = Avrokonstanter.USER_INFO_CONFIG, + schemaRegistryUrlConfigKey = Avrokonstanter.SCHEMA_REGISTRY_URL_CONFIG, + isolationLevelConfig = IsolationLevel.READ_COMMITTED.toString().lowercase(Locale.getDefault()), + specificAvroReaderConfig = true, + ) diff --git a/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/joark/SafGraphql.kt b/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/joark/SafGraphql.kt index 83906e3cb1c..29e87522831 100644 --- a/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/joark/SafGraphql.kt +++ b/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/joark/SafGraphql.kt @@ -116,7 +116,9 @@ data class AvsenderMottaker( val erLikBruker: Boolean?, ) -enum class Kanal(val beskrivelse: String) { +enum class Kanal( + val beskrivelse: String, +) { ALTINN("Altinn"), EESSI("EESSI"), EIA("EIA"), diff --git a/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/joark/SafKlient.kt b/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/joark/SafKlient.kt index 5b1790954a1..fd5304d131e 100644 --- a/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/joark/SafKlient.kt +++ b/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/joark/SafKlient.kt @@ -42,7 +42,8 @@ class SafKlient( private fun opprettHentJournalpostRequest(journalpostId: Long): GraphqlRequest { val query = - javaClass.getResource("/graphql/journalpost.id.graphql")!! + javaClass + .getResource("/graphql/journalpost.id.graphql")!! .readText() .replace(Regex("[\n\t]"), "") diff --git a/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/oppgave/OppgaveKlient.kt b/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/oppgave/OppgaveKlient.kt index 9775cb25bb1..a02c8462416 100644 --- a/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/oppgave/OppgaveKlient.kt +++ b/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/oppgave/OppgaveKlient.kt @@ -24,10 +24,11 @@ class OppgaveKlient( logger.info("Oppretter manuell journalføringsoppgave") val response = - httpClient.post("$url/api/v1/oppgaver") { - contentType(ContentType.Application.Json) - setBody(OpprettOppgaveRequest(journalpostId.toString(), tema)) - }.body() + httpClient + .post("$url/api/v1/oppgaver") { + contentType(ContentType.Application.Json) + setBody(OpprettOppgaveRequest(journalpostId.toString(), tema)) + }.body() logger.info("Opprettet oppgave (id=${response["id"]}, status=${response["status"]}, tema=${response["tema"]})") sikkerlogger().info("Opprettet oppgave med respons: \n$response") diff --git a/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/pdl/PdlTjenesterKlient.kt b/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/pdl/PdlTjenesterKlient.kt index 14c7ab88599..840b495b92d 100644 --- a/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/pdl/PdlTjenesterKlient.kt +++ b/apps/etterlatte-hendelser-joark/src/main/kotlin/joarkhendelser/pdl/PdlTjenesterKlient.kt @@ -27,10 +27,11 @@ class PdlTjenesterKlient( logger.info("Henter ident fra PDL for fnr=${ident.maskerFnr()}") return retry { - httpClient.post("$url/pdlident") { - contentType(ContentType.Application.Json) - setBody(HentPdlIdentRequest(PersonIdent(ident))) - }.body() + httpClient + .post("$url/pdlident") { + contentType(ContentType.Application.Json) + setBody(HentPdlIdentRequest(PersonIdent(ident))) + }.body() }.let { result -> when (result) { is RetryResult.Success -> result.content @@ -49,10 +50,11 @@ class PdlTjenesterKlient( logger.info("Henter adressebeskyttelse/gradering fra PDL for fnr=${fnr.maskerFnr()}") return retry { - httpClient.post("$url/person/adressebeskyttelse") { - contentType(ContentType.Application.Json) - setBody(HentAdressebeskyttelseRequest(PersonIdent(fnr), sakType)) - }.body() + httpClient + .post("$url/person/adressebeskyttelse") { + contentType(ContentType.Application.Json) + setBody(HentAdressebeskyttelseRequest(PersonIdent(fnr), sakType)) + }.body() }.let { result -> when (result) { is RetryResult.Success -> result.content diff --git a/apps/etterlatte-hendelser-joark/src/test/kotlin/joarkhendelser/JoarkHendelseHandlerTest.kt b/apps/etterlatte-hendelser-joark/src/test/kotlin/joarkhendelser/JoarkHendelseHandlerTest.kt index d548574522e..736eed4304f 100644 --- a/apps/etterlatte-hendelser-joark/src/test/kotlin/joarkhendelser/JoarkHendelseHandlerTest.kt +++ b/apps/etterlatte-hendelser-joark/src/test/kotlin/joarkhendelser/JoarkHendelseHandlerTest.kt @@ -454,8 +454,8 @@ internal class JoarkHendelseHandlerTest { hendelsesType: String = HendelseType.JOURNALPOST_MOTTATT, journalpostStatus: String = JournalpostStatus.MOTTATT, temaGammelt: String? = null, - ): JournalfoeringHendelseRecord { - return JournalfoeringHendelseRecord( + ): JournalfoeringHendelseRecord = + JournalfoeringHendelseRecord( UUID.randomUUID().toString(), 1, hendelsesType, @@ -467,7 +467,6 @@ internal class JoarkHendelseHandlerTest { "kanalReferanseId", "behandlingstema", ) - } private fun opprettJournalpost( journalpostId: Long, diff --git a/apps/etterlatte-hendelser-pdl/src/main/kotlin/Application.kt b/apps/etterlatte-hendelser-pdl/src/main/kotlin/Application.kt index 139533d50f6..d23709cb370 100644 --- a/apps/etterlatte-hendelser-pdl/src/main/kotlin/Application.kt +++ b/apps/etterlatte-hendelser-pdl/src/main/kotlin/Application.kt @@ -14,7 +14,9 @@ fun main() { Server(context).run() } -class Server(private val context: ApplicationContext) { +class Server( + private val context: ApplicationContext, +) { private val engine = initEmbeddedServerUtenRest( httpPort = context.httpPort, diff --git a/apps/etterlatte-hendelser-pdl/src/main/kotlin/hendelserpdl/config/KafkaEnvironment.kt b/apps/etterlatte-hendelser-pdl/src/main/kotlin/hendelserpdl/config/KafkaEnvironment.kt index 520a4182a18..fa6f661e2aa 100644 --- a/apps/etterlatte-hendelser-pdl/src/main/kotlin/hendelserpdl/config/KafkaEnvironment.kt +++ b/apps/etterlatte-hendelser-pdl/src/main/kotlin/hendelserpdl/config/KafkaEnvironment.kt @@ -6,11 +6,12 @@ import no.nav.etterlatte.kafka.Kafkakonfigurasjon import org.apache.kafka.common.IsolationLevel import java.util.Locale -class KafkaEnvironment : Kafkakonfigurasjon( - groupId = "LEESAH_KAFKA_GROUP_ID", - deserializerClass = KafkaAvroDeserializer::class.java, - userInfoConfigKey = Avrokonstanter.USER_INFO_CONFIG, - schemaRegistryUrlConfigKey = Avrokonstanter.SCHEMA_REGISTRY_URL_CONFIG, - isolationLevelConfig = IsolationLevel.READ_COMMITTED.toString().lowercase(Locale.getDefault()), - specificAvroReaderConfig = true, -) +class KafkaEnvironment : + Kafkakonfigurasjon( + groupId = "LEESAH_KAFKA_GROUP_ID", + deserializerClass = KafkaAvroDeserializer::class.java, + userInfoConfigKey = Avrokonstanter.USER_INFO_CONFIG, + schemaRegistryUrlConfigKey = Avrokonstanter.SCHEMA_REGISTRY_URL_CONFIG, + isolationLevelConfig = IsolationLevel.READ_COMMITTED.toString().lowercase(Locale.getDefault()), + specificAvroReaderConfig = true, + ) diff --git a/apps/etterlatte-hendelser-pdl/src/main/kotlin/hendelserpdl/pdl/PdlTjenesterKlient.kt b/apps/etterlatte-hendelser-pdl/src/main/kotlin/hendelserpdl/pdl/PdlTjenesterKlient.kt index c4f5d3f7b22..266e8b237c4 100644 --- a/apps/etterlatte-hendelser-pdl/src/main/kotlin/hendelserpdl/pdl/PdlTjenesterKlient.kt +++ b/apps/etterlatte-hendelser-pdl/src/main/kotlin/hendelserpdl/pdl/PdlTjenesterKlient.kt @@ -26,10 +26,11 @@ class PdlTjenesterKlient( logger.info("Henter ident fra PDL for fnr=${fnr.maskerFnr()}") return retry { - httpClient.post("$url/pdlident") { - contentType(ContentType.Application.Json) - setBody(HentPdlIdentRequest(PersonIdent(fnr))) - }.body() + httpClient + .post("$url/pdlident") { + contentType(ContentType.Application.Json) + setBody(HentPdlIdentRequest(PersonIdent(fnr))) + }.body() }.let { result -> when (result) { is RetryResult.Success -> result.content diff --git a/apps/etterlatte-hendelser-samordning/src/main/kotlin/no/nav/etterlatte/Application.kt b/apps/etterlatte-hendelser-samordning/src/main/kotlin/no/nav/etterlatte/Application.kt index 16a672f49a5..a595cc8cccd 100644 --- a/apps/etterlatte-hendelser-samordning/src/main/kotlin/no/nav/etterlatte/Application.kt +++ b/apps/etterlatte-hendelser-samordning/src/main/kotlin/no/nav/etterlatte/Application.kt @@ -12,7 +12,9 @@ fun main() { Server(ApplicationContext()).run() } -class Server(private val context: ApplicationContext) { +class Server( + private val context: ApplicationContext, +) { private val engine = initEmbeddedServerUtenRest( httpPort = context.httpPort, diff --git a/apps/etterlatte-hendelser-samordning/src/main/kotlin/no/nav/etterlatte/samordning/ApplicationContext.kt b/apps/etterlatte-hendelser-samordning/src/main/kotlin/no/nav/etterlatte/samordning/ApplicationContext.kt index c50acd7764f..b771fb67f34 100644 --- a/apps/etterlatte-hendelser-samordning/src/main/kotlin/no/nav/etterlatte/samordning/ApplicationContext.kt +++ b/apps/etterlatte-hendelser-samordning/src/main/kotlin/no/nav/etterlatte/samordning/ApplicationContext.kt @@ -4,11 +4,14 @@ import no.nav.etterlatte.kafka.GcpKafkaConfig import no.nav.etterlatte.kafka.rapidsAndRiversProducer import no.nav.etterlatte.libs.common.requireEnvValue -class ApplicationContext(env: Map = System.getenv()) { +class ApplicationContext( + env: Map = System.getenv(), +) { private val handler = SamordningHendelseHandler( kafkaProduser = - GcpKafkaConfig.fromEnv(env) + GcpKafkaConfig + .fromEnv(env) .rapidsAndRiversProducer(env.getValue("KAFKA_RAPID_TOPIC")), ) diff --git a/apps/etterlatte-hendelser-samordning/src/main/kotlin/no/nav/etterlatte/samordning/KafkaEnvironment.kt b/apps/etterlatte-hendelser-samordning/src/main/kotlin/no/nav/etterlatte/samordning/KafkaEnvironment.kt index f960f3c5a56..13efa6698bc 100644 --- a/apps/etterlatte-hendelser-samordning/src/main/kotlin/no/nav/etterlatte/samordning/KafkaEnvironment.kt +++ b/apps/etterlatte-hendelser-samordning/src/main/kotlin/no/nav/etterlatte/samordning/KafkaEnvironment.kt @@ -5,19 +5,18 @@ import com.fasterxml.jackson.module.kotlin.readValue import no.nav.etterlatte.kafka.Avrokonstanter import no.nav.etterlatte.kafka.Kafkakonfigurasjon -class KafkaEnvironment : Kafkakonfigurasjon( - groupId = "SAMORDNINGVEDTAK_HENDELSE_GROUP_ID", - deserializerClass = JsonDeserializer::class.java, - userInfoConfigKey = Avrokonstanter.USER_INFO_CONFIG, - schemaRegistryUrlConfigKey = Avrokonstanter.SCHEMA_REGISTRY_URL_CONFIG, -) { +class KafkaEnvironment : + Kafkakonfigurasjon( + groupId = "SAMORDNINGVEDTAK_HENDELSE_GROUP_ID", + deserializerClass = JsonDeserializer::class.java, + userInfoConfigKey = Avrokonstanter.USER_INFO_CONFIG, + schemaRegistryUrlConfigKey = Avrokonstanter.SCHEMA_REGISTRY_URL_CONFIG, + ) { class JsonDeserializer : org.apache.kafka.common.serialization.Deserializer { override fun deserialize( topic: String?, data: ByteArray, - ): SamordningVedtakHendelse { - return mapper.readValue(data) - } + ): SamordningVedtakHendelse = mapper.readValue(data) } companion object { diff --git a/apps/etterlatte-hendelser-samordning/src/main/kotlin/no/nav/etterlatte/samordning/SamordningVedtakHendelse.kt b/apps/etterlatte-hendelser-samordning/src/main/kotlin/no/nav/etterlatte/samordning/SamordningVedtakHendelse.kt index 2075e0428bc..b425f2f3fce 100644 --- a/apps/etterlatte-hendelser-samordning/src/main/kotlin/no/nav/etterlatte/samordning/SamordningVedtakHendelse.kt +++ b/apps/etterlatte-hendelser-samordning/src/main/kotlin/no/nav/etterlatte/samordning/SamordningVedtakHendelse.kt @@ -8,9 +8,7 @@ class SamordningVedtakHendelse { var artTypeKode: String? = null var vedtakId: Long? = null - override fun toString(): String { - return "SamordningVedtakHendelse[fagomrade=$fagomrade, artTypeKode=$artTypeKode, vedtakId=$vedtakId]" - } + override fun toString(): String = "SamordningVedtakHendelse[fagomrade=$fagomrade, artTypeKode=$artTypeKode, vedtakId=$vedtakId]" } const val FAGOMRADE_OMS = "EYO" diff --git a/apps/etterlatte-institusjonsopphold/src/main/kotlin/InstitusjonsoppholdKlient.kt b/apps/etterlatte-institusjonsopphold/src/main/kotlin/InstitusjonsoppholdKlient.kt index 89453deb192..2b4cff576db 100644 --- a/apps/etterlatte-institusjonsopphold/src/main/kotlin/InstitusjonsoppholdKlient.kt +++ b/apps/etterlatte-institusjonsopphold/src/main/kotlin/InstitusjonsoppholdKlient.kt @@ -17,10 +17,11 @@ class InstitusjonsoppholdKlient( ) { suspend fun hentDataForHendelse(oppholdId: Long) = retry { - httpKlient.get("$url/api/v1/person/institusjonsopphold/$oppholdId?Med-Institusjonsinformasjon=true") { - contentType(ContentType.Application.Json) - navConsumerId("etterlatte-institusjonsopphold") - }.body() + httpKlient + .get("$url/api/v1/person/institusjonsopphold/$oppholdId?Med-Institusjonsinformasjon=true") { + contentType(ContentType.Application.Json) + navConsumerId("etterlatte-institusjonsopphold") + }.body() }.let { when (it) { is RetryResult.Success -> it.content diff --git a/apps/etterlatte-institusjonsopphold/src/main/kotlin/kafka/KafkaEnvironment.kt b/apps/etterlatte-institusjonsopphold/src/main/kotlin/kafka/KafkaEnvironment.kt index 30a2ab0f442..ade33fea780 100644 --- a/apps/etterlatte-institusjonsopphold/src/main/kotlin/kafka/KafkaEnvironment.kt +++ b/apps/etterlatte-institusjonsopphold/src/main/kotlin/kafka/KafkaEnvironment.kt @@ -5,21 +5,20 @@ import com.fasterxml.jackson.module.kotlin.readValue import org.apache.kafka.common.IsolationLevel import java.util.Locale -class KafkaEnvironment : Kafkakonfigurasjon( - groupId = "INSTITUSJONSOPPHOLD_GROUP_ID", - deserializerClass = JsonDeserializer::class.java, - userInfoConfigKey = Avrokonstanter.USER_INFO_CONFIG, - schemaRegistryUrlConfigKey = Avrokonstanter.SCHEMA_REGISTRY_URL_CONFIG, - isolationLevelConfig = IsolationLevel.READ_COMMITTED.toString().lowercase(Locale.getDefault()), -) { +class KafkaEnvironment : + Kafkakonfigurasjon( + groupId = "INSTITUSJONSOPPHOLD_GROUP_ID", + deserializerClass = JsonDeserializer::class.java, + userInfoConfigKey = Avrokonstanter.USER_INFO_CONFIG, + schemaRegistryUrlConfigKey = Avrokonstanter.SCHEMA_REGISTRY_URL_CONFIG, + isolationLevelConfig = IsolationLevel.READ_COMMITTED.toString().lowercase(Locale.getDefault()), + ) { class JsonDeserializer : org.apache.kafka.common.serialization.Deserializer { private val mapper = jacksonObjectMapper() override fun deserialize( topic: String?, data: ByteArray, - ): KafkaOppholdHendelse { - return mapper.readValue(data) - } + ): KafkaOppholdHendelse = mapper.readValue(data) } } diff --git a/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/Application.kt b/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/Application.kt index 60e24a017c5..54f2a3371c1 100644 --- a/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/Application.kt +++ b/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/Application.kt @@ -13,7 +13,9 @@ fun main() { Server(ApplicationContext()).run() } -class Server(private val context: ApplicationContext) { +class Server( + private val context: ApplicationContext, +) { init { sikkerLoggOppstartOgAvslutning("etterlatte-klage") } diff --git a/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/BehandlingKlient.kt b/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/BehandlingKlient.kt index 008d9094e2d..a66ca11ab8a 100644 --- a/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/BehandlingKlient.kt +++ b/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/BehandlingKlient.kt @@ -18,7 +18,10 @@ import no.nav.klage.kodeverk.Fagsystem import org.apache.kafka.clients.consumer.ConsumerRecord import org.slf4j.LoggerFactory -class BehandlingKlient(private val behandlingHttpClient: HttpClient, private val resourceUrl: String) { +class BehandlingKlient( + private val behandlingHttpClient: HttpClient, + private val resourceUrl: String, +) { private val logger = LoggerFactory.getLogger(this.javaClass.name) fun haandterHendelse(record: ConsumerRecord) { diff --git a/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/KabalKlient.kt b/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/KabalKlient.kt index bac811b54f8..eff80ab9205 100644 --- a/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/KabalKlient.kt +++ b/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/KabalKlient.kt @@ -13,7 +13,10 @@ interface KabalKlient { suspend fun sendTilKabal(kabalOversendelse: KabalOversendelse) } -class KabalKlientImpl(private val client: HttpClient, private val kabalUrl: String) : KabalKlient { +class KabalKlientImpl( + private val client: HttpClient, + private val kabalUrl: String, +) : KabalKlient { override suspend fun sendTilKabal(kabalOversendelse: KabalOversendelse) { try { client.post("$kabalUrl/api/oversendelse/v3/sak") { @@ -31,8 +34,7 @@ class KabalKlientException( kabalOversendelse: KabalOversendelse, responseBody: String, override val cause: ResponseException, -) : - Exception( - "Fikk en feil mot Kabal-api i oversending av klage med id: ${kabalOversendelse.fagsak.fagsakId}. " + - "Oversendelse hadde feil: $responseBody", - ) +) : Exception( + "Fikk en feil mot Kabal-api i oversending av klage med id: ${kabalOversendelse.fagsak.fagsakId}. " + + "Oversendelse hadde feil: $responseBody", + ) diff --git a/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/KabalOversendelseService.kt b/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/KabalOversendelseService.kt index 6fdc802ffb6..b4c68709b80 100644 --- a/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/KabalOversendelseService.kt +++ b/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/KabalOversendelseService.kt @@ -13,7 +13,9 @@ interface KabalOversendelseService { ) } -class KabalOversendelseServiceImpl(private val kabalKlient: KabalKlient) : KabalOversendelseService { +class KabalOversendelseServiceImpl( + private val kabalKlient: KabalKlient, +) : KabalOversendelseService { private val logger: Logger = LoggerFactory.getLogger(this::class.java) override suspend fun sendTilKabal( diff --git a/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/KlageKafkakonsument.kt b/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/KlageKafkakonsument.kt index 4c19432c2a9..b3b912b87a6 100644 --- a/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/KlageKafkakonsument.kt +++ b/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/KlageKafkakonsument.kt @@ -23,9 +23,10 @@ class KlageKafkakonsument( } } -internal class KafkaEnvironment : Kafkakonfigurasjon( - groupId = "KLAGE_GROUP_ID", - deserializerClass = StringDeserializer::class.java, - userInfoConfigKey = Avrokonstanter.USER_INFO_CONFIG, - schemaRegistryUrlConfigKey = Avrokonstanter.SCHEMA_REGISTRY_URL_CONFIG, -) +internal class KafkaEnvironment : + Kafkakonfigurasjon( + groupId = "KLAGE_GROUP_ID", + deserializerClass = StringDeserializer::class.java, + userInfoConfigKey = Avrokonstanter.USER_INFO_CONFIG, + schemaRegistryUrlConfigKey = Avrokonstanter.SCHEMA_REGISTRY_URL_CONFIG, + ) diff --git a/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/modell/BehandlingEvent.kt b/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/modell/BehandlingEvent.kt index 78ae40ee851..15ffa16ea96 100644 --- a/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/modell/BehandlingEvent.kt +++ b/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/modell/BehandlingEvent.kt @@ -52,8 +52,8 @@ data class BehandlingEvent( } } - fun journalpostReferanser(): List { - return when (type) { + fun journalpostReferanser(): List = + when (type) { BehandlingEventType.KLAGEBEHANDLING_AVSLUTTET -> detaljer.klagebehandlingAvsluttet?.journalpostReferanser ?: listOf() @@ -64,7 +64,6 @@ data class BehandlingEvent( else -> listOf() } - } } data class BehandlingDetaljer( @@ -74,17 +73,15 @@ data class BehandlingDetaljer( val behandlingFeilregistrert: BehandlingFeilregistrertDetaljer? = null, val ankeITrygderettenbehandlingOpprettet: AnkeITrygderettenbehandlingOpprettetDetaljer? = null, ) { - fun journalpostReferanser(): List { - return klagebehandlingAvsluttet?.journalpostReferanser ?: ankebehandlingAvsluttet?.journalpostReferanser + fun journalpostReferanser(): List = + klagebehandlingAvsluttet?.journalpostReferanser ?: ankebehandlingAvsluttet?.journalpostReferanser ?: listOf() - } - fun oppgaveTekst(): String { - return klagebehandlingAvsluttet?.oppgaveTekst() + fun oppgaveTekst(): String = + klagebehandlingAvsluttet?.oppgaveTekst() ?: ankebehandlingOpprettet?.oppgaveTekst() ?: ankebehandlingAvsluttet?.oppgaveTekst() ?: "Ukjent" - } } data class KlagebehandlingAvsluttetDetaljer( @@ -92,11 +89,10 @@ data class KlagebehandlingAvsluttetDetaljer( val utfall: KlageinstansUtfall, val journalpostReferanser: List, ) { - fun oppgaveTekst(): String { - return "Hendelse fra klage av type klagebehandling avsluttet med utfall: $utfall mottatt. " + + fun oppgaveTekst(): String = + "Hendelse fra klage av type klagebehandling avsluttet med utfall: $utfall mottatt. " + "Avsluttet tidspunkt: $avsluttet. " + "Journalpost referanser: ${journalpostReferanser.joinToString(", ")}" - } } data class AnkebehandlingOpprettetDetaljer( @@ -116,7 +112,11 @@ data class AnkebehandlingAvsluttetDetaljer( "Journalpost referanser: ${journalpostReferanser.joinToString(", ")}" } -data class BehandlingFeilregistrertDetaljer(val reason: String, val type: KabalSakType, val feilregistrert: LocalDateTime) +data class BehandlingFeilregistrertDetaljer( + val reason: String, + val type: KabalSakType, + val feilregistrert: LocalDateTime, +) data class AnkeITrygderettenbehandlingOpprettetDetaljer( val sendtTilTrygderetten: LocalDateTime, diff --git a/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/modell/BehandlingResultat.kt b/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/modell/BehandlingResultat.kt index 8d6b4495ac8..b1984b65ea4 100644 --- a/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/modell/BehandlingResultat.kt +++ b/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/modell/BehandlingResultat.kt @@ -17,7 +17,9 @@ enum class BehandlingEventType { // TODO ANKE_I_TRYGDERETTENBEHANDLING_OPPRETTET skal fjernes på sikt } -enum class KlageinstansUtfall(val navn: String) { +enum class KlageinstansUtfall( + val navn: String, +) { TRUKKET("Trukket KA"), RETUR("Retur KA"), OPPHEVET("Opphevet KA"), diff --git a/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/modell/KlageOversendelse.kt b/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/modell/KlageOversendelse.kt index 86c37d7ce43..9e3480221c0 100644 --- a/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/modell/KlageOversendelse.kt +++ b/apps/etterlatte-klage/src/main/kotlin/no/nav/etterlatte/klage/modell/KlageOversendelse.kt @@ -43,16 +43,13 @@ data class KabalFagsak( val fagsystem: Fagsystem, ) -fun SakType.tilYtelse(): Ytelse { - return when (this) { +fun SakType.tilYtelse(): Ytelse = + when (this) { SakType.BARNEPENSJON -> Ytelse.PEN_BAR SakType.OMSTILLINGSSTOENAD -> Ytelse.PEN_GJE } -} -fun KabalHjemmel.tilHjemmel(): Hjemmel { - return enumValueOf(this.name) -} +fun KabalHjemmel.tilHjemmel(): Hjemmel = enumValueOf(this.name) /** * Har det subsettet av datamodellen for ovesendelse til Kabal som vi kommer til å bruke diff --git a/apps/etterlatte-migrering/src/main/kotlin/Application.kt b/apps/etterlatte-migrering/src/main/kotlin/Application.kt index 20e7d3cfdb5..215d1a2a2ae 100644 --- a/apps/etterlatte-migrering/src/main/kotlin/Application.kt +++ b/apps/etterlatte-migrering/src/main/kotlin/Application.kt @@ -16,7 +16,9 @@ import no.nav.helse.rapids_rivers.RapidApplication fun main() = ApplicationContext().let { Server(it).run() } -internal class Server(private val context: ApplicationContext) { +internal class Server( + private val context: ApplicationContext, +) { init { sikkerLoggOppstartOgAvslutning("etterlatte-migrering") } @@ -26,7 +28,8 @@ internal class Server(private val context: ApplicationContext) { dataSource.migrate() val rapidEnv = getRapidEnv() - RapidApplication.Builder(RapidApplication.RapidApplicationConfig.fromEnv(rapidEnv)) + RapidApplication + .Builder(RapidApplication.RapidApplicationConfig.fromEnv(rapidEnv)) .withKtorModule { restModule( sikkerLogg = sikkerlogger(), @@ -34,8 +37,7 @@ internal class Server(private val context: ApplicationContext) { ) { migreringRoute(pesysRepository) } - } - .build() + }.build() .also { rapidsConnection -> LyttPaaIverksattVedtakRiver(rapidsConnection, pesysRepository, penklient, featureToggleService) LyttPaaDistribuerBrevRiver(rapidsConnection, pesysRepository) diff --git a/apps/etterlatte-migrering/src/main/kotlin/migrering/FeilendeMigreringLytterRiver.kt b/apps/etterlatte-migrering/src/main/kotlin/migrering/FeilendeMigreringLytterRiver.kt index cc0fb2d01b3..48253cd5d9c 100644 --- a/apps/etterlatte-migrering/src/main/kotlin/migrering/FeilendeMigreringLytterRiver.kt +++ b/apps/etterlatte-migrering/src/main/kotlin/migrering/FeilendeMigreringLytterRiver.kt @@ -25,8 +25,10 @@ import no.nav.helse.rapids_rivers.toUUID import org.slf4j.LoggerFactory import java.util.UUID -internal class FeilendeMigreringLytterRiver(rapidsConnection: RapidsConnection, private val repository: PesysRepository) : - ListenerMedLogging() { +internal class FeilendeMigreringLytterRiver( + rapidsConnection: RapidsConnection, + private val repository: PesysRepository, +) : ListenerMedLogging() { private val logger = LoggerFactory.getLogger(this::class.java) init { @@ -93,7 +95,8 @@ internal class FeilendeMigreringLytterRiver(rapidsConnection: RapidsConnection, repository.hentPesysId(packet.behandlingId)!!.let { Pair(it.pesysId, it.behandlingId) } } else if (packet.harVerdi("vedtak.behandlingId")) { val id = packet["vedtak.behandlingId"].asText().toUUID() - repository.hentPesysId(id) + repository + .hentPesysId(id) ?.let { Pair(it.pesysId, it.behandlingId) } ?: Pair(null, id).also { logger.warn("Mangler pesys-identifikator for behandling $id") } } else { diff --git a/apps/etterlatte-migrering/src/main/kotlin/migrering/PesysRepository.kt b/apps/etterlatte-migrering/src/main/kotlin/migrering/PesysRepository.kt index 0dc3976714e..b45151fd07f 100644 --- a/apps/etterlatte-migrering/src/main/kotlin/migrering/PesysRepository.kt +++ b/apps/etterlatte-migrering/src/main/kotlin/migrering/PesysRepository.kt @@ -20,12 +20,13 @@ data class Pesyskopling( val sakId: Long, ) -internal class PesysRepository(private val dataSource: DataSource) : Transactions { - override fun inTransaction(block: PesysRepository.(TransactionalSession) -> R): R { - return dataSource.transaction { +internal class PesysRepository( + private val dataSource: DataSource, +) : Transactions { + override fun inTransaction(block: PesysRepository.(TransactionalSession) -> R): R = + dataSource.transaction { this.block(it) } - } fun lagreManuellMigrering( pesysId: Long, diff --git a/apps/etterlatte-migrering/src/main/kotlin/migrering/pen/PenKlient.kt b/apps/etterlatte-migrering/src/main/kotlin/migrering/pen/PenKlient.kt index 0ae369e2bb2..2c4e32aec9b 100644 --- a/apps/etterlatte-migrering/src/main/kotlin/migrering/pen/PenKlient.kt +++ b/apps/etterlatte-migrering/src/main/kotlin/migrering/pen/PenKlient.kt @@ -10,7 +10,10 @@ import no.nav.etterlatte.libs.ktor.token.Systembruker import no.nav.etterlatte.rapidsandrivers.migrering.PesysId import org.slf4j.LoggerFactory -class PenKlient(config: Config, pen: HttpClient) { +class PenKlient( + config: Config, + pen: HttpClient, +) { private val logger = LoggerFactory.getLogger(this::class.java) private val azureAdClient = AzureAdClient(config) private val downstreamResourceClient = DownstreamResourceClient(azureAdClient, pen) @@ -29,8 +32,7 @@ class PenKlient(config: Config, pen: HttpClient) { ), brukerTokenInfo = Systembruker.migrering, postBody = {}, - ) - .mapBoth( + ).mapBoth( success = { logger.info("Opphørte sak $pesysId mot PEN") }, failure = { errorResponse -> throw errorResponse }, ) diff --git a/apps/etterlatte-migrering/src/main/kotlin/migrering/start/MigreringFeatureToggle.kt b/apps/etterlatte-migrering/src/main/kotlin/migrering/start/MigreringFeatureToggle.kt index 3382a0a6d82..315fba534f7 100644 --- a/apps/etterlatte-migrering/src/main/kotlin/migrering/start/MigreringFeatureToggle.kt +++ b/apps/etterlatte-migrering/src/main/kotlin/migrering/start/MigreringFeatureToggle.kt @@ -2,7 +2,9 @@ package no.nav.etterlatte.migrering.start import no.nav.etterlatte.funksjonsbrytere.FeatureToggle -enum class MigreringFeatureToggle(private val key: String) : FeatureToggle { +enum class MigreringFeatureToggle( + private val key: String, +) : FeatureToggle { OpphoerSakIPesys("opphoer-sak-i-pesys"), ; diff --git a/apps/etterlatte-migrering/src/test/kotlin/migrering/LyttPaaIverksattVedtakRiverTest.kt b/apps/etterlatte-migrering/src/test/kotlin/migrering/LyttPaaIverksattVedtakRiverTest.kt index 444e8dce776..ffee40cbbb1 100644 --- a/apps/etterlatte-migrering/src/test/kotlin/migrering/LyttPaaIverksattVedtakRiverTest.kt +++ b/apps/etterlatte-migrering/src/test/kotlin/migrering/LyttPaaIverksattVedtakRiverTest.kt @@ -25,7 +25,9 @@ import java.util.UUID import javax.sql.DataSource @ExtendWith(DatabaseExtension::class) -class LyttPaaIverksattVedtakRiverTest(private val datasource: DataSource) { +class LyttPaaIverksattVedtakRiverTest( + private val datasource: DataSource, +) { @Test fun `sender opphoersmelding til PEN ved godkjent utbetaling`() { testApplication { @@ -52,16 +54,17 @@ class LyttPaaIverksattVedtakRiverTest(private val datasource: DataSource) { featureToggleService = featureToggleService, ) }.sendTestMessage( - JsonMessage.newMessage( - mapOf( - UtbetalinghendelseType.OPPDATERT.lagParMedEventNameKey(), - UTBETALING_RESPONSE to - UtbetalingResponseDto( - status = UtbetalingStatusDto.GODKJENT, - behandlingId = behandlingId, - ), - ), - ).toJson(), + JsonMessage + .newMessage( + mapOf( + UtbetalinghendelseType.OPPDATERT.lagParMedEventNameKey(), + UTBETALING_RESPONSE to + UtbetalingResponseDto( + status = UtbetalingStatusDto.GODKJENT, + behandlingId = behandlingId, + ), + ), + ).toJson(), ) verify { runBlocking { penKlient.opphoerSak(pesysid) } } @@ -94,16 +97,17 @@ class LyttPaaIverksattVedtakRiverTest(private val datasource: DataSource) { featureToggleService, ) }.sendTestMessage( - JsonMessage.newMessage( - mapOf( - UtbetalinghendelseType.OPPDATERT.lagParMedEventNameKey(), - UTBETALING_RESPONSE to - UtbetalingResponseDto( - status = UtbetalingStatusDto.AVVIST, - behandlingId = behandlingId, - ), - ), - ).toJson(), + JsonMessage + .newMessage( + mapOf( + UtbetalinghendelseType.OPPDATERT.lagParMedEventNameKey(), + UTBETALING_RESPONSE to + UtbetalingResponseDto( + status = UtbetalingStatusDto.AVVIST, + behandlingId = behandlingId, + ), + ), + ).toJson(), ) verify(exactly = 0) { runBlocking { penKlient.opphoerSak(any()) } } diff --git a/apps/etterlatte-oppdater-behandling/src/main/kotlin/AppBuilder.kt b/apps/etterlatte-oppdater-behandling/src/main/kotlin/AppBuilder.kt index 198bc376f52..e8e88cf0dde 100644 --- a/apps/etterlatte-oppdater-behandling/src/main/kotlin/AppBuilder.kt +++ b/apps/etterlatte-oppdater-behandling/src/main/kotlin/AppBuilder.kt @@ -9,7 +9,9 @@ import no.nav.etterlatte.funksjonsbrytere.FeatureToggleService import no.nav.etterlatte.libs.common.Miljoevariabler import no.nav.etterlatte.libs.ktor.httpClientClientCredentials -class AppBuilder(props: Miljoevariabler) { +class AppBuilder( + props: Miljoevariabler, +) { val behandlingService: BehandlingService by lazy { BehandlingServiceImpl( behandlingApp, diff --git a/apps/etterlatte-oppdater-behandling/src/main/kotlin/Application.kt b/apps/etterlatte-oppdater-behandling/src/main/kotlin/Application.kt index ffb454a4cd1..c29a5bf2e88 100644 --- a/apps/etterlatte-oppdater-behandling/src/main/kotlin/Application.kt +++ b/apps/etterlatte-oppdater-behandling/src/main/kotlin/Application.kt @@ -14,9 +14,11 @@ import no.nav.helse.rapids_rivers.RapidsConnection fun main() { val rapidEnv = getRapidEnv() val appBuilder = AppBuilder(Miljoevariabler(rapidEnv)) - RapidApplication.create(rapidEnv).also { rapidsConnection -> - settOppRivers(rapidsConnection, appBuilder) - }.start() + RapidApplication + .create(rapidEnv) + .also { rapidsConnection -> + settOppRivers(rapidsConnection, appBuilder) + }.start() } private fun settOppRivers( diff --git a/apps/etterlatte-oppdater-behandling/src/main/kotlin/BehandlingService.kt b/apps/etterlatte-oppdater-behandling/src/main/kotlin/BehandlingService.kt index 176a3d3ec47..4f2e3bdafeb 100644 --- a/apps/etterlatte-oppdater-behandling/src/main/kotlin/BehandlingService.kt +++ b/apps/etterlatte-oppdater-behandling/src/main/kotlin/BehandlingService.kt @@ -179,23 +179,23 @@ class BehandlingServiceImpl( } } - override fun opprettOmregning(omregningshendelse: Omregningshendelse): OpprettOmregningResponse { - return runBlocking { - behandlingKlient.post("$url/omregning") { - contentType(ContentType.Application.Json) - setBody(omregningshendelse) - }.body() + override fun opprettOmregning(omregningshendelse: Omregningshendelse): OpprettOmregningResponse = + runBlocking { + behandlingKlient + .post("$url/omregning") { + contentType(ContentType.Application.Json) + setBody(omregningshendelse) + }.body() } - } - override fun migrerAlleTempBehandlingerTilbakeTilTrygdetidOppdatert(saker: Saker): SakIDListe { - return runBlocking { - behandlingKlient.post("$url/behandlinger/settTilbakeTilTrygdetidOppdatert") { - contentType(ContentType.Application.Json) - setBody(saker) - }.body() + override fun migrerAlleTempBehandlingerTilbakeTilTrygdetidOppdatert(saker: Saker): SakIDListe = + runBlocking { + behandlingKlient + .post("$url/behandlinger/settTilbakeTilTrygdetidOppdatert") { + contentType(ContentType.Application.Json) + setBody(saker) + }.body() } - } override fun hentAlleSaker( kjoering: String, @@ -205,10 +205,11 @@ class BehandlingServiceImpl( sakType: SakType?, ): Saker = runBlocking { - behandlingKlient.post("$url/saker/$kjoering/$antall") { - contentType(ContentType.Application.Json) - setBody(HentSakerRequest(spesifikkeSaker, ekskluderteSaker, sakType)) - }.body() + behandlingKlient + .post("$url/saker/$kjoering/$antall") { + contentType(ContentType.Application.Json) + setBody(HentSakerRequest(spesifikkeSaker, ekskluderteSaker, sakType)) + }.body() } override fun avbryt(behandlingId: UUID) = @@ -222,10 +223,11 @@ class BehandlingServiceImpl( sakType: SakType, foedselsNummerDTO: FoedselsnummerDTO, ) = runBlocking { - behandlingKlient.post("$url/personer/saker/${sakType.name}") { - contentType(ContentType.Application.Json) - setBody(foedselsNummerDTO) - }.body() + behandlingKlient + .post("$url/personer/saker/${sakType.name}") { + contentType(ContentType.Application.Json) + setBody(foedselsNummerDTO) + }.body() } override fun hentBehandling(behandlingId: UUID): DetaljertBehandling = @@ -239,45 +241,46 @@ class BehandlingServiceImpl( referanse: String?, merknad: String?, frist: Tidspunkt?, - ): UUID { - return runBlocking { - behandlingKlient.post("$url/oppgaver/sak/$sakId/opprett") { - contentType(ContentType.Application.Json) - setBody( - NyOppgaveDto( - OppgaveKilde.HENDELSE, - oppgaveType, - merknad, - referanse, - frist, - ), - ) - }.body().let { - UUID.fromString(it["id"].textValue()) - } + ): UUID = + runBlocking { + behandlingKlient + .post("$url/oppgaver/sak/$sakId/opprett") { + contentType(ContentType.Application.Json) + setBody( + NyOppgaveDto( + OppgaveKilde.HENDELSE, + oppgaveType, + merknad, + referanse, + frist, + ), + ) + }.body() + .let { + UUID.fromString(it["id"].textValue()) + } } - } override fun opprettRevurderingAktivitetsplikt( sakId: Long, frist: Tidspunkt, behandlingsmaaned: YearMonth, jobbType: JobbType, - ): OpprettRevurderingForAktivitetspliktResponse { - return runBlocking { - behandlingKlient.post("$url/api/sak/$sakId/aktivitetsplikt/revurdering") { - contentType(ContentType.Application.Json) - setBody( - OpprettRevurderingForAktivitetspliktDto( - sakId = sakId, - frist = frist, - behandlingsmaaned = behandlingsmaaned, - jobbType = jobbType, - ), - ) - }.body() + ): OpprettRevurderingForAktivitetspliktResponse = + runBlocking { + behandlingKlient + .post("$url/api/sak/$sakId/aktivitetsplikt/revurdering") { + contentType(ContentType.Application.Json) + setBody( + OpprettRevurderingForAktivitetspliktDto( + sakId = sakId, + frist = frist, + behandlingsmaaned = behandlingsmaaned, + jobbType = jobbType, + ), + ) + }.body() } - } override fun leggInnBrevutfall(request: BrevutfallOgEtterbetalingDto) { runBlocking { diff --git a/apps/etterlatte-oppdater-behandling/src/main/kotlin/OppdaterDoedshendelseBrevDistribuert.kt b/apps/etterlatte-oppdater-behandling/src/main/kotlin/OppdaterDoedshendelseBrevDistribuert.kt index 95093c61ecf..f8eba757205 100644 --- a/apps/etterlatte-oppdater-behandling/src/main/kotlin/OppdaterDoedshendelseBrevDistribuert.kt +++ b/apps/etterlatte-oppdater-behandling/src/main/kotlin/OppdaterDoedshendelseBrevDistribuert.kt @@ -16,8 +16,10 @@ import no.nav.helse.rapids_rivers.MessageContext import no.nav.helse.rapids_rivers.RapidsConnection import org.slf4j.LoggerFactory -class OppdaterDoedshendelseException(override val detail: String, override val cause: Throwable?) : - InternfeilException(detail, cause) +class OppdaterDoedshendelseException( + override val detail: String, + override val cause: Throwable?, +) : InternfeilException(detail, cause) internal class OppdaterDoedshendelseBrevDistribuert( rapidsConnection: RapidsConnection, diff --git a/apps/etterlatte-oppdater-behandling/src/main/kotlin/OpprettBrevRiver.kt b/apps/etterlatte-oppdater-behandling/src/main/kotlin/OpprettBrevRiver.kt index cbc0410ffb7..8deb4d92917 100644 --- a/apps/etterlatte-oppdater-behandling/src/main/kotlin/OpprettBrevRiver.kt +++ b/apps/etterlatte-oppdater-behandling/src/main/kotlin/OpprettBrevRiver.kt @@ -61,7 +61,9 @@ internal class OpprettBrevRiver( } } -enum class InformasjonsbrevFeatureToggle(private val key: String) : FeatureToggle { +enum class InformasjonsbrevFeatureToggle( + private val key: String, +) : FeatureToggle { SendInformasjonsbrev("send-informasjonsbrev"), ; diff --git a/apps/etterlatte-oppdater-behandling/src/main/kotlin/TidshendelsePacket.kt b/apps/etterlatte-oppdater-behandling/src/main/kotlin/TidshendelsePacket.kt index b2937b85dcc..42d232466bb 100644 --- a/apps/etterlatte-oppdater-behandling/src/main/kotlin/TidshendelsePacket.kt +++ b/apps/etterlatte-oppdater-behandling/src/main/kotlin/TidshendelsePacket.kt @@ -10,7 +10,9 @@ import no.nav.etterlatte.rapidsandrivers.sakId import no.nav.helse.rapids_rivers.JsonMessage import java.time.YearMonth -class TidshendelsePacket(packet: JsonMessage) { +class TidshendelsePacket( + packet: JsonMessage, +) { val sakId = packet.sakId val behandlingsmaaned: YearMonth = packet.dato.let { YearMonth.of(it.year, it.month) } val harLoependeYtelse = packet[HENDELSE_DATA_KEY]["loependeYtelse"]?.asBoolean() == true diff --git a/apps/etterlatte-oppdater-behandling/src/main/kotlin/TidshendelseService.kt b/apps/etterlatte-oppdater-behandling/src/main/kotlin/TidshendelseService.kt index 9f04d08f73c..b7a2a2caa57 100644 --- a/apps/etterlatte-oppdater-behandling/src/main/kotlin/TidshendelseService.kt +++ b/apps/etterlatte-oppdater-behandling/src/main/kotlin/TidshendelseService.kt @@ -25,7 +25,9 @@ class TidshendelseService( ) { private val logger = LoggerFactory.getLogger(TidshendelseService::class.java) - enum class TidshendelserJobbType(val beskrivelse: String) { + enum class TidshendelserJobbType( + val beskrivelse: String, + ) { AO_BP20("Aldersovergang v/20 år"), AO_BP21("Aldersovergang v/21 år"), AO_OMS67("Aldersovergang v/67 år"), @@ -165,11 +167,18 @@ class TidshendelseService( } sealed class TidshendelseResult { - data class OpprettetOppgave(val opprettetOppgaveId: UUID) : TidshendelseResult() + data class OpprettetOppgave( + val opprettetOppgaveId: UUID, + ) : TidshendelseResult() - data class OpprettetOmregning(val behandlingId: UUID, val forrigeBehandlingId: UUID) : TidshendelseResult() + data class OpprettetOmregning( + val behandlingId: UUID, + val forrigeBehandlingId: UUID, + ) : TidshendelseResult() - data class OpprettRevurderingForAktivitetsplikt(val behandlingId: UUID) : TidshendelseResult() + data class OpprettRevurderingForAktivitetsplikt( + val behandlingId: UUID, + ) : TidshendelseResult() data object Skipped : TidshendelseResult() } diff --git a/apps/etterlatte-oppdater-behandling/src/main/kotlin/migrering/AvbrytBehandlingHvisMigreringFeilaRiver.kt b/apps/etterlatte-oppdater-behandling/src/main/kotlin/migrering/AvbrytBehandlingHvisMigreringFeilaRiver.kt index 85b376400a5..718b792eaa1 100644 --- a/apps/etterlatte-oppdater-behandling/src/main/kotlin/migrering/AvbrytBehandlingHvisMigreringFeilaRiver.kt +++ b/apps/etterlatte-oppdater-behandling/src/main/kotlin/migrering/AvbrytBehandlingHvisMigreringFeilaRiver.kt @@ -14,8 +14,7 @@ import org.slf4j.LoggerFactory internal class AvbrytBehandlingHvisMigreringFeilaRiver( rapidsConnection: RapidsConnection, private val behandlingService: BehandlingService, -) : - ListenerMedLoggingOgFeilhaandtering() { +) : ListenerMedLoggingOgFeilhaandtering() { private val logger = LoggerFactory.getLogger(this::class.java) init { diff --git a/apps/etterlatte-oppdater-behandling/src/main/kotlin/regulering/OmregningsHendelserBehandlingRiver.kt b/apps/etterlatte-oppdater-behandling/src/main/kotlin/regulering/OmregningsHendelserBehandlingRiver.kt index 686abd8f8df..75a37802e57 100644 --- a/apps/etterlatte-oppdater-behandling/src/main/kotlin/regulering/OmregningsHendelserBehandlingRiver.kt +++ b/apps/etterlatte-oppdater-behandling/src/main/kotlin/regulering/OmregningsHendelserBehandlingRiver.kt @@ -17,8 +17,10 @@ import no.nav.helse.rapids_rivers.MessageContext import no.nav.helse.rapids_rivers.RapidsConnection import org.slf4j.LoggerFactory -internal class OmregningsHendelserBehandlingRiver(rapidsConnection: RapidsConnection, private val behandlinger: BehandlingService) : - ListenerMedLoggingOgFeilhaandtering() { +internal class OmregningsHendelserBehandlingRiver( + rapidsConnection: RapidsConnection, + private val behandlinger: BehandlingService, +) : ListenerMedLoggingOgFeilhaandtering() { private val logger = LoggerFactory.getLogger(this::class.java) init { diff --git a/apps/etterlatte-oppdater-behandling/src/main/kotlin/regulering/ReguleringsforespoerselRiver.kt b/apps/etterlatte-oppdater-behandling/src/main/kotlin/regulering/ReguleringsforespoerselRiver.kt index 762ef691229..9701a545d06 100644 --- a/apps/etterlatte-oppdater-behandling/src/main/kotlin/regulering/ReguleringsforespoerselRiver.kt +++ b/apps/etterlatte-oppdater-behandling/src/main/kotlin/regulering/ReguleringsforespoerselRiver.kt @@ -79,7 +79,8 @@ internal class ReguleringsforespoerselRiver( } val sakListe = - behandlingService.migrerAlleTempBehandlingerTilbakeTilTrygdetidOppdatert(sakerTilOmregning) + behandlingService + .migrerAlleTempBehandlingerTilbakeTilTrygdetidOppdatert(sakerTilOmregning) .also { sakIdListe -> logger.info( "Tilbakeført ${sakIdListe.tilbakestileBehandlinger.size} behandlinger til trygdetid oppdatert:\n" + @@ -109,19 +110,20 @@ internal class ReguleringsforespoerselRiver( } } - private fun JsonMessage.optionalSakType(): SakType? { - return when (val node = this[SAK_TYPE]) { + private fun JsonMessage.optionalSakType(): SakType? = + when (val node = this[SAK_TYPE]) { is MissingNode -> null else -> SakType.valueOf(node.asText()) } - } companion object { const val MAKS_BATCHSTOERRELSE = 100 } } -enum class ReguleringFeatureToggle(private val key: String) : FeatureToggle { +enum class ReguleringFeatureToggle( + private val key: String, +) : FeatureToggle { START_REGULERING("start-regulering"), ; diff --git a/apps/etterlatte-oppdater-behandling/src/test/kotlin/no/nav/etterlatte/OpprettBrevRiverTest.kt b/apps/etterlatte-oppdater-behandling/src/test/kotlin/no/nav/etterlatte/OpprettBrevRiverTest.kt index d0cc4e20b54..ec59406c536 100644 --- a/apps/etterlatte-oppdater-behandling/src/test/kotlin/no/nav/etterlatte/OpprettBrevRiverTest.kt +++ b/apps/etterlatte-oppdater-behandling/src/test/kotlin/no/nav/etterlatte/OpprettBrevRiverTest.kt @@ -29,13 +29,14 @@ class OpprettBrevRiverTest { } val testRapid = TestRapid().apply { OpprettBrevRiver(this, behandlingService, featureToggleService()) } testRapid.sendTestMessage( - JsonMessage.newMessage( - mapOf( - BrevRequestHendelseType.OPPRETT_BREV.lagParMedEventNameKey(), - FNR_KEY to "123", - SAK_TYPE_KEY to SakType.BARNEPENSJON.name, - ), - ).toJson(), + JsonMessage + .newMessage( + mapOf( + BrevRequestHendelseType.OPPRETT_BREV.lagParMedEventNameKey(), + FNR_KEY to "123", + SAK_TYPE_KEY to SakType.BARNEPENSJON.name, + ), + ).toJson(), ) assertEquals(1, testRapid.inspektør.size) with(testRapid.inspektør.message(0)) { @@ -53,13 +54,14 @@ class OpprettBrevRiverTest { val testRapid = TestRapid().apply { OpprettBrevRiver(this, behandlingService, featureToggleService()) } val behandlingId = UUID.randomUUID() testRapid.sendTestMessage( - JsonMessage.newMessage( - mapOf( - BrevRequestHendelseType.OPPRETT_BREV.lagParMedEventNameKey(), - BEHANDLING_ID_KEY to behandlingId, - SAK_TYPE_KEY to SakType.BARNEPENSJON.name, - ), - ).toJson(), + JsonMessage + .newMessage( + mapOf( + BrevRequestHendelseType.OPPRETT_BREV.lagParMedEventNameKey(), + BEHANDLING_ID_KEY to behandlingId, + SAK_TYPE_KEY to SakType.BARNEPENSJON.name, + ), + ).toJson(), ) assertEquals(1, testRapid.inspektør.size) with(testRapid.inspektør.message(0)) { diff --git a/apps/etterlatte-oppdater-behandling/src/test/kotlin/regulering/OmregningsHendelserBehandlingRiverTest.kt b/apps/etterlatte-oppdater-behandling/src/test/kotlin/regulering/OmregningsHendelserBehandlingRiverTest.kt index b9df4bb784f..1358bdabe87 100644 --- a/apps/etterlatte-oppdater-behandling/src/test/kotlin/regulering/OmregningsHendelserBehandlingRiverTest.kt +++ b/apps/etterlatte-oppdater-behandling/src/test/kotlin/regulering/OmregningsHendelserBehandlingRiverTest.kt @@ -34,7 +34,13 @@ internal class OmregningsHendelserBehandlingRiverTest { Assertions.assertEquals(1, omregningshendelseSlot.captured.sakId) Assertions.assertEquals(2, inspector.inspektør.size) - Assertions.assertEquals(behandlingId.toString(), inspector.inspektør.message(1).get(BEHANDLING_ID_KEY).asText()) + Assertions.assertEquals( + behandlingId.toString(), + inspector.inspektør + .message(1) + .get(BEHANDLING_ID_KEY) + .asText(), + ) } companion object { diff --git a/apps/etterlatte-oppdater-behandling/src/test/kotlin/regulering/ReguleringsforespoerselRiverTest.kt b/apps/etterlatte-oppdater-behandling/src/test/kotlin/regulering/ReguleringsforespoerselRiverTest.kt index a7083848f23..93064f6406a 100644 --- a/apps/etterlatte-oppdater-behandling/src/test/kotlin/regulering/ReguleringsforespoerselRiverTest.kt +++ b/apps/etterlatte-oppdater-behandling/src/test/kotlin/regulering/ReguleringsforespoerselRiverTest.kt @@ -90,9 +90,18 @@ internal class ReguleringsforespoerselRiverTest { for (i in 0 until inspector.inspektør.size) { Assertions.assertEquals( ReguleringHendelseType.SAK_FUNNET.lagEventnameForType(), - inspector.inspektør.message(i).get(EVENT_NAME_KEY).asText(), + inspector.inspektør + .message(i) + .get(EVENT_NAME_KEY) + .asText(), + ) + Assertions.assertEquals( + foersteMai2023.toString(), + inspector.inspektør + .message(i) + .get(DATO_KEY) + .asText(), ) - Assertions.assertEquals(foersteMai2023.toString(), inspector.inspektør.message(i).get(DATO_KEY).asText()) } } diff --git a/apps/etterlatte-opplysninger-fra-soeknad/src/main/kotlin/Application.kt b/apps/etterlatte-opplysninger-fra-soeknad/src/main/kotlin/Application.kt index aaac4a39171..4f803065ef6 100644 --- a/apps/etterlatte-opplysninger-fra-soeknad/src/main/kotlin/Application.kt +++ b/apps/etterlatte-opplysninger-fra-soeknad/src/main/kotlin/Application.kt @@ -6,9 +6,9 @@ import no.nav.etterlatte.rapidsandrivers.getRapidEnv import no.nav.helse.rapids_rivers.RapidApplication fun main() { - RapidApplication.create(getRapidEnv()) + RapidApplication + .create(getRapidEnv()) .also { rapidsConnection -> StartUthentingFraSoeknadRiver(rapidsConnection, Opplysningsuthenter()) - } - .start() + }.start() } diff --git a/apps/etterlatte-opplysninger-fra-soeknad/src/main/kotlin/no/nav/etterlatte/opplysningerfrasoknad/opplysningsuthenter/BarnepensjonUthenter.kt b/apps/etterlatte-opplysninger-fra-soeknad/src/main/kotlin/no/nav/etterlatte/opplysningerfrasoknad/opplysningsuthenter/BarnepensjonUthenter.kt index 70adac7ee67..6f4877b0c47 100644 --- a/apps/etterlatte-opplysninger-fra-soeknad/src/main/kotlin/no/nav/etterlatte/opplysningerfrasoknad/opplysningsuthenter/BarnepensjonUthenter.kt +++ b/apps/etterlatte-opplysninger-fra-soeknad/src/main/kotlin/no/nav/etterlatte/opplysningerfrasoknad/opplysningsuthenter/BarnepensjonUthenter.kt @@ -48,8 +48,14 @@ internal object BarnepensjonUthenter { opplysning = Utenlandsadresse( it.svar.verdi, - it.opplysning?.land?.svar?.innhold, - it.opplysning?.adresse?.svar?.innhold, + it.opplysning + ?.land + ?.svar + ?.innhold, + it.opplysning + ?.adresse + ?.svar + ?.innhold, ), periode = null, ) @@ -73,7 +79,13 @@ internal object BarnepensjonUthenter { ), periode = it.fraDato?.svar?.innhold?.let { fom -> - Periode(YearMonth.from(fom), it.tilDato?.svar?.innhold?.let { tom -> YearMonth.from(tom) }) + Periode( + YearMonth.from(fom), + it.tilDato + ?.svar + ?.innhold + ?.let { tom -> YearMonth.from(tom) }, + ) }, ) } @@ -113,8 +125,8 @@ internal object BarnepensjonUthenter { barnepensjon: Barnepensjon, opplysningsType: Opplysningstype, data: T, - ): Grunnlagsopplysning { - return Grunnlagsopplysning( + ): Grunnlagsopplysning = + Grunnlagsopplysning( UUID.randomUUID(), Grunnlagsopplysning.Privatperson( barnepensjon.innsender.foedselsnummer.svar.value, @@ -124,29 +136,29 @@ internal object BarnepensjonUthenter { objectMapper.createObjectNode(), data, ) - } - private fun hentAvdoedForelder(barnepensjon: Barnepensjon): Avdoed? { - return barnepensjon.foreldre.find { it.type === PersonType.AVDOED }?.let { it as Avdoed } - } + private fun hentAvdoedForelder(barnepensjon: Barnepensjon): Avdoed? = + barnepensjon.foreldre + .find { + it.type === PersonType.AVDOED + }?.let { it as Avdoed } - private fun hentGjenlevendeForelder(barnepensjon: Barnepensjon): GjenlevendeForelder? { - return barnepensjon.foreldre.find { it.type === PersonType.GJENLEVENDE_FORELDER } + private fun hentGjenlevendeForelder(barnepensjon: Barnepensjon): GjenlevendeForelder? = + barnepensjon.foreldre + .find { it.type === PersonType.GJENLEVENDE_FORELDER } ?.let { it as GjenlevendeForelder } - } private fun avdoed( barnepensjon: Barnepensjon, opplysningsType: Opplysningstype, - ): Grunnlagsopplysning? { - return hentAvdoedForelder(barnepensjon)?.let { avdoed -> + ): Grunnlagsopplysning? = + hentAvdoedForelder(barnepensjon)?.let { avdoed -> setBehandlingsopplysninger( barnepensjon, opplysningsType, avdoedOpplysning(avdoed), ) } - } private fun soeker( barnepensjon: Barnepensjon, @@ -161,13 +173,23 @@ internal object BarnepensjonUthenter { type = PersonType.BARN, fornavn = barnepensjon.soeker.fornavn.svar, etternavn = barnepensjon.soeker.etternavn.svar, - foedselsnummer = barnepensjon.soeker.foedselsnummer.svar.toFolkeregisteridentifikator(), + foedselsnummer = + barnepensjon.soeker.foedselsnummer.svar + .toFolkeregisteridentifikator(), statsborgerskap = barnepensjon.soeker.statsborgerskap.svar, utenlandsadresse = UtenlandsadresseBarn( adresse?.svar?.verdi, - adresse?.opplysning?.land?.svar?.innhold, - adresse?.opplysning?.adresse?.svar?.innhold, + adresse + ?.opplysning + ?.land + ?.svar + ?.innhold, + adresse + ?.opplysning + ?.adresse + ?.svar + ?.innhold, ), foreldre = barnepensjon.soeker.foreldre.map { @@ -180,12 +202,27 @@ internal object BarnepensjonUthenter { }, verge = Verge( - barnepensjon.soeker.verge?.svar?.verdi, - barnepensjon.soeker.verge?.opplysning?.fornavn?.svar, - barnepensjon.soeker.verge?.opplysning?.etternavn?.svar, - barnepensjon.soeker.verge?.opplysning?.foedselsnummer?.svar?.toFolkeregisteridentifikator(), + barnepensjon.soeker.verge + ?.svar + ?.verdi, + barnepensjon.soeker.verge + ?.opplysning + ?.fornavn + ?.svar, + barnepensjon.soeker.verge + ?.opplysning + ?.etternavn + ?.svar, + barnepensjon.soeker.verge + ?.opplysning + ?.foedselsnummer + ?.svar + ?.toFolkeregisteridentifikator(), ), - omsorgPerson = barnepensjon.soeker.dagligOmsorg?.svar?.verdi, + omsorgPerson = + barnepensjon.soeker.dagligOmsorg + ?.svar + ?.verdi, ), ) } @@ -193,8 +230,8 @@ internal object BarnepensjonUthenter { private fun gjenlevendeForelder( barnepensjon: Barnepensjon, opplysningsType: Opplysningstype, - ): Grunnlagsopplysning? { - return hentGjenlevendeForelder(barnepensjon)?.let { forelder -> + ): Grunnlagsopplysning? = + hentGjenlevendeForelder(barnepensjon)?.let { forelder -> setBehandlingsopplysninger( barnepensjon, opplysningsType, @@ -209,30 +246,28 @@ internal object BarnepensjonUthenter { ), ) } - } fun innsender( barnepensjon: Barnepensjon, opplysningsType: Opplysningstype, - ): Grunnlagsopplysning { - return setBehandlingsopplysninger( + ): Grunnlagsopplysning = + setBehandlingsopplysninger( barnepensjon, opplysningsType, InnsenderSoeknad( PersonType.INNSENDER, barnepensjon.innsender.fornavn.svar, barnepensjon.innsender.etternavn.svar, - barnepensjon.innsender.foedselsnummer.svar.toFolkeregisteridentifikator(), + barnepensjon.innsender.foedselsnummer.svar + .toFolkeregisteridentifikator(), ), ) - } fun samtykke( barnepensjon: Barnepensjon, opplysningsType: Opplysningstype, - ): Grunnlagsopplysning { - return setBehandlingsopplysninger(barnepensjon, opplysningsType, Samtykke(barnepensjon.harSamtykket.svar)) - } + ): Grunnlagsopplysning = + setBehandlingsopplysninger(barnepensjon, opplysningsType, Samtykke(barnepensjon.harSamtykket.svar)) fun spraak( barnepensjon: Barnepensjon, @@ -242,31 +277,28 @@ internal object BarnepensjonUthenter { fun utbetalingsinformasjon( barnepensjon: Barnepensjon, opplysningsType: Opplysningstype, - ): Grunnlagsopplysning? { - return barnepensjon.utbetalingsInformasjon?.let { + ): Grunnlagsopplysning? = + barnepensjon.utbetalingsInformasjon?.let { setBehandlingsopplysninger( barnepensjon, opplysningsType, utbetalingsinformasjonOpplysning(it), ) } - } private fun soeknadMottattDato( barnepensjon: Barnepensjon, opplysningsType: Opplysningstype, - ): Grunnlagsopplysning { - return setBehandlingsopplysninger( + ): Grunnlagsopplysning = + setBehandlingsopplysninger( barnepensjon, opplysningsType, SoeknadMottattDato(barnepensjon.mottattDato), ) - } private fun soeknadsType( barnepensjon: Barnepensjon, opplysningsType: Opplysningstype, - ): Grunnlagsopplysning { - return setBehandlingsopplysninger(barnepensjon, opplysningsType, SoeknadstypeOpplysning(barnepensjon.type)) - } + ): Grunnlagsopplysning = + setBehandlingsopplysninger(barnepensjon, opplysningsType, SoeknadstypeOpplysning(barnepensjon.type)) } diff --git a/apps/etterlatte-opplysninger-fra-soeknad/src/main/kotlin/no/nav/etterlatte/opplysningerfrasoknad/opplysningsuthenter/OmstillingsstoenadUthenter.kt b/apps/etterlatte-opplysninger-fra-soeknad/src/main/kotlin/no/nav/etterlatte/opplysningerfrasoknad/opplysningsuthenter/OmstillingsstoenadUthenter.kt index b3e3cb6167e..a8f33c8083d 100644 --- a/apps/etterlatte-opplysninger-fra-soeknad/src/main/kotlin/no/nav/etterlatte/opplysningerfrasoknad/opplysningsuthenter/OmstillingsstoenadUthenter.kt +++ b/apps/etterlatte-opplysninger-fra-soeknad/src/main/kotlin/no/nav/etterlatte/opplysningerfrasoknad/opplysningsuthenter/OmstillingsstoenadUthenter.kt @@ -42,12 +42,11 @@ internal object OmstillingsstoenadUthenter { return lagOpplysning(Opplysningstype.SOEKNAD_MOTTATT_DATO, kilde(soknad), opplysning, null) } - private fun kilde(soknad: Omstillingsstoenad): Grunnlagsopplysning.Kilde { - return Grunnlagsopplysning.Privatperson( + private fun kilde(soknad: Omstillingsstoenad): Grunnlagsopplysning.Kilde = + Grunnlagsopplysning.Privatperson( soknad.innsender.foedselsnummer.svar.value, soknad.mottattDato.toTidspunkt(), ) - } private fun avdoed(soknad: Omstillingsstoenad): Grunnlagsopplysning { val opplysning = avdoedOpplysning(soknad.avdoed) @@ -76,7 +75,8 @@ internal object OmstillingsstoenadUthenter { PersonType.INNSENDER, soknad.innsender.fornavn.svar, soknad.innsender.etternavn.svar, - soknad.innsender.foedselsnummer.svar.toFolkeregisteridentifikator(), + soknad.innsender.foedselsnummer.svar + .toFolkeregisteridentifikator(), ) return lagOpplysning(Opplysningstype.INNSENDER_SOEKNAD_V1, kilde(soknad), opplysning, null) } @@ -91,11 +91,9 @@ internal object OmstillingsstoenadUthenter { return lagOpplysning(Opplysningstype.SAMTYKKE, kilde(soknad), opplysning, null) } - private fun spraak(soknad: Omstillingsstoenad): Grunnlagsopplysning { - return lagOpplysning(Opplysningstype.SPRAAK, kilde(soknad), soknad.spraak, null) - } + private fun spraak(soknad: Omstillingsstoenad): Grunnlagsopplysning = + lagOpplysning(Opplysningstype.SPRAAK, kilde(soknad), soknad.spraak, null) - private fun soeknadsType(soknad: Omstillingsstoenad): Grunnlagsopplysning { - return lagOpplysning(Opplysningstype.SOEKNADSTYPE_V1, kilde(soknad), SoeknadstypeOpplysning(soknad.type), null) - } + private fun soeknadsType(soknad: Omstillingsstoenad): Grunnlagsopplysning = + lagOpplysning(Opplysningstype.SOEKNADSTYPE_V1, kilde(soknad), SoeknadstypeOpplysning(soknad.type), null) } diff --git a/apps/etterlatte-opplysninger-fra-soeknad/src/main/kotlin/no/nav/etterlatte/opplysningerfrasoknad/opplysningsuthenter/Opplysningsuthenter.kt b/apps/etterlatte-opplysninger-fra-soeknad/src/main/kotlin/no/nav/etterlatte/opplysningerfrasoknad/opplysningsuthenter/Opplysningsuthenter.kt index cf1a503655c..a9055d4579a 100644 --- a/apps/etterlatte-opplysninger-fra-soeknad/src/main/kotlin/no/nav/etterlatte/opplysningerfrasoknad/opplysningsuthenter/Opplysningsuthenter.kt +++ b/apps/etterlatte-opplysninger-fra-soeknad/src/main/kotlin/no/nav/etterlatte/opplysningerfrasoknad/opplysningsuthenter/Opplysningsuthenter.kt @@ -20,17 +20,16 @@ class Opplysningsuthenter { fun lagOpplysningsListe( jsonNode: JsonNode, type: SoeknadType, - ): List> { - return when (type) { + ): List> = + when (type) { SoeknadType.BARNEPENSJON -> BarnepensjonUthenter.lagOpplysningsListe(jsonNode) SoeknadType.OMSTILLINGSSTOENAD -> OmstillingsstoenadUthenter.lagOpplysningsListe(jsonNode) else -> throw Exception("Ugyldig SoeknadType") } - } } -internal fun avdoedOpplysning(avdoed: Avdoed): AvdoedSoeknad { - return AvdoedSoeknad( +internal fun avdoedOpplysning(avdoed: Avdoed): AvdoedSoeknad = + AvdoedSoeknad( type = PersonType.AVDOED, fornavn = avdoed.fornavn.svar, etternavn = avdoed.etternavn.svar, @@ -53,24 +52,55 @@ internal fun avdoedOpplysning(avdoed: Avdoed): AvdoedSoeknad { ), doedsaarsakSkyldesYrkesskadeEllerYrkessykdom = avdoed.doedsaarsakSkyldesYrkesskadeEllerYrkessykdom.svar.verdi, ) -} internal fun utbetalingsinformasjonOpplysning( betalingsinformasjon: BetingetOpplysning, UtbetalingsInformasjon>?, -): Utbetalingsinformasjon { - return Utbetalingsinformasjon( +): Utbetalingsinformasjon = + Utbetalingsinformasjon( betalingsinformasjon?.svar?.verdi, - betalingsinformasjon?.opplysning?.kontonummer?.svar?.innhold, - betalingsinformasjon?.opplysning?.utenlandskBankNavn?.svar?.innhold, - betalingsinformasjon?.opplysning?.utenlandskBankAdresse?.svar?.innhold, - betalingsinformasjon?.opplysning?.iban?.svar?.innhold, - betalingsinformasjon?.opplysning?.swift?.svar?.innhold, - betalingsinformasjon?.opplysning?.skattetrekk?.svar?.svar?.verdi, - betalingsinformasjon?.opplysning?.skattetrekk?.trekk?.svar?.innhold, - betalingsinformasjon?.opplysning?.skattetrekk?.beskrivelse?.svar?.innhold, + betalingsinformasjon + ?.opplysning + ?.kontonummer + ?.svar + ?.innhold, + betalingsinformasjon + ?.opplysning + ?.utenlandskBankNavn + ?.svar + ?.innhold, + betalingsinformasjon + ?.opplysning + ?.utenlandskBankAdresse + ?.svar + ?.innhold, + betalingsinformasjon + ?.opplysning + ?.iban + ?.svar + ?.innhold, + betalingsinformasjon + ?.opplysning + ?.swift + ?.svar + ?.innhold, + betalingsinformasjon + ?.opplysning + ?.skattetrekk + ?.svar + ?.svar + ?.verdi, + betalingsinformasjon + ?.opplysning + ?.skattetrekk + ?.trekk + ?.svar + ?.innhold, + betalingsinformasjon + ?.opplysning + ?.skattetrekk + ?.beskrivelse + ?.svar + ?.innhold, ) -} -internal fun Foedselsnummer.toFolkeregisteridentifikator(): Folkeregisteridentifikator { - return Folkeregisteridentifikator.of(this.value) -} +internal fun Foedselsnummer.toFolkeregisteridentifikator(): Folkeregisteridentifikator = Folkeregisteridentifikator.of(this.value) diff --git a/apps/etterlatte-opplysninger-fra-soeknad/src/test/kotlin/no/nav/etterlatte/opplysningerfrasoknad/OpplysningsuthenterBarnepensjonTest.kt b/apps/etterlatte-opplysninger-fra-soeknad/src/test/kotlin/no/nav/etterlatte/opplysningerfrasoknad/OpplysningsuthenterBarnepensjonTest.kt index 3a67a9b5d7c..7432d4b7468 100644 --- a/apps/etterlatte-opplysninger-fra-soeknad/src/test/kotlin/no/nav/etterlatte/opplysningerfrasoknad/OpplysningsuthenterBarnepensjonTest.kt +++ b/apps/etterlatte-opplysninger-fra-soeknad/src/test/kotlin/no/nav/etterlatte/opplysningerfrasoknad/OpplysningsuthenterBarnepensjonTest.kt @@ -159,7 +159,8 @@ internal class OpplysningsuthenterBarnepensjonTest { } private inline fun consumeSingle(opplysningType: Opplysningstype) = - opplysninger.filter { it.opplysningType == opplysningType } + opplysninger + .filter { it.opplysningType == opplysningType } .also { assertEquals(1, it.size) } .first() .let { diff --git a/apps/etterlatte-opplysninger-fra-soeknad/src/test/kotlin/no/nav/etterlatte/opplysningerfrasoknad/OpplysningsuthenterOmstillingsstoenadTest.kt b/apps/etterlatte-opplysninger-fra-soeknad/src/test/kotlin/no/nav/etterlatte/opplysningerfrasoknad/OpplysningsuthenterOmstillingsstoenadTest.kt index 90223721d6d..953d9103a72 100644 --- a/apps/etterlatte-opplysninger-fra-soeknad/src/test/kotlin/no/nav/etterlatte/opplysningerfrasoknad/OpplysningsuthenterOmstillingsstoenadTest.kt +++ b/apps/etterlatte-opplysninger-fra-soeknad/src/test/kotlin/no/nav/etterlatte/opplysningerfrasoknad/OpplysningsuthenterOmstillingsstoenadTest.kt @@ -118,7 +118,8 @@ internal class OpplysningsuthenterOmstillingsstoenadTest { } private inline fun consumeSingle(opplysningType: Opplysningstype) = - opplysninger.filter { it.opplysningType == opplysningType } + opplysninger + .filter { it.opplysningType == opplysningType } .also { assertEquals(1, it.size) } .first() .let { diff --git a/apps/etterlatte-pdltjenester/src/main/kotlin/Application.kt b/apps/etterlatte-pdltjenester/src/main/kotlin/Application.kt index 5aed8661efc..207be652cee 100644 --- a/apps/etterlatte-pdltjenester/src/main/kotlin/Application.kt +++ b/apps/etterlatte-pdltjenester/src/main/kotlin/Application.kt @@ -18,7 +18,9 @@ fun main() { Server(ApplicationContext(System.getenv())).run() } -class Server(applicationContext: ApplicationContext) { +class Server( + applicationContext: ApplicationContext, +) { init { sikkerLoggOppstartOgAvslutning("etterlatte-pdltjenester") } diff --git a/apps/etterlatte-pdltjenester/src/main/kotlin/config/ApplicationContext.kt b/apps/etterlatte-pdltjenester/src/main/kotlin/config/ApplicationContext.kt index 7f23794e492..341b0101561 100644 --- a/apps/etterlatte-pdltjenester/src/main/kotlin/config/ApplicationContext.kt +++ b/apps/etterlatte-pdltjenester/src/main/kotlin/config/ApplicationContext.kt @@ -12,7 +12,9 @@ import no.nav.etterlatte.pdl.PdlOboKlient import no.nav.etterlatte.person.PersonService import no.nav.etterlatte.personweb.PersonWebService -class ApplicationContext(env: Map) { +class ApplicationContext( + env: Map, +) { val config: Config = ConfigFactory.load() val httpPort = env.getOrDefault("HTTP_PORT", "8080").toInt() diff --git a/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/ParallelleSannheterKlient.kt b/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/ParallelleSannheterKlient.kt index 1cf07b30535..293d590aad4 100644 --- a/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/ParallelleSannheterKlient.kt +++ b/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/ParallelleSannheterKlient.kt @@ -20,7 +20,9 @@ import no.nav.etterlatte.sikkerLogg import org.slf4j.Logger import org.slf4j.LoggerFactory -class ParallelleSannheterException(override val message: String) : RuntimeException(message) +class ParallelleSannheterException( + override val message: String, +) : RuntimeException(message) class ParallelleSannheterKlient( val httpClient: HttpClient, @@ -102,10 +104,9 @@ class ParallelleSannheterKlient( private suspend inline fun avklar( list: List, avklaring: Avklaring, - ): T { - return avklarNullable(list, avklaring) + ): T = + avklarNullable(list, avklaring) ?: throw ParallelleSannheterException("Forventet verdi for feltet ${avklaring.feltnavn}, men var null") - } private suspend inline fun avklarNullable( list: List, @@ -120,10 +121,11 @@ class ParallelleSannheterKlient( logger.info("Felt av typen ${avklaring.feltnavn} har ${list.size} elementer, sjekker mot PPS") val responseAsJsonNode = retry { - httpClient.post("$apiUrl/api/${avklaring.feltnavn}") { - accept(Json) - setBody(TextContent(nodeWithFieldName.toJson(), Json)) - }.body() + httpClient + .post("$apiUrl/api/${avklaring.feltnavn}") { + accept(Json) + setBody(TextContent(nodeWithFieldName.toJson(), Json)) + }.body() }.let { when (it) { is RetryResult.Success -> it.content @@ -141,7 +143,9 @@ class ParallelleSannheterKlient( } } - private enum class Avklaring(val feltnavn: String) { + private enum class Avklaring( + val feltnavn: String, + ) { FOLKEREGISTERIDENTIFIKATOR("folkeregisteridentifikator"), NAVN("navn"), ADRESSEBESKYTTELSE("adressebeskyttelse"), @@ -160,7 +164,9 @@ class ParallelleSannheterKlient( } } -enum class NavnFeatureToggles(private val key: String) : FeatureToggle { +enum class NavnFeatureToggles( + private val key: String, +) : FeatureToggle { AksepterManglendeNavn("aksepter-manglende-navn"), ; diff --git a/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/PdlKlient.kt b/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/PdlKlient.kt index eb59b2bf2a9..8583e66c2a3 100644 --- a/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/PdlKlient.kt +++ b/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/PdlKlient.kt @@ -22,7 +22,10 @@ import no.nav.etterlatte.libs.ktor.behandlingsnummer import no.nav.etterlatte.utils.toPdlVariables import org.slf4j.LoggerFactory -class PdlKlient(private val httpClient: HttpClient, private val apiUrl: String) { +class PdlKlient( + private val httpClient: HttpClient, + private val apiUrl: String, +) { private val logger = LoggerFactory.getLogger(PdlKlient::class.java) suspend fun hentPerson(hentPersonRequest: HentPersonRequest): PdlPersonResponse { @@ -33,13 +36,14 @@ class PdlKlient(private val httpClient: HttpClient, private val apiUrl: String) ) return retry(times = 3) { - httpClient.post(apiUrl) { - behandlingsnummer(hentPersonRequest.saktyper) - header(HEADER_TEMA, HEADER_TEMA_VALUE) - accept(Json) - contentType(Json) - setBody(request) - }.body() + httpClient + .post(apiUrl) { + behandlingsnummer(hentPersonRequest.saktyper) + header(HEADER_TEMA, HEADER_TEMA_VALUE) + accept(Json) + contentType(Json) + setBody(request) + }.body() }.let { when (it) { is RetryResult.Success -> @@ -62,13 +66,14 @@ class PdlKlient(private val httpClient: HttpClient, private val apiUrl: String) ) return retry(times = 3) { - httpClient.post(apiUrl) { - behandlingsnummer(hentAdressebeskyttelseRequest.saktype) - header(HEADER_TEMA, HEADER_TEMA_VALUE) - accept(Json) - contentType(Json) - setBody(request) - }.body() + httpClient + .post(apiUrl) { + behandlingsnummer(hentAdressebeskyttelseRequest.saktype) + header(HEADER_TEMA, HEADER_TEMA_VALUE) + accept(Json) + contentType(Json) + setBody(request) + }.body() }.let { when (it) { is RetryResult.Success -> it.content @@ -88,13 +93,14 @@ class PdlKlient(private val httpClient: HttpClient, private val apiUrl: String) ) return retry(times = 3) { - httpClient.post(apiUrl) { - behandlingsnummer(SakType.BARNEPENSJON) - header(HEADER_TEMA, HEADER_TEMA_VALUE) - accept(Json) - contentType(Json) - setBody(request) - }.body() + httpClient + .post(apiUrl) { + behandlingsnummer(SakType.BARNEPENSJON) + header(HEADER_TEMA, HEADER_TEMA_VALUE) + accept(Json) + contentType(Json) + setBody(request) + }.body() }.let { when (it) { is RetryResult.Success -> it.content @@ -129,13 +135,14 @@ class PdlKlient(private val httpClient: HttpClient, private val apiUrl: String) logger.info("Bolkhenter personer med fnr=$fnr fra PDL") return retry { - httpClient.post(apiUrl) { - behandlingsnummer(saktyper) - header(HEADER_TEMA, HEADER_TEMA_VALUE) - accept(Json) - contentType(Json) - setBody(request) - }.body() + httpClient + .post(apiUrl) { + behandlingsnummer(saktyper) + header(HEADER_TEMA, HEADER_TEMA_VALUE) + accept(Json) + contentType(Json) + setBody(request) + }.body() }.let { when (it) { is RetryResult.Success -> it.content @@ -157,11 +164,12 @@ class PdlKlient(private val httpClient: HttpClient, private val apiUrl: String) ) logger.info("Henter PdlIdentifikator for ident = ${request.ident} fra PDL") return retry { - httpClient.post(apiUrl) { - accept(Json) - contentType(Json) - setBody(graphqlRequest) - }.body() + httpClient + .post(apiUrl) { + accept(Json) + contentType(Json) + setBody(graphqlRequest) + }.body() }.let { when (it) { is RetryResult.Success -> it.content @@ -172,38 +180,40 @@ class PdlKlient(private val httpClient: HttpClient, private val apiUrl: String) suspend fun hentFolkeregisterIdenterForAktoerIdBolk( request: HentFolkeregisterIdenterForAktoerIdBolkRequest, - ): List { - return request.aktoerIds.chunked(PDL_BULK_SIZE).map { identerChunk -> - val graphqlBolkRequest = - PdlFoedselsnumreFraAktoerIdRequest( - query = getQuery("/pdl/hentFolkeregisterIdenterBolk.graphql"), - variables = - IdenterBolkVariables( - identer = identerChunk, - grupper = setOf(IdentGruppe.FOLKEREGISTERIDENT), - ), - ) - - logger.info("Henter folkeregisterident for ${request.aktoerIds.size} aktørIds fra PDL") - - val response = - retry { - httpClient.post(apiUrl) { - behandlingsnummer(SakType.entries) - header(HEADER_TEMA, HEADER_TEMA_VALUE) - accept(Json) - contentType(Json) - setBody(graphqlBolkRequest) - }.body() - }.let { - when (it) { - is RetryResult.Success -> it.content - is RetryResult.Failure -> throw it.samlaExceptions() + ): List = + request.aktoerIds + .chunked(PDL_BULK_SIZE) + .map { identerChunk -> + val graphqlBolkRequest = + PdlFoedselsnumreFraAktoerIdRequest( + query = getQuery("/pdl/hentFolkeregisterIdenterBolk.graphql"), + variables = + IdenterBolkVariables( + identer = identerChunk, + grupper = setOf(IdentGruppe.FOLKEREGISTERIDENT), + ), + ) + + logger.info("Henter folkeregisterident for ${request.aktoerIds.size} aktørIds fra PDL") + + val response = + retry { + httpClient + .post(apiUrl) { + behandlingsnummer(SakType.entries) + header(HEADER_TEMA, HEADER_TEMA_VALUE) + accept(Json) + contentType(Json) + setBody(graphqlBolkRequest) + }.body() + }.let { + when (it) { + is RetryResult.Success -> it.content + is RetryResult.Failure -> throw it.samlaExceptions() + } } - } - response.data - }.flatMap { it.hentIdenterBolk } - } + response.data + }.flatMap { it.hentIdenterBolk } suspend fun hentGeografiskTilknytning(request: HentGeografiskTilknytningRequest): PdlGeografiskTilknytningResponse { val graphqlRequest = @@ -217,13 +227,14 @@ class PdlKlient(private val httpClient: HttpClient, private val apiUrl: String) logger.info("Henter geografisk tilknytning for fnr = ${request.foedselsnummer} fra PDL") return retry { - httpClient.post(apiUrl) { - behandlingsnummer(SakType.BARNEPENSJON) - header(HEADER_TEMA, HEADER_TEMA_VALUE) - accept(Json) - contentType(Json) - setBody(graphqlRequest) - }.body() + httpClient + .post(apiUrl) { + behandlingsnummer(SakType.BARNEPENSJON) + header(HEADER_TEMA, HEADER_TEMA_VALUE) + accept(Json) + contentType(Json) + setBody(graphqlRequest) + }.body() }.let { when (it) { is RetryResult.Success -> it.content @@ -232,11 +243,11 @@ class PdlKlient(private val httpClient: HttpClient, private val apiUrl: String) } } - private fun getQuery(name: String): String { - return javaClass.getResource(name)!! + private fun getQuery(name: String): String = + javaClass + .getResource(name)!! .readText() .replace(Regex("[\n\t]"), "") - } companion object { const val HEADER_TEMA = "Tema" diff --git a/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/PdlModell.kt b/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/PdlModell.kt index 476bbf77f79..1b226793f79 100644 --- a/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/PdlModell.kt +++ b/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/PdlModell.kt @@ -236,9 +236,7 @@ data class PdlMetadata( val master: String, val opplysningsId: String, ) { - fun sisteRegistrertDato(): LocalDateTime { - return endringer.maxByOrNull { it.registrert }?.registrert!! - } + fun sisteRegistrertDato(): LocalDateTime = endringer.maxByOrNull { it.registrert }?.registrert!! } data class PdlEndring( diff --git a/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/PdlOboKlient.kt b/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/PdlOboKlient.kt index c40c82570cd..75d46bcee1d 100644 --- a/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/PdlOboKlient.kt +++ b/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/PdlOboKlient.kt @@ -23,7 +23,10 @@ import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo import no.nav.etterlatte.utils.toPdlVariables import org.slf4j.LoggerFactory -class PdlOboKlient(private val httpClient: HttpClient, config: Config) { +class PdlOboKlient( + private val httpClient: HttpClient, + config: Config, +) { private val logger = LoggerFactory.getLogger(PdlOboKlient::class.java) private val apiUrl = config.getString("pdl.url") @@ -42,13 +45,14 @@ class PdlOboKlient(private val httpClient: HttpClient, config: Config) { ) return retry(times = 3) { - httpClient.post(apiUrl) { - bearerAuth(getOboToken(bruker)) - behandlingsnummer(SakType.entries) - contentType(ContentType.Application.Json) - accept(ContentType.Application.Json) - setBody(request) - }.body() + httpClient + .post(apiUrl) { + bearerAuth(getOboToken(bruker)) + behandlingsnummer(SakType.entries) + contentType(ContentType.Application.Json) + accept(ContentType.Application.Json) + setBody(request) + }.body() }.let { when (it) { is RetryResult.Success -> @@ -76,14 +80,15 @@ class PdlOboKlient(private val httpClient: HttpClient, config: Config) { ) return retry(times = 3) { - httpClient.post(apiUrl) { - bearerAuth(getOboToken(bruker)) - behandlingsnummer(sakType) - header(PdlKlient.HEADER_TEMA, PdlKlient.HEADER_TEMA_VALUE) - accept(ContentType.Application.Json) - contentType(ContentType.Application.Json) - setBody(request) - }.body() + httpClient + .post(apiUrl) { + bearerAuth(getOboToken(bruker)) + behandlingsnummer(sakType) + header(PdlKlient.HEADER_TEMA, PdlKlient.HEADER_TEMA_VALUE) + accept(ContentType.Application.Json) + contentType(ContentType.Application.Json) + setBody(request) + }.body() }.let { when (it) { is RetryResult.Success -> @@ -98,11 +103,11 @@ class PdlOboKlient(private val httpClient: HttpClient, config: Config) { } } - private fun getQuery(name: String): String { - return javaClass.getResource(name)!! + private fun getQuery(name: String): String = + javaClass + .getResource(name)!! .readText() .replace(Regex("[\n\t]"), "") - } private suspend fun getOboToken(bruker: BrukerTokenInfo): String { val token = diff --git a/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/mapper/BarnekullMapper.kt b/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/mapper/BarnekullMapper.kt index 91a05739eb3..62934cdbea1 100644 --- a/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/mapper/BarnekullMapper.kt +++ b/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/mapper/BarnekullMapper.kt @@ -35,8 +35,7 @@ object BarnekullMapper { ?.filter { it.relatertPersonsRolle == PdlForelderBarnRelasjonRolle.BARN && it.relatertPersonsIdent != null - } - ?.map { it.relatertPersonsIdent } + }?.map { it.relatertPersonsIdent } ?.distinct() ?.map { Folkeregisteridentifikator.of(it) } @@ -45,8 +44,7 @@ object BarnekullMapper { ?.filter { it.relatertPersonsRolle == PdlForelderBarnRelasjonRolle.BARN && it.relatertPersonUtenFolkeregisteridentifikator != null - } - ?.map { + }?.map { PersonUtenIdent( RelativPersonrolle.BARN, it.relatertPersonUtenFolkeregisteridentifikator!!.tilRelatertPerson(), @@ -82,30 +80,32 @@ object BarnekullMapper { ?.filter { it.relatertPersonsRolle == PdlForelderBarnRelasjonRolle.BARN && it.relatertPersonsIdent != null - } - ?.map { it.relatertPersonsIdent } + }?.map { it.relatertPersonsIdent } ?.distinct() ?.map { Folkeregisteridentifikator.of(it) } val personer = barnFnr?.let { fnr -> fnr.map { ident -> - pdlOboKlient.hentPerson( - ident, - PersonRolle.TILKNYTTET_BARN, - bruker = brukerTokenInfo, - sakType = sakType, - ).data?.hentPerson?.let { - PersonMapper.mapFamiliemedlem( - ppsKlient, - pdlOboKlient, - it, + pdlOboKlient + .hentPerson( ident, - sakType, - brukerTokenInfo = brukerTokenInfo, PersonRolle.TILKNYTTET_BARN, - ) - } + bruker = brukerTokenInfo, + sakType = sakType, + ).data + ?.hentPerson + ?.let { + PersonMapper.mapFamiliemedlem( + ppsKlient, + pdlOboKlient, + it, + ident, + sakType, + brukerTokenInfo = brukerTokenInfo, + PersonRolle.TILKNYTTET_BARN, + ) + } } } diff --git a/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/mapper/FamilieRelasjonMapper.kt b/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/mapper/FamilieRelasjonMapper.kt index e12e877d895..fe7ffec4fca 100644 --- a/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/mapper/FamilieRelasjonMapper.kt +++ b/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/mapper/FamilieRelasjonMapper.kt @@ -77,22 +77,21 @@ object FamilieRelasjonMapper { private fun mapForelderBarnUtenIdent( forelderBarnRelasjon: List?, personRolle: PersonRolle, - ): List { - return forelderBarnRelasjon + ): List = + forelderBarnRelasjon ?.filter { it.relatertPersonsIdent == null && erRelevantForPersonrolle(it, personRolle) } ?.mapNotNull { forelderBarnRelasjoninner -> - forelderBarnRelasjoninner.relatertPersonUtenFolkeregisteridentifikator?.tilRelatertPerson() + forelderBarnRelasjoninner.relatertPersonUtenFolkeregisteridentifikator + ?.tilRelatertPerson() ?.let { forelderBarnRelasjoninner.relatertPersonsRolle to it } - } - ?.map { (rolle, person) -> PersonUtenIdent(rolle = rolle.tilRelativPersonrolle(), person = person) } + }?.map { (rolle, person) -> PersonUtenIdent(rolle = rolle.tilRelativPersonrolle(), person = person) } ?: emptyList() - } private fun mapForeldreansvarUtenIdent( foreldreansvar: List?, personRolle: PersonRolle, - ): List { - return when (personRolle) { + ): List = + when (personRolle) { PersonRolle.BARN -> foreldreansvar ?.filter { it.ansvarlig == null } @@ -102,7 +101,6 @@ object FamilieRelasjonMapper { else -> emptyList() } - } private fun mapPersonerUtenIdenter( pdlPerson: PdlHentPerson, @@ -120,29 +118,27 @@ object FamilieRelasjonMapper { private fun erRelevantForPersonrolle( forelderBarnRelasjon: PdlForelderBarnRelasjon, personrolle: PersonRolle, - ): Boolean { - return when (forelderBarnRelasjon.relatertPersonsRolle) { + ): Boolean = + when (forelderBarnRelasjon.relatertPersonsRolle) { PdlForelderBarnRelasjonRolle.BARN -> personrolle == PersonRolle.AVDOED || personrolle == PersonRolle.GJENLEVENDE PdlForelderBarnRelasjonRolle.FAR, PdlForelderBarnRelasjonRolle.MEDMOR, PdlForelderBarnRelasjonRolle.MOR, -> personrolle == PersonRolle.BARN } - } } -fun PdlForelderBarnRelasjonRolle.tilRelativPersonrolle(): RelativPersonrolle { - return when (this) { +fun PdlForelderBarnRelasjonRolle.tilRelativPersonrolle(): RelativPersonrolle = + when (this) { PdlForelderBarnRelasjonRolle.BARN -> RelativPersonrolle.BARN PdlForelderBarnRelasjonRolle.FAR, PdlForelderBarnRelasjonRolle.MEDMOR, PdlForelderBarnRelasjonRolle.MOR, -> RelativPersonrolle.FORELDER } -} -fun PdlRelatertBiPerson.tilRelatertPerson(): RelatertPerson { - return RelatertPerson( +fun PdlRelatertBiPerson.tilRelatertPerson(): RelatertPerson = + RelatertPerson( foedselsdato = this.foedselsdato, kjoenn = this.kjoenn, navn = @@ -151,4 +147,3 @@ fun PdlRelatertBiPerson.tilRelatertPerson(): RelatertPerson { }, statsborgerskap = this.statsborgerskap, ) -} diff --git a/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/mapper/ForeldreansvarHistorikkMapper.kt b/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/mapper/ForeldreansvarHistorikkMapper.kt index 3f54ecb4650..6cc0ef8b48d 100644 --- a/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/mapper/ForeldreansvarHistorikkMapper.kt +++ b/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/mapper/ForeldreansvarHistorikkMapper.kt @@ -9,10 +9,10 @@ import no.nav.etterlatte.pdl.PdlHistorikkForeldreansvar object ForeldreansvarHistorikkMapper { fun mapForeldreAnsvar(pdlData: PdlHistorikkForeldreansvar): HistorikkForeldreansvar { val foreldreansvar = - pdlData.foreldreansvar.filter { - it.ansvarlig != null - } - .map { + pdlData.foreldreansvar + .filter { + it.ansvarlig != null + }.map { val fraDato = it.folkeregistermetadata?.gyldighetstidspunkt val tilDato = it.folkeregistermetadata?.opphoerstidspunkt ForeldreansvarPeriode( diff --git a/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/mapper/UtlandMapper.kt b/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/mapper/UtlandMapper.kt index da7d8b527b8..ab1342972ef 100644 --- a/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/mapper/UtlandMapper.kt +++ b/apps/etterlatte-pdltjenester/src/main/kotlin/pdl/mapper/UtlandMapper.kt @@ -8,26 +8,23 @@ import no.nav.etterlatte.pdl.PdlInnflyttingTilNorge import no.nav.etterlatte.pdl.PdlUtflyttingFraNorge object UtlandMapper { - fun mapUtland(hentPerson: PdlHentPerson): Utland { - return Utland( + fun mapUtland(hentPerson: PdlHentPerson): Utland = + Utland( utflyttingFraNorge = hentPerson.utflyttingFraNorge?.map { (mapUtflytting(it)) }, innflyttingTilNorge = hentPerson.innflyttingTilNorge?.map { (mapInnflytting(it)) }, ) - } - private fun mapUtflytting(utflytting: PdlUtflyttingFraNorge): UtflyttingFraNorge { - return UtflyttingFraNorge( + private fun mapUtflytting(utflytting: PdlUtflyttingFraNorge): UtflyttingFraNorge = + UtflyttingFraNorge( tilflyttingsland = utflytting.tilflyttingsland, dato = utflytting.utflyttingsdato, ) - } - private fun mapInnflytting(innflytting: PdlInnflyttingTilNorge): InnflyttingTilNorge { - return InnflyttingTilNorge( + private fun mapInnflytting(innflytting: PdlInnflyttingTilNorge): InnflyttingTilNorge = + InnflyttingTilNorge( fraflyttingsland = innflytting.fraflyttingsland, // TODO her må vi heller sjekke mot gyldighetsdato på bostedsadresse // TODO skal ikke være tostring her dato = innflytting.folkeregistermetadata?.gyldighetstidspunkt?.toLocalDate(), ) - } } diff --git a/apps/etterlatte-pdltjenester/src/main/kotlin/person/PersonRoute.kt b/apps/etterlatte-pdltjenester/src/main/kotlin/person/PersonRoute.kt index 7ea95008598..460ad2f2fbc 100644 --- a/apps/etterlatte-pdltjenester/src/main/kotlin/person/PersonRoute.kt +++ b/apps/etterlatte-pdltjenester/src/main/kotlin/person/PersonRoute.kt @@ -71,9 +71,10 @@ fun Route.personRoute(service: PersonService) { post { val personIdenterForAktoerIdRequest = call.receive() - service.hentFolkeregisterIdenterForAktoerIdBolk( - personIdenterForAktoerIdRequest, - ).let { call.respond(it) } + service + .hentFolkeregisterIdenterForAktoerIdBolk( + personIdenterForAktoerIdRequest, + ).let { call.respond(it) } } } diff --git a/apps/etterlatte-pdltjenester/src/main/kotlin/person/PersonService.kt b/apps/etterlatte-pdltjenester/src/main/kotlin/person/PersonService.kt index 564dc67fbb7..d8a8301b881 100644 --- a/apps/etterlatte-pdltjenester/src/main/kotlin/person/PersonService.kt +++ b/apps/etterlatte-pdltjenester/src/main/kotlin/person/PersonService.kt @@ -31,7 +31,9 @@ import no.nav.etterlatte.pdl.mapper.PersonMapper import no.nav.etterlatte.sikkerLogg import org.slf4j.LoggerFactory -class PdlForesporselFeilet(message: String) : RuntimeException(message) +class PdlForesporselFeilet( + message: String, +) : RuntimeException(message) class PersonService( private val pdlKlient: PdlKlient, @@ -121,7 +123,8 @@ class PersonService( } val fnr = hentPersonRequest.foedselsnummer - return pdlKlient.hentPersonHistorikkForeldreansvar(fnr) + return pdlKlient + .hentPersonHistorikkForeldreansvar(fnr) .let { if (it.data?.hentPerson == null) { val pdlFeil = it.errors?.asFormatertFeil() @@ -157,7 +160,8 @@ class PersonService( val folkeregisterIdent: String? = identResponse.data.hentIdenter.identer .filter { it.gruppe == PDLIdentGruppeTyper.FOLKEREGISTERIDENT.navn } - .firstOrNull { !it.historisk }?.ident + .firstOrNull { !it.historisk } + ?.ident if (folkeregisterIdent != null) { PdlIdentifikator.FolkeregisterIdent( folkeregisterident = @@ -169,7 +173,8 @@ class PersonService( val npid: String = identResponse.data.hentIdenter.identer .filter { it.gruppe == PDLIdentGruppeTyper.NPID.navn } - .first { !it.historisk }.ident + .first { !it.historisk } + .ident PdlIdentifikator.Npid(NavPersonIdent(npid)) } } catch (e: Exception) { @@ -229,11 +234,13 @@ class PersonService( val soesken = avdoede.flatMap { it.avdoedesBarn ?: emptyList() } val alleTilknyttedePersonerUtenIdent = - mottaker.familieRelasjon?.personerUtenIdent?.plus( - avdoede.flatMap { - it.familieRelasjon?.personerUtenIdent ?: emptyList() - }, - )?.plus(gjenlevende.flatMap { it.familieRelasjon?.personerUtenIdent ?: emptyList() }) + mottaker.familieRelasjon + ?.personerUtenIdent + ?.plus( + avdoede.flatMap { + it.familieRelasjon?.personerUtenIdent ?: emptyList() + }, + )?.plus(gjenlevende.flatMap { it.familieRelasjon?.personerUtenIdent ?: emptyList() }) return Persongalleri( soeker = mottakerAvYtelsen.value, @@ -259,24 +266,26 @@ class PersonService( ) val partnerVedSivilstand = - mottaker.sivilstand?.filter { - listOf( - Sivilstatus.GIFT, - Sivilstatus.GJENLEVENDE_PARTNER, - Sivilstatus.ENKE_ELLER_ENKEMANN, - ).contains(it.sivilstatus) - }?.mapNotNull { it.relatertVedSiviltilstand } ?: emptyList() + mottaker.sivilstand + ?.filter { + listOf( + Sivilstatus.GIFT, + Sivilstatus.GJENLEVENDE_PARTNER, + Sivilstatus.ENKE_ELLER_ENKEMANN, + ).contains(it.sivilstatus) + }?.mapNotNull { it.relatertVedSiviltilstand } ?: emptyList() val (avdoede, levende) = - partnerVedSivilstand.map { - hentPerson( - HentPersonRequest( - foedselsnummer = it, - rolle = PersonRolle.GJENLEVENDE, - saktyper = listOf(SakType.OMSTILLINGSSTOENAD), - ), - ) - }.partition { it.doedsdato != null } + partnerVedSivilstand + .map { + hentPerson( + HentPersonRequest( + foedselsnummer = it, + rolle = PersonRolle.GJENLEVENDE, + saktyper = listOf(SakType.OMSTILLINGSSTOENAD), + ), + ) + }.partition { it.doedsdato != null } // TODO: håndter tilfellet med felles barn med avdød riktig -- da gjelder det for samboer også val personerUtenIdent = diff --git a/apps/etterlatte-pdltjenester/src/main/kotlin/personweb/SporingService.kt b/apps/etterlatte-pdltjenester/src/main/kotlin/personweb/SporingService.kt index 35acc79f50c..ff270f63a23 100644 --- a/apps/etterlatte-pdltjenester/src/main/kotlin/personweb/SporingService.kt +++ b/apps/etterlatte-pdltjenester/src/main/kotlin/personweb/SporingService.kt @@ -7,7 +7,9 @@ import no.nav.etterlatte.libs.sporingslogg.HttpMethod import no.nav.etterlatte.libs.sporingslogg.Sporingslogg import no.nav.etterlatte.libs.sporingslogg.Sporingsrequest -class SporingService(private val sporingslogg: Sporingslogg) { +class SporingService( + private val sporingslogg: Sporingslogg, +) { fun logg( brukerTokenInfo: BrukerTokenInfo, fnr: Folkeregisteridentifikator, diff --git a/apps/etterlatte-pdltjenester/src/test/kotlin/pdl/ParallelleSannheterKlientTest.kt b/apps/etterlatte-pdltjenester/src/test/kotlin/pdl/ParallelleSannheterKlientTest.kt index eadc149e34e..9d36a8065f6 100644 --- a/apps/etterlatte-pdltjenester/src/test/kotlin/pdl/ParallelleSannheterKlientTest.kt +++ b/apps/etterlatte-pdltjenester/src/test/kotlin/pdl/ParallelleSannheterKlientTest.kt @@ -59,14 +59,14 @@ internal class ParallelleSannheterKlientTest { private fun mockResponse( feltnavn: String, verdi: T, - ): String { - return objectMapper.createObjectNode() + ): String = + objectMapper + .createObjectNode() .set(feltnavn, objectMapper.readValue(listOf(verdi).toJson(), JsonNode::class.java)) .toJson() - } - private fun mockNavn(master: String): PdlNavn { - return PdlNavn( + private fun mockNavn(master: String): PdlNavn = + PdlNavn( fornavn = "Ola", etternavn = "Nordmann", metadata = @@ -77,7 +77,6 @@ internal class ParallelleSannheterKlientTest { opplysningsId = "1", ), ) - } companion object { const val PDL = "PDL" diff --git a/apps/etterlatte-pdltjenester/src/test/kotlin/pdl/PdlKlientTest.kt b/apps/etterlatte-pdltjenester/src/test/kotlin/pdl/PdlKlientTest.kt index 9bc3b42b2d5..37567e0c697 100644 --- a/apps/etterlatte-pdltjenester/src/test/kotlin/pdl/PdlKlientTest.kt +++ b/apps/etterlatte-pdltjenester/src/test/kotlin/pdl/PdlKlientTest.kt @@ -39,7 +39,14 @@ internal class PdlKlientTest { assertEquals("LITEN", hentPerson?.navn?.first()?.fornavn) assertEquals("HEST", hentPerson?.navn?.first()?.etternavn) - assertEquals("2007-08-29", hentPerson?.foedsel?.first()?.foedselsdato?.toString()) + assertEquals( + "2007-08-29", + hentPerson + ?.foedsel + ?.first() + ?.foedselsdato + ?.toString(), + ) assertEquals("NIC", hentPerson?.foedsel?.first()?.foedeland) // TODO sjekk flere relevante felter } @@ -53,10 +60,43 @@ internal class PdlKlientTest { val personResponse = pdlKlient.hentPersonBolk(listOf(STOR_SNERK), listOf(SakType.BARNEPENSJON)) val hentPerson = personResponse.data?.hentPersonBolk - assertEquals("TRIVIELL", hentPerson?.first()?.person?.navn?.first()?.fornavn) - assertEquals("SKILPADDE", hentPerson?.first()?.person?.navn?.first()?.etternavn) - assertEquals("1987-07-30", hentPerson?.first()?.person?.foedsel?.first()?.foedselsdato?.toString()) - assertEquals("FJI", hentPerson?.first()?.person?.foedsel?.first()?.foedeland) + assertEquals( + "TRIVIELL", + hentPerson + ?.first() + ?.person + ?.navn + ?.first() + ?.fornavn, + ) + assertEquals( + "SKILPADDE", + hentPerson + ?.first() + ?.person + ?.navn + ?.first() + ?.etternavn, + ) + assertEquals( + "1987-07-30", + hentPerson + ?.first() + ?.person + ?.foedsel + ?.first() + ?.foedselsdato + ?.toString(), + ) + assertEquals( + "FJI", + hentPerson + ?.first() + ?.person + ?.foedsel + ?.first() + ?.foedeland, + ) // TODO sjekk flere relevante felter } } @@ -85,9 +125,30 @@ internal class PdlKlientTest { pdlKlient.hentPdlIdentifikator( HentPdlIdentRequest(PersonIdent(AVDOED_FOEDSELSNUMMER.value)), ) - assertEquals("09508229892", identResponse.data?.hentIdenter?.identer?.first()?.ident) - assertEquals(false, identResponse.data?.hentIdenter?.identer?.first()?.historisk) - assertEquals("FOLKEREGISTERIDENT", identResponse.data?.hentIdenter?.identer?.first()?.gruppe) + assertEquals( + "09508229892", + identResponse.data + ?.hentIdenter + ?.identer + ?.first() + ?.ident, + ) + assertEquals( + false, + identResponse.data + ?.hentIdenter + ?.identer + ?.first() + ?.historisk, + ) + assertEquals( + "FOLKEREGISTERIDENT", + identResponse.data + ?.hentIdenter + ?.identer + ?.first() + ?.gruppe, + ) } } @@ -116,9 +177,30 @@ internal class PdlKlientTest { HentFolkeregisterIdenterForAktoerIdBolkRequest(setOf("2082995739063")), ) assertEquals("2082995739063", identResponse.first().ident) - assertEquals("03486048831", identResponse.first().identer!!.first().ident) - assertEquals(false, identResponse.first().identer!!.first().historisk) - assertEquals("FOLKEREGISTERIDENT", identResponse.first().identer!!.first().gruppe.name) + assertEquals( + "03486048831", + identResponse + .first() + .identer!! + .first() + .ident, + ) + assertEquals( + false, + identResponse + .first() + .identer!! + .first() + .historisk, + ) + assertEquals( + "FOLKEREGISTERIDENT", + identResponse + .first() + .identer!! + .first() + .gruppe.name, + ) } } @@ -147,7 +229,14 @@ internal class PdlKlientTest { HentAdressebeskyttelseRequest(PersonIdent(STOR_SNERK.value), SakType.BARNEPENSJON), ) - assertEquals(PdlGradering.FORTROLIG, response.data?.hentPerson?.adressebeskyttelse?.single()?.gradering) + assertEquals( + PdlGradering.FORTROLIG, + response.data + ?.hentPerson + ?.adressebeskyttelse + ?.single() + ?.gradering, + ) } } diff --git a/apps/etterlatte-pdltjenester/src/test/kotlin/pdl/mapper/PersonMapperTest.kt b/apps/etterlatte-pdltjenester/src/test/kotlin/pdl/mapper/PersonMapperTest.kt index 2b6356ce12c..f03299ac7fa 100644 --- a/apps/etterlatte-pdltjenester/src/test/kotlin/pdl/mapper/PersonMapperTest.kt +++ b/apps/etterlatte-pdltjenester/src/test/kotlin/pdl/mapper/PersonMapperTest.kt @@ -135,9 +135,7 @@ class PersonMapperTest { } } -fun pdlmetadata(): PdlMetadata { - return PdlMetadata(endringer = listOf(), historisk = false, master = "", opplysningsId = "") -} +fun pdlmetadata(): PdlMetadata = PdlMetadata(endringer = listOf(), historisk = false, master = "", opplysningsId = "") fun pdlHentPerson( navn: List = listOf(PdlNavn("fornavn", null, "etternavn", metadata = pdlmetadata())), diff --git a/apps/etterlatte-pdltjenester/src/test/kotlin/pdl/mapper/UtlandMapperTest.kt b/apps/etterlatte-pdltjenester/src/test/kotlin/pdl/mapper/UtlandMapperTest.kt index b62aba61168..3167d09babd 100644 --- a/apps/etterlatte-pdltjenester/src/test/kotlin/pdl/mapper/UtlandMapperTest.kt +++ b/apps/etterlatte-pdltjenester/src/test/kotlin/pdl/mapper/UtlandMapperTest.kt @@ -26,7 +26,13 @@ internal class UtlandMapperTest { val utland = UtlandMapper.mapUtland(hentPerson) assertEquals("FRA", utland.utflyttingFraNorge?.first()?.tilflyttingsland) - assertEquals("2021-07-01", utland.utflyttingFraNorge?.first()?.dato.toString()) + assertEquals( + "2021-07-01", + utland.utflyttingFraNorge + ?.first() + ?.dato + .toString(), + ) } @Test @@ -49,6 +55,12 @@ internal class UtlandMapperTest { val utland = UtlandMapper.mapUtland(hentPerson) assertEquals("FRA", utland.innflyttingTilNorge?.first()?.fraflyttingsland) - assertEquals("2021-07-01", utland.innflyttingTilNorge?.first()?.dato.toString()) + assertEquals( + "2021-07-01", + utland.innflyttingTilNorge + ?.first() + ?.dato + .toString(), + ) } } diff --git a/apps/etterlatte-pdltjenester/src/test/kotlin/person/PersonServiceTest.kt b/apps/etterlatte-pdltjenester/src/test/kotlin/person/PersonServiceTest.kt index 20a9d0a61bc..8b0077ffe74 100644 --- a/apps/etterlatte-pdltjenester/src/test/kotlin/person/PersonServiceTest.kt +++ b/apps/etterlatte-pdltjenester/src/test/kotlin/person/PersonServiceTest.kt @@ -149,9 +149,27 @@ internal class PersonServiceTest { val expectedForeldreFnr = listOf("18498248795", "16478313601") assertNotNull(person.familieRelasjon?.verdi?.foreldre) - assertEquals(2, person.familieRelasjon?.verdi?.foreldre?.size) - assertTrue(person.familieRelasjon?.verdi?.foreldre?.get(0)?.value in expectedForeldreFnr) - assertTrue(person.familieRelasjon?.verdi?.foreldre?.get(1)?.value in expectedForeldreFnr) + assertEquals( + 2, + person.familieRelasjon + ?.verdi + ?.foreldre + ?.size, + ) + assertTrue( + person.familieRelasjon + ?.verdi + ?.foreldre + ?.get(0) + ?.value in expectedForeldreFnr, + ) + assertTrue( + person.familieRelasjon + ?.verdi + ?.foreldre + ?.get(1) + ?.value in expectedForeldreFnr, + ) } @Test @@ -166,9 +184,27 @@ internal class PersonServiceTest { val expectedForeldreFnr = listOf("18498248795", "16478313601") assertNotNull(person.familieRelasjon?.verdi?.ansvarligeForeldre) - assertEquals(2, person.familieRelasjon?.verdi?.ansvarligeForeldre?.size) - assertTrue(person.familieRelasjon?.verdi?.foreldre?.get(0)?.value in expectedForeldreFnr) - assertTrue(person.familieRelasjon?.verdi?.foreldre?.get(1)?.value in expectedForeldreFnr) + assertEquals( + 2, + person.familieRelasjon + ?.verdi + ?.ansvarligeForeldre + ?.size, + ) + assertTrue( + person.familieRelasjon + ?.verdi + ?.foreldre + ?.get(0) + ?.value in expectedForeldreFnr, + ) + assertTrue( + person.familieRelasjon + ?.verdi + ?.foreldre + ?.get(1) + ?.value in expectedForeldreFnr, + ) } @Test @@ -180,9 +216,30 @@ internal class PersonServiceTest { ) } - assertEquals(2, person.utland?.verdi?.innflyttingTilNorge?.size) - assertEquals("NIC", person.utland?.verdi?.innflyttingTilNorge?.get(0)?.fraflyttingsland) - assertEquals("1970-09-14", person.utland?.verdi?.innflyttingTilNorge?.get(0)?.dato.toString()) + assertEquals( + 2, + person.utland + ?.verdi + ?.innflyttingTilNorge + ?.size, + ) + assertEquals( + "NIC", + person.utland + ?.verdi + ?.innflyttingTilNorge + ?.get(0) + ?.fraflyttingsland, + ) + assertEquals( + "1970-09-14", + person.utland + ?.verdi + ?.innflyttingTilNorge + ?.get(0) + ?.dato + .toString(), + ) } @Test @@ -194,9 +251,30 @@ internal class PersonServiceTest { ) } - assertEquals(1, person.utland?.verdi?.utflyttingFraNorge?.size) - assertEquals("FRA", person.utland?.verdi?.utflyttingFraNorge?.get(0)?.tilflyttingsland) - assertEquals("2021-07-01", person.utland?.verdi?.utflyttingFraNorge?.get(0)?.dato.toString()) + assertEquals( + 1, + person.utland + ?.verdi + ?.utflyttingFraNorge + ?.size, + ) + assertEquals( + "FRA", + person.utland + ?.verdi + ?.utflyttingFraNorge + ?.get(0) + ?.tilflyttingsland, + ) + assertEquals( + "2021-07-01", + person.utland + ?.verdi + ?.utflyttingFraNorge + ?.get(0) + ?.dato + .toString(), + ) } @Test diff --git a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/Application.kt b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/Application.kt index 926237793f3..cd62ac268f3 100644 --- a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/Application.kt +++ b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/Application.kt @@ -15,7 +15,9 @@ fun main() { Server(ApplicationContext(Miljoevariabler(System.getenv()))).run() } -class Server(applicationContext: ApplicationContext) { +class Server( + applicationContext: ApplicationContext, +) { init { sikkerLoggOppstartOgAvslutning("etterlatte-samordning-vedtak") } diff --git a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/ApplicationContext.kt b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/ApplicationContext.kt index 7f65e55a52d..d3ee0a7ff9f 100644 --- a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/ApplicationContext.kt +++ b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/ApplicationContext.kt @@ -8,7 +8,9 @@ import no.nav.etterlatte.samordning.vedtak.SamordningVedtakService import no.nav.etterlatte.samordning.vedtak.TjenestepensjonKlient import no.nav.etterlatte.samordning.vedtak.VedtaksvurderingKlient -class ApplicationContext(env: Miljoevariabler) { +class ApplicationContext( + env: Miljoevariabler, +) { val config: Config = ConfigFactory.load() val httpPort = env.getOrDefault("HTTP_PORT", "8080").toInt() diff --git a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/CallerContext.kt b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/CallerContext.kt index 6f2109e9525..dc7ad6271e2 100644 --- a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/CallerContext.kt +++ b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/CallerContext.kt @@ -2,6 +2,9 @@ package no.nav.etterlatte.samordning.vedtak sealed interface CallerContext -data class MaskinportenTpContext(val tpnr: Tjenestepensjonnummer, val organisasjonsnr: String) : CallerContext +data class MaskinportenTpContext( + val tpnr: Tjenestepensjonnummer, + val organisasjonsnr: String, +) : CallerContext data object PensjonContext : CallerContext diff --git a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/LoggingPlugins.kt b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/LoggingPlugins.kt index 785d7684fcb..12fb6900d97 100644 --- a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/LoggingPlugins.kt +++ b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/LoggingPlugins.kt @@ -116,13 +116,16 @@ val serverRequestLoggerPlugin = * - "/api/vedtak/123" -> "/api/vedtak/{vedtakId}" * - "/api/vedtak?fomdato=2024-01-01&noe=annet" -> "/api/vedtak?fomdato,noe" */ -private fun extractUrlTemplate(call: ApplicationCall): String? { - return when (call) { +private fun extractUrlTemplate(call: ApplicationCall): String? = + when (call) { is RoutingApplicationCall -> (call.route.parent ?: call.route) // Drop METHOD part .toString() .replace("/(authenticate \"default\")", "", true) // Alle sikrede endepunkter wrappes av authenticate - .plus(call.request.queryParameters.entries().joinToString(prefix = "?", separator = ",") { it.key }) + .plus( + call.request.queryParameters + .entries() + .joinToString(prefix = "?", separator = ",") { it.key }, + ) else -> null } -} diff --git a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtak.kt b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtak.kt index 0e6d171f0a3..7984f7ef04c 100644 --- a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtak.kt +++ b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtak.kt @@ -42,35 +42,40 @@ enum class SamordningVedtakAarsak { fun YearMonth.atStartOfMonth(): LocalDate = this.atDay(1) -class VedtakFeilSakstypeException : UgyldigForespoerselException( - code = "004-FEIL_SAKSTYPE", - detail = "Forespurt informasjon gjeldende ikke-støttet sakstype", - meta = getMeta(), -) +class VedtakFeilSakstypeException : + UgyldigForespoerselException( + code = "004-FEIL_SAKSTYPE", + detail = "Forespurt informasjon gjeldende ikke-støttet sakstype", + meta = getMeta(), + ) -class ManglerTpNrException : UgyldigForespoerselException( - code = "001-TPNR-MANGLER", - detail = "Forespørselen mangler 'tpnr' header", - meta = getMeta(), -) +class ManglerTpNrException : + UgyldigForespoerselException( + code = "001-TPNR-MANGLER", + detail = "Forespørselen mangler 'tpnr' header", + meta = getMeta(), + ) -class ManglerFoedselsnummerException : UgyldigForespoerselException( - code = "002-FNR-MANGLER", - detail = "fnr ikke angitt", - meta = getMeta(), -) +class ManglerFoedselsnummerException : + UgyldigForespoerselException( + code = "002-FNR-MANGLER", + detail = "fnr ikke angitt", + meta = getMeta(), + ) -class ManglerFomDatoException : UgyldigForespoerselException( - code = "003-FOMDATO-MANGLER", - detail = "fomDato ikke angitt", - meta = getMeta(), -) +class ManglerFomDatoException : + UgyldigForespoerselException( + code = "003-FOMDATO-MANGLER", + detail = "fomDato ikke angitt", + meta = getMeta(), + ) -class ManglerPaaDatoException : UgyldigForespoerselException( - code = "005-PAAMDATO-MANGLER", - detail = "paaDato ikke angitt", - meta = getMeta(), -) +class ManglerPaaDatoException : + UgyldigForespoerselException( + code = "005-PAAMDATO-MANGLER", + detail = "paaDato ikke angitt", + meta = getMeta(), + ) fun getMeta() = mapOf( diff --git a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtakRoute.kt b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtakRoute.kt index 41d34fb792e..bba5bf2ddd5 100644 --- a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtakRoute.kt +++ b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtakRoute.kt @@ -146,7 +146,8 @@ fun Route.samordningVedtakRoute( inline val ApplicationCall.orgNummer: String get() { val claims = - this.hentTokenClaims("maskinporten") + this + .hentTokenClaims("maskinporten") ?.get("consumer") as Map<*, *>? ?: throw IllegalArgumentException("Kan ikke hente ut organisasjonsnummer") return (claims["ID"] as String).split(":")[1] diff --git a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtakService.kt b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtakService.kt index 35c4c4776be..8b8990fd7ed 100644 --- a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtakService.kt +++ b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtakService.kt @@ -57,13 +57,13 @@ class SamordningVedtakService( val tilOgMed = tomDato?.let { YearMonth.of(tomDato.year, tomDato.month) } - return vedtaksvurderingKlient.hentVedtaksliste( - sakType = sakType, - fomDato = fomDato, - fnr = fnr.value, - callerContext = context, - ) - .filter { tilOgMed?.let { t -> it.virkningstidspunkt <= t } ?: true } + return vedtaksvurderingKlient + .hentVedtaksliste( + sakType = sakType, + fomDato = fomDato, + fnr = fnr.value, + callerContext = context, + ).filter { tilOgMed?.let { t -> it.virkningstidspunkt <= t } ?: true } .map { it.mapSamordningsvedtak() } } @@ -72,11 +72,10 @@ class SamordningVedtakService( fnr: Folkeregisteridentifikator, sakType: SakType, context: CallerContext, - ): Boolean { - return hentVedtaksliste(fomDato = dato, fnr = fnr, sakType = sakType, context = context) + ): Boolean = + hentVedtaksliste(fomDato = dato, fnr = fnr, sakType = sakType, context = context) .flatMap { it.perioder } .any { dato >= it.fom && (it.tom == null || !it.tom.isBefore(dato)) } - } private fun VedtakSamordningDto.mapSamordningsvedtak(): SamordningVedtakDto { val beregning = beregning?.let { deserialize(it.toString()) } @@ -96,8 +95,8 @@ class SamordningVedtakService( ) } - private fun VedtakType.toSamordningsvedtakType(): SamordningVedtakType { - return when (this) { + private fun VedtakType.toSamordningsvedtakType(): SamordningVedtakType = + when (this) { VedtakType.INNVILGELSE -> SamordningVedtakType.START VedtakType.OPPHOER -> SamordningVedtakType.OPPHOER VedtakType.ENDRING -> SamordningVedtakType.ENDRING @@ -105,23 +104,20 @@ class SamordningVedtakService( VedtakType.TILBAKEKREVING -> throw IllegalArgumentException("Ikke relevant") VedtakType.AVVIST_KLAGE -> throw IllegalArgumentException("Skal ikke ha noe med samordning å gjøre") } - } - private fun Revurderingaarsak.toSamordningsvedtakAarsak(): String { - return when (this) { + private fun Revurderingaarsak.toSamordningsvedtakAarsak(): String = + when (this) { Revurderingaarsak.INNTEKTSENDRING -> SamordningVedtakAarsak.INNTEKT Revurderingaarsak.DOEDSFALL -> SamordningVedtakAarsak.DOEDSFALL Revurderingaarsak.REGULERING -> SamordningVedtakAarsak.REGULERING else -> SamordningVedtakAarsak.ANNET }.name - } - private fun VedtakSamordningPeriode.toSamordningVedtakPeriode(): SamordningVedtakPeriode { - return SamordningVedtakPeriode( + private fun VedtakSamordningPeriode.toSamordningVedtakPeriode(): SamordningVedtakPeriode = + SamordningVedtakPeriode( fom = fom.atStartOfMonth(), tom = tom?.atEndOfMonth(), omstillingsstoenadBrutto = ytelseFoerAvkorting, omstillingsstoenadNetto = ytelseEtterAvkorting, ) - } } diff --git a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/Tjenestepensjon.kt b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/Tjenestepensjon.kt index 599d215bd70..3314d7c8806 100644 --- a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/Tjenestepensjon.kt +++ b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/Tjenestepensjon.kt @@ -5,33 +5,43 @@ import no.nav.etterlatte.libs.common.feilhaandtering.IkkeFunnetException import no.nav.etterlatte.libs.common.feilhaandtering.IkkeTillattException import no.nav.etterlatte.libs.common.feilhaandtering.UgyldigForespoerselException -data class Tjenestepensjonnummer(val value: String) { +data class Tjenestepensjonnummer( + val value: String, +) { init { require(value == value.replace(Regex("[^0-9]"), "")) } } -class TjenestepensjonManglendeTilgangException(detail: String) : IkkeTillattException( - code = "010-TP-TILGANG", - detail = detail, - meta = getMeta(), -) +class TjenestepensjonManglendeTilgangException( + detail: String, +) : IkkeTillattException( + code = "010-TP-TILGANG", + detail = detail, + meta = getMeta(), + ) -class TjenestepensjonUgyldigForesporselException(detail: String) : UgyldigForespoerselException( - code = "011-TP-FORESPOERSEL", - detail = detail, - meta = getMeta(), -) +class TjenestepensjonUgyldigForesporselException( + detail: String, +) : UgyldigForespoerselException( + code = "011-TP-FORESPOERSEL", + detail = detail, + meta = getMeta(), + ) -class TjenestepensjonIkkeFunnetException(detail: String) : IkkeFunnetException( - code = "012-TP-IKKE-FUNNET", - detail = detail, - meta = getMeta(), -) +class TjenestepensjonIkkeFunnetException( + detail: String, +) : IkkeFunnetException( + code = "012-TP-IKKE-FUNNET", + detail = detail, + meta = getMeta(), + ) -class TjenestepensjonInternFeil(detail: String) : ForespoerselException( - status = 500, - code = "TP-INTERNFEIL", - detail = detail, - meta = getMeta(), -) +class TjenestepensjonInternFeil( + detail: String, +) : ForespoerselException( + status = 500, + code = "TP-INTERNFEIL", + detail = detail, + meta = getMeta(), + ) diff --git a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/TjenestepensjonKlient.kt b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/TjenestepensjonKlient.kt index 103c80a67bc..b2494d72052 100644 --- a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/TjenestepensjonKlient.kt +++ b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/TjenestepensjonKlient.kt @@ -18,7 +18,10 @@ import no.nav.etterlatte.libs.common.tidspunkt.Tidspunkt import org.slf4j.LoggerFactory import java.time.LocalDate -class TjenestepensjonKlient(config: Config, private val httpClient: HttpClient) { +class TjenestepensjonKlient( + config: Config, + private val httpClient: HttpClient, +) { private val logger = LoggerFactory.getLogger(TjenestepensjonKlient::class.java) private val sikkerLogg = sikkerlogger() @@ -33,10 +36,11 @@ class TjenestepensjonKlient(config: Config, private val httpClient: HttpClient) val tpNumre: TpNumre = handleFeil(fnr, tpnr, fomDato) { - httpClient.get { - url("$tjenestepensjonUrl/tpNrWithYtelse?fomDate=$fomDato") - header("fnr", fnr) - }.let { deserialize(it.body()) } + httpClient + .get { + url("$tjenestepensjonUrl/tpNrWithYtelse?fomDate=$fomDato") + header("fnr", fnr) + }.let { deserialize(it.body()) } } return tpNumre.tpNr.contains(tpnr.value) diff --git a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/VedtaksvurderingKlient.kt b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/VedtaksvurderingKlient.kt index e294d15f911..87f205e1ec9 100644 --- a/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/VedtaksvurderingKlient.kt +++ b/apps/etterlatte-samordning-vedtak/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/VedtaksvurderingKlient.kt @@ -17,7 +17,10 @@ import no.nav.etterlatte.libs.common.vedtak.VedtakSamordningDto import org.slf4j.LoggerFactory import java.time.LocalDate -class VedtaksvurderingKlient(config: Config, private val httpClient: HttpClient) { +class VedtaksvurderingKlient( + config: Config, + private val httpClient: HttpClient, +) { private val logger = LoggerFactory.getLogger(VedtaksvurderingKlient::class.java) private val vedtaksvurderingUrl = "${config.getString("vedtak.url")}/api/samordning/vedtak" @@ -29,12 +32,13 @@ class VedtaksvurderingKlient(config: Config, private val httpClient: HttpClient) logger.info("Henter vedtaksvurdering med vedtakId=$vedtakId") return try { - httpClient.get { - url("$vedtaksvurderingUrl/$vedtakId") - if (callerContext is MaskinportenTpContext) { - header("orgnr", callerContext.organisasjonsnr) - } - }.body() + httpClient + .get { + url("$vedtaksvurderingUrl/$vedtakId") + if (callerContext is MaskinportenTpContext) { + header("orgnr", callerContext.organisasjonsnr) + } + }.body() } catch (e: ClientRequestException) { logger.error("Det oppstod feil i kall til vedtak API", e) when (e.response.status) { @@ -55,14 +59,15 @@ class VedtaksvurderingKlient(config: Config, private val httpClient: HttpClient) logger.info("Henter vedtaksliste, fomDato=$fomDato") return try { - httpClient.get(vedtaksvurderingUrl) { - parameter("sakstype", sakType) - parameter("fomDato", fomDato) - header("fnr", fnr) - if (callerContext is MaskinportenTpContext) { - header("orgnr", callerContext.organisasjonsnr) - } - }.body() + httpClient + .get(vedtaksvurderingUrl) { + parameter("sakstype", sakType) + parameter("fomDato", fomDato) + header("fnr", fnr) + if (callerContext is MaskinportenTpContext) { + header("orgnr", callerContext.organisasjonsnr) + } + }.body() } catch (e: ClientRequestException) { logger.error("Det oppstod feil i kall til vedtaksliste API", e) when (e.response.status) { @@ -75,20 +80,26 @@ class VedtaksvurderingKlient(config: Config, private val httpClient: HttpClient) } } -class VedtakvurderingManglendeTilgangException(detail: String) : IkkeTillattException( - code = "020-VEDTAK-TILGANG", - detail = detail, - meta = getMeta(), -) +class VedtakvurderingManglendeTilgangException( + detail: String, +) : IkkeTillattException( + code = "020-VEDTAK-TILGANG", + detail = detail, + meta = getMeta(), + ) -class VedtakvurderingUgyldigForesporselException(detail: String) : UgyldigForespoerselException( - code = "020-VEDTAK-FORESPOERSEL", - detail = detail, - meta = getMeta(), -) +class VedtakvurderingUgyldigForesporselException( + detail: String, +) : UgyldigForespoerselException( + code = "020-VEDTAK-FORESPOERSEL", + detail = detail, + meta = getMeta(), + ) -class VedtakvurderingIkkeFunnetException(detail: String) : IkkeFunnetException( - code = "020-VEDTAK-IKKE-FUNNET", - detail = detail, - meta = getMeta(), -) +class VedtakvurderingIkkeFunnetException( + detail: String, +) : IkkeFunnetException( + code = "020-VEDTAK-IKKE-FUNNET", + detail = detail, + meta = getMeta(), + ) diff --git a/apps/etterlatte-samordning-vedtak/src/test/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtakRouteTest.kt b/apps/etterlatte-samordning-vedtak/src/test/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtakRouteTest.kt index 55d97157594..b45b2959d3e 100644 --- a/apps/etterlatte-samordning-vedtak/src/test/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtakRouteTest.kt +++ b/apps/etterlatte-samordning-vedtak/src/test/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtakRouteTest.kt @@ -182,10 +182,11 @@ class SamordningVedtakRouteTest { claims["consumer"] = mapOf("ID" to "0192:0123456789") maskinportenScope?.let { claims["scope"] = it } - return server.issueToken( - issuerId = ISSUER_ID_MASKINPORTEN, - claims = claims, - ).serialize() + return server + .issueToken( + issuerId = ISSUER_ID_MASKINPORTEN, + claims = claims, + ).serialize() } } @@ -275,10 +276,11 @@ class SamordningVedtakRouteTest { claims["oid"] = "pensjon-pen" claims["sub"] = "pensjon-pen" - return server.issueToken( - issuerId = ISSUER_ID_AZURE, - claims = claims, - ).serialize() + return server + .issueToken( + issuerId = ISSUER_ID_AZURE, + claims = claims, + ).serialize() } } diff --git a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/clients/BehandlingKlient.kt b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/clients/BehandlingKlient.kt index 35ff92a864a..3a3034e3a97 100644 --- a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/clients/BehandlingKlient.kt +++ b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/clients/BehandlingKlient.kt @@ -20,25 +20,25 @@ class BehandlingKlientImpl( private val behandlingHttpClient: HttpClient, private val behandlingUrl: String, ) : BehandlingKlient { - override suspend fun hentPersongalleri(behandlingId: UUID): Persongalleri { - return hentStatistikkBehandling(behandlingId).toPersongalleri() - } + override suspend fun hentPersongalleri(behandlingId: UUID): Persongalleri = hentStatistikkBehandling(behandlingId).toPersongalleri() - override suspend fun hentStatistikkBehandling(behandlingId: UUID): StatistikkBehandling { - return try { - behandlingHttpClient.get("$behandlingUrl/behandlinger/statistikk/$behandlingId") + override suspend fun hentStatistikkBehandling(behandlingId: UUID): StatistikkBehandling = + try { + behandlingHttpClient + .get("$behandlingUrl/behandlinger/statistikk/$behandlingId") .body() } catch (e: Exception) { throw KunneIkkeHenteFraBehandling("Kunne ikke hente behandling med id $behandlingId fra Behandling", e) } - } - override suspend fun hentUtlandstilknytning(behandlingId: UUID): Utlandstilknytning? { - return hentStatistikkBehandling(behandlingId).utlandstilknytning - } + override suspend fun hentUtlandstilknytning(behandlingId: UUID): Utlandstilknytning? = + hentStatistikkBehandling(behandlingId).utlandstilknytning } -class KunneIkkeHenteFraBehandling(message: String, cause: Exception) : Exception(message, cause) +class KunneIkkeHenteFraBehandling( + message: String, + cause: Exception, +) : Exception(message, cause) fun StatistikkBehandling.toPersongalleri() = Persongalleri( diff --git a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/clients/BeregningKlient.kt b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/clients/BeregningKlient.kt index 6de95267c5f..150fef95f07 100644 --- a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/clients/BeregningKlient.kt +++ b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/clients/BeregningKlient.kt @@ -22,9 +22,10 @@ class BeregningKlientImpl( ) : BeregningKlient { val logger = LoggerFactory.getLogger(this.javaClass) - override suspend fun hentBeregningForBehandling(behandlingId: UUID): Beregning? { - return try { - beregningHttpClient.get("$beregningUrl/api/beregning/$behandlingId") + override suspend fun hentBeregningForBehandling(behandlingId: UUID): Beregning? = + try { + beregningHttpClient + .get("$beregningUrl/api/beregning/$behandlingId") .body() .let { Beregning.fraBeregningDTO(it) } } catch (e: Exception) { @@ -34,11 +35,11 @@ class BeregningKlientImpl( ) null } - } - override suspend fun hentAvkortingForBehandling(behandlingId: UUID): Avkorting? { - return try { - beregningHttpClient.get("$beregningUrl/api/beregning/avkorting/$behandlingId") + override suspend fun hentAvkortingForBehandling(behandlingId: UUID): Avkorting? = + try { + beregningHttpClient + .get("$beregningUrl/api/beregning/avkorting/$behandlingId") .body() .let { Avkorting.fraDTO(it) } } catch (e: Exception) { @@ -48,5 +49,4 @@ class BeregningKlientImpl( ) null } - } } diff --git a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/database/OppdaterBeregningDao.kt b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/database/OppdaterBeregningDao.kt index c402022c163..9272ef66da5 100644 --- a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/database/OppdaterBeregningDao.kt +++ b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/database/OppdaterBeregningDao.kt @@ -16,13 +16,11 @@ class OppdaterBeregningDao( private val logger = LoggerFactory.getLogger(this::class.java) companion object { - fun using(datasource: DataSource): OppdaterBeregningDao { - return OppdaterBeregningDao(datasource) - } + fun using(datasource: DataSource): OppdaterBeregningDao = OppdaterBeregningDao(datasource) } - fun hentBehandlingerUtenOppdatertBeregning(limit: Int): List { - return datasource.connection.use { connection -> + fun hentBehandlingerUtenOppdatertBeregning(limit: Int): List = + datasource.connection.use { connection -> val statement = connection.prepareStatement( """ @@ -40,13 +38,12 @@ class OppdaterBeregningDao( this.getObject("behandling_id", UUID::class.java) } } - } fun lagreBeregning( behandlingId: UUID, beregning: Beregning?, - ): Boolean { - return datasource.connection.use { connection -> + ): Boolean = + datasource.connection.use { connection -> val statement = connection.prepareStatement( """ @@ -64,7 +61,6 @@ class OppdaterBeregningDao( statement.setObject(3, behandlingId) statement.executeUpdate() == 1 } - } fun lagrePatchetStatus( behandlingId: UUID, @@ -99,8 +95,8 @@ class OppdaterBeregningDao( return withConnection.let(oppdatering) } - fun hentBehandlingerSomIkkeErOppdatert(sakerAvGangen: Int): List> { - return datasource.connection.use { connection -> + fun hentBehandlingerSomIkkeErOppdatert(sakerAvGangen: Int): List> = + datasource.connection.use { connection -> val statement = connection.prepareStatement( """ @@ -120,10 +116,9 @@ class OppdaterBeregningDao( behandlingId to utlandstilknytning } } - } - fun hentBehandlingerForOppdateringAnvendtSats(sakerAvGangen: Int): List { - return datasource.connection.use { connection -> + fun hentBehandlingerForOppdateringAnvendtSats(sakerAvGangen: Int): List = + datasource.connection.use { connection -> val statement = connection.prepareStatement( """ @@ -147,7 +142,6 @@ class OppdaterBeregningDao( ) } } - } private fun hentAktuelleStatistikkmaanederOgAvdoedForBehandling( behandlingId: UUID, @@ -199,35 +193,33 @@ class OppdaterBeregningDao( fun patchRaderForBehandling( behandlingId: UUID, beregning: Beregning, - ) { - return datasource.connection.use { connection -> - val sakerOppdatering = - connection.prepareStatement( - """ - UPDATE sak SET beregning = ? WHERE behandling_id = ? - """.trimIndent(), - ) - sakerOppdatering.setJsonb(1, beregning) - sakerOppdatering.setObject(2, behandlingId) - val antallSakerOppdatert = sakerOppdatering.executeUpdate() + ) = datasource.connection.use { connection -> + val sakerOppdatering = + connection.prepareStatement( + """ + UPDATE sak SET beregning = ? WHERE behandling_id = ? + """.trimIndent(), + ) + sakerOppdatering.setJsonb(1, beregning) + sakerOppdatering.setObject(2, behandlingId) + val antallSakerOppdatert = sakerOppdatering.executeUpdate() - val stoenadOppdatering = - connection.prepareStatement( - """ - UPDATE stoenad SET beregning = ? WHERE behandlingid = ? - """.trimIndent(), - ) - stoenadOppdatering.setJsonb(1, beregning) - stoenadOppdatering.setObject(2, behandlingId) - val antallStoenadOppdatert = stoenadOppdatering.executeUpdate() - - lagrePatchetStatus( - behandlingId, - antallStoenadOppdatert, - antallSakerOppdatert, - connection, + val stoenadOppdatering = + connection.prepareStatement( + """ + UPDATE stoenad SET beregning = ? WHERE behandlingid = ? + """.trimIndent(), ) - } + stoenadOppdatering.setJsonb(1, beregning) + stoenadOppdatering.setObject(2, behandlingId) + val antallStoenadOppdatert = stoenadOppdatering.executeUpdate() + + lagrePatchetStatus( + behandlingId, + antallStoenadOppdatert, + antallSakerOppdatert, + connection, + ) } } diff --git a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/database/SakRepository.kt b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/database/SakRepository.kt index c0c050230c7..5118bb67c48 100644 --- a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/database/SakRepository.kt +++ b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/database/SakRepository.kt @@ -20,33 +20,34 @@ import java.sql.Types import java.util.UUID import javax.sql.DataSource -class SakRepository(private val datasource: DataSource) { +class SakRepository( + private val datasource: DataSource, +) { companion object { - fun using(datasource: DataSource): SakRepository { - return SakRepository(datasource) - } + fun using(datasource: DataSource): SakRepository = SakRepository(datasource) } fun lagreRad(sakRad: SakRad): SakRad? { datasource.connection.use { connection -> val (statement, insertedRows) = - connection.prepareStatement( - """ - INSERT INTO sak ( - behandling_id, sak_id, mottatt_tid, registrert_tid, ferdigbehandlet_tid, vedtak_tid, - behandling_type, behandling_status, behandling_resultat, resultat_begrunnelse, behandling_metode, - opprettet_av, ansvarlig_beslutter, aktor_id, dato_foerste_utbetaling, teknisk_tid, sak_ytelse, - vedtak_loepende_fom, vedtak_loepende_tom, saksbehandler, ansvarlig_enhet, soeknad_format, - sak_utland, beregning, sak_ytelsesgruppe, avdoede_foreldre, revurdering_aarsak, avkorting, - kilde, pesysid, relatert_til, paa_vent_aarsak - ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - """.trimIndent(), - Statement.RETURN_GENERATED_KEYS, - ).apply { - setSakRad(sakRad) - }.let { - it to it.executeUpdate() - } + connection + .prepareStatement( + """ + INSERT INTO sak ( + behandling_id, sak_id, mottatt_tid, registrert_tid, ferdigbehandlet_tid, vedtak_tid, + behandling_type, behandling_status, behandling_resultat, resultat_begrunnelse, behandling_metode, + opprettet_av, ansvarlig_beslutter, aktor_id, dato_foerste_utbetaling, teknisk_tid, sak_ytelse, + vedtak_loepende_fom, vedtak_loepende_tom, saksbehandler, ansvarlig_enhet, soeknad_format, + sak_utland, beregning, sak_ytelsesgruppe, avdoede_foreldre, revurdering_aarsak, avkorting, + kilde, pesysid, relatert_til, paa_vent_aarsak + ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """.trimIndent(), + Statement.RETURN_GENERATED_KEYS, + ).apply { + setSakRad(sakRad) + }.let { + it to it.executeUpdate() + } if (insertedRows == 0) { return null } @@ -96,8 +97,8 @@ class SakRepository(private val datasource: DataSource) { paaVentAarsak = getString("paa_vent_aarsak")?.let { enumValueOf(it) }, ) - fun hentRader(): List { - return datasource.connection.use { connection -> + fun hentRader(): List = + datasource.connection.use { connection -> val statement = connection.prepareStatement( """ @@ -112,27 +113,26 @@ class SakRepository(private val datasource: DataSource) { ) statement.executeQuery().toList { tilSakRad() } } - } - fun hentSisteRad(behandlingId: UUID): SakRad? { - return datasource.connection.use { connection -> + fun hentSisteRad(behandlingId: UUID): SakRad? = + datasource.connection.use { connection -> val statement = - connection.prepareStatement( - """ - SELECT id, behandling_id, sak_id, mottatt_tid, registrert_tid, ferdigbehandlet_tid, vedtak_tid, - behandling_type, behandling_status, behandling_resultat, resultat_begrunnelse, behandling_metode, - opprettet_av, ansvarlig_beslutter, aktor_id, dato_foerste_utbetaling, teknisk_tid, sak_ytelse, - vedtak_loepende_fom, vedtak_loepende_tom, saksbehandler, ansvarlig_enhet, soeknad_format, sak_utland, - beregning, sak_ytelsesgruppe, avdoede_foreldre, revurdering_aarsak, avkorting, kilde, pesysid, - relatert_til, paa_vent_aarsak - FROM sak where behandling_id = ? order by id desc - """.trimIndent(), - ).apply { - setObject(1, behandlingId) - } + connection + .prepareStatement( + """ + SELECT id, behandling_id, sak_id, mottatt_tid, registrert_tid, ferdigbehandlet_tid, vedtak_tid, + behandling_type, behandling_status, behandling_resultat, resultat_begrunnelse, behandling_metode, + opprettet_av, ansvarlig_beslutter, aktor_id, dato_foerste_utbetaling, teknisk_tid, sak_ytelse, + vedtak_loepende_fom, vedtak_loepende_tom, saksbehandler, ansvarlig_enhet, soeknad_format, sak_utland, + beregning, sak_ytelsesgruppe, avdoede_foreldre, revurdering_aarsak, avkorting, kilde, pesysid, + relatert_til, paa_vent_aarsak + FROM sak where behandling_id = ? order by id desc + """.trimIndent(), + ).apply { + setObject(1, behandlingId) + } statement.executeQuery().toList { tilSakRad() }.firstOrNull() } - } } private fun PreparedStatement.setSakRad(sakRad: SakRad): PreparedStatement = diff --git a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/database/SoeknadStatistikkRepository.kt b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/database/SoeknadStatistikkRepository.kt index d011ead8163..062c963e055 100644 --- a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/database/SoeknadStatistikkRepository.kt +++ b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/database/SoeknadStatistikkRepository.kt @@ -4,7 +4,9 @@ import no.nav.etterlatte.libs.database.single import no.nav.etterlatte.statistikk.domain.SoeknadStatistikk import javax.sql.DataSource -class SoeknadStatistikkRepository(private val datasource: DataSource) { +class SoeknadStatistikkRepository( + private val datasource: DataSource, +) { fun lagreNedSoeknadStatistikk(soeknadStatistikk: SoeknadStatistikk): SoeknadStatistikk { datasource.connection.use { val statement = @@ -25,8 +27,8 @@ class SoeknadStatistikkRepository(private val datasource: DataSource) { return soeknadStatistikk } - fun hentAntallSoeknader(): Long { - return datasource.connection.use { + fun hentAntallSoeknader(): Long = + datasource.connection.use { val statement = it.prepareStatement( """ @@ -36,14 +38,13 @@ class SoeknadStatistikkRepository(private val datasource: DataSource) { val result = statement.executeQuery() result.single { getLong(1) } } - } fun hentAntallSoeknaderGyldigForBehandling() = hentSoeknaderMedGyldigForBehandling(true) fun hentAntallSoeknaderIkkeGyldigForBehandling() = hentSoeknaderMedGyldigForBehandling(false) - private fun hentSoeknaderMedGyldigForBehandling(gyldig: Boolean): Long { - return datasource.connection.use { + private fun hentSoeknaderMedGyldigForBehandling(gyldig: Boolean): Long = + datasource.connection.use { val statement = it.prepareStatement( """ @@ -55,11 +56,8 @@ class SoeknadStatistikkRepository(private val datasource: DataSource) { val result = statement.executeQuery() result.single { getLong(1) } } - } companion object { - fun using(datasource: DataSource): SoeknadStatistikkRepository { - return SoeknadStatistikkRepository(datasource) - } + fun using(datasource: DataSource): SoeknadStatistikkRepository = SoeknadStatistikkRepository(datasource) } } diff --git a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/database/StoenadRepository.kt b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/database/StoenadRepository.kt index 02b90636ac6..2040210d303 100644 --- a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/database/StoenadRepository.kt +++ b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/database/StoenadRepository.kt @@ -23,108 +23,111 @@ import java.time.YearMonth import java.util.UUID import javax.sql.DataSource -class StoenadRepository(private val datasource: DataSource) { +class StoenadRepository( + private val datasource: DataSource, +) { private val connection get() = datasource.connection companion object { - fun using(datasource: DataSource): StoenadRepository { - return StoenadRepository(datasource) - } + fun using(datasource: DataSource): StoenadRepository = StoenadRepository(datasource) } - fun hentStoenadRader(): List { - return connection.use { - it.prepareStatement( - """ - SELECT id, fnrSoeker, fnrForeldre, - fnrSoesken, anvendtTrygdetid, nettoYtelse, beregningType, anvendtSats, behandlingId, sakId, - sakNummer, tekniskTid, sakYtelse, versjon, saksbehandler, attestant, vedtakLoependeFom, - vedtakLoependeTom, beregning, avkorting, vedtakType, sak_utland, virkningstidspunkt, utbetalingsdato, - kilde, pesysid, sakYtelsesgruppe - FROM stoenad - """.trimIndent(), - ).executeQuery().toList { - asStoenadRad() - } + fun hentStoenadRader(): List = + connection.use { + it + .prepareStatement( + """ + SELECT id, fnrSoeker, fnrForeldre, + fnrSoesken, anvendtTrygdetid, nettoYtelse, beregningType, anvendtSats, behandlingId, sakId, + sakNummer, tekniskTid, sakYtelse, versjon, saksbehandler, attestant, vedtakLoependeFom, + vedtakLoependeTom, beregning, avkorting, vedtakType, sak_utland, virkningstidspunkt, utbetalingsdato, + kilde, pesysid, sakYtelsesgruppe + FROM stoenad + """.trimIndent(), + ).executeQuery() + .toList { + asStoenadRad() + } } - } - fun hentStoenadRaderInnenforMaaned(maaned: YearMonth): List { - return connection.use { conn -> - conn.prepareStatement( - """ - SELECT * FROM stoenad - WHERE vedtakLoependeFom <= ? AND COALESCE(vedtakLoependeTom, ?) >= ? - AND tekniskTid <= ? - """.trimIndent(), - ).apply { - setDate(1, Date.valueOf(maaned.atEndOfMonth())) - setDate(2, Date.valueOf(maaned.atEndOfMonth())) - setDate(3, Date.valueOf(maaned.atEndOfMonth())) - setTidspunkt(4, maaned.atEndOfMonth().atTime(LocalTime.MAX).toNorskTidspunkt()) - }.executeQuery().toList { asStoenadRad() } - } - } - - fun lagreMaanedStatistikkRad(maanedStatistikkRad: MaanedStoenadRad) { - return connection.use { conn -> - conn.prepareStatement( - """ - INSERT INTO maaned_stoenad( - fnrSoeker, fnrForeldre, fnrSoesken, anvendtTrygdetid, nettoYtelse, beregningType, anvendtSats, - behandlingId, sakId, tekniskTid, sakYtelse, versjon, saksbehandler, attestant, - vedtakLoependeFom, vedtakLoependeTom, statistikkMaaned, sak_utland, - virkningstidspunkt, utbetalingsdato, avkortingsbeloep, aarsinntekt, kilde, pesysid, sakYtelsesgruppe - ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - """.trimIndent(), - ).apply { - setString(1, maanedStatistikkRad.fnrSoeker) - setJsonb(2, maanedStatistikkRad.fnrForeldre) - setJsonb(3, maanedStatistikkRad.fnrSoesken) - setString(4, maanedStatistikkRad.anvendtTrygdetid) - setString(5, maanedStatistikkRad.nettoYtelse) - setString(6, maanedStatistikkRad.beregningType) - setString(7, maanedStatistikkRad.anvendtSats) - setObject(8, maanedStatistikkRad.behandlingId) - setLong(9, maanedStatistikkRad.sakId) - setTidspunkt(10, maanedStatistikkRad.tekniskTid) - setString(11, maanedStatistikkRad.sakYtelse) - setString(12, maanedStatistikkRad.versjon) - setString(13, maanedStatistikkRad.saksbehandler) - setString(14, maanedStatistikkRad.attestant) - setDate(15, Date.valueOf(maanedStatistikkRad.vedtakLoependeFom)) - setDate(16, maanedStatistikkRad.vedtakLoependeTom?.let { Date.valueOf(it) }) - setString(17, maanedStatistikkRad.statistikkMaaned.toString()) - setString(18, maanedStatistikkRad.sakUtland.toString()) - setDate(19, maanedStatistikkRad.virkningstidspunkt?.let { Date.valueOf(it.atDay(1)) }) - setDate(20, maanedStatistikkRad.utbetalingsdato?.let { Date.valueOf(it) }) - setString(21, maanedStatistikkRad.avkortingsbeloep) - setString(22, maanedStatistikkRad.aarsinntekt) - setString(23, maanedStatistikkRad.kilde.name) - maanedStatistikkRad.pesysId?.let { setLong(24, it) } ?: setNull(24, Types.BIGINT) - setString(25, maanedStatistikkRad.sakYtelsesgruppe?.name) - }.executeUpdate() + fun hentStoenadRaderInnenforMaaned(maaned: YearMonth): List = + connection.use { conn -> + conn + .prepareStatement( + """ + SELECT * FROM stoenad + WHERE vedtakLoependeFom <= ? AND COALESCE(vedtakLoependeTom, ?) >= ? + AND tekniskTid <= ? + """.trimIndent(), + ).apply { + setDate(1, Date.valueOf(maaned.atEndOfMonth())) + setDate(2, Date.valueOf(maaned.atEndOfMonth())) + setDate(3, Date.valueOf(maaned.atEndOfMonth())) + setTidspunkt(4, maaned.atEndOfMonth().atTime(LocalTime.MAX).toNorskTidspunkt()) + }.executeQuery() + .toList { asStoenadRad() } } - } - fun lagreStoenadsrad(stoenadsrad: StoenadRad): StoenadRad? { + fun lagreMaanedStatistikkRad(maanedStatistikkRad: MaanedStoenadRad) = connection.use { conn -> - val (statement, insertedRows) = - conn.prepareStatement( + conn + .prepareStatement( """ - INSERT INTO stoenad( + INSERT INTO maaned_stoenad( fnrSoeker, fnrForeldre, fnrSoesken, anvendtTrygdetid, nettoYtelse, beregningType, anvendtSats, - behandlingId, sakId, sakNummer, tekniskTid, sakYtelse, versjon, saksbehandler, attestant, - vedtakLoependeFom, vedtakLoependeTom, beregning, avkorting, vedtakType, sak_utland, - virkningstidspunkt, utbetalingsdato, kilde, pesysid, sakYtelsesgruppe - ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + behandlingId, sakId, tekniskTid, sakYtelse, versjon, saksbehandler, attestant, + vedtakLoependeFom, vedtakLoependeTom, statistikkMaaned, sak_utland, + virkningstidspunkt, utbetalingsdato, avkortingsbeloep, aarsinntekt, kilde, pesysid, sakYtelsesgruppe + ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) """.trimIndent(), - Statement.RETURN_GENERATED_KEYS, ).apply { - setStoenadRad(stoenadsrad) - }.let { - it to it.executeUpdate() - } + setString(1, maanedStatistikkRad.fnrSoeker) + setJsonb(2, maanedStatistikkRad.fnrForeldre) + setJsonb(3, maanedStatistikkRad.fnrSoesken) + setString(4, maanedStatistikkRad.anvendtTrygdetid) + setString(5, maanedStatistikkRad.nettoYtelse) + setString(6, maanedStatistikkRad.beregningType) + setString(7, maanedStatistikkRad.anvendtSats) + setObject(8, maanedStatistikkRad.behandlingId) + setLong(9, maanedStatistikkRad.sakId) + setTidspunkt(10, maanedStatistikkRad.tekniskTid) + setString(11, maanedStatistikkRad.sakYtelse) + setString(12, maanedStatistikkRad.versjon) + setString(13, maanedStatistikkRad.saksbehandler) + setString(14, maanedStatistikkRad.attestant) + setDate(15, Date.valueOf(maanedStatistikkRad.vedtakLoependeFom)) + setDate(16, maanedStatistikkRad.vedtakLoependeTom?.let { Date.valueOf(it) }) + setString(17, maanedStatistikkRad.statistikkMaaned.toString()) + setString(18, maanedStatistikkRad.sakUtland.toString()) + setDate(19, maanedStatistikkRad.virkningstidspunkt?.let { Date.valueOf(it.atDay(1)) }) + setDate(20, maanedStatistikkRad.utbetalingsdato?.let { Date.valueOf(it) }) + setString(21, maanedStatistikkRad.avkortingsbeloep) + setString(22, maanedStatistikkRad.aarsinntekt) + setString(23, maanedStatistikkRad.kilde.name) + maanedStatistikkRad.pesysId?.let { setLong(24, it) } ?: setNull(24, Types.BIGINT) + setString(25, maanedStatistikkRad.sakYtelsesgruppe?.name) + }.executeUpdate() + } + + fun lagreStoenadsrad(stoenadsrad: StoenadRad): StoenadRad? { + connection.use { conn -> + val (statement, insertedRows) = + conn + .prepareStatement( + """ + INSERT INTO stoenad( + fnrSoeker, fnrForeldre, fnrSoesken, anvendtTrygdetid, nettoYtelse, beregningType, anvendtSats, + behandlingId, sakId, sakNummer, tekniskTid, sakYtelse, versjon, saksbehandler, attestant, + vedtakLoependeFom, vedtakLoependeTom, beregning, avkorting, vedtakType, sak_utland, + virkningstidspunkt, utbetalingsdato, kilde, pesysid, sakYtelsesgruppe + ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + """.trimIndent(), + Statement.RETURN_GENERATED_KEYS, + ).apply { + setStoenadRad(stoenadsrad) + }.let { + it to it.executeUpdate() + } if (insertedRows == 0) { return null } @@ -137,19 +140,19 @@ class StoenadRepository(private val datasource: DataSource) { } } - fun kjoertStatusForMaanedsstatistikk(maaned: YearMonth): KjoertStatus { - return connection.use { conn -> - conn.prepareStatement( - """ - SELECT id, statistikkMaaned, kjoertStatus, raderRegistrert, raderMedFeil - FROM maanedsstatistikk_job - WHERE statistikkMaaned = ? - """.trimIndent(), - ) - .apply { + fun kjoertStatusForMaanedsstatistikk(maaned: YearMonth): KjoertStatus = + connection.use { conn -> + conn + .prepareStatement( + """ + SELECT id, statistikkMaaned, kjoertStatus, raderRegistrert, raderMedFeil + FROM maanedsstatistikk_job + WHERE statistikkMaaned = ? + """.trimIndent(), + ).apply { setString(1, maaned.toString()) - } - .executeQuery().toList { + }.executeQuery() + .toList { MaanedstatistikkJobExecution( id = getLong("id"), statistikkMaaned = YearMonth.parse(getString("statistikkMaaned")), @@ -157,7 +160,8 @@ class StoenadRepository(private val datasource: DataSource) { raderRegistrert = getLong("raderRegistrert"), raderMedFeil = getLong("raderMedFeil"), ) - }.map { it.kjoertStatus }.toSet() + }.map { it.kjoertStatus } + .toSet() .let { if (it.contains(KjoertStatus.INGEN_FEIL)) { KjoertStatus.INGEN_FEIL @@ -168,7 +172,6 @@ class StoenadRepository(private val datasource: DataSource) { } } } - } fun lagreMaanedJobUtfoert( maaned: YearMonth, @@ -181,14 +184,14 @@ class StoenadRepository(private val datasource: DataSource) { else -> KjoertStatus.FEIL } connection.use { - it.prepareStatement( - """ - INSERT INTO maanedsstatistikk_job ( - statistikkMaaned, kjoertStatus, raderRegistrert, raderMedFeil - ) VALUES (?, ?, ?, ?) - """.trimIndent(), - ) - .apply { + it + .prepareStatement( + """ + INSERT INTO maanedsstatistikk_job ( + statistikkMaaned, kjoertStatus, raderRegistrert, raderMedFeil + ) VALUES (?, ?, ?, ?) + """.trimIndent(), + ).apply { setString(1, maaned.toString()) setString(2, kjoertStatus.toString()) setLong(3, raderRegistrert) diff --git a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/domain/Beregning.kt b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/domain/Beregning.kt index 1d287c507f9..94c9b1c8900 100644 --- a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/domain/Beregning.kt +++ b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/domain/Beregning.kt @@ -38,9 +38,8 @@ data class Beregning( // TODO: Sett denne som non-nullable etter at vi har refreshet hentede beregninger val overstyrtBeregning: Boolean? = null, ) { - fun beregningForMaaned(maaned: YearMonth): Beregningsperiode? { - return beregningsperioder.find { it.datoFOM <= maaned && (it.datoTOM ?: maaned) >= maaned } - } + fun beregningForMaaned(maaned: YearMonth): Beregningsperiode? = + beregningsperioder.find { it.datoFOM <= maaned && (it.datoTOM ?: maaned) >= maaned } companion object { fun fraBeregningDTO(dto: CommonBeregningDTO) = @@ -59,11 +58,10 @@ data class InstitusjonsoppholdStatistikk( val sats: BigDecimal, ) { companion object { - fun fra(dto: InstitusjonsoppholdBeregningsgrunnlag): InstitusjonsoppholdStatistikk { - return InstitusjonsoppholdStatistikk( + fun fra(dto: InstitusjonsoppholdBeregningsgrunnlag): InstitusjonsoppholdStatistikk = + InstitusjonsoppholdStatistikk( sats = dto.prosentEtterReduksjon().verdi.toBigDecimal() / 100.toBigDecimal(), ) - } } } diff --git a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/domain/MaanedStatistikk.kt b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/domain/MaanedStatistikk.kt index 4054364d307..9484e8096bf 100644 --- a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/domain/MaanedStatistikk.kt +++ b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/domain/MaanedStatistikk.kt @@ -37,7 +37,10 @@ data class MaanedStoenadRad( val sakYtelsesgruppe: SakYtelsesgruppe?, ) -class MaanedStatistikk(val maaned: YearMonth, stoenadRader: List) { +class MaanedStatistikk( + val maaned: YearMonth, + stoenadRader: List, +) { val rader: List init { diff --git a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/domain/Sak.kt b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/domain/Sak.kt index 469ffd09e41..8b719e59a43 100644 --- a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/domain/Sak.kt +++ b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/domain/Sak.kt @@ -30,13 +30,12 @@ enum class SakUtland { return fraUtlandstilknytningType(utlandstilknytning.type) } - fun fraUtlandstilknytningType(utlandstilknytningType: UtlandstilknytningType): SakUtland { - return when (utlandstilknytningType) { + fun fraUtlandstilknytningType(utlandstilknytningType: UtlandstilknytningType): SakUtland = + when (utlandstilknytningType) { UtlandstilknytningType.NASJONAL -> NASJONAL UtlandstilknytningType.BOSATT_UTLAND -> BOSATT_UTLAND UtlandstilknytningType.UTLANDSTILSNITT -> UTLANDSTILSNITT } - } } } diff --git a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/jobs/RefreshBeregningJob.kt b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/jobs/RefreshBeregningJob.kt index 5509997d8be..1abe0708ee8 100644 --- a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/jobs/RefreshBeregningJob.kt +++ b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/jobs/RefreshBeregningJob.kt @@ -66,23 +66,24 @@ class RefreshBeregningJob( private fun hentNyBeregning() { val behandlingerMedManglendeUtland = oppdaterBeregningDao.hentBehandlingerUtenOppdatertBeregning(sakerAvGangen) - behandlingerMedManglendeUtland.map { - it to - try { - runBlocking { beregningKlient.hentBeregningForBehandling(it) } - } catch (e: Exception) { - logger.warn( - "Kunne ikke hente beregning på nytt for for behandlingId=$it. " + - "Setter at vi ikke fikk hentet ny beregning.", - ) - null - } - }.forEach { (behandlingId, beregning) -> - oppdaterBeregningDao.lagreBeregning( - behandlingId, - beregning, - ) - } + behandlingerMedManglendeUtland + .map { + it to + try { + runBlocking { beregningKlient.hentBeregningForBehandling(it) } + } catch (e: Exception) { + logger.warn( + "Kunne ikke hente beregning på nytt for for behandlingId=$it. " + + "Setter at vi ikke fikk hentet ny beregning.", + ) + null + } + }.forEach { (behandlingId, beregning) -> + oppdaterBeregningDao.lagreBeregning( + behandlingId, + beregning, + ) + } } private fun oppdaterMedNyBeregning() { diff --git a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/AvbruttOpprettetBehandlinghendelseRiver.kt b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/AvbruttOpprettetBehandlinghendelseRiver.kt index 9749c53eabc..6fb0e7e9f99 100644 --- a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/AvbruttOpprettetBehandlinghendelseRiver.kt +++ b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/AvbruttOpprettetBehandlinghendelseRiver.kt @@ -49,7 +49,8 @@ class AvbruttOpprettetBehandlinghendelseRiver( val hendelse: BehandlingHendelseType = enumValueOf(packet[EVENT_NAME_KEY].textValue().split(":")[1]) val tekniskTid = parseTekniskTid(packet, logger) - service.registrerStatistikkForBehandlinghendelse(behandling, hendelse, tekniskTid) + service + .registrerStatistikkForBehandlinghendelse(behandling, hendelse, tekniskTid) ?.also { context.publish( mapOf( diff --git a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/BehandlingPaaVentHendelseRiver.kt b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/BehandlingPaaVentHendelseRiver.kt index c6bd0a379f3..bf6eb0fd26d 100644 --- a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/BehandlingPaaVentHendelseRiver.kt +++ b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/BehandlingPaaVentHendelseRiver.kt @@ -48,7 +48,8 @@ class BehandlingPaaVentHendelseRiver( val behandlingId = UUID.fromString(packet[BEHANDLING_ID_PAA_VENT_RIVER_KEY].textValue()) val aarsak: PaaVentAarsak = PaaVentAarsak.valueOf(packet[PAA_VENT_AARSAK_KEY].textValue()) - service.registrerStatistikkBehandlingPaaVentHendelse(behandlingId, hendelse, tekniskTid, aarsak) + service + .registrerStatistikkBehandlingPaaVentHendelse(behandlingId, hendelse, tekniskTid, aarsak) ?.also { context.publish( mapOf( diff --git a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/KlagehendelseRiver.kt b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/KlagehendelseRiver.kt index f18e0c8a730..45734454aa5 100644 --- a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/KlagehendelseRiver.kt +++ b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/KlagehendelseRiver.kt @@ -41,7 +41,8 @@ class KlagehendelseRiver( val klage: StatistikkKlage = objectMapper.treeToValue(packet[KLAGE_STATISTIKK_RIVER_KEY]) val tekniskTid = parseTekniskTid(packet, logger) val hendelse: KlageHendelseType = enumValueOf(packet[EVENT_NAME_KEY].textValue().split(":")[1]) - return service.registrerStatistikkForKlagehendelse(klage, tekniskTid, hendelse) + return service + .registrerStatistikkForKlagehendelse(klage, tekniskTid, hendelse) ?.also { context.publish( mapOf( diff --git a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/TilbakekrevinghendelseRiver.kt b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/TilbakekrevinghendelseRiver.kt index 8d2ac1a2bb6..2944f3e9063 100644 --- a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/TilbakekrevinghendelseRiver.kt +++ b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/TilbakekrevinghendelseRiver.kt @@ -41,7 +41,8 @@ class TilbakekrevinghendelseRiver( val tilbakekreving: StatistikkTilbakekrevingDto = objectMapper.treeToValue(packet[TILBAKEKREVING_STATISTIKK_RIVER_KEY]) val tekniskTid = parseTekniskTid(packet, logger) val hendelse: TilbakekrevingHendelseType = enumValueOf(packet[EVENT_NAME_KEY].textValue().split(":")[1]) - return service.registrerStatistikkFortilbakkrevinghendelse(tilbakekreving, tekniskTid, hendelse) + return service + .registrerStatistikkFortilbakkrevinghendelse(tilbakekreving, tekniskTid, hendelse) ?.also { context.publish( mapOf( diff --git a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/VedtakhendelserRiver.kt b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/VedtakhendelserRiver.kt index 78194a292bb..c5ca68b2a53 100644 --- a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/VedtakhendelserRiver.kt +++ b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/river/VedtakhendelserRiver.kt @@ -46,12 +46,12 @@ class VedtakhendelserRiver( ) = try { val vedtakshendelse = enumValueOf(packet[EVENT_NAME_KEY].textValue().split(":")[1]) val tekniskTid = parseTekniskTid(packet, logger) - service.registrerStatistikkForVedtak( - objectMapper.treeToValue(packet["vedtak"]), - vedtakshendelse, - tekniskTid, - ) - .also { (sakRad, stoenadRad) -> + service + .registrerStatistikkForVedtak( + objectMapper.treeToValue(packet["vedtak"]), + vedtakshendelse, + tekniskTid, + ).also { (sakRad, stoenadRad) -> if (sakRad == null && stoenadRad == null) { logger.info( "Ingen statistikk registrert for pakken med korrelasjonsid ${packet.correlationId}", diff --git a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/service/StatistikkService.kt b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/service/StatistikkService.kt index 35cda60fd97..b87002b477a 100644 --- a/apps/etterlatte-statistikk/src/main/kotlin/statistikk/service/StatistikkService.kt +++ b/apps/etterlatte-statistikk/src/main/kotlin/statistikk/service/StatistikkService.kt @@ -95,17 +95,15 @@ class StatistikkService( vedtak: VedtakDto, hendelse: VedtakKafkaHendelseHendelseType, tekniskTid: LocalDateTime, - ): SakRad? { - return vedtakshendelseTilSakRad(vedtak, hendelse, tekniskTid)?.let { sakRad -> + ): SakRad? = + vedtakshendelseTilSakRad(vedtak, hendelse, tekniskTid)?.let { sakRad -> sakRepository.lagreRad(sakRad) } - } - private fun hentBeregningForBehandling(behandlingId: UUID): Beregning? { - return runBlocking { + private fun hentBeregningForBehandling(behandlingId: UUID): Beregning? = + runBlocking { beregningKlient.hentBeregningForBehandling(behandlingId) } - } private fun hentAvkortingForBehandling(vedtak: VedtakDto): Avkorting? { if (vedtak.sak.sakType == SakType.OMSTILLINGSSTOENAD) { @@ -252,7 +250,11 @@ class StatistikkService( fnrSoesken = persongalleri.soesken, anvendtTrygdetid = "40", // TODO Bør utbedres? - nettoYtelse = vedtakInnhold.utbetalingsperioder.firstOrNull()?.beloep?.toString(), + nettoYtelse = + vedtakInnhold.utbetalingsperioder + .firstOrNull() + ?.beloep + ?.toString(), beregningType = "FOLKETRYGD", anvendtSats = "", behandlingId = vedtakInnhold.behandling.id, @@ -322,9 +324,12 @@ class StatistikkService( relatertTil = null, ) - private fun mapTilbakekrevingResultat(tilbakekreving: Tilbakekreving): TilbakekrevingResultat? { - return TilbakekrevingResultat.hoyesteGradAvTilbakekreving(tilbakekreving.perioder.mapNotNull { it.ytelse.resultat }) - } + private fun mapTilbakekrevingResultat(tilbakekreving: Tilbakekreving): TilbakekrevingResultat? = + TilbakekrevingResultat.hoyesteGradAvTilbakekreving( + tilbakekreving.perioder.mapNotNull { + it.ytelse.resultat + }, + ) private fun klageTilSakRad( statistikkKlage: StatistikkKlage, @@ -341,7 +346,10 @@ class StatistikkService( resultat = resultatKlage(statistikkKlage), saksbehandler = statistikkKlage.saksbehandler, ansvarligEnhet = statistikkKlage.klage.sak.enhet, - ansvarligBeslutter = statistikkKlage.klage.formkrav?.saksbehandler?.ident, + ansvarligBeslutter = + statistikkKlage.klage.formkrav + ?.saksbehandler + ?.ident, aktorId = statistikkKlage.klage.sak.ident, tekniskTid = tekniskTid.toTidspunkt(), sakYtelse = statistikkKlage.klage.sak.sakType.name, @@ -365,7 +373,11 @@ class StatistikkService( sakUtland = statistikkKlage.utlandstilknytningType?.let { SakUtland.fraUtlandstilknytningType(it) }, soeknadFormat = null, vedtakLoependeTom = null, - relatertTil = statistikkKlage.klage.formkrav?.formkrav?.vedtaketKlagenGjelder?.behandlingId, + relatertTil = + statistikkKlage.klage.formkrav + ?.formkrav + ?.vedtaketKlagenGjelder + ?.behandlingId, ) private fun resultatKlage(statistikkKlage: StatistikkKlage): String? { @@ -448,9 +460,7 @@ class StatistikkService( statistikkBehandling: StatistikkBehandling, hendelse: BehandlingHendelseType, tekniskTid: LocalDateTime, - ): SakRad? { - return sakRepository.lagreRad(behandlingTilSakRad(statistikkBehandling, hendelse, tekniskTid)) - } + ): SakRad? = sakRepository.lagreRad(behandlingTilSakRad(statistikkBehandling, hendelse, tekniskTid)) fun registrerStatistikkBehandlingPaaVentHendelse( behandlingId: UUID, @@ -477,21 +487,15 @@ class StatistikkService( statistikkKlage: StatistikkKlage, tekniskTid: LocalDateTime, hendelse: KlageHendelseType, - ): SakRad? { - return sakRepository.lagreRad(klageTilSakRad(statistikkKlage, tekniskTid, hendelse)) - } + ): SakRad? = sakRepository.lagreRad(klageTilSakRad(statistikkKlage, tekniskTid, hendelse)) fun registrerStatistikkFortilbakkrevinghendelse( statistikkTilbakekreving: StatistikkTilbakekrevingDto, tekniskTid: LocalDateTime, hendelse: TilbakekrevingHendelseType, - ): SakRad? { - return sakRepository.lagreRad(tilbakekrevingTilSakRad(statistikkTilbakekreving, tekniskTid, hendelse)) - } + ): SakRad? = sakRepository.lagreRad(tilbakekrevingTilSakRad(statistikkTilbakekreving, tekniskTid, hendelse)) - fun statistikkProdusertForMaaned(maaned: YearMonth): KjoertStatus { - return stoenadRepository.kjoertStatusForMaanedsstatistikk(maaned) - } + fun statistikkProdusertForMaaned(maaned: YearMonth): KjoertStatus = stoenadRepository.kjoertStatusForMaanedsstatistikk(maaned) fun lagreMaanedsstatistikk(maanedsstatistikkk: MaanedStatistikk) { var raderMedFeil = 0L diff --git a/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/database/SakRepositoryTest.kt b/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/database/SakRepositoryTest.kt index 06ee1536e53..d5d48a07b3d 100644 --- a/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/database/SakRepositoryTest.kt +++ b/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/database/SakRepositoryTest.kt @@ -27,7 +27,9 @@ import java.util.UUID import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) -class SakRepositoryTest(private val dataSource: DataSource) { +class SakRepositoryTest( + private val dataSource: DataSource, +) { val mockBeregning = Beregning( beregningId = UUID.randomUUID(), diff --git a/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/database/SoeknadStatistikkRepositoryTest.kt b/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/database/SoeknadStatistikkRepositoryTest.kt index 801169a97ef..b44df068041 100644 --- a/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/database/SoeknadStatistikkRepositoryTest.kt +++ b/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/database/SoeknadStatistikkRepositoryTest.kt @@ -10,7 +10,9 @@ import org.junit.jupiter.api.extension.RegisterExtension import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) -class SoeknadStatistikkRepositoryTest(private val dataSource: DataSource) { +class SoeknadStatistikkRepositoryTest( + private val dataSource: DataSource, +) { companion object { @RegisterExtension val dbExtension = DatabaseExtension() diff --git a/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/database/StoenadRepositoryTest.kt b/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/database/StoenadRepositoryTest.kt index 1d96f28c6b6..32f5d3166d0 100644 --- a/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/database/StoenadRepositoryTest.kt +++ b/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/database/StoenadRepositoryTest.kt @@ -29,7 +29,9 @@ import java.util.UUID import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) -class StoenadRepositoryTest(private val dataSource: DataSource) { +class StoenadRepositoryTest( + private val dataSource: DataSource, +) { companion object { @RegisterExtension val dbExtension = DatabaseExtension() @@ -211,9 +213,19 @@ class StoenadRepositoryTest(private val dataSource: DataSource) { fun `hentRaderInnenforMaaned ignorerer rader som er fattet etter maaneden`() { val repo = StoenadRepository.using(dataSource) val maaned = YearMonth.of(2022, 8) - val tekniskTidEtterMaaned = maaned.plusMonths(1).atDay(1).atStartOfDay().toNorskTidspunkt() + val tekniskTidEtterMaaned = + maaned + .plusMonths(1) + .atDay(1) + .atStartOfDay() + .toNorskTidspunkt() val tekniskTidInnenforMaaned = maaned.atDay(1).atStartOfDay().toNorskTidspunkt() - val tekniskTidFoerMaaned = maaned.minusMonths(1).atDay(1).atStartOfDay().toNorskTidspunkt() + val tekniskTidFoerMaaned = + maaned + .minusMonths(1) + .atDay(1) + .atStartOfDay() + .toNorskTidspunkt() repo.lagreStoenadsrad( stoenadRad( @@ -249,7 +261,12 @@ class StoenadRepositoryTest(private val dataSource: DataSource) { fun `hentRaderInnenforMaaned gir alle rader som har et vedtak løpende innenfor måneden`() { val repo = StoenadRepository.using(dataSource) val maaned = YearMonth.of(2022, 8) - val tekniskTidFoerMaaned = maaned.minusMonths(1).atDay(1).atStartOfDay().toNorskTidspunkt() + val tekniskTidFoerMaaned = + maaned + .minusMonths(1) + .atDay(1) + .atStartOfDay() + .toNorskTidspunkt() repo.lagreStoenadsrad( stoenadRad( diff --git a/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/jobs/MaanedligStatistikkJobTest.kt b/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/jobs/MaanedligStatistikkJobTest.kt index 8e92c12cb27..26d70b38dcb 100644 --- a/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/jobs/MaanedligStatistikkJobTest.kt +++ b/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/jobs/MaanedligStatistikkJobTest.kt @@ -45,7 +45,8 @@ class MaanedligStatistikkJobTest { every { statistikkService.statistikkProdusertForMaaned(maanedProdusert) } returns KjoertStatus.INGEN_FEIL val clockMaanedEtterProdusert: Clock = - maanedProdusert.plusMonths(1) + maanedProdusert + .plusMonths(1) .atDay(1) .atTime(1, 1) .toNorskTidspunkt() @@ -74,7 +75,8 @@ class MaanedligStatistikkJobTest { every { statistikkService.statistikkProdusertForMaaned(maanedFeil) } returns KjoertStatus.FEIL val clockMaanedEtterProdusert: Clock = - maanedFeil.plusMonths(1) + maanedFeil + .plusMonths(1) .atDay(1) .atTime(1, 1) .toNorskTidspunkt() @@ -106,7 +108,8 @@ class MaanedligStatistikkJobTest { every { statistikkService.lagreMaanedsstatistikk(mockMaanedStatistikk) } returns Unit val clockMaanedEtterProdusert: Clock = - maanedIkkeKjoert.plusMonths(1) + maanedIkkeKjoert + .plusMonths(1) .atDay(1) .atTime(1, 1) .toNorskTidspunkt() diff --git a/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/river/BehandlingPaaVentHendelseRiverTest.kt b/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/river/BehandlingPaaVentHendelseRiverTest.kt index ece0d2824f2..2d35239d603 100644 --- a/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/river/BehandlingPaaVentHendelseRiverTest.kt +++ b/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/river/BehandlingPaaVentHendelseRiverTest.kt @@ -36,15 +36,16 @@ internal class BehandlingPaaVentHendelseRiverTest { val behandlingId = UUID.randomUUID() val tekniskTid = LocalDateTime.now() val message = - JsonMessage.newMessage( - mapOf( - BehandlingHendelseType.PAA_VENT.lagParMedEventNameKey(), - CORRELATION_ID_KEY to UUID.randomUUID(), - TEKNISK_TID_KEY to tekniskTid, - BEHANDLING_ID_PAA_VENT_RIVER_KEY to behandlingId, - PAA_VENT_AARSAK_KEY to PaaVentAarsak.OPPLYSNING_FRA_ANDRE.name, - ), - ).toJson() + JsonMessage + .newMessage( + mapOf( + BehandlingHendelseType.PAA_VENT.lagParMedEventNameKey(), + CORRELATION_ID_KEY to UUID.randomUUID(), + TEKNISK_TID_KEY to tekniskTid, + BEHANDLING_ID_PAA_VENT_RIVER_KEY to behandlingId, + PAA_VENT_AARSAK_KEY to PaaVentAarsak.OPPLYSNING_FRA_ANDRE.name, + ), + ).toJson() val inspector = testRapid.apply { sendTestMessage(message) }.inspektør Assertions.assertEquals(0, inspector.size) diff --git a/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/river/KlagehendelseRiverTest.kt b/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/river/KlagehendelseRiverTest.kt index a651bee3a47..f194b6a8a45 100644 --- a/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/river/KlagehendelseRiverTest.kt +++ b/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/river/KlagehendelseRiverTest.kt @@ -39,33 +39,34 @@ internal class KlagehendelseRiverTest { @Test fun `Skal ta i mot klagemeldinger`() { val message = - JsonMessage.newMessage( - mapOf( - KlageHendelseType.OPPRETTET.lagParMedEventNameKey(), - CORRELATION_ID_KEY to UUID.randomUUID(), - TEKNISK_TID_KEY to LocalDateTime.now(), - KLAGE_STATISTIKK_RIVER_KEY to - StatistikkKlage( - UUID.randomUUID(), - Klage( + JsonMessage + .newMessage( + mapOf( + KlageHendelseType.OPPRETTET.lagParMedEventNameKey(), + CORRELATION_ID_KEY to UUID.randomUUID(), + TEKNISK_TID_KEY to LocalDateTime.now(), + KLAGE_STATISTIKK_RIVER_KEY to + StatistikkKlage( UUID.randomUUID(), - Sak("ident", SakType.BARNEPENSJON, 1L, Enheter.defaultEnhet.enhetNr), + Klage( + UUID.randomUUID(), + Sak("ident", SakType.BARNEPENSJON, 1L, Enheter.defaultEnhet.enhetNr), + Tidspunkt.now(), + KlageStatus.OPPRETTET, + kabalResultat = null, + kabalStatus = null, + formkrav = null, + innkommendeDokument = null, + resultat = null, + utfall = null, + aarsakTilAvbrytelse = null, + initieltUtfall = null, + ), Tidspunkt.now(), - KlageStatus.OPPRETTET, - kabalResultat = null, - kabalStatus = null, - formkrav = null, - innkommendeDokument = null, - resultat = null, - utfall = null, - aarsakTilAvbrytelse = null, - initieltUtfall = null, + null, ), - Tidspunkt.now(), - null, - ), - ), - ).toJson() + ), + ).toJson() val inspector = testRapid.apply { sendTestMessage(message) }.inspektør Assertions.assertEquals(0, inspector.size) // kjører ingen STATISTIKK:REGISTRERT melding da null i mock diff --git a/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/river/SoeknadStatistikkRiverTest.kt b/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/river/SoeknadStatistikkRiverTest.kt index f7c4504ca37..e7d6c0b6c12 100644 --- a/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/river/SoeknadStatistikkRiverTest.kt +++ b/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/river/SoeknadStatistikkRiverTest.kt @@ -46,16 +46,17 @@ internal class SoeknadStatistikkRiverTest { } returns soeknadStatistikk val message = - JsonMessage.newMessage( - mapOf( - EventNames.FORDELER_STATISTIKK.lagParMedEventNameKey(), - CORRELATION_ID_KEY to UUID.randomUUID(), - SOEKNAD_ID_KEY to soeknadId, - SAK_TYPE_KEY to sakType, - GYLDIG_FOR_BEHANDLING_KEY to gyldigForBehandling, - FEILENDE_KRITERIER_KEY to feilendeKriterier, - ), - ).toJson() + JsonMessage + .newMessage( + mapOf( + EventNames.FORDELER_STATISTIKK.lagParMedEventNameKey(), + CORRELATION_ID_KEY to UUID.randomUUID(), + SOEKNAD_ID_KEY to soeknadId, + SAK_TYPE_KEY to sakType, + GYLDIG_FOR_BEHANDLING_KEY to gyldigForBehandling, + FEILENDE_KRITERIER_KEY to feilendeKriterier, + ), + ).toJson() val inspector = testRapid.apply { sendTestMessage(message) }.inspektør @@ -87,15 +88,16 @@ internal class SoeknadStatistikkRiverTest { } returns soeknadStatistikk val message = - JsonMessage.newMessage( - mapOf( - EventNames.FORDELER_STATISTIKK.lagParMedEventNameKey(), - CORRELATION_ID_KEY to UUID.randomUUID(), - SOEKNAD_ID_KEY to soeknadId, - SAK_TYPE_KEY to sakType, - GYLDIG_FOR_BEHANDLING_KEY to gyldigForBehandling, - ), - ).toJson() + JsonMessage + .newMessage( + mapOf( + EventNames.FORDELER_STATISTIKK.lagParMedEventNameKey(), + CORRELATION_ID_KEY to UUID.randomUUID(), + SOEKNAD_ID_KEY to soeknadId, + SAK_TYPE_KEY to sakType, + GYLDIG_FOR_BEHANDLING_KEY to gyldigForBehandling, + ), + ).toJson() val inspector = testRapid.apply { sendTestMessage(message) }.inspektør diff --git a/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/river/TilbakekrevingHendelseRiverTest.kt b/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/river/TilbakekrevingHendelseRiverTest.kt index 97156f618d3..0df4d9c16e1 100644 --- a/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/river/TilbakekrevingHendelseRiverTest.kt +++ b/apps/etterlatte-statistikk/src/test/kotlin/no/nav/etterlatte/statistikk/river/TilbakekrevingHendelseRiverTest.kt @@ -106,20 +106,21 @@ internal class TilbakekrevingHendelseRiverTest { @Test fun `skal ta i mot tilbakekrevinghendelse`() { val message = - JsonMessage.newMessage( - mapOf( - TilbakekrevingHendelseType.OPPRETTET.lagParMedEventNameKey(), - CORRELATION_ID_KEY to UUID.randomUUID(), - TEKNISK_TID_KEY to LocalDateTime.now(), - TILBAKEKREVING_STATISTIKK_RIVER_KEY to - StatistikkTilbakekrevingDto( - UUID.randomUUID(), - tilbakekreving(Sak("ident", SakType.BARNEPENSJON, 1L, Enheter.defaultEnhet.enhetNr)), - Tidspunkt.now(), - null, - ), - ), - ).toJson() + JsonMessage + .newMessage( + mapOf( + TilbakekrevingHendelseType.OPPRETTET.lagParMedEventNameKey(), + CORRELATION_ID_KEY to UUID.randomUUID(), + TEKNISK_TID_KEY to LocalDateTime.now(), + TILBAKEKREVING_STATISTIKK_RIVER_KEY to + StatistikkTilbakekrevingDto( + UUID.randomUUID(), + tilbakekreving(Sak("ident", SakType.BARNEPENSJON, 1L, Enheter.defaultEnhet.enhetNr)), + Tidspunkt.now(), + null, + ), + ), + ).toJson() val inspector = testRapid.apply { sendTestMessage(message) }.inspektør Assertions.assertEquals(0, inspector.size) // kjører ingen STATISTIKK:REGISTRERT melding da null i mock diff --git a/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/Application.kt b/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/Application.kt index a2eeed997c3..09718cf1b7b 100644 --- a/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/Application.kt +++ b/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/Application.kt @@ -7,7 +7,9 @@ import no.nav.helse.rapids_rivers.RapidApplication fun main() { val rapidEnv = getRapidEnv() - RapidApplication.create(rapidEnv).also { rapidsConnection -> - AutomatiskBehandlingRiver(rapidsConnection, AppBuilder().lagBehandler()) - }.start() + RapidApplication + .create(rapidEnv) + .also { rapidsConnection -> + AutomatiskBehandlingRiver(rapidsConnection, AppBuilder().lagBehandler()) + }.start() } diff --git a/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/Behandler.kt b/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/Behandler.kt index 8aac868127f..4e934f38848 100644 --- a/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/Behandler.kt +++ b/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/Behandler.kt @@ -43,7 +43,12 @@ class Behandler( val sak = behandlingService.hentSak(sakId) logger.info("Henta sak $sakId") - val doedsdato = grunnlagService.hentGrunnlagForBehandling(behandling).hentAvdoede().first().hentDoedsdato() + val doedsdato = + grunnlagService + .hentGrunnlagForBehandling(behandling) + .hentAvdoede() + .first() + .hentDoedsdato() behandlingService.settKommerBarnetTilGode(behandling) behandlingService.lagreGyldighetsproeving(behandling) diff --git a/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/BehandlingService.kt b/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/BehandlingService.kt index f1aa9ebc517..cf56bed8909 100644 --- a/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/BehandlingService.kt +++ b/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/BehandlingService.kt @@ -24,7 +24,11 @@ import java.time.LocalDate import java.time.YearMonth import java.util.UUID -class BehandlingService(private val klient: DownstreamResourceClient, private val url: String, private val clientId: String) { +class BehandlingService( + private val klient: DownstreamResourceClient, + private val url: String, + private val clientId: String, +) { suspend fun hentSak(sakId: Long): Sak = retryOgPakkUt { klient.get(Resource(clientId, "$url/saker/$sakId"), Systembruker.testdata).mapBoth( @@ -35,16 +39,16 @@ class BehandlingService(private val klient: DownstreamResourceClient, private va suspend fun settKommerBarnetTilGode(behandling: UUID) { retryOgPakkUt { - klient.post( - Resource(clientId, "$url/api/behandling/$behandling/kommerbarnettilgode"), - Systembruker.testdata, - postBody = - JaNeiMedBegrunnelse( - JaNei.JA, - BEGRUNNELSE, - ), - ) - .mapBoth( + klient + .post( + Resource(clientId, "$url/api/behandling/$behandling/kommerbarnettilgode"), + Systembruker.testdata, + postBody = + JaNeiMedBegrunnelse( + JaNei.JA, + BEGRUNNELSE, + ), + ).mapBoth( success = {}, failure = { throw it }, ) @@ -53,30 +57,32 @@ class BehandlingService(private val klient: DownstreamResourceClient, private va suspend fun lagreGyldighetsproeving(behandling: UUID) { retryOgPakkUt { - klient.post( - Resource(clientId, "$url/api/behandling/$behandling/gyldigfremsatt"), - Systembruker.testdata, - JaNeiMedBegrunnelse(JaNei.JA, BEGRUNNELSE), - ).mapBoth( - success = {}, - failure = { throw it }, - ) + klient + .post( + Resource(clientId, "$url/api/behandling/$behandling/gyldigfremsatt"), + Systembruker.testdata, + JaNeiMedBegrunnelse(JaNei.JA, BEGRUNNELSE), + ).mapBoth( + success = {}, + failure = { throw it }, + ) } } suspend fun lagreUtlandstilknytning(behandling: UUID) { retryOgPakkUt { - klient.post( - Resource(clientId, "$url/api/behandling/$behandling/utlandstilknytning"), - Systembruker.testdata, - UtlandstilknytningRequest( - utlandstilknytningType = UtlandstilknytningType.NASJONAL, - begrunnelse = BEGRUNNELSE, - ), - ).mapBoth( - success = {}, - failure = { throw it }, - ) + klient + .post( + Resource(clientId, "$url/api/behandling/$behandling/utlandstilknytning"), + Systembruker.testdata, + UtlandstilknytningRequest( + utlandstilknytningType = UtlandstilknytningType.NASJONAL, + begrunnelse = BEGRUNNELSE, + ), + ).mapBoth( + success = {}, + failure = { throw it }, + ) } } @@ -87,18 +93,19 @@ class BehandlingService(private val klient: DownstreamResourceClient, private va val virkningstidspunkt = doedsdato.plusMonths(1) retryOgPakkUt { - klient.post( - Resource(clientId, "$url/api/behandling/$behandling/virkningstidspunkt"), - Systembruker.testdata, - VirkningstidspunktRequest( - _dato = YearMonth.of(virkningstidspunkt.year, virkningstidspunkt.month).toString(), - begrunnelse = BEGRUNNELSE, - kravdato = null, - ), - ).mapBoth( - success = {}, - failure = { throw it }, - ) + klient + .post( + Resource(clientId, "$url/api/behandling/$behandling/virkningstidspunkt"), + Systembruker.testdata, + VirkningstidspunktRequest( + _dato = YearMonth.of(virkningstidspunkt.year, virkningstidspunkt.month).toString(), + begrunnelse = BEGRUNNELSE, + kravdato = null, + ), + ).mapBoth( + success = {}, + failure = { throw it }, + ) } } @@ -108,7 +115,8 @@ class BehandlingService(private val klient: DownstreamResourceClient, private va ) { val oppgaver: List = retryOgPakkUt { - klient.get(Resource(clientId, "$url/oppgaver/sak/$sakId/oppgaver"), Systembruker.testdata) + klient + .get(Resource(clientId, "$url/oppgaver/sak/$sakId/oppgaver"), Systembruker.testdata) .mapBoth( success = { readValue(it) }, failure = { throw it }, @@ -117,14 +125,15 @@ class BehandlingService(private val klient: DownstreamResourceClient, private va oppgaver.forEach { retryOgPakkUt { - klient.post( - Resource(clientId, "$url/api/oppgaver/${it.id}/tildel-saksbehandler"), - Systembruker.testdata, - SaksbehandlerEndringDto(navn), - ).mapBoth( - success = {}, - failure = { err -> throw err }, - ) + klient + .post( + Resource(clientId, "$url/api/oppgaver/${it.id}/tildel-saksbehandler"), + Systembruker.testdata, + SaksbehandlerEndringDto(navn), + ).mapBoth( + success = {}, + failure = { err -> throw err }, + ) } } } @@ -134,26 +143,27 @@ class BehandlingService(private val klient: DownstreamResourceClient, private va sakType: SakType, ) { retryOgPakkUt { - klient.post( - Resource(clientId, "$url/api/behandling/$behandling/info/brevutfall"), - Systembruker.testdata, - BrevutfallOgEtterbetalingDto( - behandlingId = behandling, - opphoer = false, - etterbetaling = null, - brevutfall = - BrevutfallDto( - behandlingId = behandling, - aldersgruppe = if (sakType == SakType.BARNEPENSJON) Aldersgruppe.UNDER_18 else null, - lavEllerIngenInntekt = if (sakType == SakType.OMSTILLINGSSTOENAD) LavEllerIngenInntekt.NEI else null, - feilutbetaling = null, - kilde = null, - ), - ), - ).mapBoth( - success = {}, - failure = { throw it }, - ) + klient + .post( + Resource(clientId, "$url/api/behandling/$behandling/info/brevutfall"), + Systembruker.testdata, + BrevutfallOgEtterbetalingDto( + behandlingId = behandling, + opphoer = false, + etterbetaling = null, + brevutfall = + BrevutfallDto( + behandlingId = behandling, + aldersgruppe = if (sakType == SakType.BARNEPENSJON) Aldersgruppe.UNDER_18 else null, + lavEllerIngenInntekt = if (sakType == SakType.OMSTILLINGSSTOENAD) LavEllerIngenInntekt.NEI else null, + feilutbetaling = null, + kilde = null, + ), + ), + ).mapBoth( + success = {}, + failure = { throw it }, + ) } } } diff --git a/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/BeregningService.kt b/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/BeregningService.kt index a1cd5387364..3aa8af3bb74 100644 --- a/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/BeregningService.kt +++ b/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/BeregningService.kt @@ -35,21 +35,22 @@ class BeregningService( SakType.OMSTILLINGSSTOENAD -> "omstillingstoenad" SakType.BARNEPENSJON -> sakType.name.lowercase() } - klient.post( - Resource(clientId, "$url/api/beregning/beregningsgrunnlag/$behandlingId/$sakTypeArg"), - Systembruker.testdata, - LagreBeregningsGrunnlag( - soeskenMedIBeregning = listOf(), - institusjonsopphold = listOf(), - beregningsMetode = - BeregningsMetodeBeregningsgrunnlag( - beregningsMetode = BeregningsMetode.NASJONAL, - begrunnelse = BEGRUNNELSE, - ), - ), - ).mapBoth( - success = {}, - failure = { throw it }, - ) + klient + .post( + Resource(clientId, "$url/api/beregning/beregningsgrunnlag/$behandlingId/$sakTypeArg"), + Systembruker.testdata, + LagreBeregningsGrunnlag( + soeskenMedIBeregning = listOf(), + institusjonsopphold = listOf(), + beregningsMetode = + BeregningsMetodeBeregningsgrunnlag( + beregningsMetode = BeregningsMetode.NASJONAL, + begrunnelse = BEGRUNNELSE, + ), + ), + ).mapBoth( + success = {}, + failure = { throw it }, + ) } } diff --git a/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/BrevService.kt b/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/BrevService.kt index 5b6d11def6b..7f41db74c50 100644 --- a/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/BrevService.kt +++ b/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/BrevService.kt @@ -8,7 +8,11 @@ import no.nav.etterlatte.libs.ktor.token.Systembruker import no.nav.etterlatte.readValue import java.util.UUID -class BrevService(private val klient: DownstreamResourceClient, private val url: String, private val clientId: String) { +class BrevService( + private val klient: DownstreamResourceClient, + private val url: String, + private val clientId: String, +) { suspend fun opprettOgDistribuerVedtaksbrev( sakId: Long, behandlingId: UUID, @@ -22,7 +26,8 @@ class BrevService(private val klient: DownstreamResourceClient, private val url: behandlingId: UUID, sakId: Long, ): Brev = - klient.post(Resource(clientId, "$url/api/brev/behandling/$behandlingId/vedtak?sakId=$sakId"), Systembruker.testdata) {} + klient + .post(Resource(clientId, "$url/api/brev/behandling/$behandlingId/vedtak?sakId=$sakId"), Systembruker.testdata) {} .mapBoth( success = { readValue(it) }, failure = { throw it }, diff --git a/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/GrunnlagService.kt b/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/GrunnlagService.kt index 229baa96ae8..66dbd9db5ec 100644 --- a/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/GrunnlagService.kt +++ b/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/GrunnlagService.kt @@ -9,7 +9,11 @@ import no.nav.etterlatte.libs.ktor.token.Systembruker import no.nav.etterlatte.readValue import java.util.UUID -class GrunnlagService(private val klient: DownstreamResourceClient, private val url: String, private val clientId: String) { +class GrunnlagService( + private val klient: DownstreamResourceClient, + private val url: String, + private val clientId: String, +) { suspend fun hentGrunnlagForBehandling(behandlingId: UUID): Grunnlag = retryOgPakkUt { klient.get(Resource(clientId, "$url/api/grunnlag/behandling/$behandlingId"), Systembruker.testdata).mapBoth( diff --git a/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/VedtaksvurderingService.kt b/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/VedtaksvurderingService.kt index 88fe9bf8581..84609a287dc 100644 --- a/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/VedtaksvurderingService.kt +++ b/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/VedtaksvurderingService.kt @@ -10,20 +10,25 @@ import no.nav.etterlatte.readValue import no.nav.etterlatte.vedtaksvurdering.VedtakOgRapid import java.util.UUID -class VedtaksvurderingService(private val klient: DownstreamResourceClient, private val url: String, private val clientId: String) { +class VedtaksvurderingService( + private val klient: DownstreamResourceClient, + private val url: String, + private val clientId: String, +) { suspend fun fattVedtak( sakId: Long, behandlingId: UUID, ): VedtakOgRapid = retryOgPakkUt { - klient.post( - Resource(clientId, "$url/api/vedtak/$sakId/$behandlingId/automatisk/stegvis"), - Systembruker.testdata, - MigreringKjoringVariant.MED_PAUSE, - ).mapBoth( - success = { readValue(it) }, - failure = { throw it }, - ) + klient + .post( + Resource(clientId, "$url/api/vedtak/$sakId/$behandlingId/automatisk/stegvis"), + Systembruker.testdata, + MigreringKjoringVariant.MED_PAUSE, + ).mapBoth( + success = { readValue(it) }, + failure = { throw it }, + ) } suspend fun attesterOgIverksettVedtak( @@ -31,13 +36,14 @@ class VedtaksvurderingService(private val klient: DownstreamResourceClient, priv behandlingId: UUID, ): VedtakOgRapid = retryOgPakkUt { - klient.post( - Resource(clientId, "$url/api/vedtak/$sakId/$behandlingId/automatisk/stegvis"), - Systembruker.testdata, - MigreringKjoringVariant.FORTSETT_ETTER_PAUSE, - ).mapBoth( - success = { readValue(it) }, - failure = { throw it }, - ) + klient + .post( + Resource(clientId, "$url/api/vedtak/$sakId/$behandlingId/automatisk/stegvis"), + Systembruker.testdata, + MigreringKjoringVariant.FORTSETT_ETTER_PAUSE, + ).mapBoth( + success = { readValue(it) }, + failure = { throw it }, + ) } } diff --git a/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/VilkaarsvurderingService.kt b/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/VilkaarsvurderingService.kt index 6a788858ae6..77a10c5258f 100644 --- a/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/VilkaarsvurderingService.kt +++ b/apps/etterlatte-testdata-behandler/src/main/kotlin/no/nav/etterlatte/testdata/automatisk/VilkaarsvurderingService.kt @@ -11,7 +11,11 @@ import no.nav.etterlatte.testdata.BEGRUNNELSE import org.slf4j.LoggerFactory import java.util.UUID -class VilkaarsvurderingService(private val klient: DownstreamResourceClient, private val url: String, private val clientId: String) { +class VilkaarsvurderingService( + private val klient: DownstreamResourceClient, + private val url: String, + private val clientId: String, +) { private val logger = LoggerFactory.getLogger(this::class.java) suspend fun vilkaarsvurder(behandlingId: UUID) { @@ -24,31 +28,33 @@ class VilkaarsvurderingService(private val klient: DownstreamResourceClient, pri } private suspend fun opprettVilkaarsvurdering(behandlingId: UUID) = - klient.post( - Resource( - clientId = clientId, - url = "$url/api/vilkaarsvurdering/$behandlingId/opprett", - ), - Systembruker.testdata, - {}, - ).mapBoth( - success = {}, - failure = { throw it }, - ) + klient + .post( + Resource( + clientId = clientId, + url = "$url/api/vilkaarsvurdering/$behandlingId/opprett", + ), + Systembruker.testdata, + {}, + ).mapBoth( + success = {}, + failure = { throw it }, + ) private suspend fun settVilkaarsvurderingaSomHelhetSomOppfylt(behandlingId: UUID) = - klient.post( - Resource( - clientId = clientId, - url = "$url/api/vilkaarsvurdering/resultat/$behandlingId", - ), - Systembruker.testdata, - VurdertVilkaarsvurderingResultatDto( - resultat = VilkaarsvurderingUtfall.OPPFYLT, - kommentar = BEGRUNNELSE, - ), - ).mapBoth( - success = {}, - failure = { throw it }, - ) + klient + .post( + Resource( + clientId = clientId, + url = "$url/api/vilkaarsvurdering/resultat/$behandlingId", + ), + Systembruker.testdata, + VurdertVilkaarsvurderingResultatDto( + resultat = VilkaarsvurderingUtfall.OPPFYLT, + kommentar = BEGRUNNELSE, + ), + ).mapBoth( + success = {}, + failure = { throw it }, + ) } diff --git a/apps/etterlatte-testdata/src/main/kotlin/Application.kt b/apps/etterlatte-testdata/src/main/kotlin/Application.kt index 57a91325c61..00b9a87ebc5 100644 --- a/apps/etterlatte-testdata/src/main/kotlin/Application.kt +++ b/apps/etterlatte-testdata/src/main/kotlin/Application.kt @@ -184,17 +184,20 @@ fun PipelineContext.brukerIdFraToken() = call.firstValidT fun getDollyAccessToken(): String = runBlocking { - azureAdClient.hentTokenFraAD( - Systembruker.testdata, - listOf("api://${config.getString("dolly.client.id")}/.default"), - ) - .get()!!.accessToken + azureAdClient + .hentTokenFraAD( + Systembruker.testdata, + listOf("api://${config.getString("dolly.client.id")}/.default"), + ).get()!! + .accessToken } fun getTestnavAccessToken(): String = runBlocking { - azureAdClient.hentTokenFraAD( - Systembruker.testdata, - listOf("api://${config.getString("testnav.client.id")}/.default"), - ).get()!!.accessToken + azureAdClient + .hentTokenFraAD( + Systembruker.testdata, + listOf("api://${config.getString("testnav.client.id")}/.default"), + ).get()!! + .accessToken } diff --git a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/dolly/DollyClient.kt b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/dolly/DollyClient.kt index b3bea495997..7d2d43c2bf6 100644 --- a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/dolly/DollyClient.kt +++ b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/dolly/DollyClient.kt @@ -55,7 +55,10 @@ interface DollyClient { ): BestillingStatus } -class DollyClientImpl(config: Config, private val httpClient: HttpClient) : DollyClient { +class DollyClientImpl( + config: Config, + private val httpClient: HttpClient, +) : DollyClient { private val logger: Logger = LoggerFactory.getLogger(DollyClientImpl::class.java) private val dollyUrl = config.getString("dolly.resource.url") @@ -65,40 +68,44 @@ class DollyClientImpl(config: Config, private val httpClient: HttpClient) : Doll accessToken: String, ): Bruker? { logger.info("Henter bruker med id=$brukerId fra Dolly ") - return httpClient.get("$dollyUrl/bruker/$brukerId") { - header(HttpHeaders.Authorization, "Bearer $accessToken") - }.body() + return httpClient + .get("$dollyUrl/bruker/$brukerId") { + header(HttpHeaders.Authorization, "Bearer $accessToken") + }.body() } override suspend fun hentBrukersGrupper( brukerId: String, accessToken: String, ): HentGruppeResponse = - httpClient.get("$dollyUrl/gruppe?brukerId=$brukerId") { - header(HttpHeaders.Authorization, "Bearer $accessToken") - }.body() + httpClient + .get("$dollyUrl/gruppe?brukerId=$brukerId") { + header(HttpHeaders.Authorization, "Bearer $accessToken") + }.body() // Denne vil ikke fungere med client authorization grant. override suspend fun opprettTestGruppe( gruppe: OpprettGruppeRequest, accessToken: String, ): Gruppe = - httpClient.post("$dollyUrl/gruppe") { - header(HttpHeaders.Authorization, "Bearer $accessToken") - header(HttpHeaders.ContentType, ContentType.Application.Json) - setBody(gruppe.toJson()) - }.body() + httpClient + .post("$dollyUrl/gruppe") { + header(HttpHeaders.Authorization, "Bearer $accessToken") + header(HttpHeaders.ContentType, ContentType.Application.Json) + setBody(gruppe.toJson()) + }.body() override suspend fun opprettBestilling( bestilling: String, gruppeId: Long, accessToken: String, ): BestillingStatus = - httpClient.post("$dollyUrl/gruppe/$gruppeId/bestilling") { - header(HttpHeaders.Authorization, "Bearer $accessToken") - header(HttpHeaders.ContentType, ContentType.Application.Json) - setBody(objectMapper.readTree(bestilling)) - }.body() + httpClient + .post("$dollyUrl/gruppe/$gruppeId/bestilling") { + header(HttpHeaders.Authorization, "Bearer $accessToken") + header(HttpHeaders.ContentType, ContentType.Application.Json) + setBody(objectMapper.readTree(bestilling)) + }.body() override suspend fun hentTestGruppeBestillinger( gruppeId: Long, @@ -106,23 +113,26 @@ class DollyClientImpl(config: Config, private val httpClient: HttpClient) : Doll pageNo: Int, pageSize: Int, ): TestGruppeBestillinger = - httpClient.get("$dollyUrl/gruppe/$gruppeId/page/$pageNo?pageSize=$pageSize") { - header(HttpHeaders.Authorization, "Bearer $accessToken") - }.body() + httpClient + .get("$dollyUrl/gruppe/$gruppeId/page/$pageNo?pageSize=$pageSize") { + header(HttpHeaders.Authorization, "Bearer $accessToken") + }.body() override suspend fun markerIdentIBruk( ident: String, accessToken: String, ): DollyIBrukResponse = - httpClient.put("$dollyUrl/ident/$ident/ibruk?iBruk=true") { - header(HttpHeaders.Authorization, "Bearer $accessToken") - }.body() + httpClient + .put("$dollyUrl/ident/$ident/ibruk?iBruk=true") { + header(HttpHeaders.Authorization, "Bearer $accessToken") + }.body() override suspend fun hentStatus( bestilling: Long, accessToken: String, ): BestillingStatus = - httpClient.get("$dollyUrl/bestilling/$bestilling") { - header(HttpHeaders.Authorization, "Bearer $accessToken") - }.body() + httpClient + .get("$dollyUrl/bestilling/$bestilling") { + header(HttpHeaders.Authorization, "Bearer $accessToken") + }.body() } diff --git a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/dolly/DollyService.kt b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/dolly/DollyService.kt index 29a68758b12..2937a5c1d43 100644 --- a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/dolly/DollyService.kt +++ b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/dolly/DollyService.kt @@ -28,8 +28,11 @@ class DollyService( dollyClient.hentDollyBruker(brukerId, accessToken) ?: throw IllegalStateException("Bruker finnes ikke i Dolly.") - dollyClient.hentBrukersGrupper(bruker.brukerId!!, accessToken).contents - .find { it.navn == testdataGruppe.navn }?.id + dollyClient + .hentBrukersGrupper(bruker.brukerId!!, accessToken) + .contents + .find { it.navn == testdataGruppe.navn } + ?.id } /** @@ -60,13 +63,16 @@ class DollyService( ): List = runBlocking { dollyClient.hentTestGruppeBestillinger(gruppeId, accessToken, 0, 10).let { bestillinger -> - testnavClient.hentPersonInfo(bestillinger.identer.map { it.ident }) + testnavClient + .hentPersonInfo(bestillinger.identer.map { it.ident }) .mapNotNull { personResponse -> val avdoed = personResponse.ident val ibruk = bestillinger.identer.any { avdoed == it.ident && it.ibruk } val gjenlevendeEktefelle = - personResponse.person.sivilstand.firstOrNull { it.type == "GIFT" }?.relatertVedSivilstand + personResponse.person.sivilstand + .firstOrNull { it.type == "GIFT" } + ?.relatertVedSivilstand when (gjenlevendeEktefelle) { null -> null @@ -94,13 +100,14 @@ class DollyService( val (partisjon, offset) = producer.publiser( noekkel, - SoeknadMapper.opprettJsonMessage( - type = request.type, - gjenlevendeFnr = request.gjenlevende, - avdoedFnr = request.avdoed, - barn = request.barn, - behandlingssteg = behandlingssteg, - ).toJson(), + SoeknadMapper + .opprettJsonMessage( + type = request.type, + gjenlevendeFnr = request.gjenlevende, + avdoedFnr = request.avdoed, + barn = request.barn, + behandlingssteg = behandlingssteg, + ).toJson(), mapOf("NavIdent" to (navIdent!!.toByteArray())), ) logger.info("Publiserer melding med partisjon: $partisjon offset: $offset") @@ -116,7 +123,8 @@ class DollyService( try { logger.info("Forsøker å markere testident $ident som 'i bruk'") - dollyClient.markerIdentIBruk(ident, accessToken) + dollyClient + .markerIdentIBruk(ident, accessToken) .also { logger.info("Test ident $ident markert med 'iBruk=${it.ibruk}'") } } catch (e: Exception) { logger.warn("Klart ikke markere testident $ident som 'i bruk'", e) diff --git a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/dolly/Model.kt b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/dolly/Model.kt index 26744e746e4..cb3604408a0 100644 --- a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/dolly/Model.kt +++ b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/dolly/Model.kt @@ -3,10 +3,19 @@ package no.nav.etterlatte.testdata.dolly import com.fasterxml.jackson.annotation.JsonIgnoreProperties @JsonIgnoreProperties(ignoreUnknown = true) -data class Bruker(val brukerId: String?, val brukertype: String?, val navIdent: String?, val epost: String?) +data class Bruker( + val brukerId: String?, + val brukertype: String?, + val navIdent: String?, + val epost: String?, +) @JsonIgnoreProperties(ignoreUnknown = true) -data class Gruppe(val id: Long, val navn: String, val hensikt: String) +data class Gruppe( + val id: Long, + val navn: String, + val hensikt: String, +) data class HentGruppeResponse( val antallPages: Int, @@ -16,22 +25,41 @@ data class HentGruppeResponse( val contents: List, ) -data class OpprettGruppeRequest(val navn: String, val hensikt: String) +data class OpprettGruppeRequest( + val navn: String, + val hensikt: String, +) @JsonIgnoreProperties(ignoreUnknown = true) -data class DollyIBrukResponse(val ident: String, val ibruk: Boolean, val gruppeId: Long) +data class DollyIBrukResponse( + val ident: String, + val ibruk: Boolean, + val gruppeId: Long, +) @JsonIgnoreProperties(ignoreUnknown = true) -data class BestillingStatus(val id: Long, val ferdig: Boolean) +data class BestillingStatus( + val id: Long, + val ferdig: Boolean, +) @JsonIgnoreProperties(ignoreUnknown = true) -data class TestGruppeBestillinger(val identer: List) +data class TestGruppeBestillinger( + val identer: List, +) @JsonIgnoreProperties(ignoreUnknown = true) -data class TestGruppeBestilling(val ident: String, val bestillingId: List, val ibruk: Boolean) +data class TestGruppeBestilling( + val ident: String, + val bestillingId: List, + val ibruk: Boolean, +) @JsonIgnoreProperties(ignoreUnknown = true) -data class DollyPersonResponse(val ident: String, val person: DollyPerson) +data class DollyPersonResponse( + val ident: String, + val person: DollyPerson, +) @JsonIgnoreProperties(ignoreUnknown = true) data class DollyPerson( @@ -47,16 +75,27 @@ data class ForelderBarnRelasjon( val relatertPersonsRolle: String, ) -data class Sivilstand(val type: String, val relatertVedSivilstand: String?) +data class Sivilstand( + val type: String, + val relatertVedSivilstand: String?, +) @JsonIgnoreProperties(ignoreUnknown = true) -data class Doedsfall(val doedsdato: String) +data class Doedsfall( + val doedsdato: String, +) @JsonIgnoreProperties(ignoreUnknown = true) -data class Foedsel(val foedselsdato: String, val foedselsaar: Int) +data class Foedsel( + val foedselsdato: String, + val foedselsaar: Int, +) @JsonIgnoreProperties(ignoreUnknown = true) -data class Navn(val fornavn: String, val etternavn: String) +data class Navn( + val fornavn: String, + val etternavn: String, +) data class ForenkletFamilieModell( val ibruk: Boolean, diff --git a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/dolly/TestnavClient.kt b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/dolly/TestnavClient.kt index 08090808435..869f0ae6f16 100644 --- a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/dolly/TestnavClient.kt +++ b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/dolly/TestnavClient.kt @@ -19,9 +19,10 @@ class TestnavClient( private val url = config.getString("testnav.resource.url") suspend fun hentPersonInfo(identer: List): List = - httpClient.get("$url/personer/identer?identer=${identer.joinToString(",")}") { - header(HttpHeaders.Authorization, "Bearer ${getTestnavAccessToken()}") - }.let { - objectMapper.readValue(it.body()["data"]["hentPersonBolk"].toJson()) - } + httpClient + .get("$url/personer/identer?identer=${identer.joinToString(",")}") { + header(HttpHeaders.Authorization, "Bearer ${getTestnavAccessToken()}") + }.let { + objectMapper.readValue(it.body()["data"]["hentPersonBolk"].toJson()) + } } diff --git a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/OpprettOgBehandle.kt b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/OpprettOgBehandle.kt index b674f5229f9..729d3756048 100644 --- a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/OpprettOgBehandle.kt +++ b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/OpprettOgBehandle.kt @@ -22,8 +22,10 @@ import org.slf4j.Logger import org.slf4j.LoggerFactory import kotlin.concurrent.thread -class OpprettOgBehandle(private val dollyService: DollyService, private val familieoppretter: Familieoppretter) : - TestDataFeature { +class OpprettOgBehandle( + private val dollyService: DollyService, + private val familieoppretter: Familieoppretter, +) : TestDataFeature { private val logger: Logger = LoggerFactory.getLogger(this::class.java) override val beskrivelse: String get() = "Opprett og behandle søknad(er)" diff --git a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/automatisk/Familieoppretter.kt b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/automatisk/Familieoppretter.kt index c722b126e1c..1ad359e4757 100644 --- a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/automatisk/Familieoppretter.kt +++ b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/automatisk/Familieoppretter.kt @@ -33,7 +33,8 @@ class Familieoppretter( ) logger.info("Oppretter bestilling for gruppeid $gruppeid") - return dollyService.opprettBestilling(generererBestilling(req), req.gruppeId, accessToken) + return dollyService + .opprettBestilling(generererBestilling(req), req.gruppeId, accessToken) .also { bestilling -> logger.info("Bestilling med id ${bestilling.id} har status ${bestilling.ferdig}") } diff --git a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/dolly/DollyFeature.kt b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/dolly/DollyFeature.kt index 3d65176016f..ad34099acb9 100644 --- a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/dolly/DollyFeature.kt +++ b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/dolly/DollyFeature.kt @@ -21,7 +21,9 @@ import no.nav.etterlatte.testdata.dolly.DollyService import org.slf4j.Logger import org.slf4j.LoggerFactory -class DollyFeature(private val dollyService: DollyService) : TestDataFeature { +class DollyFeature( + private val dollyService: DollyService, +) : TestDataFeature { private val logger: Logger = LoggerFactory.getLogger(DollyFeature::class.java) override val beskrivelse: String get() = "Opprett søknad automatisk via Dolly" @@ -86,7 +88,8 @@ class DollyFeature(private val dollyService: DollyService) : TestDataFeature { 1, ) - dollyService.opprettBestilling(generererBestilling(req), req.gruppeId, accessToken) + dollyService + .opprettBestilling(generererBestilling(req), req.gruppeId, accessToken) .also { bestilling -> logger.info("Bestilling med id ${bestilling.id} har status ${bestilling.ferdig}") call.respond(bestilling.toJson()) diff --git a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/samordning/SamordningMottattFeature.kt b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/samordning/SamordningMottattFeature.kt index fe2f4ae07b3..2eda1024e21 100644 --- a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/samordning/SamordningMottattFeature.kt +++ b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/samordning/SamordningMottattFeature.kt @@ -45,20 +45,22 @@ object SamordningMottattFeature : TestDataFeature { val (partisjon, offset) = call.receiveParameters().let { val vedtakID = requireNotNull(it["vedtakIdInput"]) - producer.publiser( - requireNotNull(it["key"]), - JsonMessage.newMessage( - mapOf( - VedtakKafkaHendelseHendelseType.SAMORDNING_MOTTATT.lagParMedEventNameKey(), - "vedtakId" to vedtakID, - ), - ).toJson(), - mapOf("NavIdent" to navIdent.toByteArray()), - ).also { (partisjon, offset) -> - logger.info( - "Publiserer samordningsmelding for vedtakID=$vedtakID med partisjon: $partisjon offset: $offset", - ) - } + producer + .publiser( + requireNotNull(it["key"]), + JsonMessage + .newMessage( + mapOf( + VedtakKafkaHendelseHendelseType.SAMORDNING_MOTTATT.lagParMedEventNameKey(), + "vedtakId" to vedtakID, + ), + ).toJson(), + mapOf("NavIdent" to navIdent.toByteArray()), + ).also { (partisjon, offset) -> + logger.info( + "Publiserer samordningsmelding for vedtakID=$vedtakID med partisjon: $partisjon offset: $offset", + ) + } } call.respondRedirect("/$path/sendt?partisjon=$partisjon&offset=$offset") diff --git a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/soeknad/OpprettSoeknad.kt b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/soeknad/OpprettSoeknad.kt index b6c321fa309..dc737cbc7d8 100644 --- a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/soeknad/OpprettSoeknad.kt +++ b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/soeknad/OpprettSoeknad.kt @@ -100,11 +100,12 @@ private fun opprettSoeknadJson( SoeknadType.BARNEPENSJON } - return SoeknadMapper.opprettJsonMessage( - soeknadType, - gjenlevendeFnr, - avdoedFnr, - listOf(barnFnr), - behandlingssteg, - ).toJson() + return SoeknadMapper + .opprettJsonMessage( + soeknadType, + gjenlevendeFnr, + avdoedFnr, + listOf(barnFnr), + behandlingssteg, + ).toJson() } diff --git a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/soeknad/SoeknadMapper.kt b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/soeknad/SoeknadMapper.kt index aaf2a696cf2..2b657784470 100644 --- a/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/soeknad/SoeknadMapper.kt +++ b/apps/etterlatte-testdata/src/main/kotlin/no/nav/etterlatte/testdata/features/soeknad/SoeknadMapper.kt @@ -41,8 +41,8 @@ object SoeknadMapper { avdoedFnr: String, barn: List = emptyList(), behandlingssteg: Behandlingssteg, - ): JsonMessage { - return when (type) { + ): JsonMessage = + when (type) { SoeknadType.OMSTILLINGSSTOENAD -> JsonMessage.newMessage( mutableMapOf( @@ -84,7 +84,6 @@ object SoeknadMapper { throw Exception("Ukjent soknad type: '$type'") } } - } private fun opprettBarnepensjonSoeknad( gjenlevendeFnr: String, diff --git a/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/Application.kt b/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/Application.kt index 16b3ba4e319..de35a868a75 100644 --- a/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/Application.kt +++ b/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/Application.kt @@ -14,29 +14,31 @@ fun main() { val rapidEnv = getRapidEnv() val miljoevariabler = Miljoevariabler(rapidEnv) - RapidApplication.Builder( - RapidApplication.RapidApplicationConfig.fromEnv(rapidEnv, configFromEnvironment(rapidEnv)), - ).build().also { rapidsConnection -> - val appContext = AppContext(miljoevariabler) { key, message -> rapidsConnection.publish(key.toString(), message) } + RapidApplication + .Builder( + RapidApplication.RapidApplicationConfig.fromEnv(rapidEnv, configFromEnvironment(rapidEnv)), + ).build() + .also { rapidsConnection -> + val appContext = AppContext(miljoevariabler) { key, message -> rapidsConnection.publish(key.toString(), message) } - HendelseRiver(rapidsConnection, appContext.hendelseDao) + HendelseRiver(rapidsConnection, appContext.hendelseDao) - rapidsConnection.apply { - val timers = mutableListOf() + rapidsConnection.apply { + val timers = mutableListOf() - register( - object : RapidsConnection.StatusListener { - override fun onStartup(rapidsConnection: RapidsConnection) { - appContext.dataSource.migrate() - timers.add(appContext.jobbPollerTask.schedule()) - timers.add(appContext.hendelsePollerTask.schedule()) - } + register( + object : RapidsConnection.StatusListener { + override fun onStartup(rapidsConnection: RapidsConnection) { + appContext.dataSource.migrate() + timers.add(appContext.jobbPollerTask.schedule()) + timers.add(appContext.hendelsePollerTask.schedule()) + } - override fun onShutdownSignal(rapidsConnection: RapidsConnection) { - timers.forEach { it.cancel() } - } - }, - ) - } - }.start() + override fun onShutdownSignal(rapidsConnection: RapidsConnection) { + timers.forEach { it.cancel() } + } + }, + ) + } + }.start() } diff --git a/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/Hendelse.kt b/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/Hendelse.kt index 4e69de0a722..9cfb2b7e6cf 100644 --- a/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/Hendelse.kt +++ b/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/Hendelse.kt @@ -31,7 +31,11 @@ data class Hendelse( val info: Any?, ) -enum class JobbType(val beskrivelse: String, val kategori: JobbKategori, val sakType: SakType) { +enum class JobbType( + val beskrivelse: String, + val kategori: JobbKategori, + val sakType: SakType, +) { AO_BP20("Aldersovergang barnepensjon ved 20 år", JobbKategori.ALDERSOVERGANG, SakType.BARNEPENSJON), AO_BP21("Aldersovergang barnepensjon ved 21 år", JobbKategori.ALDERSOVERGANG, SakType.BARNEPENSJON), AO_OMS67("Aldersovergang omstillingsstønad ved 67 år", JobbKategori.ALDERSOVERGANG, SakType.OMSTILLINGSSTOENAD), diff --git a/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/HendelseDao.kt b/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/HendelseDao.kt index 2af642079b2..e396513d4d3 100644 --- a/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/HendelseDao.kt +++ b/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/HendelseDao.kt @@ -12,7 +12,9 @@ import java.time.YearMonth import java.util.UUID import javax.sql.DataSource -class HendelseDao(private val datasource: DataSource) : Transactions { +class HendelseDao( + private val datasource: DataSource, +) : Transactions { private val logger = LoggerFactory.getLogger(HendelseDao::class.java) override fun inTransaction(block: HendelseDao.(TransactionalSession) -> R): R = @@ -20,16 +22,15 @@ class HendelseDao(private val datasource: DataSource) : Transactions + fun hentJobb(id: Int): HendelserJobb = + datasource.transaction { tx -> queryOf("SELECT * FROM jobb WHERE id = :id", mapOf("id" to id)) .let { query -> tx.run(query.map { row -> row.toHendelserJobb() }.asSingle) } ?: throw NoSuchElementException("Fant ikke jobb med id $id") } - } - fun finnAktuellJobb(): List { - return datasource.transaction { tx -> + fun finnAktuellJobb(): List = + datasource.transaction { tx -> queryOf( """ SELECT * FROM jobb @@ -39,22 +40,18 @@ class HendelseDao(private val datasource: DataSource) : Transactions tx.run(query.map { row -> row.toHendelserJobb() }.asList) } + ).let { query -> tx.run(query.map { row -> row.toHendelserJobb() }.asList) } } - } - fun hentJobber(jobbIDs: List): List { - return datasource.transaction { tx -> + fun hentJobber(jobbIDs: List): List = + datasource.transaction { tx -> queryOf( """ SELECT * FROM jobb WHERE id = ANY(?) """.trimIndent(), jobbIDs.toTypedArray(), - ) - .let { query -> tx.run(query.map { row -> row.toHendelserJobb() }.asList) } + ).let { query -> tx.run(query.map { row -> row.toHendelserJobb() }.asList) } } - } fun oppdaterJobbstatusStartet(hendelserJobb: HendelserJobb) { oppdaterJobbstatus(hendelserJobb, JobbStatus.STARTET) @@ -83,8 +80,7 @@ class HendelseDao(private val datasource: DataSource) : Transactions it.run(query.asUpdate) } + ).let { query -> it.run(query.asUpdate) } .also { if (it == 0) { throw ConcurrentModificationException( @@ -113,8 +109,7 @@ class HendelseDao(private val datasource: DataSource) : Transactions it.run(query.asUpdate) } + ).let { query -> it.run(query.asUpdate) } } } @@ -145,18 +140,16 @@ class HendelseDao(private val datasource: DataSource) : Transactions { - return datasource.transaction { + fun hentHendelserForJobb(jobbId: Int): List = + datasource.transaction { queryOf( """ SELECT * FROM hendelse WHERE jobb_id = :jobbId """.trimIndent(), mapOf("jobbId" to jobbId), - ) - .let { query -> it.run(query.map { row -> row.toHendelse() }.asList) } + ).let { query -> it.run(query.map { row -> row.toHendelse() }.asList) } .sortedBy { it.sakId } } - } fun oppdaterHendelseStatus( hendelseId: UUID, @@ -172,8 +165,7 @@ class HendelseDao(private val datasource: DataSource) : Transactions it.run(query.asUpdate) } + ).let { query -> it.run(query.asUpdate) } } } @@ -197,8 +189,7 @@ class HendelseDao(private val datasource: DataSource) : Transactions it.run(query.asUpdate) } + ).let { query -> it.run(query.asUpdate) } } } @@ -219,13 +210,12 @@ class HendelseDao(private val datasource: DataSource) : Transactions it.run(query.asUpdate) } + ).let { query -> it.run(query.asUpdate) } } } - fun pollHendelser(limit: Int = 5): List { - return datasource.transaction { + fun pollHendelser(limit: Int = 5): List = + datasource.transaction { queryOf( """ SELECT * FROM hendelse @@ -237,10 +227,8 @@ class HendelseDao(private val datasource: DataSource) : Transactions it.run(query.map { row -> row.toHendelse() }.asList) } + ).let { query -> it.run(query.map { row -> row.toHendelse() }.asList) } } - } private fun Row.toHendelse() = Hendelse( diff --git a/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/HendelsePoller.kt b/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/HendelsePoller.kt index 93f6be49952..3c9e03f6e88 100644 --- a/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/HendelsePoller.kt +++ b/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/HendelsePoller.kt @@ -44,7 +44,8 @@ class HendelsePoller( logger.info("Fant ingen hendelser å behandle") } else { val jobsById = - hendelseDao.hentJobber(hendelser.map { it.jobbId }.distinct()) + hendelseDao + .hentJobber(hendelser.map { it.jobbId }.distinct()) .associateBy { it.id } hendelser.forEach { diff --git a/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/HendelsePublisher.kt b/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/HendelsePublisher.kt index b0ce5339d62..287189f466b 100644 --- a/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/HendelsePublisher.kt +++ b/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/HendelsePublisher.kt @@ -13,7 +13,9 @@ import no.nav.etterlatte.rapidsandrivers.SAK_ID_KEY import no.nav.helse.rapids_rivers.JsonMessage import java.util.UUID -class HendelsePublisher(private val rapidsPublisher: (UUID, String) -> Unit) { +class HendelsePublisher( + private val rapidsPublisher: (UUID, String) -> Unit, +) { fun publish( hendelse: Hendelse, jobb: HendelserJobb, diff --git a/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/klient/BehandlingKlient.kt b/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/klient/BehandlingKlient.kt index e7b10918732..7ef10833ded 100644 --- a/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/klient/BehandlingKlient.kt +++ b/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/klient/BehandlingKlient.kt @@ -21,17 +21,18 @@ class BehandlingKlient( } return runBlocking { - behandlingHttpClient.post("$behandlingUrl/saker/hent") { - accept(ContentType.Application.Json) - contentType(ContentType.Application.Json) - setBody( - HentSakerRequest( - spesifikkeSaker = sakIder, - ekskluderteSaker = emptyList(), - sakType = null, - ), - ) - }.body() + behandlingHttpClient + .post("$behandlingUrl/saker/hent") { + accept(ContentType.Application.Json) + contentType(ContentType.Application.Json) + setBody( + HentSakerRequest( + spesifikkeSaker = sakIder, + ekskluderteSaker = emptyList(), + sakType = null, + ), + ) + }.body() }.saker } } diff --git a/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/klient/GrunnlagKlient.kt b/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/klient/GrunnlagKlient.kt index c8e389955bd..3de2a75b2bc 100644 --- a/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/klient/GrunnlagKlient.kt +++ b/apps/etterlatte-tidshendelser/src/main/kotlin/no/nav/etterlatte/tidshendelser/klient/GrunnlagKlient.kt @@ -13,21 +13,21 @@ class GrunnlagKlient( private val grunnlagHttpClient: HttpClient, private val grunnlagUrl: String, ) { - fun hentSaker(foedselsmaaned: YearMonth): List { - return runBlocking { - grunnlagHttpClient.get("$grunnlagUrl/api/grunnlag/aldersovergang/$foedselsmaaned") { - accept(ContentType.Application.Json) - contentType(ContentType.Application.Json) - }.body() + fun hentSaker(foedselsmaaned: YearMonth): List = + runBlocking { + grunnlagHttpClient + .get("$grunnlagUrl/api/grunnlag/aldersovergang/$foedselsmaaned") { + accept(ContentType.Application.Json) + contentType(ContentType.Application.Json) + }.body() } - } - fun hentSakerForDoedsfall(doedsfallsmaaned: YearMonth): List { - return runBlocking { - grunnlagHttpClient.get("$grunnlagUrl/api/grunnlag/doedsdato/$doedsfallsmaaned") { - accept(ContentType.Application.Json) - contentType(ContentType.Application.Json) - }.body() + fun hentSakerForDoedsfall(doedsfallsmaaned: YearMonth): List = + runBlocking { + grunnlagHttpClient + .get("$grunnlagUrl/api/grunnlag/doedsdato/$doedsfallsmaaned") { + accept(ContentType.Application.Json) + contentType(ContentType.Application.Json) + }.body() } - } } diff --git a/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/AldersovergangerIntegrationTest.kt b/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/AldersovergangerIntegrationTest.kt index d66e49f9a46..20a1efefbd5 100644 --- a/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/AldersovergangerIntegrationTest.kt +++ b/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/AldersovergangerIntegrationTest.kt @@ -19,7 +19,9 @@ import javax.sql.DataSource @ExtendWith(DatabaseExtension::class) @TestInstance(TestInstance.Lifecycle.PER_CLASS) -class AldersovergangerIntegrationTest(dataSource: DataSource) { +class AldersovergangerIntegrationTest( + dataSource: DataSource, +) { private val grunnlagKlient: GrunnlagKlient = mockk() private val behandlingKlient: BehandlingKlient = mockk() private val hendelseDao = HendelseDao(dataSource) @@ -51,10 +53,11 @@ class AldersovergangerIntegrationTest(dataSource: DataSource) { val sakIder: List = listOf(1, 2, 3) val saker = - sakIder.map { - val sakType = if (it != 3L) SakType.BARNEPENSJON else SakType.OMSTILLINGSSTOENAD - sak(it, sakType) - }.associateBy { it.id } + sakIder + .map { + val sakType = if (it != 3L) SakType.BARNEPENSJON else SakType.OMSTILLINGSSTOENAD + sak(it, sakType) + }.associateBy { it.id } every { grunnlagKlient.hentSaker(behandlingsmaaned.minusYears(21)) } returns sakIder every { behandlingKlient.hentSaker(sakIder) } returns saker @@ -71,9 +74,10 @@ class AldersovergangerIntegrationTest(dataSource: DataSource) { val jobb = jobbTestdata.opprettJobb(JobbType.AO_BP21, behandlingsmaaned) val sakIder: List = listOf(1, 2, 3) val saker = - sakIder.map { - sak(it, SakType.BARNEPENSJON) - }.associateBy { it.id } + sakIder + .map { + sak(it, SakType.BARNEPENSJON) + }.associateBy { it.id } every { grunnlagKlient.hentSaker(behandlingsmaaned.minusYears(21)) } returns sakIder every { behandlingKlient.hentSaker(sakIder) } returns saker diff --git a/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/DatabaseExtension.kt b/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/DatabaseExtension.kt index 2480864f586..06120328b82 100644 --- a/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/DatabaseExtension.kt +++ b/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/DatabaseExtension.kt @@ -11,7 +11,9 @@ import org.junit.jupiter.api.extension.ExtensionContext TRUNCATE jobb CASCADE; """, ) -class DatabaseExtension : GenerellDatabaseExtension(), AfterEachCallback { +class DatabaseExtension : + GenerellDatabaseExtension(), + AfterEachCallback { override fun afterEach(context: ExtensionContext) { resetDb() } diff --git a/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/HendelsePollerIntegrationTest.kt b/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/HendelsePollerIntegrationTest.kt index 588aad3cbd0..68ea7ddf065 100644 --- a/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/HendelsePollerIntegrationTest.kt +++ b/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/HendelsePollerIntegrationTest.kt @@ -13,7 +13,9 @@ import javax.sql.DataSource @ExtendWith(DatabaseExtension::class) @TestInstance(TestInstance.Lifecycle.PER_CLASS) -class HendelsePollerIntegrationTest(dataSource: DataSource) { +class HendelsePollerIntegrationTest( + dataSource: DataSource, +) { private val logger = LoggerFactory.getLogger(this::class.java) private val hendelseDao = HendelseDao(dataSource) diff --git a/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/HendelseRiverTest.kt b/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/HendelseRiverTest.kt index 212776d07dd..c6a145d04cd 100644 --- a/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/HendelseRiverTest.kt +++ b/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/HendelseRiverTest.kt @@ -19,7 +19,9 @@ import kotlin.random.Random @ExtendWith(DatabaseExtension::class) @TestInstance(TestInstance.Lifecycle.PER_CLASS) -class HendelseRiverTest(dataSource: DataSource) { +class HendelseRiverTest( + dataSource: DataSource, +) { private val hendelseDao = HendelseDao(dataSource) private val jobbTestdata = JobbTestdata(dataSource, hendelseDao) diff --git a/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/JobbPollerIntegrationTest.kt b/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/JobbPollerIntegrationTest.kt index 22f4d3a7186..ccc32c6f4d3 100644 --- a/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/JobbPollerIntegrationTest.kt +++ b/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/JobbPollerIntegrationTest.kt @@ -16,7 +16,9 @@ import java.time.YearMonth import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) -class JobbPollerIntegrationTest(dataSource: DataSource) { +class JobbPollerIntegrationTest( + dataSource: DataSource, +) { companion object { @RegisterExtension private val dbExtension = DatabaseExtension() diff --git a/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/OmstillingsstoenadAktivitetspliktTest.kt b/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/OmstillingsstoenadAktivitetspliktTest.kt index 014f1412c48..36c8093dae5 100644 --- a/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/OmstillingsstoenadAktivitetspliktTest.kt +++ b/apps/etterlatte-tidshendelser/src/test/kotlin/no/nav/etterlatte/tidshendelser/OmstillingsstoenadAktivitetspliktTest.kt @@ -38,9 +38,10 @@ class OmstillingsstoenadAktivitetspliktTest { val jobb = hendelserJobb(JobbType.OMS_DOED_4MND, behandlingsmaaned) val sakIder: List = listOf(65, 22, 15) val saker = - sakIder.map { - sak(it, SakType.OMSTILLINGSSTOENAD) - }.associateBy { it.id } + sakIder + .map { + sak(it, SakType.OMSTILLINGSSTOENAD) + }.associateBy { it.id } every { grunnlagKlient.hentSakerForDoedsfall(behandlingsmaaned.minusMonths(4)) } returns sakIder every { behandlingKlient.hentSaker(sakIder) } returns saker diff --git a/apps/etterlatte-tilbakekreving/src/main/kotlin/Application.kt b/apps/etterlatte-tilbakekreving/src/main/kotlin/Application.kt index 113cbdd1590..294a8441c2d 100644 --- a/apps/etterlatte-tilbakekreving/src/main/kotlin/Application.kt +++ b/apps/etterlatte-tilbakekreving/src/main/kotlin/Application.kt @@ -13,7 +13,9 @@ fun main() { ApplicationContext().let { Server(it).run() } } -class Server(private val context: ApplicationContext) { +class Server( + private val context: ApplicationContext, +) { init { sikkerLoggOppstartOgAvslutning("etterlatte-tilbakekreving") } diff --git a/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/hendelse/TilbakekrevingHendelseRepository.kt b/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/hendelse/TilbakekrevingHendelseRepository.kt index a919cff55c5..e98623346f3 100644 --- a/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/hendelse/TilbakekrevingHendelseRepository.kt +++ b/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/hendelse/TilbakekrevingHendelseRepository.kt @@ -12,7 +12,9 @@ internal enum class TilbakekrevingHendelseType { TILBAKEKREVINGSVEDTAK_KVITTERING, } -class TilbakekrevingHendelseRepository(private val dataSource: DataSource) { +class TilbakekrevingHendelseRepository( + private val dataSource: DataSource, +) { fun lagreMottattKravgrunnlag( kravgrunnlagId: String, payload: String, diff --git a/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/kravgrunnlag/KravgrunnlagConsumer.kt b/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/kravgrunnlag/KravgrunnlagConsumer.kt index 77efc4cbc1d..dfdd683e26a 100644 --- a/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/kravgrunnlag/KravgrunnlagConsumer.kt +++ b/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/kravgrunnlag/KravgrunnlagConsumer.kt @@ -23,11 +23,12 @@ class KravgrunnlagConsumer( private val sikkerLogg: Logger = sikkerlogger() fun start() = - connectionFactory.start( - listener = exceptionListener(), - queue = queue, - messageListener = this, - ).also { logger.info("Lytter på kravgrunnlag fra tilbakekrevingskomponenten") } + connectionFactory + .start( + listener = exceptionListener(), + queue = queue, + messageListener = this, + ).also { logger.info("Lytter på kravgrunnlag fra tilbakekrevingskomponenten") } override fun onMessage(message: Message) = withLogContext { diff --git a/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/kravgrunnlag/KravgrunnlagService.kt b/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/kravgrunnlag/KravgrunnlagService.kt index a6b4a98d71a..19547664420 100644 --- a/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/kravgrunnlag/KravgrunnlagService.kt +++ b/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/kravgrunnlag/KravgrunnlagService.kt @@ -6,7 +6,9 @@ import no.nav.etterlatte.libs.common.tilbakekreving.KravgrunnlagStatus import no.nav.etterlatte.tilbakekreving.klienter.BehandlingKlient import org.slf4j.LoggerFactory -class KravgrunnlagService(private val behandlingKlient: BehandlingKlient) { +class KravgrunnlagService( + private val behandlingKlient: BehandlingKlient, +) { private val logger = LoggerFactory.getLogger(javaClass) fun haandterKravgrunnlag(kravgrunnlag: Kravgrunnlag) { diff --git a/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/vedtak/TilbakekrevingKlient.kt b/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/vedtak/TilbakekrevingKlient.kt index 0aa5722391f..7f0a119fda7 100644 --- a/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/vedtak/TilbakekrevingKlient.kt +++ b/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/vedtak/TilbakekrevingKlient.kt @@ -66,8 +66,8 @@ class TilbakekrevingKlient( return kontrollerResponse(response) } - private fun toTilbakekrevingsvedtakRequest(vedtak: TilbakekrevingVedtak): TilbakekrevingsvedtakRequest { - return TilbakekrevingsvedtakRequest().apply { + private fun toTilbakekrevingsvedtakRequest(vedtak: TilbakekrevingVedtak): TilbakekrevingsvedtakRequest = + TilbakekrevingsvedtakRequest().apply { tilbakekrevingsvedtak = TilbakekrevingsvedtakDto().apply { kodeAksjon = KodeAksjon.FATTE_VEDTAK.kode @@ -110,7 +110,6 @@ class TilbakekrevingKlient( ) } } - } private fun TilbakekrevingsbelopYtelseVedtak.toTilbakekreivngsbelopYtelse(aarsak: TilbakekrevingAarsak) = TilbakekrevingsbelopDto().apply { @@ -124,12 +123,11 @@ class TilbakekrevingKlient( kodeSkyld = skyld.name } - private fun mapFraTilbakekrevingAarsak(aarsak: TilbakekrevingAarsak): String { - return when (aarsak) { + private fun mapFraTilbakekrevingAarsak(aarsak: TilbakekrevingAarsak): String = + when (aarsak) { TilbakekrevingAarsak.UTBFEILMOT -> aarsak.name else -> TilbakekrevingAarsak.ANNET.name } - } private fun TilbakekrevingsbelopFeilkontoVedtak.toTilbakekreivngsbelopFeilkonto() = TilbakekrevingsbelopDto().apply { @@ -140,8 +138,8 @@ class TilbakekrevingKlient( belopTilbakekreves = bruttoTilbakekreving.medToDesimaler() } - private fun kontrollerResponse(response: TilbakekrevingsvedtakResponse) { - return when (val alvorlighetsgrad = Alvorlighetsgrad.fromString(response.mmel.alvorlighetsgrad)) { + private fun kontrollerResponse(response: TilbakekrevingsvedtakResponse) = + when (val alvorlighetsgrad = Alvorlighetsgrad.fromString(response.mmel.alvorlighetsgrad)) { Alvorlighetsgrad.OK, Alvorlighetsgrad.OK_MED_VARSEL, -> Unit @@ -154,9 +152,10 @@ class TilbakekrevingKlient( throw Exception(err) } } - } - enum class Alvorlighetsgrad(val value: String) { + enum class Alvorlighetsgrad( + val value: String, + ) { OK("00"), /** En varselmelding følger med */ @@ -170,17 +169,19 @@ class TilbakekrevingKlient( override fun toString() = value companion object { - fun fromString(string: String): Alvorlighetsgrad { - return enumValues().first { it.value == string } - } + fun fromString(string: String): Alvorlighetsgrad = enumValues().first { it.value == string } } } - private enum class KodeAksjon(val kode: String) { + private enum class KodeAksjon( + val kode: String, + ) { FATTE_VEDTAK("8"), } - private enum class RenterBeregnes(val kode: String) { + private enum class RenterBeregnes( + val kode: String, + ) { NEI("N"), } @@ -188,9 +189,7 @@ class TilbakekrevingKlient( const val ANSVARLIG_ENHET = "4819" } - private fun LocalDate.toXMLDate(): XMLGregorianCalendar { - return DatatypeFactory.newInstance().newXMLGregorianCalendar(toString()) - } + private fun LocalDate.toXMLDate(): XMLGregorianCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(toString()) private fun Int.medToDesimaler() = this.toBigDecimal().setScale(2) } @@ -206,7 +205,13 @@ private class CustomXMLGregorianCalendarModule : SimpleModule() { ser: SerializerProvider?, ) { if (value != null) { - gen?.writeString(value.toGregorianCalendar().toZonedDateTime().toLocalDate().toString()) + gen?.writeString( + value + .toGregorianCalendar() + .toZonedDateTime() + .toLocalDate() + .toString(), + ) } } }, diff --git a/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/vedtak/TilbakekrevingVedtakService.kt b/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/vedtak/TilbakekrevingVedtakService.kt index 87df1e2ef8c..09ecb722c52 100644 --- a/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/vedtak/TilbakekrevingVedtakService.kt +++ b/apps/etterlatte-tilbakekreving/src/main/kotlin/tilbakekreving/vedtak/TilbakekrevingVedtakService.kt @@ -3,7 +3,9 @@ package no.nav.etterlatte.tilbakekreving.vedtak import no.nav.etterlatte.libs.common.tilbakekreving.TilbakekrevingVedtak import org.slf4j.LoggerFactory -class TilbakekrevingVedtakService(private val tilbakekrevingKlient: TilbakekrevingKlient) { +class TilbakekrevingVedtakService( + private val tilbakekrevingKlient: TilbakekrevingKlient, +) { private val logger = LoggerFactory.getLogger(javaClass) fun sendTilbakekrevingsvedtak(tilbakekrevingsvedtak: TilbakekrevingVedtak) { diff --git a/apps/etterlatte-tilbakekreving/src/test/kotlin/tilbakekreving/hendelse/TilbakekrevingHendelseRepositoryTest.kt b/apps/etterlatte-tilbakekreving/src/test/kotlin/tilbakekreving/hendelse/TilbakekrevingHendelseRepositoryTest.kt index ecee835a42a..5804b8683f9 100644 --- a/apps/etterlatte-tilbakekreving/src/test/kotlin/tilbakekreving/hendelse/TilbakekrevingHendelseRepositoryTest.kt +++ b/apps/etterlatte-tilbakekreving/src/test/kotlin/tilbakekreving/hendelse/TilbakekrevingHendelseRepositoryTest.kt @@ -11,7 +11,9 @@ import tilbakekreving.DatabaseExtension import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) -internal class TilbakekrevingHendelseRepositoryTest(private val dataSource: DataSource) { +internal class TilbakekrevingHendelseRepositoryTest( + private val dataSource: DataSource, +) { companion object { @RegisterExtension val dbExtension = DatabaseExtension() @@ -81,7 +83,8 @@ internal class TilbakekrevingHendelseRepositoryTest(private val dataSource: Data ): TilbakekrevingHendelse? { dataSource.connection.use { val stmt = - it.prepareStatement("SELECT * FROM tilbakekreving_hendelse WHERE kravgrunnlag_id = ? AND type = ?") + it + .prepareStatement("SELECT * FROM tilbakekreving_hendelse WHERE kravgrunnlag_id = ? AND type = ?") .apply { setString(1, kravgrunnlagId) setString(2, type.name) diff --git a/apps/etterlatte-trygdetid-kafka/src/main/kotlin/no/nav/etterlatte/Application.kt b/apps/etterlatte-trygdetid-kafka/src/main/kotlin/no/nav/etterlatte/Application.kt index 67caa213f61..1a057b8318c 100644 --- a/apps/etterlatte-trygdetid-kafka/src/main/kotlin/no/nav/etterlatte/Application.kt +++ b/apps/etterlatte-trygdetid-kafka/src/main/kotlin/no/nav/etterlatte/Application.kt @@ -8,12 +8,14 @@ import no.nav.helse.rapids_rivers.RapidApplication fun main() { val rapidEnv = getRapidEnv() - RapidApplication.create(rapidEnv).also { rapidsConnection -> - KopierTrygdetidRiver( - rapidsConnection, - AppBuilder( - Miljoevariabler(rapidEnv), - ).createTrygdetidService(), - ) - }.start() + RapidApplication + .create(rapidEnv) + .also { rapidsConnection -> + KopierTrygdetidRiver( + rapidsConnection, + AppBuilder( + Miljoevariabler(rapidEnv), + ).createTrygdetidService(), + ) + }.start() } diff --git a/apps/etterlatte-trygdetid-kafka/src/main/kotlin/no/nav/etterlatte/trygdetid/kafka/AppBuilder.kt b/apps/etterlatte-trygdetid-kafka/src/main/kotlin/no/nav/etterlatte/trygdetid/kafka/AppBuilder.kt index ff61f1e2b30..72363ee76dc 100644 --- a/apps/etterlatte-trygdetid-kafka/src/main/kotlin/no/nav/etterlatte/trygdetid/kafka/AppBuilder.kt +++ b/apps/etterlatte-trygdetid-kafka/src/main/kotlin/no/nav/etterlatte/trygdetid/kafka/AppBuilder.kt @@ -5,7 +5,9 @@ import io.ktor.client.HttpClient import no.nav.etterlatte.libs.common.Miljoevariabler import no.nav.etterlatte.libs.ktor.httpClientClientCredentials -class AppBuilder(props: Miljoevariabler) { +class AppBuilder( + props: Miljoevariabler, +) { private val trygdetidapp: HttpClient by lazy { httpClientClientCredentials( azureAppClientId = props.requireEnvValue("AZURE_APP_CLIENT_ID"), diff --git a/apps/etterlatte-trygdetid/src/main/kotlin/Application.kt b/apps/etterlatte-trygdetid/src/main/kotlin/Application.kt index b53a5040b9d..a76d18e8e9b 100644 --- a/apps/etterlatte-trygdetid/src/main/kotlin/Application.kt +++ b/apps/etterlatte-trygdetid/src/main/kotlin/Application.kt @@ -13,7 +13,9 @@ fun main() { ApplicationContext().let { Server(it).run() } } -class Server(private val context: ApplicationContext) { +class Server( + private val context: ApplicationContext, +) { init { sikkerLoggOppstartOgAvslutning("etterlatte-trygdetid") } diff --git a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/KodeverkService.kt b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/KodeverkService.kt index 8849213259d..e99785478e5 100644 --- a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/KodeverkService.kt +++ b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/KodeverkService.kt @@ -7,9 +7,12 @@ import no.nav.etterlatte.trygdetid.klienter.KodeverkKlient import no.nav.etterlatte.trygdetid.klienter.KodeverkResponse import java.util.concurrent.TimeUnit -class KodeverkService(private val klient: KodeverkKlient) { +class KodeverkService( + private val klient: KodeverkKlient, +) { private val cache = - Caffeine.newBuilder() + Caffeine + .newBuilder() .expireAfterWrite(1, TimeUnit.DAYS) .build() @@ -29,15 +32,15 @@ class KodeverkService(private val klient: KodeverkKlient) { isolandkode = isoLandkode, ) } - } - .mapNotNull { betydningMedIsoKode -> + }.mapNotNull { betydningMedIsoKode -> betydningMedIsoKode.beskrivelser["nb"]?.let { beskrivelse -> Land( isoLandkode = betydningMedIsoKode.isolandkode, gyldigFra = betydningMedIsoKode.gyldigFra, gyldigTil = betydningMedIsoKode.gyldigTil, beskrivelse = - LandNormalisert.hentBeskrivelse(betydningMedIsoKode.isolandkode) + LandNormalisert + .hentBeskrivelse(betydningMedIsoKode.isolandkode) ?.let { Beskrivelse(term = beskrivelse.term, tekst = it) } ?: beskrivelse, ) } diff --git a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/LandNormalisert.kt b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/LandNormalisert.kt index f05ee698ea4..76abe965f22 100644 --- a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/LandNormalisert.kt +++ b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/LandNormalisert.kt @@ -1,6 +1,9 @@ package no.nav.etterlatte.trygdetid -enum class LandNormalisert(val isoCode: String, val beskrivelse: String) { +enum class LandNormalisert( + val isoCode: String, + val beskrivelse: String, +) { // Sorted by ISO 3166-1 alpha-3 code: ARUBA("ABW", "Aruba"), AFGHANISTAN("AFG", "Afghanistan"), @@ -277,8 +280,6 @@ enum class LandNormalisert(val isoCode: String, val beskrivelse: String) { companion object { private val mapAvLandkodeOgBeskrivelse = entries.associate { it.isoCode to it.beskrivelse } - fun hentBeskrivelse(isoCode: String): String? { - return mapAvLandkodeOgBeskrivelse[isoCode] - } + fun hentBeskrivelse(isoCode: String): String? = mapAvLandkodeOgBeskrivelse[isoCode] } } diff --git a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/Trygdetid.kt b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/Trygdetid.kt index ee94929e228..1768879eb2a 100644 --- a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/Trygdetid.kt +++ b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/Trygdetid.kt @@ -33,11 +33,14 @@ data class Trygdetid( fun leggTilEllerOppdaterTrygdetidGrunnlag(nyttTrygdetidGrunnlag: TrygdetidGrunnlag): Trygdetid { val normalisertNyttTrygdetidGrunnlag = listOf(nyttTrygdetidGrunnlag).normaliser().first() - trygdetidGrunnlag.normaliser().filter { - it.id != normalisertNyttTrygdetidGrunnlag.id - }.find { it.periode.overlapperMed(normalisertNyttTrygdetidGrunnlag.periode) }?.let { - throw OverlappendePeriodeException("Trygdetidsperioder kan ikke være overlappende") - } + trygdetidGrunnlag + .normaliser() + .filter { + it.id != normalisertNyttTrygdetidGrunnlag.id + }.find { it.periode.overlapperMed(normalisertNyttTrygdetidGrunnlag.periode) } + ?.let { + throw OverlappendePeriodeException("Trygdetidsperioder kan ikke være overlappende") + } val oppdatertGrunnlagListe = trygdetidGrunnlag.toMutableList().apply { @@ -54,13 +57,10 @@ data class Trygdetid( trygdetidGrunnlag = this.trygdetidGrunnlag.filter { it.id != trygdetidGrunnlagId }, ) - fun oppdaterBeregnetTrygdetid(beregnetTrygdetid: DetaljertBeregnetTrygdetid): Trygdetid { - return this.copy(beregnetTrygdetid = beregnetTrygdetid) - } + fun oppdaterBeregnetTrygdetid(beregnetTrygdetid: DetaljertBeregnetTrygdetid): Trygdetid = + this.copy(beregnetTrygdetid = beregnetTrygdetid) - fun nullstillBeregnetTrygdetid(): Trygdetid { - return this.copy(beregnetTrygdetid = null) - } + fun nullstillBeregnetTrygdetid(): Trygdetid = this.copy(beregnetTrygdetid = null) } data class DetaljertBeregnetTrygdetid( @@ -109,14 +109,17 @@ data class TrygdetidGrunnlag( val poengUtAar: Boolean, val prorata: Boolean, ) { - fun oppdaterBeregnetTrygdetid(beregnetTrygdetid: BeregnetTrygdetidGrunnlag?): TrygdetidGrunnlag { - return this.copy(beregnetTrygdetid = beregnetTrygdetid) - } + fun oppdaterBeregnetTrygdetid(beregnetTrygdetid: BeregnetTrygdetidGrunnlag?): TrygdetidGrunnlag = + this.copy(beregnetTrygdetid = beregnetTrygdetid) fun erNasjonal() = this.bosted == LandNormalisert.NORGE.isoCode } -data class BeregnetTrygdetidGrunnlag(val verdi: Period, val tidspunkt: Tidspunkt, val regelResultat: JsonNode) +data class BeregnetTrygdetidGrunnlag( + val verdi: Period, + val tidspunkt: Tidspunkt, + val regelResultat: JsonNode, +) data class TrygdetidPeriode( val fra: LocalDate, @@ -131,9 +134,7 @@ data class TrygdetidPeriode( } } - fun overlapperMed(other: TrygdetidPeriode): Boolean { - return this.fra.isBefore(other.til) && other.fra.isBefore(this.til) - } + fun overlapperMed(other: TrygdetidPeriode): Boolean = this.fra.isBefore(other.til) && other.fra.isBefore(this.til) } fun List.normaliser() = @@ -170,11 +171,13 @@ fun List.normaliser() = trygdetidGrunnlag.copy(periode = TrygdetidPeriode(fra = fra, til = til.plusDays(1))) } -class OverlappendePeriodeException(message: String) : ForespoerselException( - status = HttpStatusCode.Conflict.value, - code = "OVERLAPPENDE_PERIODE_TRYGDETID", - detail = message, -) +class OverlappendePeriodeException( + message: String, +) : ForespoerselException( + status = HttpStatusCode.Conflict.value, + code = "OVERLAPPENDE_PERIODE_TRYGDETID", + detail = message, + ) fun List.toDto(): GrunnlagOpplysningerDto = GrunnlagOpplysningerDto( diff --git a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidRepository.kt b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidRepository.kt index 99d0f995975..b6a5da23b60 100644 --- a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidRepository.kt +++ b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidRepository.kt @@ -21,17 +21,15 @@ import java.time.Period import java.util.UUID import javax.sql.DataSource -class TrygdetidRepository(private val dataSource: DataSource) { +class TrygdetidRepository( + private val dataSource: DataSource, +) { fun hentTrygdetidMedId( behandlingId: UUID, trygdetidId: UUID, - ): Trygdetid? { - return hentTrygdetiderForBehandling(behandlingId).find { it.id == trygdetidId } - } + ): Trygdetid? = hentTrygdetiderForBehandling(behandlingId).find { it.id == trygdetidId } - fun hentTrygdetid(behandlingId: UUID): Trygdetid? { - return hentTrygdetiderForBehandling(behandlingId).minByOrNull { it.ident } - } + fun hentTrygdetid(behandlingId: UUID): Trygdetid? = hentTrygdetiderForBehandling(behandlingId).minByOrNull { it.ident } fun hentTrygdetiderForBehandling(behandlingId: UUID): List = using(sessionOf(dataSource)) { session -> @@ -72,84 +70,87 @@ class TrygdetidRepository(private val dataSource: DataSource) { paramMap = mapOf("behandlingId" to behandlingId), ).let { query -> session.run( - query.map { row -> - val trygdetidId = row.uuid("id") - val trygdetidGrunnlag = hentTrygdetidGrunnlag(trygdetidId) - val opplysninger = hentGrunnlagOpplysninger(trygdetidId) - row.toTrygdetid(trygdetidGrunnlag, opplysninger) - }.asList, + query + .map { row -> + val trygdetidId = row.uuid("id") + val trygdetidGrunnlag = hentTrygdetidGrunnlag(trygdetidId) + val opplysninger = hentGrunnlagOpplysninger(trygdetidId) + row.toTrygdetid(trygdetidGrunnlag, opplysninger) + }.asList, ) } } fun opprettTrygdetid(trygdetid: Trygdetid): Trygdetid = - dataSource.transaction { tx -> - opprettTrygdetid(trygdetid, tx) - opprettOpplysningsgrunnlag(trygdetid.id, trygdetid.opplysninger, tx) - trygdetid.trygdetidGrunnlag.forEach { opprettTrygdetidGrunnlag(trygdetid.id, it, tx) } + dataSource + .transaction { tx -> + opprettTrygdetid(trygdetid, tx) + opprettOpplysningsgrunnlag(trygdetid.id, trygdetid.opplysninger, tx) + trygdetid.trygdetidGrunnlag.forEach { opprettTrygdetidGrunnlag(trygdetid.id, it, tx) } - if (trygdetid.beregnetTrygdetid != null) { - oppdaterBeregnetTrygdetid(trygdetid.behandlingId, trygdetid.id, trygdetid.beregnetTrygdetid, tx) - } - }.let { hentTrygdetidMedIdNotNull(behandlingId = trygdetid.behandlingId, trygdetidId = trygdetid.id) } + if (trygdetid.beregnetTrygdetid != null) { + oppdaterBeregnetTrygdetid(trygdetid.behandlingId, trygdetid.id, trygdetid.beregnetTrygdetid, tx) + } + }.let { hentTrygdetidMedIdNotNull(behandlingId = trygdetid.behandlingId, trygdetidId = trygdetid.id) } fun oppdaterTrygdetid( oppdatertTrygdetid: Trygdetid, overstyrt: Boolean = false, ): Trygdetid = - dataSource.transaction { tx -> - val gjeldendeTrygdetid = - hentTrygdetidMedIdNotNull( - behandlingId = oppdatertTrygdetid.behandlingId, - trygdetidId = oppdatertTrygdetid.id, + dataSource + .transaction { tx -> + val gjeldendeTrygdetid = + hentTrygdetidMedIdNotNull( + behandlingId = oppdatertTrygdetid.behandlingId, + trygdetidId = oppdatertTrygdetid.id, + ) + + oppdaterOverstyrtPoengaar( + gjeldendeTrygdetid.id, + gjeldendeTrygdetid.behandlingId, + oppdatertTrygdetid.overstyrtNorskPoengaar, + tx, ) - oppdaterOverstyrtPoengaar( - gjeldendeTrygdetid.id, - gjeldendeTrygdetid.behandlingId, - oppdatertTrygdetid.overstyrtNorskPoengaar, - tx, - ) + oppdaterYrkesskade( + gjeldendeTrygdetid.id, + gjeldendeTrygdetid.behandlingId, + oppdatertTrygdetid.yrkesskade, + tx, + ) - oppdaterYrkesskade( - gjeldendeTrygdetid.id, - gjeldendeTrygdetid.behandlingId, - oppdatertTrygdetid.yrkesskade, - tx, - ) + // opprett grunnlag + oppdatertTrygdetid.trygdetidGrunnlag + .filter { gjeldendeTrygdetid.trygdetidGrunnlag.find { tg -> tg.id == it.id } == null } + .forEach { opprettTrygdetidGrunnlag(oppdatertTrygdetid.id, it, tx) } - // opprett grunnlag - oppdatertTrygdetid.trygdetidGrunnlag - .filter { gjeldendeTrygdetid.trygdetidGrunnlag.find { tg -> tg.id == it.id } == null } - .forEach { opprettTrygdetidGrunnlag(oppdatertTrygdetid.id, it, tx) } + // oppdater grunnlag + oppdatertTrygdetid.trygdetidGrunnlag.forEach { trygdetidGrunnlag -> + gjeldendeTrygdetid.trygdetidGrunnlag + .find { it.id == trygdetidGrunnlag.id && it != trygdetidGrunnlag } + ?.let { oppdaterTrygdetidGrunnlag(trygdetidGrunnlag, tx) } + } - // oppdater grunnlag - oppdatertTrygdetid.trygdetidGrunnlag.forEach { trygdetidGrunnlag -> + // slett grunnlag gjeldendeTrygdetid.trygdetidGrunnlag - .find { it.id == trygdetidGrunnlag.id && it != trygdetidGrunnlag } - ?.let { oppdaterTrygdetidGrunnlag(trygdetidGrunnlag, tx) } - } - - // slett grunnlag - gjeldendeTrygdetid.trygdetidGrunnlag - .filter { oppdatertTrygdetid.trygdetidGrunnlag.find { tg -> tg.id == it.id } == null } - .forEach { slettTrygdetidGrunnlag(it.id, tx) } - - // overskriv opplysningsgrunnlag - oppdaterOpplysningsgrunnlag(oppdatertTrygdetid.id, oppdatertTrygdetid.opplysninger, tx) - - if (oppdatertTrygdetid.beregnetTrygdetid != null) { - oppdaterBeregnetTrygdetid( - oppdatertTrygdetid.behandlingId, - oppdatertTrygdetid.id, - oppdatertTrygdetid.beregnetTrygdetid, - tx, - overstyrt, - ) - } else { - nullstillBeregnetTrygdetid(oppdatertTrygdetid.behandlingId, tx) - } - }.let { hentTrygdetidMedIdNotNull(oppdatertTrygdetid.behandlingId, oppdatertTrygdetid.id) } + .filter { oppdatertTrygdetid.trygdetidGrunnlag.find { tg -> tg.id == it.id } == null } + .forEach { slettTrygdetidGrunnlag(it.id, tx) } + + // overskriv opplysningsgrunnlag + oppdaterOpplysningsgrunnlag(oppdatertTrygdetid.id, oppdatertTrygdetid.opplysninger, tx) + + if (oppdatertTrygdetid.beregnetTrygdetid != null) { + oppdaterBeregnetTrygdetid( + oppdatertTrygdetid.behandlingId, + oppdatertTrygdetid.id, + oppdatertTrygdetid.beregnetTrygdetid, + tx, + overstyrt, + ) + } else { + nullstillBeregnetTrygdetid(oppdatertTrygdetid.behandlingId, tx) + } + }.let { hentTrygdetidMedIdNotNull(oppdatertTrygdetid.behandlingId, oppdatertTrygdetid.id) } fun slettTrygdetid(trygdetidId: UUID) = dataSource.transaction { tx -> @@ -635,12 +636,11 @@ class TrygdetidRepository(private val dataSource: DataSource) { prorata = boolean("prorata"), ) - private fun Row.toOpplysningsgrunnlag(): Opplysningsgrunnlag { - return Opplysningsgrunnlag( + private fun Row.toOpplysningsgrunnlag(): Opplysningsgrunnlag = + Opplysningsgrunnlag( id = uuid("id"), type = string("type").let { TrygdetidOpplysningType.valueOf(it) }, opplysning = string("opplysning").let { objectMapper.readValue(it) }, kilde = string("kilde").let { objectMapper.readValue(it) }, ) - } } diff --git a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidRoutes.kt b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidRoutes.kt index 2d2600857b7..659935d8a4a 100644 --- a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidRoutes.kt +++ b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidRoutes.kt @@ -40,8 +40,8 @@ import java.util.UUID private const val TRYGDETIDID_CALL_PARAMETER = "trygdetidId" -fun PipelineContext<*, ApplicationCall>.trygdetidId(): UUID { - return try { +fun PipelineContext<*, ApplicationCall>.trygdetidId(): UUID = + try { this.call.parameters[TRYGDETIDID_CALL_PARAMETER]?.let { UUID.fromString(it) }!! } catch (e: Exception) { throw UgyldigForespoerselException( @@ -49,7 +49,6 @@ fun PipelineContext<*, ApplicationCall>.trygdetidId(): UUID { "Kunne ikke lese ut parameteret trygdetidId", ) } -} private val logger: Logger = LoggerFactory.getLogger("TrygdetidRoutes") @@ -75,7 +74,8 @@ fun Route.trygdetid( logger.info("Oppretter trygdetid(er) for behandling $behandlingId") trygdetidService.opprettTrygdetiderForBehandling(behandlingId, brukerTokenInfo) call.respond( - trygdetidService.hentTrygdetiderIBehandling(behandlingId, brukerTokenInfo) + trygdetidService + .hentTrygdetiderIBehandling(behandlingId, brukerTokenInfo) .map { it.toDto() }, ) } @@ -87,7 +87,8 @@ fun Route.trygdetid( trygdetidService.oppdaterOpplysningsgrunnlagForTrygdetider(behandlingId, brukerTokenInfo) call.respond( - trygdetidService.hentTrygdetiderIBehandling(behandlingId, brukerTokenInfo) + trygdetidService + .hentTrygdetiderIBehandling(behandlingId, brukerTokenInfo) .minBy { it.ident } .toDto(), ) @@ -106,11 +107,13 @@ fun Route.trygdetid( brukerTokenInfo, ) call.respond( - trygdetidService.hentTrygdetidIBehandlingMedId( - behandlingId, - trygdetidOverstyringDto.id, - brukerTokenInfo, - )!!.toDto(), + trygdetidService + .hentTrygdetidIBehandlingMedId( + behandlingId, + trygdetidOverstyringDto.id, + brukerTokenInfo, + )!! + .toDto(), ) } } @@ -128,11 +131,13 @@ fun Route.trygdetid( ) call.respond( - trygdetidService.hentTrygdetidIBehandlingMedId( - behandlingId, - trygdetidYrkesskadeDto.id, - brukerTokenInfo, - )!!.toDto(), + trygdetidService + .hentTrygdetidIBehandlingMedId( + behandlingId, + trygdetidYrkesskadeDto.id, + brukerTokenInfo, + )!! + .toDto(), ) } } @@ -150,11 +155,13 @@ fun Route.trygdetid( brukerTokenInfo, ) call.respond( - trygdetidService.hentTrygdetidIBehandlingMedId( - behandlingId, - trygdetidId(), - brukerTokenInfo, - )!!.toDto(), + trygdetidService + .hentTrygdetidIBehandlingMedId( + behandlingId, + trygdetidId(), + brukerTokenInfo, + )!! + .toDto(), ) } } @@ -170,11 +177,13 @@ fun Route.trygdetid( brukerTokenInfo, ) call.respond( - trygdetidService.hentTrygdetidIBehandlingMedId( - behandlingId, - trygdetidId(), - brukerTokenInfo, - )!!.toDto(), + trygdetidService + .hentTrygdetidIBehandlingMedId( + behandlingId, + trygdetidId(), + brukerTokenInfo, + )!! + .toDto(), ) } } @@ -209,7 +218,8 @@ fun Route.trygdetid( overstyringDto.detaljertBeregnetTrygdetidResultat, ) call.respond( - trygdetidService.hentTrygdetiderIBehandling(behandlingId, brukerTokenInfo) + trygdetidService + .hentTrygdetiderIBehandling(behandlingId, brukerTokenInfo) .first { trygdetid -> trygdetid.ident == overstyringDto.ident } .toDto(), ) @@ -249,11 +259,13 @@ fun Route.trygdetid( behandlingKlient.settBehandlingStatusTrygdetidOppdatert(trygdetid.behandlingId, brukerTokenInfo) call.respond( - trygdetidService.hentTrygdetidIBehandlingMedId( - behandlingId, - trygdetidId(), - brukerTokenInfo, - )!!.toDto(), + trygdetidService + .hentTrygdetidIBehandlingMedId( + behandlingId, + trygdetidId(), + brukerTokenInfo, + )!! + .toDto(), ) } } @@ -272,11 +284,13 @@ fun Route.trygdetid( brukerTokenInfo, ) call.respond( - trygdetidService.hentTrygdetidIBehandlingMedId( - behandlingId, - trygdetidId(), - brukerTokenInfo, - )!!.toDto(), + trygdetidService + .hentTrygdetidIBehandlingMedId( + behandlingId, + trygdetidId(), + brukerTokenInfo, + )!! + .toDto(), ) } else { call.respond(HttpStatusCode.NoContent) @@ -325,8 +339,8 @@ fun TrygdetidGrunnlagDto.toTrygdetidGrunnlag(brukerTokenInfo: BrukerTokenInfo): prorata = prorata, ) -private fun TrygdetidGrunnlag.toDto(): TrygdetidGrunnlagDto { - return TrygdetidGrunnlagDto( +private fun TrygdetidGrunnlag.toDto(): TrygdetidGrunnlagDto = + TrygdetidGrunnlagDto( id = id, type = type.name, bosted = bosted, @@ -357,4 +371,3 @@ private fun TrygdetidGrunnlag.toDto(): TrygdetidGrunnlagDto { poengUtAar = poengUtAar, prorata = prorata, ) -} diff --git a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidService.kt b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidService.kt index b4628c50ed2..a3b76f5a7ec 100644 --- a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidService.kt +++ b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidService.kt @@ -125,20 +125,20 @@ class TrygdetidServiceImpl( override suspend fun hentTrygdetiderIBehandling( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): List { - return trygdetidRepository.hentTrygdetiderForBehandling(behandlingId) + ): List = + trygdetidRepository + .hentTrygdetiderForBehandling(behandlingId) .mapNotNull { trygdetid -> sjekkTrygdetidMotGrunnlag(trygdetid, brukerTokenInfo) } .sortedBy { it.ident } - } override suspend fun hentTrygdetidIBehandlingMedId( behandlingId: UUID, trygdetidId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): Trygdetid? { - return trygdetidRepository.hentTrygdetidMedId(behandlingId, trygdetidId) + ): Trygdetid? = + trygdetidRepository + .hentTrygdetidMedId(behandlingId, trygdetidId) ?.let { trygdetid -> sjekkTrygdetidMotGrunnlag(trygdetid, brukerTokenInfo) } - } override suspend fun opprettTrygdetiderForBehandling( behandlingId: UUID, @@ -206,34 +206,35 @@ class TrygdetidServiceImpl( eksisterendeTrygdetider: List, avdoede: List>, brukerTokenInfo: BrukerTokenInfo, - ) = avdoede.map { avdoed -> - val fnr = - requireNotNull(avdoed.hentFoedselsnummer()?.verdi?.value) { - "Kunne ikke hente identifikator for avdød til trygdetid i " + - "behandlingen med id=${behandling.id}" - } + ) = avdoede + .map { avdoed -> + val fnr = + requireNotNull(avdoed.hentFoedselsnummer()?.verdi?.value) { + "Kunne ikke hente identifikator for avdød til trygdetid i " + + "behandlingen med id=${behandling.id}" + } - Pair(fnr, avdoed) - }.filter { avdoedMedFnr -> - eksisterendeTrygdetider.none { avdoedMedFnr.first == it.ident } - }.map { avdoedMedFnr -> - val trygdetid = - Trygdetid( - sakId = behandling.sak, - behandlingId = behandling.id, - opplysninger = hentOpplysninger(avdoedMedFnr.second, behandling.id), - ident = avdoedMedFnr.first, - yrkesskade = false, - ) - val opprettetTrygdetid = trygdetidRepository.opprettTrygdetid(trygdetid) + Pair(fnr, avdoed) + }.filter { avdoedMedFnr -> + eksisterendeTrygdetider.none { avdoedMedFnr.first == it.ident } + }.map { avdoedMedFnr -> + val trygdetid = + Trygdetid( + sakId = behandling.sak, + behandlingId = behandling.id, + opplysninger = hentOpplysninger(avdoedMedFnr.second, behandling.id), + ident = avdoedMedFnr.first, + yrkesskade = false, + ) + val opprettetTrygdetid = trygdetidRepository.opprettTrygdetid(trygdetid) - val oppdatertTrygdetid = - opprettFremtidigTrygdetidForAvdoed(opprettetTrygdetid, avdoedMedFnr.second, brukerTokenInfo) + val oppdatertTrygdetid = + opprettFremtidigTrygdetidForAvdoed(opprettetTrygdetid, avdoedMedFnr.second, brukerTokenInfo) - oppdatertTrygdetid ?: opprettetTrygdetid - }.also { - logger.info("Opprettet ${it.size} trygdetider for behandling=${behandling.id}") - } + oppdatertTrygdetid ?: opprettetTrygdetid + }.also { + logger.info("Opprettet ${it.size} trygdetider for behandling=${behandling.id}") + } private suspend fun opprettFremtidigTrygdetidForAvdoed( trygdetid: Trygdetid, @@ -266,9 +267,13 @@ class TrygdetidServiceImpl( val doedsDato = avdoed.hentDoedsdato()?.verdi val sistFremtidigDato = - avdoed.hentFoedselsdato()?.verdi?.plusYears( - SIST_FREMTIDIG_TRYGDETID_ALDER, - )?.with(TemporalAdjusters.firstDayOfNextYear())?.minusDays(1) + avdoed + .hentFoedselsdato() + ?.verdi + ?.plusYears( + SIST_FREMTIDIG_TRYGDETID_ALDER, + )?.with(TemporalAdjusters.firstDayOfNextYear()) + ?.minusDays(1) return if (doedsDato != null && sistFremtidigDato != null && doedsDato.isBefore(sistFremtidigDato)) { TrygdetidPeriode(doedsDato, sistFremtidigDato) @@ -319,7 +324,8 @@ class TrygdetidServiceImpl( ): Trygdetid = kanOppdatereTrygdetid(behandlingId, brukerTokenInfo) { val trygdetid = - trygdetidRepository.hentTrygdetidMedId(behandlingId, trygdetidId) + trygdetidRepository + .hentTrygdetidMedId(behandlingId, trygdetidId) ?.slettTrygdetidGrunnlag(trygdetidGrunnlagId) ?: throw Exception("Fant ikke gjeldende trygdetid for behandlingId=$behandlingId") @@ -446,8 +452,10 @@ class TrygdetidServiceImpl( logger.info("Oppretter manuell overstyrt trygdetid for behandling $behandlingId") val avdoed = - grunnlagKlient.hentGrunnlag(behandling.id, brukerTokenInfo) - .hentAvdoede().minByOrNull { it.hentDoedsdato()?.verdi ?: LocalDate.MAX } + grunnlagKlient + .hentGrunnlag(behandling.id, brukerTokenInfo) + .hentAvdoede() + .minByOrNull { it.hentDoedsdato()?.verdi ?: LocalDate.MAX } // TODO: Det er mest sannsynlig den med tidligst dødsdato som er aktuell, men dette er midlertidig løsning val trygdetid = Trygdetid( @@ -643,7 +651,10 @@ class TrygdetidServiceImpl( nyAvdoedGrunnlag: Grunnlagsdata?, ): OpplysningerDifferanse { if ( - trygdetid.beregnetTrygdetid?.resultat?.overstyrt.let { it != null && it } + trygdetid.beregnetTrygdetid + ?.resultat + ?.overstyrt + .let { it != null && it } ) { return OpplysningerDifferanse( differanse = false, @@ -729,54 +740,64 @@ class TrygdetidServiceImpl( } } -class ManglerForrigeTrygdetidMaaReguleresManuelt : UgyldigForespoerselException( - "MANGLER_TRYGDETID_FOR_REGULERING", - "Forrige behandling mangler trygdetid, og kan dermed ikke reguleres manuelt", -) +class ManglerForrigeTrygdetidMaaReguleresManuelt : + UgyldigForespoerselException( + "MANGLER_TRYGDETID_FOR_REGULERING", + "Forrige behandling mangler trygdetid, og kan dermed ikke reguleres manuelt", + ) -class GrunnlagManglerAvdoede : UgyldigForespoerselException( - code = "GRUNNLAG_MANGLER_AVDOEDE", - detail = "Ingen avdød(e) funnet i grunnlag. Kan ikke opprette trygdetid.", -) +class GrunnlagManglerAvdoede : + UgyldigForespoerselException( + code = "GRUNNLAG_MANGLER_AVDOEDE", + detail = "Ingen avdød(e) funnet i grunnlag. Kan ikke opprette trygdetid.", + ) class TrygdetidAlleredeOpprettetException : IkkeTillattException("TRYGDETID_FINNES_ALLEREDE", "Det er opprettet trygdetid for behandlingen allerede") -class TrygdetidMaaHaFoedselsdatoException(behandlingId: UUID) : - IkkeTillattException( +class TrygdetidMaaHaFoedselsdatoException( + behandlingId: UUID, +) : IkkeTillattException( "TRYGDETID_MANGLER_FOEDSELSDATO", "Kan ikke lage trygdetid uten fødselsdato, behandling: $behandlingId", ) -class IngenTrygdetidFunnetForAvdoede : UgyldigForespoerselException( - code = "TRYGDETID_IKKE_FUNNET_AVDOEDE", - detail = "Ingen trygdetider er funnet for den / de avdøde", -) - -class TrygdetidManglerBeregning : UgyldigForespoerselException( - code = "TRYGDETID_MANGLER_BEREGNING", - detail = "Oppgitt trygdetid er ikke gyldig fordi det mangler en beregning", -) - -class IngenFoedselsdatoForAvdoedFunnet(trygdetidId: UUID) : UgyldigForespoerselException( - code = "FOEDSELSDATO_FOR_AVDOED_IKKE_FUNNET", - detail = "Fant ikke fødselsdato for avdød", - meta = - mapOf( - "trygdetidId" to trygdetidId, - ), -) - -class IngenDoedsdatoForAvdoedFunnet(trygdetidId: UUID) : UgyldigForespoerselException( - code = "FOEDSELSDATO_FOR_AVDOED_IKKE_FUNNET", - detail = "Fant ikke dødsdato for avdød", - meta = - mapOf( - "trygdetidId" to trygdetidId, - ), -) - -class TrygdetidIkkeFunnetForBehandling : UgyldigForespoerselException( - code = "TRYGDETID_IKKE_FUNNET_BEHANDLING", - detail = "Etterspurt trygdetid er ikke funnet for behandlingen", -) +class IngenTrygdetidFunnetForAvdoede : + UgyldigForespoerselException( + code = "TRYGDETID_IKKE_FUNNET_AVDOEDE", + detail = "Ingen trygdetider er funnet for den / de avdøde", + ) + +class TrygdetidManglerBeregning : + UgyldigForespoerselException( + code = "TRYGDETID_MANGLER_BEREGNING", + detail = "Oppgitt trygdetid er ikke gyldig fordi det mangler en beregning", + ) + +class IngenFoedselsdatoForAvdoedFunnet( + trygdetidId: UUID, +) : UgyldigForespoerselException( + code = "FOEDSELSDATO_FOR_AVDOED_IKKE_FUNNET", + detail = "Fant ikke fødselsdato for avdød", + meta = + mapOf( + "trygdetidId" to trygdetidId, + ), + ) + +class IngenDoedsdatoForAvdoedFunnet( + trygdetidId: UUID, +) : UgyldigForespoerselException( + code = "FOEDSELSDATO_FOR_AVDOED_IKKE_FUNNET", + detail = "Fant ikke dødsdato for avdød", + meta = + mapOf( + "trygdetidId" to trygdetidId, + ), + ) + +class TrygdetidIkkeFunnetForBehandling : + UgyldigForespoerselException( + code = "TRYGDETID_IKKE_FUNNET_BEHANDLING", + detail = "Etterspurt trygdetid er ikke funnet for behandlingen", + ) diff --git a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/avtale/AvtaleRepository.kt b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/avtale/AvtaleRepository.kt index bd51869bc89..0ad3b4fc5c8 100644 --- a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/avtale/AvtaleRepository.kt +++ b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/avtale/AvtaleRepository.kt @@ -11,7 +11,9 @@ import no.nav.etterlatte.libs.common.trygdetid.avtale.Trygdeavtale import java.util.UUID import javax.sql.DataSource -class AvtaleRepository(private val dataSource: DataSource) { +class AvtaleRepository( + private val dataSource: DataSource, +) { fun hentAvtale(behandlingId: UUID): Trygdeavtale? = using(sessionOf(dataSource)) { session -> queryOf( @@ -24,9 +26,10 @@ class AvtaleRepository(private val dataSource: DataSource) { paramMap = mapOf("behandlingId" to behandlingId), ).let { query -> session.run( - query.map { row -> - row.toTrygdeavtale() - }.asSingle, + query + .map { row -> + row.toTrygdeavtale() + }.asSingle, ) } } diff --git a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/avtale/AvtaleService.kt b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/avtale/AvtaleService.kt index c10950a9645..e58608f2da5 100644 --- a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/avtale/AvtaleService.kt +++ b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/avtale/AvtaleService.kt @@ -7,7 +7,9 @@ import no.nav.etterlatte.libs.common.trygdetid.avtale.TrygdetidAvtale import no.nav.etterlatte.libs.common.trygdetid.avtale.TrygdetidAvtaleKriteria import java.util.UUID -class AvtaleService(val avtaleRepository: AvtaleRepository) { +class AvtaleService( + val avtaleRepository: AvtaleRepository, +) { private var avtaler: List private var kriterier: List diff --git a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/klienter/BehandlingKlient.kt b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/klienter/BehandlingKlient.kt index 7d6352d4742..38a4f2f0e7d 100644 --- a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/klienter/BehandlingKlient.kt +++ b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/klienter/BehandlingKlient.kt @@ -20,9 +20,15 @@ import no.nav.etterlatte.libs.ktor.token.Saksbehandler import org.slf4j.LoggerFactory import java.util.UUID -class BehandlingKlientException(override val message: String, override val cause: Throwable) : Exception(message, cause) +class BehandlingKlientException( + override val message: String, + override val cause: Throwable, +) : Exception(message, cause) -class BehandlingKlient(config: Config, httpClient: HttpClient) : BehandlingTilgangsSjekk { +class BehandlingKlient( + config: Config, + httpClient: HttpClient, +) : BehandlingTilgangsSjekk { private val logger = LoggerFactory.getLogger(BehandlingKlient::class.java) private val tilgangssjekker = Tilgangssjekker(config, httpClient) @@ -44,7 +50,8 @@ class BehandlingKlient(config: Config, httpClient: HttpClient) : BehandlingTilga logger.info("Sjekker om behandling med behandlingId=$behandlingId kan oppdatere trygdetid") val resource = Resource(clientId = clientId, url = "$resourceUrl/behandlinger/$behandlingId/oppdaterTrygdetid") - return downstreamResourceClient.get(resource, brukerTokenInfo) + return downstreamResourceClient + .get(resource, brukerTokenInfo) .mapBoth( success = { true }, failure = { @@ -111,8 +118,7 @@ class BehandlingKlient(config: Config, httpClient: HttpClient) : BehandlingTilga url = "$resourceUrl/behandlinger/$behandlingId", ), brukerTokenInfo = brukerTokenInfo, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { throwableErrorMessage -> throw throwableErrorMessage }, ) diff --git a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/klienter/GrunnlagKlient.kt b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/klienter/GrunnlagKlient.kt index b117ebe283b..4f9e105dacc 100644 --- a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/klienter/GrunnlagKlient.kt +++ b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/klienter/GrunnlagKlient.kt @@ -15,9 +15,15 @@ import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo import org.slf4j.LoggerFactory import java.util.UUID -class GrunnlagKlientException(override val message: String, override val cause: Throwable) : Exception(message, cause) +class GrunnlagKlientException( + override val message: String, + override val cause: Throwable, +) : Exception(message, cause) -class GrunnlagKlient(config: Config, httpClient: HttpClient) { +class GrunnlagKlient( + config: Config, + httpClient: HttpClient, +) { private val logger = LoggerFactory.getLogger(GrunnlagKlient::class.java) private val azureAdClient = AzureAdClient(config) @@ -41,8 +47,7 @@ class GrunnlagKlient(config: Config, httpClient: HttpClient) { url = "$resourceUrl/api/grunnlag/behandling/$behandlingId", ), brukerTokenInfo = brukerTokenInfo, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { throwableErrorMessage -> throw throwableErrorMessage }, ) diff --git a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/klienter/KodeverkKlient.kt b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/klienter/KodeverkKlient.kt index 56cb3b4a59a..7477d5ccf04 100644 --- a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/klienter/KodeverkKlient.kt +++ b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/klienter/KodeverkKlient.kt @@ -10,7 +10,10 @@ import io.ktor.http.ContentType import no.nav.etterlatte.libs.ktor.navConsumerId import org.slf4j.LoggerFactory -class KodeverkKlient(config: Config, private val httpKlient: HttpClient) { +class KodeverkKlient( + config: Config, + private val httpKlient: HttpClient, +) { private val logger = LoggerFactory.getLogger(KodeverkKlient::class.java) private val url = config.getString("kodeverk.resource.url") @@ -18,10 +21,11 @@ class KodeverkKlient(config: Config, private val httpKlient: HttpClient) { try { logger.info("Henter alle landkoder fra Kodeverk") - httpKlient.get("$url/Landkoder/koder/betydninger?ekskluderUgyldige=false&spraak=nb") { - accept(ContentType.Application.Json) - navConsumerId("etterlatte-trygdetid") - }.body() + httpKlient + .get("$url/Landkoder/koder/betydninger?ekskluderUgyldige=false&spraak=nb") { + accept(ContentType.Application.Json) + navConsumerId("etterlatte-trygdetid") + }.body() } catch (e: Exception) { logger.error("Henting av landkoder feilet", e) throw e @@ -29,11 +33,20 @@ class KodeverkKlient(config: Config, private val httpKlient: HttpClient) { } @JsonIgnoreProperties(ignoreUnknown = true) -data class KodeverkResponse(val betydninger: Map>) +data class KodeverkResponse( + val betydninger: Map>, +) -data class Beskrivelse(val term: String, val tekst: String) +data class Beskrivelse( + val term: String, + val tekst: String, +) -data class Betydning(val gyldigFra: String, val gyldigTil: String, val beskrivelser: Map) +data class Betydning( + val gyldigFra: String, + val gyldigTil: String, + val beskrivelser: Map, +) data class BetydningMedIsoKode( val gyldigFra: String, diff --git a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/regler/BeregnTrygdetid.kt b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/regler/BeregnTrygdetid.kt index 24a61b05bd2..7fefe95f04a 100644 --- a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/regler/BeregnTrygdetid.kt +++ b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/regler/BeregnTrygdetid.kt @@ -444,7 +444,8 @@ val avrundetBroek = beskrivelse = "Avrunder trygdetid basert på måneder", regelReferanse = RegelReferanse(id = "REGEL-TOTAL-TRYGDETID-AVRUNDING"), ) benytter beregnetFaktiskTrygdetid med { faktisk -> - if (faktisk.nasjonal?.antallMaaneder != null && faktisk.teoretisk?.antallMaaneder != null && + if (faktisk.nasjonal?.antallMaaneder != null && + faktisk.teoretisk?.antallMaaneder != null && faktisk.nasjonal.antallMaaneder != faktisk.teoretisk.antallMaaneder ) { IntBroek.fra( @@ -514,11 +515,11 @@ private fun FremtidigTrygdetid?.verdiOrZero() = this?.periode ?: Period.ZERO private fun FaktiskTrygdetid?.verdiOrZero() = this?.periode ?: Period.ZERO private fun List.summer(antallDagerEnMaanedTrygdetid: Int) = - this.map { Period.between(it.periode.fra, it.periode.til) } + this + .map { Period.between(it.periode.fra, it.periode.til) } .reduce { acc, period -> acc.plus(period) - } - .let { + }.let { val dagerResterende = it.days.mod(antallDagerEnMaanedTrygdetid) val maanederOppjustert = it.months + (it.days - dagerResterende).div(antallDagerEnMaanedTrygdetid) Period.of(it.years, maanederOppjustert, dagerResterende).normalized() @@ -527,15 +528,16 @@ private fun List.summer(antallDagerEnMaanedTrygdetid: Int) = private fun Period.justertForOpptjeningstiden( opptjening: Long, mindreEnnFireFemtedelerAvOpptjeningstiden: Boolean, -) = Period.ofMonths( - if (mindreEnnFireFemtedelerAvOpptjeningstiden) { - val months = Period.ofYears(40).toTotalMonths() - round(opptjening * 0.8).toLong() - - Period.ofMonths(months.toInt()).normalized() - } else { - this - }.oppjustertMaaneder().toInt(), -).normalized() +) = Period + .ofMonths( + if (mindreEnnFireFemtedelerAvOpptjeningstiden) { + val months = Period.ofYears(40).toTotalMonths() - round(opptjening * 0.8).toLong() + + Period.ofMonths(months.toInt()).normalized() + } else { + this + }.oppjustertMaaneder().toInt(), + ).normalized() private fun Period.oppjustertMaaneder() = when (this.days) { diff --git a/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TestHelper.kt b/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TestHelper.kt index e004b3a5460..062cbf0e70a 100644 --- a/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TestHelper.kt +++ b/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TestHelper.kt @@ -50,7 +50,11 @@ fun behandling( fun trygdetid( behandlingId: UUID = randomUUID(), sakId: Long = 1, - ident: String = GrunnlagTestData().avdoede.first().foedselsnummer.value, + ident: String = + GrunnlagTestData() + .avdoede + .first() + .foedselsnummer.value, beregnetTrygdetid: DetaljertBeregnetTrygdetid? = null, trygdetidGrunnlag: List = emptyList(), opplysninger: List = standardOpplysningsgrunnlag(), @@ -80,14 +84,13 @@ private fun opplysningsgrunnlag( doedsdato: LocalDate, seksten: LocalDate, seksti: LocalDate, -): List { - return listOf( +): List = + listOf( Opplysningsgrunnlag.ny(TrygdetidOpplysningType.FOEDSELSDATO, pdlKilde, foedselsdato), Opplysningsgrunnlag.ny(TrygdetidOpplysningType.DOEDSDATO, pdlKilde, doedsdato), Opplysningsgrunnlag.ny(TrygdetidOpplysningType.FYLT_16, regelKilde, seksten), Opplysningsgrunnlag.ny(TrygdetidOpplysningType.FYLLER_66, regelKilde, seksti), ) -} fun trygdetidGrunnlag( beregnetTrygdetidGrunnlag: BeregnetTrygdetidGrunnlag? = beregnetTrygdetidGrunnlag(), diff --git a/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidRepositoryTest.kt b/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidRepositoryTest.kt index 3238cf986fa..c99569da13e 100644 --- a/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidRepositoryTest.kt +++ b/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidRepositoryTest.kt @@ -18,7 +18,9 @@ import java.util.UUID.randomUUID import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) -internal class TrygdetidRepositoryTest(dataSource: DataSource) { +internal class TrygdetidRepositoryTest( + dataSource: DataSource, +) { companion object { @RegisterExtension val dbExtension = DatabaseExtension() diff --git a/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidServiceIntegrationTest.kt b/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidServiceIntegrationTest.kt index 3b81e7cec61..bfe84e63be2 100644 --- a/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidServiceIntegrationTest.kt +++ b/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidServiceIntegrationTest.kt @@ -33,7 +33,9 @@ import java.util.UUID import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) -internal class TrygdetidServiceIntegrationTest(dataSource: DataSource) { +internal class TrygdetidServiceIntegrationTest( + dataSource: DataSource, +) { companion object { @RegisterExtension val dbExtension = DatabaseExtension() @@ -70,7 +72,11 @@ internal class TrygdetidServiceIntegrationTest(dataSource: DataSource) { val behandlingId = UUID.randomUUID() val grunnlagTestData = GrunnlagTestData() - val nyDoedsdato = grunnlagTestData.avdoede.first().doedsdato!!.plusDays(6) + val nyDoedsdato = + grunnlagTestData.avdoede + .first() + .doedsdato!! + .plusDays(6) coEvery { grunnlagKlient.hentGrunnlag(any(), any()) } returns grunnlagMedNyDoedsdato(nyDoedsdato) @@ -94,8 +100,16 @@ internal class TrygdetidServiceIntegrationTest(dataSource: DataSource) { with(oppdaterteGrunnlagsopplysninger) { toLocalDate(avdoedFoedselsdato) shouldBe grunnlagTestData.avdoede.first().foedselsdato toLocalDate(avdoedDoedsdato) shouldBe nyDoedsdato - toLocalDate(avdoedFylteSeksten) shouldBe grunnlagTestData.avdoede.first().foedselsdato!!.plusYears(16) - toLocalDate(avdoedFyllerSeksti) shouldBe grunnlagTestData.avdoede.first().foedselsdato!!.plusYears(66) + toLocalDate(avdoedFylteSeksten) shouldBe + grunnlagTestData.avdoede + .first() + .foedselsdato!! + .plusYears(16) + toLocalDate(avdoedFyllerSeksti) shouldBe + grunnlagTestData.avdoede + .first() + .foedselsdato!! + .plusYears(66) } } } @@ -127,8 +141,16 @@ internal class TrygdetidServiceIntegrationTest(dataSource: DataSource) { with(oppdaterteGrunnlagsopplysninger) { toLocalDate(avdoedFoedselsdato) shouldBe grunnlagTestData.avdoede.first().foedselsdato toLocalDate(avdoedDoedsdato) shouldBe grunnlagTestData.avdoede.first().doedsdato - toLocalDate(avdoedFylteSeksten) shouldBe grunnlagTestData.avdoede.first().foedselsdato!!.plusYears(16) - toLocalDate(avdoedFyllerSeksti) shouldBe grunnlagTestData.avdoede.first().foedselsdato!!.plusYears(66) + toLocalDate(avdoedFylteSeksten) shouldBe + grunnlagTestData.avdoede + .first() + .foedselsdato!! + .plusYears(16) + toLocalDate(avdoedFyllerSeksti) shouldBe + grunnlagTestData.avdoede + .first() + .foedselsdato!! + .plusYears(66) } } } @@ -191,8 +213,16 @@ internal class TrygdetidServiceIntegrationTest(dataSource: DataSource) { private fun opplysningsgrunnlag(grunnlagTestData: GrunnlagTestData): List { val foedselsdato = grunnlagTestData.avdoede.first().foedselsdato!! val doedsdato = grunnlagTestData.avdoede.first().doedsdato!! - val seksten = grunnlagTestData.avdoede.first().foedselsdato!!.plusYears(16) - val sekstiseks = grunnlagTestData.avdoede.first().foedselsdato!!.plusYears(66) + val seksten = + grunnlagTestData.avdoede + .first() + .foedselsdato!! + .plusYears(16) + val sekstiseks = + grunnlagTestData.avdoede + .first() + .foedselsdato!! + .plusYears(66) return listOf( Opplysningsgrunnlag.ny(TrygdetidOpplysningType.FOEDSELSDATO, pdlKilde, foedselsdato), Opplysningsgrunnlag.ny(TrygdetidOpplysningType.DOEDSDATO, pdlKilde, doedsdato), diff --git a/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidServiceTest.kt b/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidServiceTest.kt index a7a9a0d5d42..6efd5c3686e 100644 --- a/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidServiceTest.kt +++ b/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidServiceTest.kt @@ -116,9 +116,24 @@ internal class TrygdetidServiceTest { } val grunnlag = GrunnlagTestData().hentOpplysningsgrunnlag() - val forventetFoedselsdato = grunnlag.hentAvdoede().first().hentFoedselsdato()!!.verdi - val forventetDoedsdato = grunnlag.hentAvdoede().first().hentDoedsdato()!!.verdi - val forventetIdent = grunnlag.hentAvdoede().first().hentFoedselsnummer()!!.verdi + val forventetFoedselsdato = + grunnlag + .hentAvdoede() + .first() + .hentFoedselsdato()!! + .verdi + val forventetDoedsdato = + grunnlag + .hentAvdoede() + .first() + .hentDoedsdato()!! + .verdi + val forventetIdent = + grunnlag + .hentAvdoede() + .first() + .hentFoedselsnummer()!! + .verdi val trygdetid = trygdetid(behandlingId, sakId, ident = forventetIdent.value) every { repository.hentTrygdetiderForBehandling(any()) } returns emptyList() andThen listOf(trygdetid) @@ -270,7 +285,12 @@ internal class TrygdetidServiceTest { } val forrigeBehandlingId = randomUUID() val grunnlag = GrunnlagTestData().hentOpplysningsgrunnlag() - val forventetIdent = grunnlag.hentAvdoede().first().hentFoedselsnummer()!!.verdi + val forventetIdent = + grunnlag + .hentAvdoede() + .first() + .hentFoedselsnummer()!! + .verdi val trygdetid = trygdetid(behandlingId, sakId, ident = forventetIdent.value) coEvery { grunnlagKlient.hentGrunnlag(any(), any()) } returns grunnlag @@ -389,7 +409,12 @@ internal class TrygdetidServiceTest { } val forrigeBehandlingId = randomUUID() val grunnlag = GrunnlagTestData().hentOpplysningsgrunnlag() - val forventetIdent = grunnlag.hentAvdoede().first().hentFoedselsnummer()!!.verdi + val forventetIdent = + grunnlag + .hentAvdoede() + .first() + .hentFoedselsnummer()!! + .verdi val trygdetid = trygdetid(behandlingId, sakId, ident = forventetIdent.value) coEvery { grunnlagKlient.hentGrunnlag(any(), any()) } returns grunnlag @@ -992,7 +1017,12 @@ internal class TrygdetidServiceTest { val behandling = behandling(behandlingId) val grunnlag = GrunnlagTestData().hentOpplysningsgrunnlag() - val forventetIdent = grunnlag.hentAvdoede().first().hentFoedselsnummer()!!.verdi + val forventetIdent = + grunnlag + .hentAvdoede() + .first() + .hentFoedselsnummer()!! + .verdi val beregnetTrygdetid = DetaljertBeregnetTrygdetid( @@ -1081,7 +1111,12 @@ internal class TrygdetidServiceTest { val behandling = behandling(behandlingId) val grunnlag = GrunnlagTestData().hentOpplysningsgrunnlag() - val forventetIdent = grunnlag.hentAvdoede().first().hentFoedselsnummer()!!.verdi + val forventetIdent = + grunnlag + .hentAvdoede() + .first() + .hentFoedselsnummer()!! + .verdi val beregnetTrygdetid = DetaljertBeregnetTrygdetid( @@ -1243,9 +1278,24 @@ internal class TrygdetidServiceTest { } val grunnlag = GrunnlagTestData(opplysningsmapAvdoedOverrides = eldreAvdoedTestopplysningerMap).hentOpplysningsgrunnlag() - val forventetFoedselsdato = grunnlag.hentAvdoede().first().hentFoedselsdato()!!.verdi - val forventetDoedsdato = grunnlag.hentAvdoede().first().hentDoedsdato()!!.verdi - val forventetIdent = grunnlag.hentAvdoede().first().hentFoedselsnummer()!!.verdi + val forventetFoedselsdato = + grunnlag + .hentAvdoede() + .first() + .hentFoedselsdato()!! + .verdi + val forventetDoedsdato = + grunnlag + .hentAvdoede() + .first() + .hentDoedsdato()!! + .verdi + val forventetIdent = + grunnlag + .hentAvdoede() + .first() + .hentFoedselsnummer()!! + .verdi val trygdetid = trygdetid(behandlingId, sakId, ident = forventetIdent.value) every { repository.hentTrygdetiderForBehandling(any()) } returns emptyList() andThen listOf(trygdetid) diff --git a/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/avtale/AvtaleRepositoryTest.kt b/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/avtale/AvtaleRepositoryTest.kt index c4c35990c0b..eeb10842482 100644 --- a/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/avtale/AvtaleRepositoryTest.kt +++ b/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/avtale/AvtaleRepositoryTest.kt @@ -15,7 +15,9 @@ import java.util.UUID.randomUUID import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) -internal class AvtaleRepositoryTest(dataSource: DataSource) { +internal class AvtaleRepositoryTest( + dataSource: DataSource, +) { companion object { @RegisterExtension val dbExtension = DatabaseExtension() diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/BehandlingKlient.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/BehandlingKlient.kt index 4f6c6ea8063..4366465ff35 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/BehandlingKlient.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/BehandlingKlient.kt @@ -7,7 +7,10 @@ import no.nav.etterlatte.libs.ktor.route.Tilgangssjekker import no.nav.etterlatte.libs.ktor.token.Saksbehandler import java.util.UUID -class BehandlingKlient(config: Config, httpClient: HttpClient) : BehandlingTilgangsSjekk { +class BehandlingKlient( + config: Config, + httpClient: HttpClient, +) : BehandlingTilgangsSjekk { private val tilgangssjekker = Tilgangssjekker(config, httpClient) override suspend fun harTilgangTilBehandling( diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/VedtaksvurderingKlient.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/VedtaksvurderingKlient.kt index 856a856c565..633a3c283a0 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/VedtaksvurderingKlient.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/VedtaksvurderingKlient.kt @@ -14,7 +14,10 @@ import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo import org.slf4j.LoggerFactory import java.util.UUID -class VedtaksvurderingKlient(config: Config, httpClient: HttpClient) { +class VedtaksvurderingKlient( + config: Config, + httpClient: HttpClient, +) { private val logger = LoggerFactory.getLogger(VedtaksvurderingKlient::class.java) private val azureAdClient = AzureAdClient(config) @@ -30,14 +33,15 @@ class VedtaksvurderingKlient(config: Config, httpClient: HttpClient) { try { logger.info("Henter vedtak for behandlingId=$behandlingId") - return downstreamResourceClient.post( - Resource(clientId, "$resourceUrl/api/vedtak/$behandlingId/simulering"), - brukerTokenInfo, - {}, - ).mapBoth( - success = { resource -> deserialize(resource.response.toString()) }, - failure = { errorResponse -> throw errorResponse }, - ) + return downstreamResourceClient + .post( + Resource(clientId, "$resourceUrl/api/vedtak/$behandlingId/simulering"), + brukerTokenInfo, + {}, + ).mapBoth( + success = { resource -> deserialize(resource.response.toString()) }, + failure = { errorResponse -> throw errorResponse }, + ) } catch (re: ResponseException) { logger.error("Ukjent feil ved henting av vedtak for behandling=$behandlingId", re) diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/AvstemmingDao.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/AvstemmingDao.kt index 931e063b29c..0bb9c5f93aa 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/AvstemmingDao.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/AvstemmingDao.kt @@ -12,7 +12,9 @@ import no.nav.etterlatte.libs.database.tidspunkt import no.nav.etterlatte.utbetaling.iverksetting.utbetaling.Saktype import javax.sql.DataSource -class AvstemmingDao(private val dataSource: DataSource) { +class AvstemmingDao( + private val dataSource: DataSource, +) { fun opprettKonsistensavstemming(konsistensavstemming: Konsistensavstemming): Int = using(sessionOf(dataSource)) { session -> queryOf( @@ -72,8 +74,14 @@ class AvstemmingDao(private val dataSource: DataSource) { mapOf( "id" to grensesnittavstemming.id.value.param(), "opprettet" to grensesnittavstemming.opprettet.toTimestamp().param(), - "periode_fra" to grensesnittavstemming.periode.fraOgMed.toTimestamp().param(), - "periode_til" to grensesnittavstemming.periode.til.toTimestamp().param(), + "periode_fra" to + grensesnittavstemming.periode.fraOgMed + .toTimestamp() + .param(), + "periode_til" to + grensesnittavstemming.periode.til + .toTimestamp() + .param(), "antall_oppdrag" to grensesnittavstemming.antallOppdrag.param(), "avstemmingsdata" to grensesnittavstemming.avstemmingsdata.param(), "avstemmingtype" to Avstemmingtype.GRENSESNITTAVSTEMMING.name.param(), diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/Grensesnittavstemming.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/Grensesnittavstemming.kt index d3c82f9e59d..0d7c4c1b5a3 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/Grensesnittavstemming.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/Grensesnittavstemming.kt @@ -6,7 +6,9 @@ import java.nio.ByteBuffer import java.util.Base64 import java.util.UUID -data class UUIDBase64(val value: String = encodeUUIDBase64(UUID.randomUUID())) { +data class UUIDBase64( + val value: String = encodeUUIDBase64(UUID.randomUUID()), +) { companion object { private fun encodeUUIDBase64(uuid: UUID): String { val bb = ByteBuffer.wrap(ByteArray(16)) diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/KonsistensavstemmingService.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/KonsistensavstemmingService.kt index db8a18bf451..d413eec0827 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/KonsistensavstemmingService.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/KonsistensavstemmingService.kt @@ -82,33 +82,38 @@ class KonsistensavstemmingService( relevanteUtbetalinger .filter { it.opprettet <= registrertFoerTom } // 1 .groupBy { it.sakId } // 2 - .mapValues { entry -> // 3 - entry.value.map { utbetaling -> - UtbetalingslinjerPerSak( - sakId = 0, - saktype = saktype, - fnr = utbetaling.stoenadsmottaker.value, - utbetalingslinjer = utbetaling.utbetalingslinjer, - utbetalingslinjerTilAttestanter = - utbetaling.utbetalingslinjer.map { it.id } - .associateWith { listOf(utbetaling.attestant) }, - ) - }.reduce { acc, next -> - acc.copy( - utbetalingslinjer = acc.utbetalingslinjer + next.utbetalingslinjer, - utbetalingslinjerTilAttestanter = - acc.utbetalingslinjerTilAttestanter + - next.utbetalingslinjerTilAttestanter, - ) - } + .mapValues { entry -> + // 3 + entry.value + .map { utbetaling -> + UtbetalingslinjerPerSak( + sakId = 0, + saktype = saktype, + fnr = utbetaling.stoenadsmottaker.value, + utbetalingslinjer = utbetaling.utbetalingslinjer, + utbetalingslinjerTilAttestanter = + utbetaling.utbetalingslinjer + .map { it.id } + .associateWith { listOf(utbetaling.attestant) }, + ) + }.reduce { acc, next -> + acc.copy( + utbetalingslinjer = acc.utbetalingslinjer + next.utbetalingslinjer, + utbetalingslinjerTilAttestanter = + acc.utbetalingslinjerTilAttestanter + + next.utbetalingslinjerTilAttestanter, + ) + } } // 3 - .mapValues { entry -> // 4 + .mapValues { entry -> + // 4 val gjeldendeForKonsistensavstemming = gjeldendeLinjerForEnDato(entry.value.utbetalingslinjer, dag) entry.value.copy( utbetalingslinjer = gjeldendeForKonsistensavstemming, ) } // 4 - .mapNotNull { (sakid, utbetalingslinjerPerSak) -> // 5 + .mapNotNull { (sakid, utbetalingslinjerPerSak) -> + // 5 when (utbetalingslinjerPerSak.utbetalingslinjer.size) { 0 -> null else -> @@ -208,20 +213,22 @@ fun gjeldendeLinjerForEnDato( linjerSomErOpprettetOgIkkeAvsluttetPaaDato .associateBy { it.erstatterId } - return linjerSomErOpprettetOgIkkeAvsluttetPaaDato.filter { utbetalingslinje -> // 3 - var tidligsteStartForEnErstatter: LocalDate? = null - var naavaerendeLinje = utbetalingIdTilErstattendeUtbetalingMap[utbetalingslinje.id] - - while (naavaerendeLinje != null) { - tidligsteStartForEnErstatter = - listOfNotNull(tidligsteStartForEnErstatter, naavaerendeLinje.periode.fra).min() - naavaerendeLinje = utbetalingIdTilErstattendeUtbetalingMap[naavaerendeLinje.id] - } - if (tidligsteStartForEnErstatter == null) { - return@filter true - } - return@filter tidligsteStartForEnErstatter > dato - }.filter { it.type != Utbetalingslinjetype.OPPHOER } // 4 + return linjerSomErOpprettetOgIkkeAvsluttetPaaDato + .filter { utbetalingslinje -> + // 3 + var tidligsteStartForEnErstatter: LocalDate? = null + var naavaerendeLinje = utbetalingIdTilErstattendeUtbetalingMap[utbetalingslinje.id] + + while (naavaerendeLinje != null) { + tidligsteStartForEnErstatter = + listOfNotNull(tidligsteStartForEnErstatter, naavaerendeLinje.periode.fra).min() + naavaerendeLinje = utbetalingIdTilErstattendeUtbetalingMap[naavaerendeLinje.id] + } + if (tidligsteStartForEnErstatter == null) { + return@filter true + } + return@filter tidligsteStartForEnErstatter > dato + }.filter { it.type != Utbetalingslinjetype.OPPHOER } // 4 } data class UtbetalingslinjerPerSak( diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/AvstemmingsdataJaxb.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/AvstemmingsdataJaxb.kt index 4abf05ede77..f03bbf578df 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/AvstemmingsdataJaxb.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/AvstemmingsdataJaxb.kt @@ -13,12 +13,14 @@ object GrensesnittavstemmingsdataJaxb { fun toXml(avstemmingsdata: Avstemmingsdata): String { val stringWriter = StringWriter() - jaxbContext.createMarshaller().apply { - setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true) - }.marshal( - JAXBElement(QName("", "Avstemmingsdata"), Avstemmingsdata::class.java, avstemmingsdata), - stringWriter, - ) + jaxbContext + .createMarshaller() + .apply { + setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true) + }.marshal( + JAXBElement(QName("", "Avstemmingsdata"), Avstemmingsdata::class.java, avstemmingsdata), + stringWriter, + ) return stringWriter.toString() } } @@ -28,12 +30,14 @@ object KonsistensavstemmingsdataJaxb { fun toXml(avstemmingsdata: Konsistensavstemmingsdata): String { val stringWriter = StringWriter() - jaxbContext.createMarshaller().apply { - setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true) - }.marshal( - JAXBElement(QName("", "Konsistensavstemmingsdata"), Konsistensavstemmingsdata::class.java, avstemmingsdata), - stringWriter, - ) + jaxbContext + .createMarshaller() + .apply { + setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true) + }.marshal( + JAXBElement(QName("", "Konsistensavstemmingsdata"), Konsistensavstemmingsdata::class.java, avstemmingsdata), + stringWriter, + ) return stringWriter.toString() } } diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/GrensesnittavstemmingDataMapper.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/GrensesnittavstemmingDataMapper.kt index 4a1c5267626..596278bcc9c 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/GrensesnittavstemmingDataMapper.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/GrensesnittavstemmingDataMapper.kt @@ -75,13 +75,12 @@ class GrensesnittavstemmingDataMapper( } } - private fun avstemmingsdataLister(saktype: Saktype): List { - return detaljdata(utbetalinger).chunked(detaljerPrMelding).map { + private fun avstemmingsdataLister(saktype: Saktype): List = + detaljdata(utbetalinger).chunked(detaljerPrMelding).map { avstemmingsdata(AksjonType.DATA, saktype).apply { this.detalj.addAll(it) } } - } private fun detaljdata(utbetaling: List): List = utbetaling.mapNotNull { @@ -150,9 +149,7 @@ class GrensesnittavstemmingDataMapper( .reduce(BigDecimal::add) } ?: BigDecimal.ZERO - private fun getFortegn(belop: BigDecimal): Fortegn { - return if (belop >= BigDecimal.ZERO) Fortegn.T else Fortegn.F - } + private fun getFortegn(belop: BigDecimal): Fortegn = if (belop >= BigDecimal.ZERO) Fortegn.T else Fortegn.F private fun totaldata() = Totaldata().apply { @@ -167,8 +164,8 @@ class GrensesnittavstemmingDataMapper( datoAvstemtTom = periodeTil.toNorskTid().minusHours(1).format(tidsstempelTimeOppdrag) } - private fun periode(liste: List): ClosedRange? { - return if (liste.isEmpty()) { + private fun periode(liste: List): ClosedRange? = + if (liste.isEmpty()) { null } else { object : ClosedRange { @@ -176,5 +173,4 @@ class GrensesnittavstemmingDataMapper( override val endInclusive = liste.maxOf { it.avstemmingsnoekkel } } } - } } diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/KonsistensavstemmingDataMapper.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/KonsistensavstemmingDataMapper.kt index 81c7851c1d7..88accce5bec 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/KonsistensavstemmingDataMapper.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/KonsistensavstemmingDataMapper.kt @@ -37,8 +37,8 @@ internal class KonsistensavstemmingDataMapper( aksjonsdata = avstemmingsdata(KodeAksjon.AVSL, saktype) } - private fun datameldinger(saktype: Saktype): List { - return avstemming.loependeUtbetalinger + private fun datameldinger(saktype: Saktype): List = + avstemming.loependeUtbetalinger .chunked(detaljerPrMelding) .map { Konsistensavstemmingsdata().apply { @@ -52,7 +52,6 @@ internal class KonsistensavstemmingDataMapper( }, ) }.leggPaaTotaldata() - } private fun List.leggPaaTotaldata() = this.also { @@ -93,8 +92,8 @@ internal class KonsistensavstemmingDataMapper( } } -internal fun OppdragForKonsistensavstemming.toOppdragdata(): Oppdragsdata { - return Oppdragsdata().apply { +internal fun OppdragForKonsistensavstemming.toOppdragdata(): Oppdragsdata = + Oppdragsdata().apply { fagomradeKode = when (sakType) { Saktype.BARNEPENSJON -> "BARNEPE" @@ -140,7 +139,6 @@ internal fun OppdragForKonsistensavstemming.toOppdragdata(): Oppdragsdata { }, ) } -} enum class KodeAksjon { START, diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/common/Utils.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/common/Utils.kt index 4f905e4282a..52ab2d7c3da 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/common/Utils.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/common/Utils.kt @@ -44,17 +44,25 @@ fun forsteDagIMaaneden(yearMonth: YearMonth) = yearMonth.atDay(1) fun sisteDagIMaaneden(yearMonth: YearMonth) = yearMonth.atEndOfMonth() -fun LocalDate.toXMLDate(): XMLGregorianCalendar { - return DatatypeFactory.newInstance().newXMLGregorianCalendar( - LocalDateTime.of(this, LocalTime.MIDNIGHT).format(tidsstempleMilliOppdrag), - ).apply { - timezone = DatatypeConstants.FIELD_UNDEFINED - } -} - -fun UUID.toUUID30() = this.toString().replace("-", "").substring(0, 30).let { UUID30(it) } - -data class UUID30(val value: String) +fun LocalDate.toXMLDate(): XMLGregorianCalendar = + DatatypeFactory + .newInstance() + .newXMLGregorianCalendar( + LocalDateTime.of(this, LocalTime.MIDNIGHT).format(tidsstempleMilliOppdrag), + ).apply { + timezone = DatatypeConstants.FIELD_UNDEFINED + } + +fun UUID.toUUID30() = + this + .toString() + .replace("-", "") + .substring(0, 30) + .let { UUID30(it) } + +data class UUID30( + val value: String, +) const val ANTALL_DETALJER_PER_AVSTEMMINGMELDING_OPPDRAG = 30 diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/config/ApplicationContext.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/config/ApplicationContext.kt index 7a32d3ee442..93f4667a1ce 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/config/ApplicationContext.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/config/ApplicationContext.kt @@ -191,15 +191,14 @@ class ApplicationContext( ) val rapidsConnection = - rapidConnection ?: RapidApplication.Builder( - RapidApplication.RapidApplicationConfig.fromEnv(env, configFromEnvironment(env)), - ) - .withKtorModule { + rapidConnection ?: RapidApplication + .Builder( + RapidApplication.RapidApplicationConfig.fromEnv(env, configFromEnvironment(env)), + ).withKtorModule { restModule(sikkerLogg, config = HoconApplicationConfig(config)) { utbetalingRoutes(simuleringOsService, behandlingKlient) } - } - .build() + }.build() val oppgavetriggerRiver by lazy { OppgavetriggerRiver( diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/KvitteringMottaker.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/KvitteringMottaker.kt index 09660f1a17d..c426fc430a0 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/KvitteringMottaker.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/KvitteringMottaker.kt @@ -191,12 +191,12 @@ class KvitteringMottaker( return utbetalingResponse } - private fun UtbetalingEventDto.toMessage(): String { - return JsonMessage.newMessage( - mapOf( - UtbetalinghendelseType.OPPDATERT.lagParMedEventNameKey(), - UTBETALING_RESPONSE to this.utbetalingResponse.toMessage(), - ), - ).toJson() - } + private fun UtbetalingEventDto.toMessage(): String = + JsonMessage + .newMessage( + mapOf( + UtbetalinghendelseType.OPPDATERT.lagParMedEventNameKey(), + UTBETALING_RESPONSE to this.utbetalingResponse.toMessage(), + ), + ).toJson() } diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/VedtakMottakRiver.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/VedtakMottakRiver.kt index 7837c8e60a3..ff950d47a7c 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/VedtakMottakRiver.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/VedtakMottakRiver.kt @@ -25,7 +25,9 @@ import no.nav.helse.rapids_rivers.RapidsConnection import org.slf4j.LoggerFactory import java.util.UUID -data class KunneIkkeLeseVedtakException(val e: Exception) : RuntimeException(e) +data class KunneIkkeLeseVedtakException( + val e: Exception, +) : RuntimeException(e) class VedtakMottakRiver( rapidsConnection: RapidsConnection, @@ -124,9 +126,7 @@ class VedtakMottakRiver( throw KunneIkkeLeseVedtakException(e) } - private fun feilSkalKastesVidere(e: Exception): Boolean { - return e !is KunneIkkeLeseVedtakException - } + private fun feilSkalKastesVidere(e: Exception): Boolean = e !is KunneIkkeLeseVedtakException private fun sendUtbetalingFeiletEvent( context: MessageContext, diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/oppdrag/OppdragMapper.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/oppdrag/OppdragMapper.kt index b73ef8f6fb2..d64cdbaf644 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/oppdrag/OppdragMapper.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/oppdrag/OppdragMapper.kt @@ -55,7 +55,10 @@ object OppdragMapper { ) if (erGRegulering) { - val fraOgMed = utbetaling.utbetalingslinjer.first().periode.fra + val fraOgMed = + utbetaling.utbetalingslinjer + .first() + .periode.fra listOf( // Ta høyde for maks lengde på 40 chars @@ -128,6 +131,10 @@ fun Saktype.tilKodeklassifikasjon(): String = Saktype.OMSTILLINGSSTOENAD -> OppdragKlassifikasjonskode.OMSTILLINGSTOENAD_OPTP.toString() } -fun Oppdrag.vedtakId() = oppdrag110.oppdragsLinje150.first().vedtakId.toLong() +fun Oppdrag.vedtakId() = + oppdrag110.oppdragsLinje150 + .first() + .vedtakId + .toLong() fun Oppdrag.sakId() = oppdrag110.fagsystemId diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/oppdrag/OppdragSender.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/oppdrag/OppdragSender.kt index 8bd69a28067..e8a9c2fcc79 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/oppdrag/OppdragSender.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/oppdrag/OppdragSender.kt @@ -21,12 +21,13 @@ class OppdragSender( ) val xml = OppdragJaxb.toXml(oppdrag) - jmsConnectionFactory.sendMedSvar( - xml = xml, - queue = queue, - replyQueue = replyQueue, - prioritet = prioritet, - ).also { logger.info("Utbetaling overført til oppdrag") } + jmsConnectionFactory + .sendMedSvar( + xml = xml, + queue = queue, + replyQueue = replyQueue, + prioritet = prioritet, + ).also { logger.info("Utbetaling overført til oppdrag") } return xml } diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/Utbetaling.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/Utbetaling.kt index acbc39b9a42..3b901650517 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/Utbetaling.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/Utbetaling.kt @@ -7,17 +7,30 @@ import java.math.BigDecimal import java.time.LocalDate import java.util.UUID -data class VedtakId(val value: Long) +data class VedtakId( + val value: Long, +) -data class SakId(val value: Long) +data class SakId( + val value: Long, +) -data class BehandlingId(val value: UUID, val shortValue: UUID30) +data class BehandlingId( + val value: UUID, + val shortValue: UUID30, +) -data class UtbetalingslinjeId(val value: Long) +data class UtbetalingslinjeId( + val value: Long, +) -data class Foedselsnummer(val value: String) +data class Foedselsnummer( + val value: String, +) -data class NavIdent(val value: String) +data class NavIdent( + val value: String, +) enum class UtbetalingStatus { GODKJENT, @@ -103,7 +116,9 @@ data class UtbetalingForKonsistensavstemming( val utbetalingshendelser: List, ) -enum class Kjoereplan(private val oppdragVerdi: String) { +enum class Kjoereplan( + private val oppdragVerdi: String, +) { // ref. https://confluence.adeo.no/display/OKSY/Inputdata+fra+fagrutinen+til+Oppdragssystemet: // "Bruk-kjoreplan gjør det mulig å velge om delytelsen skal beregnes/utbetales i henhold til kjøreplanen eller om // dette skal skje idag. Verdien 'N' medfører at beregningen kjøres idag. Beregningen vil bare gjelde @@ -112,9 +127,7 @@ enum class Kjoereplan(private val oppdragVerdi: String) { MED_EN_GANG("N"), ; - override fun toString(): String { - return oppdragVerdi - } + override fun toString(): String = oppdragVerdi companion object { fun fraKode(kode: String): Kjoereplan = @@ -126,14 +139,14 @@ enum class Kjoereplan(private val oppdragVerdi: String) { } } -enum class OppdragKlassifikasjonskode(private val oppdragVerdi: String) { +enum class OppdragKlassifikasjonskode( + private val oppdragVerdi: String, +) { BARNEPENSJON_OPTP("BARNEPENSJON-OPTP"), OMSTILLINGSTOENAD_OPTP("OMSTILLINGOR"), ; - override fun toString(): String { - return oppdragVerdi - } + override fun toString(): String = oppdragVerdi companion object { fun fraString(string: String): OppdragKlassifikasjonskode = diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingDao.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingDao.kt index e7c5b4b43a7..9786e2a52c9 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingDao.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingDao.kt @@ -21,15 +21,20 @@ import org.slf4j.LoggerFactory import java.util.UUID import javax.sql.DataSource -data class UtbetalingNotFoundException(override val message: String) : RuntimeException(message) +data class UtbetalingNotFoundException( + override val message: String, +) : RuntimeException(message) -class UtbetalingDao(private val dataSource: DataSource) { +class UtbetalingDao( + private val dataSource: DataSource, +) { fun opprettUtbetaling(utbetaling: Utbetaling) = - dataSource.transaction { tx -> - logger.info("Oppretter utbetaling for vedtakId=${utbetaling.vedtakId.value}") + dataSource + .transaction { tx -> + logger.info("Oppretter utbetaling for vedtakId=${utbetaling.vedtakId.value}") - queryOf( - statement = """ + queryOf( + statement = """ INSERT INTO utbetaling(id, vedtak_id, behandling_id, behandling_id_til_oppdrag, sak_id, oppdrag, vedtak, opprettet, avstemmingsnoekkel, endret, stoenadsmottaker, saksbehandler, saksbehandler_enhet, attestant, attestant_enhet, saktype) @@ -37,37 +42,39 @@ class UtbetalingDao(private val dataSource: DataSource) { :vedtak, :opprettet, :avstemmingsnoekkel, :endret, :stoenadsmottaker, :saksbehandler, :saksbehandlerEnhet, :attestant, :attestantEnhet, :saktype) """, - paramMap = - mapOf( - "id" to utbetaling.id.param(), - "vedtakId" to utbetaling.vedtakId.value.param(), - "behandlingId" to utbetaling.behandlingId.value.param(), - "behandlingIdTilOppdrag" to utbetaling.behandlingId.shortValue.value.param(), - "sakId" to utbetaling.sakId.value.param(), - "vedtak" to utbetaling.vedtak.toJson().param(), - "opprettet" to utbetaling.opprettet.toTimestamp().param(), - "avstemmingsnoekkel" to utbetaling.avstemmingsnoekkel.toTimestamp().param(), - "endret" to utbetaling.endret.toTimestamp().param(), - "stoenadsmottaker" to utbetaling.stoenadsmottaker.value.param(), - "saksbehandler" to utbetaling.saksbehandler.value.param(), - "saksbehandlerEnhet" to utbetaling.saksbehandlerEnhet.param(), - "attestant" to utbetaling.attestant.value.param(), - "attestantEnhet" to utbetaling.attestantEnhet.param(), - "oppdrag" to utbetaling.oppdrag?.let { o -> OppdragJaxb.toXml(o) }.param(), - "saktype" to utbetaling.sakType.name.param(), - ), - ).let { tx.run(it.asUpdate) } + paramMap = + mapOf( + "id" to utbetaling.id.param(), + "vedtakId" to utbetaling.vedtakId.value.param(), + "behandlingId" to utbetaling.behandlingId.value.param(), + "behandlingIdTilOppdrag" to + utbetaling.behandlingId.shortValue.value + .param(), + "sakId" to utbetaling.sakId.value.param(), + "vedtak" to utbetaling.vedtak.toJson().param(), + "opprettet" to utbetaling.opprettet.toTimestamp().param(), + "avstemmingsnoekkel" to utbetaling.avstemmingsnoekkel.toTimestamp().param(), + "endret" to utbetaling.endret.toTimestamp().param(), + "stoenadsmottaker" to utbetaling.stoenadsmottaker.value.param(), + "saksbehandler" to utbetaling.saksbehandler.value.param(), + "saksbehandlerEnhet" to utbetaling.saksbehandlerEnhet.param(), + "attestant" to utbetaling.attestant.value.param(), + "attestantEnhet" to utbetaling.attestantEnhet.param(), + "oppdrag" to utbetaling.oppdrag?.let { o -> OppdragJaxb.toXml(o) }.param(), + "saktype" to utbetaling.sakType.name.param(), + ), + ).let { tx.run(it.asUpdate) } - utbetaling.utbetalingslinjer.forEach { utbetalingslinje -> - opprettUtbetalingslinje(utbetalingslinje, tx) - } - utbetaling.utbetalingshendelser.forEach { utbetalingshendelse -> - opprettUtbetalingshendelse( - utbetalingshendelse, - tx, - ) - } - }.let { hentUtbetalingNonNull(utbetaling.vedtakId.value) } + utbetaling.utbetalingslinjer.forEach { utbetalingslinje -> + opprettUtbetalingslinje(utbetalingslinje, tx) + } + utbetaling.utbetalingshendelser.forEach { utbetalingshendelse -> + opprettUtbetalingshendelse( + utbetalingshendelse, + tx, + ) + } + }.let { hentUtbetalingNonNull(utbetaling.vedtakId.value) } private fun opprettUtbetalingslinje( utbetalingslinje: Utbetalingslinje, @@ -101,11 +108,12 @@ class UtbetalingDao(private val dataSource: DataSource) { vedtakId: Long, utbetalingshendelse: Utbetalingshendelse, ): Utbetaling = - dataSource.transaction { tx -> - opprettUtbetalingshendelse(utbetalingshendelse, tx) - }.let { - hentUtbetalingNonNull(vedtakId = vedtakId) - } + dataSource + .transaction { tx -> + opprettUtbetalingshendelse(utbetalingshendelse, tx) + }.let { + hentUtbetalingNonNull(vedtakId = vedtakId) + } private fun opprettUtbetalingshendelse( utbetalingshendelse: Utbetalingshendelse, @@ -140,11 +148,12 @@ class UtbetalingDao(private val dataSource: DataSource) { paramMap = mapOf("vedtakId" to vedtakId.param()), ).let { session.run( - it.map { row -> - val utbetalingslinjer = hentUtbetalingslinjerForUtbetaling(row.uuid("id")) - val utbetalingshendelser = hentUtbetalingsHendelserForUtbetaling(row.uuid("id")) - toUtbetaling(row, utbetalingslinjer, utbetalingshendelser) - }.asSingle, + it + .map { row -> + val utbetalingslinjer = hentUtbetalingslinjerForUtbetaling(row.uuid("id")) + val utbetalingshendelser = hentUtbetalingsHendelserForUtbetaling(row.uuid("id")) + toUtbetaling(row, utbetalingslinjer, utbetalingshendelser) + }.asSingle, ) } } @@ -233,11 +242,12 @@ class UtbetalingDao(private val dataSource: DataSource) { ), ).let { session.run( - it.map { row -> - val utbetalingslinjer = hentUtbetalingslinjerForUtbetaling(row.uuid("id")) - val utbetalingshendelser = hentUtbetalingsHendelserForUtbetaling(row.uuid("id")) - toUtbetalingKonsistensavstemming(row, utbetalingslinjer, utbetalingshendelser) - }.asList, + it + .map { row -> + val utbetalingslinjer = hentUtbetalingslinjerForUtbetaling(row.uuid("id")) + val utbetalingshendelser = hentUtbetalingsHendelserForUtbetaling(row.uuid("id")) + toUtbetalingKonsistensavstemming(row, utbetalingslinjer, utbetalingshendelser) + }.asList, ) } } @@ -266,11 +276,12 @@ class UtbetalingDao(private val dataSource: DataSource) { ), ).let { session.run( - it.map { row -> - val utbetalingslinjer = hentUtbetalingslinjerForUtbetaling(row.uuid("id")) - val utbetalingshendelser = hentUtbetalingsHendelserForUtbetaling(row.uuid("id")) - toUtbetaling(row, utbetalingslinjer, utbetalingshendelser) - }.asList, + it + .map { row -> + val utbetalingslinjer = hentUtbetalingslinjerForUtbetaling(row.uuid("id")) + val utbetalingshendelser = hentUtbetalingsHendelserForUtbetaling(row.uuid("id")) + toUtbetaling(row, utbetalingslinjer, utbetalingshendelser) + }.asList, ) } } @@ -292,11 +303,12 @@ class UtbetalingDao(private val dataSource: DataSource) { ), ).let { session.run( - it.map { row -> - val utbetalingslinjer = hentUtbetalingslinjerForUtbetaling(row.uuid("id")) - val utbetalingshendelser = hentUtbetalingsHendelserForUtbetaling(row.uuid("id")) - toUtbetaling(row, utbetalingslinjer, utbetalingshendelser) - }.asList, + it + .map { row -> + val utbetalingslinjer = hentUtbetalingslinjerForUtbetaling(row.uuid("id")) + val utbetalingshendelser = hentUtbetalingsHendelserForUtbetaling(row.uuid("id")) + toUtbetaling(row, utbetalingslinjer, utbetalingshendelser) + }.asList, ) } } @@ -305,39 +317,40 @@ class UtbetalingDao(private val dataSource: DataSource) { oppdragMedKvittering: Oppdrag, endret: Tidspunkt, utbetalingId: UUID, - ) = dataSource.transaction { tx -> - logger.info("Oppdaterer kvittering i utbetaling for vedtakId=${oppdragMedKvittering.vedtakId()}") + ) = dataSource + .transaction { tx -> + logger.info("Oppdaterer kvittering i utbetaling for vedtakId=${oppdragMedKvittering.vedtakId()}") - queryOf( - statement = """ + queryOf( + statement = """ UPDATE utbetaling SET kvittering = :kvittering, kvittering_beskrivelse = :beskrivelse, kvittering_alvorlighetsgrad = :alvorlighetsgrad, kvittering_kode = :kode, endret = :endret WHERE vedtak_id = :vedtakId """, - paramMap = - mapOf( - "kvittering" to OppdragJaxb.toXml(oppdragMedKvittering).param(), - "beskrivelse" to oppdragMedKvittering.mmel.beskrMelding.param(), - "alvorlighetsgrad" to oppdragMedKvittering.mmel.alvorlighetsgrad.param(), - "kode" to oppdragMedKvittering.mmel.kodeMelding.param(), - "endret" to endret.toTimestamp().param(), - "vedtakId" to oppdragMedKvittering.vedtakId().param(), - ), - ).let { tx.run(it.asUpdate) } - .also { require(it == 1) { "Kunne ikke oppdatere kvittering i utbetaling" } } + paramMap = + mapOf( + "kvittering" to OppdragJaxb.toXml(oppdragMedKvittering).param(), + "beskrivelse" to oppdragMedKvittering.mmel.beskrMelding.param(), + "alvorlighetsgrad" to oppdragMedKvittering.mmel.alvorlighetsgrad.param(), + "kode" to oppdragMedKvittering.mmel.kodeMelding.param(), + "endret" to endret.toTimestamp().param(), + "vedtakId" to oppdragMedKvittering.vedtakId().param(), + ), + ).let { tx.run(it.asUpdate) } + .also { require(it == 1) { "Kunne ikke oppdatere kvittering i utbetaling" } } - opprettUtbetalingshendelse( - Utbetalingshendelse( - UUID.randomUUID(), - utbetalingId, - endret, - statusFraKvittering(oppdragMedKvittering.mmel.alvorlighetsgrad), - ), - tx, - ) - }.let { hentUtbetalingNonNull(oppdragMedKvittering.vedtakId()) } + opprettUtbetalingshendelse( + Utbetalingshendelse( + UUID.randomUUID(), + utbetalingId, + endret, + statusFraKvittering(oppdragMedKvittering.mmel.alvorlighetsgrad), + ), + tx, + ) + }.let { hentUtbetalingNonNull(oppdragMedKvittering.vedtakId()) } private fun hentUtbetalingNonNull(vedtakId: Long): Utbetaling = hentUtbetaling(vedtakId) diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingMapper.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingMapper.kt index 8d9606f8e72..0ea3e2a42a4 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingMapper.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingMapper.kt @@ -16,7 +16,8 @@ class UtbetalingMapper( private val utbetalingsperioder = vedtak.pensjonTilUtbetaling.sortedBy { it.periode.fom } fun opprettUtbetaling(): Utbetaling { - if (tidligereUtbetalinger.isEmpty() && utbetalingsperioder.size == 1 && + if (tidligereUtbetalinger.isEmpty() && + utbetalingsperioder.size == 1 && utbetalingsperioder.first().type == UtbetalingsperiodeType.OPPHOER ) { throw IngenEksisterendeUtbetalingException() @@ -87,25 +88,28 @@ class UtbetalingMapper( ) } - private fun finnErstatterId(utbetalingslinjeId: Long): UtbetalingslinjeId? { - return if (indeksForUtbetalingslinje(utbetalingslinjeId) == 0) { + private fun finnErstatterId(utbetalingslinjeId: Long): UtbetalingslinjeId? = + if (indeksForUtbetalingslinje(utbetalingslinjeId) == 0) { utbetalingslinjeIdForForrigeUtbetalingslinje() } else { utbetalingslinjeIdForForrigeUtbetalingslinje(utbetalingslinjeId) } - } private fun utbetalingslinjeIdForForrigeUtbetalingslinje(utbetalingslinjeId: Long) = UtbetalingslinjeId(utbetalingsperioder[indeksForUtbetalingslinje(utbetalingslinjeId) - 1].id) private fun utbetalingslinjeIdForForrigeUtbetalingslinje() = - tidligereUtbetalinger.filter { - it.status() in - listOf( - UtbetalingStatus.GODKJENT, - UtbetalingStatus.GODKJENT_MED_FEIL, - ) - }.maxByOrNull { it.opprettet }?.utbetalingslinjer?.last()?.id + tidligereUtbetalinger + .filter { + it.status() in + listOf( + UtbetalingStatus.GODKJENT, + UtbetalingStatus.GODKJENT_MED_FEIL, + ) + }.maxByOrNull { it.opprettet } + ?.utbetalingslinjer + ?.last() + ?.id private fun indeksForUtbetalingslinje(utbetalingslinjeId: Long) = utbetalingsperioder.indexOfFirst { it.id == utbetalingslinjeId } } diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingService.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingService.kt index a1029923831..6c02bb12b94 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingService.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingService.kt @@ -42,19 +42,21 @@ class UtbetalingService( ) val utbetaling = utbetalingMapper.opprettUtbetaling() - oppdragMapper.oppdragFraUtbetaling( - utbetaling = utbetaling, - erFoersteUtbetalingPaaSak = utbetalingMapper.tidligereUtbetalinger.isEmpty(), - erGRegulering = vedtak.behandling.revurderingsaarsak == Revurderingaarsak.REGULERING, - ).also { - utbetalingDao.opprettUtbetaling(utbetaling.copy(oppdrag = it)) - oppdragSender.sendOppdrag(it, vedtak.finnPrioritet()) - }.let { - utbetalingDao.nyUtbetalingshendelse( - utbetaling.vedtakId.value, - utbetaling.sendtUtbetalingshendelse(clock), - ).let { SendtTilOppdrag(it) } - } + oppdragMapper + .oppdragFraUtbetaling( + utbetaling = utbetaling, + erFoersteUtbetalingPaaSak = utbetalingMapper.tidligereUtbetalinger.isEmpty(), + erGRegulering = vedtak.behandling.revurderingsaarsak == Revurderingaarsak.REGULERING, + ).also { + utbetalingDao.opprettUtbetaling(utbetaling.copy(oppdrag = it)) + oppdragSender.sendOppdrag(it, vedtak.finnPrioritet()) + }.let { + utbetalingDao + .nyUtbetalingshendelse( + utbetaling.vedtakId.value, + utbetaling.sendtUtbetalingshendelse(clock), + ).let { SendtTilOppdrag(it) } + } } } } @@ -86,13 +88,14 @@ class UtbetalingService( fun settKvitteringManuelt(vedtakId: Long) = utbetalingDao.hentUtbetaling(vedtakId)?.let { utbetaling -> - utbetaling.oppdrag?.apply { - mmel = - Mmel().apply { - systemId = "231-OPPD" - alvorlighetsgrad = "00" - } - }?.let { oppdrag -> utbetalingDao.oppdaterKvittering(oppdrag, Tidspunkt.now(clock), utbetaling.id) } + utbetaling.oppdrag + ?.apply { + mmel = + Mmel().apply { + systemId = "231-OPPD" + alvorlighetsgrad = "00" + } + }?.let { oppdrag -> utbetalingDao.oppdaterKvittering(oppdrag, Tidspunkt.now(clock), utbetaling.id) } } private fun Utbetaling.sendtUtbetalingshendelse(clock: Clock) = @@ -117,20 +120,31 @@ class UtbetalingService( } sealed class IverksettResultat { - class SendtTilOppdrag(val utbetaling: Utbetaling) : IverksettResultat() + class SendtTilOppdrag( + val utbetaling: Utbetaling, + ) : IverksettResultat() class UtbetalingslinjerForVedtakEksisterer( val utbetaling: Utbetaling?, val utbetalingslinjer: List, ) : IverksettResultat() - class UtbetalingForVedtakEksisterer(val eksisterendeUtbetaling: Utbetaling) : IverksettResultat() + class UtbetalingForVedtakEksisterer( + val eksisterendeUtbetaling: Utbetaling, + ) : IverksettResultat() } sealed class OppdaterKvitteringResultat { - class KvitteringOppdatert(val utbetaling: Utbetaling) : OppdaterKvitteringResultat() - - class UtbetalingFinnesIkke(val vedtakId: Long) : OppdaterKvitteringResultat() - - class UgyldigStatus(val status: UtbetalingStatus, val utbetaling: Utbetaling) : OppdaterKvitteringResultat() + class KvitteringOppdatert( + val utbetaling: Utbetaling, + ) : OppdaterKvitteringResultat() + + class UtbetalingFinnesIkke( + val vedtakId: Long, + ) : OppdaterKvitteringResultat() + + class UgyldigStatus( + val status: UtbetalingStatus, + val utbetaling: Utbetaling, + ) : OppdaterKvitteringResultat() } diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/Utbetalingsvedtak.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/Utbetalingsvedtak.kt index 686f83c89b9..05c44b40e91 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/Utbetalingsvedtak.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/Utbetalingsvedtak.kt @@ -65,18 +65,21 @@ data class Utbetalingsvedtak( } } - fun finnPrioritet(): Prioritet { - return if (SAKSBEHANDLER_ID_SYSTEM_ETTERLATTEYTELSER == vedtakFattet.ansvarligSaksbehandler && + fun finnPrioritet(): Prioritet = + if (SAKSBEHANDLER_ID_SYSTEM_ETTERLATTEYTELSER == vedtakFattet.ansvarligSaksbehandler && behandling.revurderingsaarsak?.equals(Revurderingaarsak.REGULERING) == true ) { Prioritet.LAV } else { Prioritet.NORMAL } - } } -data class Sak(val ident: String, val id: Long, val sakType: Saktype) +data class Sak( + val ident: String, + val id: Long, + val sakType: Saktype, +) enum class Saktype { BARNEPENSJON, diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/simulering/SimuleringOsKlient.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/simulering/SimuleringOsKlient.kt index 28492851d57..115a2bedd69 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/simulering/SimuleringOsKlient.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/simulering/SimuleringOsKlient.kt @@ -28,10 +28,15 @@ private typealias RequestWrapper = no.nav.system.os.tjenester.simulerfpservice.s private typealias ResponseWrapper = no.nav.system.os.tjenester.simulerfpservice.simulerfpservicegrensesnitt.SimulerBeregningResponse fun simuleringObjectMapper(): ObjectMapper = - objectMapper.copy() + objectMapper + .copy() .registerModule(StringTrimModule()) -class SimuleringOsKlient(config: Config, private val client: HttpClient, private val objectMapper: ObjectMapper) { +class SimuleringOsKlient( + config: Config, + private val client: HttpClient, + private val objectMapper: ObjectMapper, +) { private val logger = LoggerFactory.getLogger(this::class.java) private val url = config.getString("etterlatteproxy.url") @@ -62,16 +67,19 @@ class SimuleringOsKlient(config: Config, private val client: HttpClient, private } } -class SimuleringOsKlientException(statusCode: HttpStatusCode, override val message: String) : ForespoerselException( - status = statusCode.value, - code = "SIMULERING_OPPDRAG_FEIL", - detail = message, - meta = - mapOf( - "correlation-id" to getCorrelationId(), - "tidspunkt" to Tidspunkt.now(), - ), -) +class SimuleringOsKlientException( + statusCode: HttpStatusCode, + override val message: String, +) : ForespoerselException( + status = statusCode.value, + code = "SIMULERING_OPPDRAG_FEIL", + detail = message, + meta = + mapOf( + "correlation-id" to getCorrelationId(), + "tidspunkt" to Tidspunkt.now(), + ), + ) internal class StringTrimModule : SimpleModule("string-trim-module") { init { @@ -84,9 +92,7 @@ internal class StringTrimModule : SimpleModule("string-trim-module") { override fun deserialize( jsonParser: JsonParser, ctx: DeserializationContext, - ): String { - return jsonParser.valueAsString.trim { it <= ' ' } - } + ): String = jsonParser.valueAsString.trim { it <= ' ' } }, ) } diff --git a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/simulering/SimuleringOsService.kt b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/simulering/SimuleringOsService.kt index 42f18b2f8a9..8dc56a02e8d 100644 --- a/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/simulering/SimuleringOsService.kt +++ b/apps/etterlatte-utbetaling/src/main/kotlin/no/nav/etterlatte/utbetaling/simulering/SimuleringOsService.kt @@ -76,9 +76,15 @@ class SimuleringOsService( brukerTokenInfo, ) - return simuleringOsKlient.simuler(request).also { - it.infomelding?.beskrMelding?.trim().let { melding -> logger.info(melding) } - }.simulering?.tilSimulertBeregning() + return simuleringOsKlient + .simuler(request) + .also { + it.infomelding + ?.beskrMelding + ?.trim() + .let { melding -> logger.info(melding) } + }.simulering + ?.tilSimulertBeregning() } else { throw IkkeStoettetSimulering(behandlingId) } @@ -103,7 +109,12 @@ class SimuleringOsService( utbetalingsperioder: List, ) = SimulerBeregningRequest.SimuleringsPeriode().apply { datoSimulerFom = vedtakVirkFom.atDay(1).toOppdragDate() - datoSimulerTom = utbetalingsperioder.lastOrNull()?.periode?.til?.toOppdragDate() + datoSimulerTom = + utbetalingsperioder + .lastOrNull() + ?.periode + ?.til + ?.toOppdragDate() } private fun tilOppdrag( @@ -111,8 +122,8 @@ class SimuleringOsService( erFoersteUtbetalingPaaSak: Boolean, vedtakVirkFom: YearMonth, brukerTokenInfo: BrukerTokenInfo, - ): Oppdrag { - return Oppdrag().apply { + ): Oppdrag = + Oppdrag().apply { fagsystemId = utbetaling.sakId.value.toString() oppdragGjelderId = utbetaling.stoenadsmottaker.value saksbehId = brukerTokenInfo.ident() @@ -139,7 +150,6 @@ class SimuleringOsService( }, ) } - } private fun tilOppdragsLinje( utbetaling: Utbetaling, @@ -175,11 +185,15 @@ class SimuleringOsService( } private fun LocalDate.toOppdragDate(): String = - DateTimeFormatter.ofPattern("yyyy-MM-dd") - .withZone(norskTidssone).format(this) - -class IkkeStoettetSimulering(behandlingId: UUID) : UgyldigForespoerselException( - code = "SIMULERING_IKKE_STOETTET", - detail = "Kan ikke simulere for behandlingId=$behandlingId", - meta = mapOf("behandlingId" to behandlingId), -) + DateTimeFormatter + .ofPattern("yyyy-MM-dd") + .withZone(norskTidssone) + .format(this) + +class IkkeStoettetSimulering( + behandlingId: UUID, +) : UgyldigForespoerselException( + code = "SIMULERING_IKKE_STOETTET", + detail = "Kan ikke simulere for behandlingId=$behandlingId", + meta = mapOf("behandlingId" to behandlingId), + ) diff --git a/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/TestRapid.kt b/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/TestRapid.kt index 4cecee448a3..22edcbdb28d 100644 --- a/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/TestRapid.kt +++ b/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/TestRapid.kt @@ -28,9 +28,7 @@ class TestRapid : RapidsConnection() { messages.add(key to message) } - override fun rapidName(): String { - return "test-rapid" - } + override fun rapidName(): String = "test-rapid" override fun start() { notifyStartup() diff --git a/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/VedtakHelper.kt b/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/VedtakHelper.kt index cf52934dcb5..edf3c4e37fe 100644 --- a/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/VedtakHelper.kt +++ b/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/VedtakHelper.kt @@ -127,8 +127,22 @@ fun revurderingVedtak( listOf( Utbetalingsperiode( id = it.utbetalingsperioder.last().id!! + 1, - periode = Periode(fom = it.utbetalingsperioder.first().periode.fom.plusMonths(1), null), - beloep = BigDecimal(it.utbetalingsperioder.first().beloep!!.longValueExact() - 1000), + periode = + Periode( + fom = + it.utbetalingsperioder + .first() + .periode.fom + .plusMonths(1), + null, + ), + beloep = + BigDecimal( + it.utbetalingsperioder + .first() + .beloep!! + .longValueExact() - 1000, + ), type = UtbetalingsperiodeType.UTBETALING, ), ) @@ -193,7 +207,15 @@ fun opphoersVedtak( listOf( Utbetalingsperiode( id = it.utbetalingsperioder.last().id!! + 1, - periode = Periode(fom = it.utbetalingsperioder.first().periode.fom.plusMonths(1), null), + periode = + Periode( + fom = + it.utbetalingsperioder + .first() + .periode.fom + .plusMonths(1), + null, + ), beloep = null, type = UtbetalingsperiodeType.OPPHOER, ), @@ -268,7 +290,11 @@ fun main() { antall = 2, intervallMnd = 6, forrigeId = vedtakInnhold.utbetalingsperioder.last().id!!, - startPeriode = vedtakInnhold.utbetalingsperioder.last().periode.fom.plusMonths(1), + startPeriode = + vedtakInnhold.utbetalingsperioder + .last() + .periode.fom + .plusMonths(1), startBelop = vedtakInnhold.utbetalingsperioder.last().beloep!!, ), ) diff --git a/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/avstemming/AvstemmingDaoIntegrationTest.kt b/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/avstemming/AvstemmingDaoIntegrationTest.kt index fb9daedb102..be4032b4e33 100644 --- a/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/avstemming/AvstemmingDaoIntegrationTest.kt +++ b/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/avstemming/AvstemmingDaoIntegrationTest.kt @@ -17,7 +17,9 @@ import java.time.temporal.ChronoUnit import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) -internal class AvstemmingDaoIntegrationTest(dataSource: DataSource) { +internal class AvstemmingDaoIntegrationTest( + dataSource: DataSource, +) { companion object { @RegisterExtension val dbExtension = DatabaseExtension() diff --git a/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/avstemming/KonsistensavstemmingServiceKtTest.kt b/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/avstemming/KonsistensavstemmingServiceKtTest.kt index 43bc1b0b857..fcccbfca135 100644 --- a/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/avstemming/KonsistensavstemmingServiceKtTest.kt +++ b/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/avstemming/KonsistensavstemmingServiceKtTest.kt @@ -119,9 +119,11 @@ internal class KonsistensavstemmingServiceKtTest { every { utbetalingDao.hentUtbetalingerForKonsistensavstemming( idag.atStartOfDay().toNorskTidspunkt(), - idag.minusDays(1).atTime( - LocalTime.MAX, - ).toNorskTidspunkt(), + idag + .minusDays(1) + .atTime( + LocalTime.MAX, + ).toNorskTidspunkt(), Saktype.BARNEPENSJON, ) } returns emptyList() @@ -143,9 +145,11 @@ internal class KonsistensavstemmingServiceKtTest { every { utbetalingDao.hentUtbetalingerForKonsistensavstemming( idag.atStartOfDay().toNorskTidspunkt(), - idag.minusDays(1).atTime( - LocalTime.MAX, - ).toNorskTidspunkt(), + idag + .minusDays(1) + .atTime( + LocalTime.MAX, + ).toNorskTidspunkt(), Saktype.BARNEPENSJON, ) } returns @@ -221,34 +225,50 @@ internal class KonsistensavstemmingServiceKtTest { // Case 1: Naa: linje 3 er eneste gjeldende val linjerCase1 = - service.lagKonsistensavstemming( - dag = LocalDate.now(), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = LocalDate.now(), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(listOf(linje3.id), linjerCase1) // Case 2: Foer linje 3 er aktiv -> linje 1 og 2 er aktive val linjerCase2 = - service.lagKonsistensavstemming( - dag = LocalDate.of(1998, 2, 25), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = LocalDate.of(1998, 2, 25), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(listOf(linje1.id, linje2.id), linjerCase2) // Case 3: Etter linje 2 har tatt over for linje 1, men foer linje 3 er aktiv -> Linje 2 er aktiv val linjerCase3 = - service.lagKonsistensavstemming( - dag = LocalDate.of(1998, 7, 25), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = LocalDate.of(1998, 7, 25), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(listOf(linje2.id), linjerCase3) // Case 4: Foer linje 2 og 3 er aktive opprettet -> linje 1 er aktiv val linjerCase4 = - service.lagKonsistensavstemming( - dag = LocalDate.of(1998, 1, 2), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = LocalDate.of(1998, 1, 2), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(listOf(linje1.id), linjerCase4) } @@ -300,26 +320,38 @@ internal class KonsistensavstemmingServiceKtTest { // Case 1: Naa: linje 3 har foert til opphoer -> ingen aktive utbetalingslinjer val linjerCase1 = - service.lagKonsistensavstemming( - dag = LocalDate.now(), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = LocalDate.now(), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(emptyList(), linjerCase1) // Case 2: Foer linje 2 er aktiv, og foer linje 3 er opprettet -> linje 1 og 2 er aktive val linjerCase2 = - service.lagKonsistensavstemming( - dag = LocalDate.of(1998, 2, 25), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = LocalDate.of(1998, 2, 25), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(listOf(linje1.id, linje2.id), linjerCase2) // Case 3: Etter linje 1 er aktiv, kun linje 2 er aktiv, foer linje 3 er opprettet -> linje 2 er aktiv val linjerCase3 = - service.lagKonsistensavstemming( - dag = LocalDate.of(1998, 7, 25), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = LocalDate.of(1998, 7, 25), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(listOf(linje2.id), linjerCase3) } @@ -383,34 +415,50 @@ internal class KonsistensavstemmingServiceKtTest { // Case 1: kun linje 1 er opprettet og gjeldende -> kun linje 1 er aktiv val linjerCase1 = - service.lagKonsistensavstemming( - dag = opprettet1.toNorskLocalDate().plusDays(1), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = opprettet1.toNorskLocalDate().plusDays(1), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(listOf(linje1.id), linjerCase1) // Case 2: opphoer i linje 2 er gjeldende -> ingen aktive linjer val linjerCase2 = - service.lagKonsistensavstemming( - dag = opprettet2.toNorskLocalDate().plusDays(1), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = opprettet2.toNorskLocalDate().plusDays(1), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(emptyList(), linjerCase2) // Case 3: linje 3 er opprettet og gjeldende -> kun linje 3 er aktiv val linjerCase3 = - service.lagKonsistensavstemming( - dag = opprettet3.toNorskLocalDate().plusDays(1), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = opprettet3.toNorskLocalDate().plusDays(1), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(listOf(linje3.id), linjerCase3) // Case 4: opphoer i linje 4 er gjeldende -> ingen aktive linjer val linjerCase4 = - service.lagKonsistensavstemming( - dag = opprettet4.toNorskLocalDate().plusDays(1), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = opprettet4.toNorskLocalDate().plusDays(1), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(emptyList(), linjerCase4) } @@ -475,34 +523,50 @@ internal class KonsistensavstemmingServiceKtTest { // Case 1: linje 1 og 3 er opprettet og gjeldende -> kun linje 1 og 3 er aktive val linjerCase1 = - service.lagKonsistensavstemming( - dag = periodeFra1.plusDays(1), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = periodeFra1.plusDays(1), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(listOf(linje1.id, linje3.id), linjerCase1) // Case 2: opphoer i linje 2 er gjeldende -> kun linje 3 er aktiv val linjerCase2 = - service.lagKonsistensavstemming( - dag = periodeFra2.plusDays(1), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = periodeFra2.plusDays(1), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(listOf(linje3.id), linjerCase2) // Case 3: linje 3 er opprettet og gjeldende -> kun linje 3 er aktiv val linjerCase3 = - service.lagKonsistensavstemming( - dag = periodeFra3.plusDays(1), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = periodeFra3.plusDays(1), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(listOf(linje3.id), linjerCase3) // Case 4: opphoer i linje 4 er gjeldende -> ingen aktive linjer val linjerCase4 = - service.lagKonsistensavstemming( - dag = periodeFra4.plusDays(1), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = periodeFra4.plusDays(1), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(emptyList(), linjerCase4) } @@ -545,17 +609,25 @@ internal class KonsistensavstemmingServiceKtTest { // Case 1: dagen foer opphoer av linje 1 -> linje 1 er aktiv val linjerCase1 = - service.lagKonsistensavstemming( - dag = opphoerFra.minusDays(1), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = opphoerFra.minusDays(1), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(listOf(linje1.id), linjerCase1) // Case 2: samme dag som linje 1 opphoerer -> ingen aktive linjer val linjerCase2 = - service.lagKonsistensavstemming( - dag = opphoerFra, - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = opphoerFra, + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(emptyList(), linjerCase2) } @@ -625,34 +697,50 @@ internal class KonsistensavstemmingServiceKtTest { // Case 1: Foer noen utbetalinger er opprettet -> ingen aktive linjer val linjerCase1 = - service.lagKonsistensavstemming( - dag = opprettet1.toNorskLocalDate().minusDays(1), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = opprettet1.toNorskLocalDate().minusDays(1), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(emptyList(), linjerCase1) // Case 2: Kun linje1Sak1 er opprettet -> linje1Sak1 er aktiv val linjerCase2 = - service.lagKonsistensavstemming( - dag = opprettet1.toNorskLocalDate().plusDays(1), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = opprettet1.toNorskLocalDate().plusDays(1), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(listOf(linje1Sak1.id), linjerCase2) // Case 3: linje1Sak1 og linje1Sak2 er opprettet -> linje1Sak1 og linje1Sak2 er aktive val linjerCase3 = - service.lagKonsistensavstemming( - dag = opprettet3.toNorskLocalDate().plusDays(1), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = opprettet3.toNorskLocalDate().plusDays(1), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(listOf(linje1Sak1.id, linje1Sak2.id), linjerCase3) // Case 4: alle linjer opprettet, men linje1Sak2 er opphoert og linje1Sak1 erstattet -> linje2Sak1 er aktiv val linjerCase4 = - service.lagKonsistensavstemming( - dag = opprettet2.toNorskLocalDate().plusDays(1), - saktype = Saktype.BARNEPENSJON, - ).loependeUtbetalinger.map { it.utbetalingslinjer }.flatten().map { it.id } + service + .lagKonsistensavstemming( + dag = opprettet2.toNorskLocalDate().plusDays(1), + saktype = Saktype.BARNEPENSJON, + ).loependeUtbetalinger + .map { it.utbetalingslinjer } + .flatten() + .map { it.id } assertEquals(listOf(linje2Sak1.id), linjerCase4) } diff --git a/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/GrensesnittavstemmingDataMapperTest.kt b/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/GrensesnittavstemmingDataMapperTest.kt index 5c5d545f18b..0a0d2571174 100644 --- a/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/GrensesnittavstemmingDataMapperTest.kt +++ b/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/GrensesnittavstemmingDataMapperTest.kt @@ -273,82 +273,93 @@ internal class GrensesnittavstemmingDataMapperTest { @Test fun `foerste og siste avstemmingsnoekkel skal finnes fra utbetalinger`() { val fraOgMed = - LocalDateTime.of( - 2020, - Month.APRIL, - 10, - 14, - 0, - 0, - ).minusDays(1).toNorskTidspunkt() + LocalDateTime + .of( + 2020, + Month.APRIL, + 10, + 14, + 0, + 0, + ).minusDays(1) + .toNorskTidspunkt() val til = - LocalDateTime.of( - 2022, - Month.JANUARY, - 24, - 22, - 0, - 0, - ).plusHours(1).toNorskTidspunkt() + LocalDateTime + .of( + 2022, + Month.JANUARY, + 24, + 22, + 0, + 0, + ).plusHours(1) + .toNorskTidspunkt() val utbetalinger = listOf( utbetaling( avstemmingsnoekkel = - LocalDateTime.of( - 2020, - Month.APRIL, - 10, - 14, - 0, - 0, - ).toNorskTidspunkt(), + LocalDateTime + .of( + 2020, + Month.APRIL, + 10, + 14, + 0, + 0, + ).toNorskTidspunkt(), ), utbetaling( avstemmingsnoekkel = - LocalDateTime.of( - 2020, - Month.APRIL, - 10, - 14, - 0, - 0, - ).plusDays(1).toNorskTidspunkt(), + LocalDateTime + .of( + 2020, + Month.APRIL, + 10, + 14, + 0, + 0, + ).plusDays(1) + .toNorskTidspunkt(), ), utbetaling( avstemmingsnoekkel = - LocalDateTime.of( - 2022, - Month.JANUARY, - 24, - 22, - 0, - 0, - ).toNorskTidspunkt(), + LocalDateTime + .of( + 2022, + Month.JANUARY, + 24, + 22, + 0, + 0, + ).toNorskTidspunkt(), ), utbetaling( avstemmingsnoekkel = - LocalDateTime.of( - 2020, - Month.APRIL, - 10, - 14, - 0, - 0, - ).plusHours(1).toNorskTidspunkt(), + LocalDateTime + .of( + 2020, + Month.APRIL, + 10, + 14, + 0, + 0, + ).plusHours(1) + .toNorskTidspunkt(), ), utbetaling( avstemmingsnoekkel = - LocalDateTime.of( - 2020, - Month.APRIL, - 10, - 14, - 0, - 0, - ) - .plusMinutes(2).toNorskTidspunkt(), + LocalDateTime + .of( + 2020, + Month.APRIL, + 10, + 14, + 0, + 0, + ).plusMinutes(2) + .toNorskTidspunkt(), ), ) diff --git a/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/KonsistensavstemmingDataMapperTest.kt b/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/KonsistensavstemmingDataMapperTest.kt index ee15709d247..6815b24708f 100644 --- a/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/KonsistensavstemmingDataMapperTest.kt +++ b/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/avstemming/avstemmingsdata/KonsistensavstemmingDataMapperTest.kt @@ -39,14 +39,33 @@ internal class KonsistensavstemmingDataMapperTest { assertDoesNotThrow { `liste av konsistensavstemmingsdata har rett struktur`(opprettetAvstemmingsmelding) } assertEquals(1, opprettetAvstemmingsmelding[1].oppdragsdataListe.size) assertEquals(oppdrag.fnr.value, opprettetAvstemmingsmelding[1].oppdragsdataListe.first().oppdragGjelderId) - assertEquals(1, opprettetAvstemmingsmelding[1].oppdragsdataListe.first().oppdragslinjeListe.size) assertEquals( - oppdragslinjer.first().id.value.toString(), - opprettetAvstemmingsmelding[1].oppdragsdataListe.first().oppdragslinjeListe.first().delytelseId, + 1, + opprettetAvstemmingsmelding[1] + .oppdragsdataListe + .first() + .oppdragslinjeListe.size, + ) + assertEquals( + oppdragslinjer + .first() + .id.value + .toString(), + opprettetAvstemmingsmelding[1] + .oppdragsdataListe + .first() + .oppdragslinjeListe + .first() + .delytelseId, ) assertEquals( BigDecimal.valueOf(10000L), - opprettetAvstemmingsmelding[1].oppdragsdataListe.first().oppdragslinjeListe.first().sats, + opprettetAvstemmingsmelding[1] + .oppdragsdataListe + .first() + .oppdragslinjeListe + .first() + .sats, ) } @@ -115,7 +134,8 @@ fun `liste av konsistensavstemmingsdata har rett struktur`(konsistensavstemmings throw IllegalArgumentException("Aksjonstypen til siste datamelding var ikke AVSL") } - if (konsistensavstemmingsdata.subList(1, konsistensavstemmingsdata.size - 1) + if (konsistensavstemmingsdata + .subList(1, konsistensavstemmingsdata.size - 1) .any { it.aksjonsdata.aksjonsType != "DATA" } ) { throw IllegalArgumentException( diff --git a/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/iverksetting/oppdrag/OppdragMapperTest.kt b/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/iverksetting/oppdrag/OppdragMapperTest.kt index 5f69c80851b..a80dc269aef 100644 --- a/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/iverksetting/oppdrag/OppdragMapperTest.kt +++ b/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/iverksetting/oppdrag/OppdragMapperTest.kt @@ -21,7 +21,12 @@ internal class OppdragMapperTest { erGRegulering = false, ) assertEquals(oppdrag.oppdrag110.kodeFagomraade, "BARNEPE") - assertEquals(oppdrag.oppdrag110.oppdragsLinje150.first().kodeKlassifik, "BARNEPENSJON-OPTP") + assertEquals( + oppdrag.oppdrag110.oppdragsLinje150 + .first() + .kodeKlassifik, + "BARNEPENSJON-OPTP", + ) } @Test @@ -33,7 +38,12 @@ internal class OppdragMapperTest { erGRegulering = false, ) assertEquals(oppdrag.oppdrag110.kodeFagomraade, "OMSTILL") - assertEquals(oppdrag.oppdrag110.oppdragsLinje150.first().kodeKlassifik, "OMSTILLINGOR") + assertEquals( + oppdrag.oppdrag110.oppdragsLinje150 + .first() + .kodeKlassifik, + "OMSTILLINGOR", + ) } @Nested diff --git a/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingDaoIntegrationTest.kt b/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingDaoIntegrationTest.kt index 50dfc82fc97..b6f184371fc 100644 --- a/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingDaoIntegrationTest.kt +++ b/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingDaoIntegrationTest.kt @@ -29,7 +29,9 @@ import java.util.UUID import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) -internal class UtbetalingDaoIntegrationTest(dataSource: DataSource) { +internal class UtbetalingDaoIntegrationTest( + dataSource: DataSource, +) { companion object { @RegisterExtension val dbExtension = DatabaseExtension() @@ -118,14 +120,20 @@ internal class UtbetalingDaoIntegrationTest(dataSource: DataSource) { { assertTrue( utbetalingFraDatabase.utbetalingslinjer.all { - it.periode.fra == utbetaling.utbetalingslinjer.first().periode.fra + it.periode.fra == + utbetaling.utbetalingslinjer + .first() + .periode.fra }, ) }, { assertTrue( utbetalingFraDatabase.utbetalingslinjer.all { - it.periode.til == utbetaling.utbetalingslinjer.first().periode.til + it.periode.til == + utbetaling.utbetalingslinjer + .first() + .periode.til }, ) }, @@ -212,7 +220,9 @@ internal class UtbetalingDaoIntegrationTest(dataSource: DataSource) { oppdrag.apply { oppdrag110.oppdragsId = 1 mmel = - Mmel().also { it.alvorlighetsgrad = "08" }.also { it.beskrMelding = "beskrivende melding" } + Mmel() + .also { it.alvorlighetsgrad = "08" } + .also { it.beskrMelding = "beskrivende melding" } .also { it.kodeMelding = "1234" } } @@ -233,7 +243,11 @@ internal class UtbetalingDaoIntegrationTest(dataSource: DataSource) { { assertEquals( oppdragMedKvittering.mmel?.alvorlighetsgrad, - utbetalingOppdatert?.kvittering?.oppdrag?.mmel?.alvorlighetsgrad, + utbetalingOppdatert + ?.kvittering + ?.oppdrag + ?.mmel + ?.alvorlighetsgrad, ) }, ) diff --git a/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingServiceTest.kt b/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingServiceTest.kt index 6e15a1dcdd9..f57ef2cba95 100644 --- a/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingServiceTest.kt +++ b/apps/etterlatte-utbetaling/src/test/kotlin/no/nav/etterlatte/utbetaling/iverksetting/utbetaling/UtbetalingServiceTest.kt @@ -96,7 +96,11 @@ internal class UtbetalingServiceTest { kodeStatusLinje == null && refDelytelseId == null && refFagsystemId == null && - datoVedtakFom == vedtak.pensjonTilUtbetaling.first().periode.fom.toXmlDate() && + datoVedtakFom == + vedtak.pensjonTilUtbetaling + .first() + .periode.fom + .toXmlDate() && sats == vedtak.pensjonTilUtbetaling.first().beloep } }, @@ -139,9 +143,17 @@ internal class UtbetalingServiceTest { match { with(it.oppdrag110.oppdragsLinje150.first()) { kodeStatusLinje == null && - refDelytelseId == eksisterendeUtbetaling.utbetalingslinjer.first().id.value.toString() && + refDelytelseId == + eksisterendeUtbetaling.utbetalingslinjer + .first() + .id.value + .toString() && refFagsystemId == eksisterendeUtbetaling.sakId.value.toString() && - datoVedtakFom == vedtak.pensjonTilUtbetaling.first().periode.fom.toXmlDate() && + datoVedtakFom == + vedtak.pensjonTilUtbetaling + .first() + .periode.fom + .toXmlDate() && sats == vedtak.pensjonTilUtbetaling.first().beloep } }, @@ -183,9 +195,17 @@ internal class UtbetalingServiceTest { match { with(it.oppdrag110.oppdragsLinje150.first()) { kodeStatusLinje == TkodeStatusLinje.OPPH && - refDelytelseId == eksisterendeUtbetaling.utbetalingslinjer.first().id.value.toString() && + refDelytelseId == + eksisterendeUtbetaling.utbetalingslinjer + .first() + .id.value + .toString() && refFagsystemId == eksisterendeUtbetaling.sakId.value.toString() && - datoVedtakFom == vedtak.pensjonTilUtbetaling.first().periode.fom.toXmlDate() && + datoVedtakFom == + vedtak.pensjonTilUtbetaling + .first() + .periode.fom + .toXmlDate() && sats == null } }, @@ -233,21 +253,39 @@ internal class UtbetalingServiceTest { kodeEndring = "ENDR" } with(it.oppdrag110.oppdragsLinje150.first()) { - refDelytelseId == eksisterendeUtbetaling.utbetalingslinjer.first().id.value.toString() && + refDelytelseId == + eksisterendeUtbetaling.utbetalingslinjer + .first() + .id.value + .toString() && refFagsystemId == eksisterendeUtbetaling.sakId.value.toString() && - datoVedtakFom == vedtak.pensjonTilUtbetaling.first().periode.fom.toXmlDate() && + datoVedtakFom == + vedtak.pensjonTilUtbetaling + .first() + .periode.fom + .toXmlDate() && sats == vedtak.pensjonTilUtbetaling.first().beloep } with(it.oppdrag110.oppdragsLinje150[1]) { - refDelytelseId == vedtak.pensjonTilUtbetaling.first().id.toString() && + refDelytelseId == + vedtak.pensjonTilUtbetaling + .first() + .id + .toString() && refFagsystemId == eksisterendeUtbetaling.sakId.value.toString() && - datoVedtakFom == vedtak.pensjonTilUtbetaling[1].periode.fom.toXmlDate() && + datoVedtakFom == + vedtak.pensjonTilUtbetaling[1] + .periode.fom + .toXmlDate() && sats == vedtak.pensjonTilUtbetaling[1].beloep } with(it.oppdrag110.oppdragsLinje150[2]) { refDelytelseId == vedtak.pensjonTilUtbetaling[1].id.toString() && refFagsystemId == eksisterendeUtbetaling.sakId.value.toString() && - datoVedtakFom == vedtak.pensjonTilUtbetaling[2].periode.fom.toXmlDate() && + datoVedtakFom == + vedtak.pensjonTilUtbetaling[2] + .periode.fom + .toXmlDate() && sats == vedtak.pensjonTilUtbetaling[2].beloep } }, @@ -280,16 +318,31 @@ internal class UtbetalingServiceTest { kodeEndring = "ENDR" } with(it.oppdrag110.oppdragsLinje150.first()) { - refDelytelseId == eksisterendeUtbetaling.utbetalingslinjer.first().id.value.toString() && + refDelytelseId == + eksisterendeUtbetaling.utbetalingslinjer + .first() + .id.value + .toString() && refFagsystemId == eksisterendeUtbetaling.sakId.value.toString() && - datoVedtakFom == vedtak.pensjonTilUtbetaling.first().periode.fom.toXmlDate() && + datoVedtakFom == + vedtak.pensjonTilUtbetaling + .first() + .periode.fom + .toXmlDate() && sats == vedtak.pensjonTilUtbetaling.first().beloep } with(it.oppdrag110.oppdragsLinje150[1]) { kodeStatusLinje == TkodeStatusLinje.OPPH && - refDelytelseId == vedtak.pensjonTilUtbetaling.first().id.toString() && + refDelytelseId == + vedtak.pensjonTilUtbetaling + .first() + .id + .toString() && refFagsystemId == eksisterendeUtbetaling.sakId.value.toString() && - datoVedtakFom == vedtak.pensjonTilUtbetaling[1].periode.fom.toXmlDate() && + datoVedtakFom == + vedtak.pensjonTilUtbetaling[1] + .periode.fom + .toXmlDate() && sats == vedtak.pensjonTilUtbetaling[1].beloep } }, diff --git a/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/Application.kt b/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/Application.kt index 547a03c15b3..f64cbc08230 100644 --- a/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/Application.kt +++ b/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/Application.kt @@ -15,14 +15,16 @@ import no.nav.helse.rapids_rivers.RapidApplication fun main() { val rapidEnv = getRapidEnv() val appBuilder = AppBuilder(Miljoevariabler(rapidEnv)) - RapidApplication.create(rapidEnv).also { rapidsConnection -> - val vedtakKlient = appBuilder.lagVedtakKlient() - LoependeYtelserforespoerselRiver(rapidsConnection, vedtakKlient) - OpprettVedtakforespoerselRiver(rapidsConnection, vedtakKlient, appBuilder.lagFeatureToggleService()) - LagreIverksattVedtakRiver(rapidsConnection, vedtakKlient) - AttestertVedtakRiver(rapidsConnection, vedtakKlient) - SamordningMottattRiver(rapidsConnection, vedtakKlient) - TilSamordningRiver(rapidsConnection, vedtakKlient) - TidshendelseRiver(rapidsConnection, vedtakKlient) - }.start() + RapidApplication + .create(rapidEnv) + .also { rapidsConnection -> + val vedtakKlient = appBuilder.lagVedtakKlient() + LoependeYtelserforespoerselRiver(rapidsConnection, vedtakKlient) + OpprettVedtakforespoerselRiver(rapidsConnection, vedtakKlient, appBuilder.lagFeatureToggleService()) + LagreIverksattVedtakRiver(rapidsConnection, vedtakKlient) + AttestertVedtakRiver(rapidsConnection, vedtakKlient) + SamordningMottattRiver(rapidsConnection, vedtakKlient) + TilSamordningRiver(rapidsConnection, vedtakKlient) + TidshendelseRiver(rapidsConnection, vedtakKlient) + }.start() } diff --git a/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/VedtakService.kt b/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/VedtakService.kt index 6e81728dc39..ced7bc654a2 100644 --- a/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/VedtakService.kt +++ b/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/VedtakService.kt @@ -44,7 +44,10 @@ interface VedtakService { fun iverksattVedtak(behandlingId: UUID): VedtakDto } -class VedtakServiceImpl(private val vedtakKlient: HttpClient, private val url: String) : VedtakService { +class VedtakServiceImpl( + private val vedtakKlient: HttpClient, + private val url: String, +) : VedtakService { override fun harLoependeYtelserFra( sakId: Long, dato: LocalDate, @@ -66,10 +69,11 @@ class VedtakServiceImpl(private val vedtakKlient: HttpClient, private val url: S behandlingId: UUID, ): VedtakOgRapid = runBlocking { - vedtakKlient.post("$url/api/vedtak/$sakId/$behandlingId/automatisk/stegvis") { - contentType(ContentType.Application.Json) - setBody(MigreringKjoringVariant.MED_PAUSE.toJson()) - }.body() + vedtakKlient + .post("$url/api/vedtak/$sakId/$behandlingId/automatisk/stegvis") { + contentType(ContentType.Application.Json) + setBody(MigreringKjoringVariant.MED_PAUSE.toJson()) + }.body() } override fun tilbakestillVedtak(behandlingId: UUID) { @@ -80,31 +84,34 @@ class VedtakServiceImpl(private val vedtakKlient: HttpClient, private val url: S override fun tilSamordningVedtak(behandlingId: UUID): VedtakDto = runBlocking { - vedtakKlient.post("$url/api/vedtak/$behandlingId/tilsamordning") { - contentType(ContentType.Application.Json) - }.body() + vedtakKlient + .post("$url/api/vedtak/$behandlingId/tilsamordning") { + contentType(ContentType.Application.Json) + }.body() } - override fun samordneVedtak(behandlingId: UUID): SamordneResponse { - return runBlocking { - vedtakKlient.post("$url/api/vedtak/$behandlingId/samordne") { - contentType(ContentType.Application.Json) - }.body() + override fun samordneVedtak(behandlingId: UUID): SamordneResponse = + runBlocking { + vedtakKlient + .post("$url/api/vedtak/$behandlingId/samordne") { + contentType(ContentType.Application.Json) + }.body() } - } override fun samordnetVedtak(vedtakId: String): VedtakDto? = runBlocking { - vedtakKlient.post("$url/vedtak/samordnet/$vedtakId") { - contentType(ContentType.Application.Json) - }.body() + vedtakKlient + .post("$url/vedtak/samordnet/$vedtakId") { + contentType(ContentType.Application.Json) + }.body() } override fun iverksattVedtak(behandlingId: UUID): VedtakDto = runBlocking { - vedtakKlient.post("$url/api/vedtak/$behandlingId/iverksett") { - contentType(ContentType.Application.Json) - }.body() + vedtakKlient + .post("$url/api/vedtak/$behandlingId/iverksett") { + contentType(ContentType.Application.Json) + }.body() } } diff --git a/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/regulering/AppBuilder.kt b/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/regulering/AppBuilder.kt index 019f1f4683d..6fde1186c91 100644 --- a/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/regulering/AppBuilder.kt +++ b/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/regulering/AppBuilder.kt @@ -11,17 +11,15 @@ import no.nav.etterlatte.libs.common.Miljoevariabler import no.nav.etterlatte.libs.common.requireEnvValue import no.nav.etterlatte.libs.ktor.httpClientClientCredentials -class AppBuilder(props: Miljoevariabler) { +class AppBuilder( + props: Miljoevariabler, +) { private val vedtakUrl = requireNotNull(props["ETTERLATTE_VEDTAK_URL"]) { "Mangler vedtak url " } private val env = System.getenv() - fun lagVedtakKlient(): VedtakServiceImpl { - return VedtakServiceImpl(vedtakHttpKlient, vedtakUrl) - } + fun lagVedtakKlient(): VedtakServiceImpl = VedtakServiceImpl(vedtakHttpKlient, vedtakUrl) - fun lagFeatureToggleService(): FeatureToggleService { - return FeatureToggleService.initialiser(featureToggleProperties) - } + fun lagFeatureToggleService(): FeatureToggleService = FeatureToggleService.initialiser(featureToggleProperties) private val vedtakHttpKlient: HttpClient by lazy { httpClientClientCredentials( diff --git a/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/regulering/ReguleringFeatureToggle.kt b/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/regulering/ReguleringFeatureToggle.kt index e47f28b5bdd..7e005ab198e 100644 --- a/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/regulering/ReguleringFeatureToggle.kt +++ b/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/regulering/ReguleringFeatureToggle.kt @@ -2,7 +2,9 @@ package no.nav.etterlatte.no.nav.etterlatte.regulering import no.nav.etterlatte.funksjonsbrytere.FeatureToggle -enum class ReguleringFeatureToggle(private val key: String) : FeatureToggle { +enum class ReguleringFeatureToggle( + private val key: String, +) : FeatureToggle { SkalStoppeEtterFattetVedtak("regulering-skal-stoppe-etter-fattet-vedtak"), ; diff --git a/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/rivers/TidshendelseRiver.kt b/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/rivers/TidshendelseRiver.kt index 079a087b864..16a1425d962 100644 --- a/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/rivers/TidshendelseRiver.kt +++ b/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/rivers/TidshendelseRiver.kt @@ -142,7 +142,8 @@ class TidshendelseRiver( logger.info("Dryrun: Fatter ikke vedtak for behandling=$behandlingIdForOpphoer") } else { logger.info("Fatter opphørsvedtak for behandling=$behandlingIdForOpphoer") - vedtakService.opprettVedtakFattOgAttester(sakId, behandlingIdForOpphoer) + vedtakService + .opprettVedtakFattOgAttester(sakId, behandlingIdForOpphoer) .let { RapidUtsender.sendUt(it, JsonMessage.newMessage(emptyMap()), context) } diff --git a/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/samordning/TilSamordningRiver.kt b/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/samordning/TilSamordningRiver.kt index c1fc1bda385..698e6736729 100644 --- a/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/samordning/TilSamordningRiver.kt +++ b/apps/etterlatte-vedtaksvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/samordning/TilSamordningRiver.kt @@ -58,13 +58,12 @@ internal class TilSamordningRiver( } } - private fun createLogMarker(vedtak: VedtakDto): LogstashMarker { - return Markers.appendEntries( + private fun createLogMarker(vedtak: VedtakDto): LogstashMarker = + Markers.appendEntries( mapOf( "vedtakId" to vedtak.id, "behandlingId" to vedtak.behandlingId, "sakId" to vedtak.sak.id, ), ) - } } diff --git a/apps/etterlatte-vedtaksvurdering-kafka/src/test/kotlin/no/nav/etterlatte/regulering/LoependeYtelserforespoerselRiverTest.kt b/apps/etterlatte-vedtaksvurdering-kafka/src/test/kotlin/no/nav/etterlatte/regulering/LoependeYtelserforespoerselRiverTest.kt index 1a21a4f2aad..9bb7203dbb5 100644 --- a/apps/etterlatte-vedtaksvurdering-kafka/src/test/kotlin/no/nav/etterlatte/regulering/LoependeYtelserforespoerselRiverTest.kt +++ b/apps/etterlatte-vedtaksvurdering-kafka/src/test/kotlin/no/nav/etterlatte/regulering/LoependeYtelserforespoerselRiverTest.kt @@ -96,7 +96,10 @@ internal class LoependeYtelserforespoerselRiverTest { inspector.sendTestMessage(melding.toJson()) Assertions.assertEquals(1, inspector.inspektør.size) Assertions.assertEquals( - inspector.inspektør.message(0).get(EVENT_NAME_KEY).asText(), + inspector.inspektør + .message(0) + .get(EVENT_NAME_KEY) + .asText(), ReguleringHendelseType.YTELSE_IKKE_LOEPENDE.lagEventnameForType(), ) } @@ -141,7 +144,11 @@ internal class LoependeYtelserforespoerselRiverTest { inspector.sendTestMessage(melding.toJson()) Assertions.assertEquals(1, inspector.inspektør.size) Assertions.assertTrue( - "SakErUnderSamordning" in inspector.inspektør.message(0).get(FEILMELDING_KEY).textValue(), + "SakErUnderSamordning" in + inspector.inspektør + .message(0) + .get(FEILMELDING_KEY) + .textValue(), ) } } diff --git a/apps/etterlatte-vedtaksvurdering-kafka/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/samordning/TilSamordningRiverTest.kt b/apps/etterlatte-vedtaksvurdering-kafka/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/samordning/TilSamordningRiverTest.kt index 984663e06d7..f009fcb469d 100644 --- a/apps/etterlatte-vedtaksvurdering-kafka/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/samordning/TilSamordningRiverTest.kt +++ b/apps/etterlatte-vedtaksvurdering-kafka/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/samordning/TilSamordningRiverTest.kt @@ -16,7 +16,9 @@ import java.util.UUID internal class TilSamordningRiverTest { companion object { val melding = - Companion::class.java.getResource("/attestertVedtakOms.json")?.readText() + Companion::class.java + .getResource("/attestertVedtakOms.json") + ?.readText() ?.replace("ATTESTERT", "TIL_SAMORDNING") ?: throw FileNotFoundException("Fant ikke filen") } diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/Application.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/Application.kt index bfd21795ca8..7bc0d63e67a 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/Application.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/Application.kt @@ -15,7 +15,9 @@ fun main() { ApplicationContext().let { Server(it).run() } } -class Server(private val context: ApplicationContext) { +class Server( + private val context: ApplicationContext, +) { init { sikkerLoggOppstartOgAvslutning("etterlatte-vedtakdsvurdering") } diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/AutomatiskBehandlingService.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/AutomatiskBehandlingService.kt index 55628cb45b0..c35402f87b9 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/AutomatiskBehandlingService.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/AutomatiskBehandlingService.kt @@ -47,7 +47,8 @@ class AutomatiskBehandlingService( logger.info("Tildeler attesteringsoppgave til systembruker") val oppgaveTilAttestering = - behandlingKlient.hentOppgaverForSak(sakId, brukerTokenInfo) + behandlingKlient + .hentOppgaverForSak(sakId, brukerTokenInfo) .filter { it.referanse == behandlingId.toString() } .filter { it.status == Status.ATTESTERING } .first() diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/Vedtak.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/Vedtak.kt index 8120b7b422b..2c48a85d7d0 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/Vedtak.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/Vedtak.kt @@ -43,8 +43,8 @@ data class Vedtak( val attestasjon: Attestasjon? = null, val innhold: VedtakInnhold, ) { - fun toDto(): VedtakDto { - return VedtakDto( + fun toDto(): VedtakDto = + VedtakDto( id = id, behandlingId = behandlingId, status = status, @@ -79,11 +79,8 @@ data class Vedtak( } }, ) - } - fun underArbeid(): Boolean { - return status in listOf(VedtakStatus.OPPRETTET, VedtakStatus.RETURNERT) - } + fun underArbeid(): Boolean = status in listOf(VedtakStatus.OPPRETTET, VedtakStatus.RETURNERT) } sealed interface VedtakInnhold { @@ -116,8 +113,9 @@ data class LoependeYtelse( val sisteLoependeBehandlingId: UUID? = null, ) -class UgyldigAttestantException(ident: String) : - IkkeTillattException( +class UgyldigAttestantException( + ident: String, +) : IkkeTillattException( code = "ATTESTANT_OG_SAKSBEHANDLER_ER_SAMME_PERSON", detail = "Saksbehandler og attestant må være to forskjellige personer (ident=$ident)", ) diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakBehandlingService.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakBehandlingService.kt index 5203d39badd..54c3d3a565e 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakBehandlingService.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakBehandlingService.kt @@ -283,7 +283,8 @@ class VedtakBehandlingService( val tilSamordningVedtakLocal = repository.inTransaction { tx -> - repository.tilSamordningVedtak(behandlingId, tx = tx) + repository + .tilSamordningVedtak(behandlingId, tx = tx) .also { runBlocking { behandlingKlient.tilSamordning(behandlingId, brukerTokenInfo, it.id) @@ -314,13 +315,14 @@ class VedtakBehandlingService( return false } - return samordningsKlient.samordneVedtak( - vedtak = vedtak, - etterbetaling = vedtak.erVedtakMedEtterbetaling(repository), - brukerTokenInfo = brukerTokenInfo, - ).also { - logger.info("Samordning: skal vente? $it [vedtak=${vedtak.id}, behandlingId=$behandlingId]") - } + return samordningsKlient + .samordneVedtak( + vedtak = vedtak, + etterbetaling = vedtak.erVedtakMedEtterbetaling(repository), + brukerTokenInfo = brukerTokenInfo, + ).also { + logger.info("Samordning: skal vente? $it [vedtak=${vedtak.id}, behandlingId=$behandlingId]") + } } fun samordnetVedtak( @@ -334,7 +336,8 @@ class VedtakBehandlingService( VedtakStatus.TIL_SAMORDNING -> { val samordnetVedtakLocal = repository.inTransaction { tx -> - repository.samordnetVedtak(behandlingId, tx = tx) + repository + .samordnetVedtak(behandlingId, tx = tx) .also { runBlocking { behandlingKlient.samordnet(behandlingId, brukerTokenInfo, it.id) @@ -368,14 +371,16 @@ class VedtakBehandlingService( suspend fun samordningsinfo(sakId: Long): List { val vedtaksliste = repository.hentVedtakForSak(sakId) return vedtaksliste.firstOrNull()?.let { vedtak -> - return samordningsKlient.hentSamordningsdata(vedtak, alleVedtak = true) + return samordningsKlient + .hentSamordningsdata(vedtak, alleVedtak = true) .map { supplementSamordningsinfo(it, vedtaksliste) } } ?: emptyList() } suspend fun samordningsinfo(behandlingId: UUID): List { val vedtak = hentVedtakNonNull(behandlingId) - return samordningsKlient.hentSamordningsdata(vedtak, alleVedtak = false) + return samordningsKlient + .hentSamordningsdata(vedtak, alleVedtak = false) .map { supplementSamordningsinfo(it, listOf(vedtak)) } } @@ -422,9 +427,10 @@ class VedtakBehandlingService( ) } - private fun hentVedtakNonNull(behandlingId: UUID): Vedtak { - return requireNotNull(repository.hentVedtak(behandlingId)) { "Vedtak for behandling $behandlingId finnes ikke" } - } + private fun hentVedtakNonNull(behandlingId: UUID): Vedtak = + requireNotNull(repository.hentVedtak(behandlingId)) { + "Vedtak for behandling $behandlingId finnes ikke" + } private fun verifiserGyldigBehandlingStatus( gyldigForOperasjon: Boolean, @@ -546,8 +552,8 @@ class VedtakBehandlingService( private fun vedtakType( behandlingType: BehandlingType, vilkaarsvurdering: VilkaarsvurderingDto?, - ): VedtakType { - return when (behandlingType) { + ): VedtakType = + when (behandlingType) { BehandlingType.FØRSTEGANGSBEHANDLING -> { when (vilkaarsvurderingUtfallNonNull(vilkaarsvurdering?.resultat?.utfall)) { VilkaarsvurderingUtfall.OPPFYLT -> VedtakType.INNVILGELSE @@ -562,7 +568,6 @@ class VedtakBehandlingService( } } } - } private fun opprettUtbetalingsperioder( vedtakType: VedtakType, @@ -638,8 +643,8 @@ class VedtakBehandlingService( private suspend fun hentDataForVedtak( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): VedtakData { - return coroutineScope { + ): VedtakData = + coroutineScope { val behandling = behandlingKlient.hentBehandling(behandlingId, brukerTokenInfo) val sak = behandlingKlient.hentSak(behandling.sak, brukerTokenInfo) @@ -665,28 +670,30 @@ class VedtakBehandlingService( } } } - } private fun vilkaarsvurderingUtfallNonNull(vilkaarsvurderingUtfall: VilkaarsvurderingUtfall?) = requireNotNull(vilkaarsvurderingUtfall) { "Behandling mangler utfall på vilkårsvurdering" } fun tilbakestillIkkeIverksatteVedtak(behandlingId: UUID): Vedtak? = repository.tilbakestillIkkeIverksatteVedtak(behandlingId) - fun hentIverksatteVedtakISak(sakId: Long): List { - return repository.hentVedtakForSak(sakId) + fun hentIverksatteVedtakISak(sakId: Long): List = + repository + .hentVedtakForSak(sakId) .filter { it.status == VedtakStatus.IVERKSATT } - } private fun Vedtak.isRegulering() = this.innhold is VedtakInnhold.Behandling && Revurderingaarsak.REGULERING == this.innhold.revurderingAarsak } -class VedtakTilstandException(gjeldendeStatus: VedtakStatus, forventetStatus: List) : - Exception("Vedtak har status $gjeldendeStatus, men forventet status $forventetStatus") +class VedtakTilstandException( + gjeldendeStatus: VedtakStatus, + forventetStatus: List, +) : Exception("Vedtak har status $gjeldendeStatus, men forventet status $forventetStatus") -class BehandlingstilstandException(vedtak: Vedtak) : - IllegalStateException("Statussjekk for behandling ${vedtak.behandlingId} feilet") +class BehandlingstilstandException( + vedtak: Vedtak, +) : IllegalStateException("Statussjekk for behandling ${vedtak.behandlingId} feilet") class ManglerAvkortetYtelse : UgyldigForespoerselException( @@ -695,7 +702,9 @@ class ManglerAvkortetYtelse : "Det må legges til inntektsavkorting selv om mottaker ikke har inntekt. Legg inn \"0\" kr i alle felter.", ) -class ForeldreloesTrygdetid(behandlingId: UUID) : UgyldigForespoerselException( - code = "FORELDRELOES_TRYGDETID", - detail = "Flere avdødes trygdetid er ikke støttet for vedtaksvurdering $behandlingId", -) +class ForeldreloesTrygdetid( + behandlingId: UUID, +) : UgyldigForespoerselException( + code = "FORELDRELOES_TRYGDETID", + detail = "Flere avdødes trygdetid er ikke støttet for vedtaksvurdering $behandlingId", + ) diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakEtterbetaling.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakEtterbetaling.kt index c005de2086f..35d6fdd1935 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakEtterbetaling.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakEtterbetaling.kt @@ -21,7 +21,8 @@ internal fun Vedtak.erVedtakMedEtterbetaling( if (innhold.virkningstidspunkt < now) { val ferdigstilteVedtak = - vedtaksvurderingRepository.hentFerdigstilteVedtak(this.soeker, this.sakType) + vedtaksvurderingRepository + .hentFerdigstilteVedtak(this.soeker, this.sakType) .filter { it.id != this.id } val tidligereVedtakTidslinje = Vedtakstidslinje(ferdigstilteVedtak).sammenstill(OMS_START_YTELSE) val tidligereUtbetalingsperioder = @@ -46,14 +47,13 @@ internal fun Vedtak.erVedtakMedEtterbetaling( internal fun Utbetalingsperiode.beloepErMindreEnn(that: Utbetalingsperiode) = this.beloep?.compareTo(that.beloep) == -1 -internal fun Utbetalingsperiode.overlapper(other: Utbetalingsperiode): Boolean { - return periode.overlapper(other.periode) -} +internal fun Utbetalingsperiode.overlapper(other: Utbetalingsperiode): Boolean = periode.overlapper(other.periode) internal fun Periode.overlapper(other: Periode): Boolean { val thisTomSafe = this.tom ?: WAY_INTO_THE_FUTURE val thatTomSafe = other.tom ?: WAY_INTO_THE_FUTURE return this.fom == other.fom || this.tom == other.tom || - other.fom.isBefore(thisTomSafe) && thatTomSafe.isAfter(this.fom) + other.fom.isBefore(thisTomSafe) && + thatTomSafe.isAfter(this.fom) } diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakKlageService.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakKlageService.kt index f1159d7cff9..f0b345b1047 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakKlageService.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakKlageService.kt @@ -142,8 +142,8 @@ class VedtakKlageService( ), ) - private fun vedtakOgRapidAttestert(attestertVedtak: Vedtak): VedtakOgRapid { - return VedtakOgRapid( + private fun vedtakOgRapidAttestert(attestertVedtak: Vedtak): VedtakOgRapid = + VedtakOgRapid( attestertVedtak.toDto(), RapidInfo( vedtakhendelse = VedtakKafkaHendelseHendelseType.ATTESTERT, @@ -153,7 +153,6 @@ class VedtakKlageService( extraParams = mapOf(SKAL_SENDE_BREV to true), ), ) - } private fun vedtakOgRapidUnderkjent(vedtak: Vedtak) = VedtakOgRapid( diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakSamordningService.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakSamordningService.kt index a706699b407..536bf59f86c 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakSamordningService.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakSamordningService.kt @@ -14,7 +14,9 @@ import org.slf4j.LoggerFactory import java.time.LocalDate import java.time.YearMonth -class VedtakSamordningService(private val repository: VedtaksvurderingRepository) { +class VedtakSamordningService( + private val repository: VedtaksvurderingRepository, +) { private val logger = LoggerFactory.getLogger(VedtakSamordningService::class.java) fun hentVedtak(vedtakId: Long): VedtakSamordningDto? { @@ -58,7 +60,8 @@ private fun Vedtak.toSamordningsvedtakDto(): VedtakSamordningDto { virkningstidspunkt = innhold.virkningstidspunkt, beregning = innhold.beregning, perioder = - avkorting?.avkortetYtelse + avkorting + ?.avkortetYtelse ?.map { it.toSamordningVedtakPeriode(innhold.utbetalingsperioder) } ?: emptyList(), ) diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakTilbakekrevingService.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakTilbakekrevingService.kt index 21af9af4092..f0aac7da26e 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakTilbakekrevingService.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakTilbakekrevingService.kt @@ -62,15 +62,16 @@ class VedtakTilbakekrevingService( ): Long { logger.info("Fatter vedtak for tilbakekreving=${tilbakekrevingVedtakData.tilbakekrevingId}") verifiserGyldigVedtakStatus(tilbakekrevingVedtakData.tilbakekrevingId, listOf(VedtakStatus.OPPRETTET, VedtakStatus.RETURNERT)) - return repository.fattVedtak( - tilbakekrevingVedtakData.tilbakekrevingId, - VedtakFattet( - ansvarligSaksbehandler = brukerTokenInfo.ident(), - ansvarligEnhet = tilbakekrevingVedtakData.enhet, - // Blir ikke brukt fordi egen now() brukes i db.. - tidspunkt = Tidspunkt.now(), - ), - ).id + return repository + .fattVedtak( + tilbakekrevingVedtakData.tilbakekrevingId, + VedtakFattet( + ansvarligSaksbehandler = brukerTokenInfo.ident(), + ansvarligEnhet = tilbakekrevingVedtakData.enhet, + // Blir ikke brukt fordi egen now() brukes i db.. + tidspunkt = Tidspunkt.now(), + ), + ).id } fun attesterVedtak( diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/Vedtakstidslinje.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/Vedtakstidslinje.kt index 31a9d92e93f..aea2cf78da3 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/Vedtakstidslinje.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/Vedtakstidslinje.kt @@ -8,7 +8,9 @@ import no.nav.etterlatte.libs.common.vedtak.VedtakType import java.time.LocalDate import java.time.YearMonth -class Vedtakstidslinje(private val vedtak: List) { +class Vedtakstidslinje( + private val vedtak: List, +) { private val iverksatteVedtak = hentIverksatteVedtak() fun harLoependeVedtakPaaEllerEtter(dato: LocalDate): LoependeYtelse { @@ -27,7 +29,8 @@ class Vedtakstidslinje(private val vedtak: List) { if (erLoepende) { sammenstill(YearMonth.from(dato)) .filter { it.type != VedtakType.OPPHOER } - .maxByOrNull { it.attestasjon?.tidspunkt!! }?.behandlingId + .maxByOrNull { it.attestasjon?.tidspunkt!! } + ?.behandlingId } else { null }, @@ -38,8 +41,12 @@ class Vedtakstidslinje(private val vedtak: List) { iverksatteVedtak .filter { it.type.kanLoepe } .filter { - it.virkningstidspunkt.atDay(1).isAfter(foersteMuligeVedtaksdag(dato)).not() - }.maxByOrNull { it.attestasjon?.tidspunkt!! }?.let { senesteVedtak -> + it.virkningstidspunkt + .atDay(1) + .isAfter(foersteMuligeVedtaksdag(dato)) + .not() + }.maxByOrNull { it.attestasjon?.tidspunkt!! } + ?.let { senesteVedtak -> return if (senesteVedtak.opphoerFraOgMed != null && senesteVedtak.opphoerFraOgMed!!.atDay(1) >= dato) { null } else { @@ -52,7 +59,8 @@ class Vedtakstidslinje(private val vedtak: List) { private fun foersteMuligeVedtaksdag(fraDato: LocalDate): LocalDate { val foersteVirkningsdato = (iverksatteVedtak.minBy { it.virkningstidspunkt }.innhold as VedtakInnhold.Behandling) - .virkningstidspunkt.atDay(1) + .virkningstidspunkt + .atDay(1) return maxOf(foersteVirkningsdato, fraDato) } @@ -82,8 +90,8 @@ class Vedtakstidslinje(private val vedtak: List) { } // Opprette kopier av data class-struktur, med (potensielt) endret liste med utbetalingsperioder - private fun Vedtak.kopier(gyldighetsperiode: Periode): Vedtak { - return copy( + private fun Vedtak.kopier(gyldighetsperiode: Periode): Vedtak = + copy( id = id, soeker = soeker, sakId = sakId, @@ -102,10 +110,9 @@ class Vedtakstidslinje(private val vedtak: List) { ) }, ) - } - private fun VedtakInnhold.Behandling.kopier(gyldighetsperiode: Periode): VedtakInnhold.Behandling { - return copy( + private fun VedtakInnhold.Behandling.kopier(gyldighetsperiode: Periode): VedtakInnhold.Behandling = + copy( behandlingType = behandlingType, revurderingAarsak = revurderingAarsak, virkningstidspunkt = virkningstidspunkt, @@ -115,19 +122,17 @@ class Vedtakstidslinje(private val vedtak: List) { utbetalingsperioder = filtrerUtbetalingsperioder(gyldighetsperiode), revurderingInfo = revurderingInfo, ) - } /** * 2 oppgaver: * - fjerne perioder som er utenfor vedtakets tidsrom (kan være endret pga revurdering tilbake i tid osv) * - lukke siste perioder dersom vedtakets gyldighetsperiode også er lukket, dvs det finnes vedtak med senere virkningstidspunkt */ - private fun VedtakInnhold.Behandling.filtrerUtbetalingsperioder(gyldighetsperiode: Periode): List { - return utbetalingsperioder + private fun VedtakInnhold.Behandling.filtrerUtbetalingsperioder(gyldighetsperiode: Periode): List = + utbetalingsperioder .filter { gyldighetsperiode.tom?.let { tom -> !it.periode.fom.isAfter(tom) } ?: true - } - .map { + }.map { if (it.periode.tom == null || gyldighetsperiode.tom?.isBefore(it.periode.tom) == true) { it.copy( id = it.id, @@ -139,7 +144,6 @@ class Vedtakstidslinje(private val vedtak: List) { it } } - } private val Vedtak.virkningstidspunkt: YearMonth get() = (this.innhold as VedtakInnhold.Behandling).virkningstidspunkt diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRapidService.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRapidService.kt index f408e34be6d..07a6ec787da 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRapidService.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRapidService.kt @@ -34,12 +34,13 @@ class VedtaksvurderingRapidService( extraParams: Map = emptyMap(), ) = publiser( behandlingId, - JsonMessage.newMessage( - mapOf( - vedtakhendelse.lagParMedEventNameKey(), - "vedtak" to vedtak, - TEKNISK_TID_KEY to tekniskTid.toLocalDatetimeUTC(), - ) + extraParams, - ).toJson(), + JsonMessage + .newMessage( + mapOf( + vedtakhendelse.lagParMedEventNameKey(), + "vedtak" to vedtak, + TEKNISK_TID_KEY to tekniskTid.toLocalDatetimeUTC(), + ) + extraParams, + ).toJson(), ) } diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRepository.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRepository.kt index 861cf8b8f3d..68549d6d520 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRepository.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRepository.kt @@ -29,16 +29,17 @@ import java.time.YearMonth import java.util.UUID import javax.sql.DataSource -class VedtaksvurderingRepository(private val datasource: DataSource) : Transactions { +class VedtaksvurderingRepository( + private val datasource: DataSource, +) : Transactions { companion object { fun using(datasource: DataSource): VedtaksvurderingRepository = VedtaksvurderingRepository(datasource) } - override fun inTransaction(block: VedtaksvurderingRepository.(TransactionalSession) -> T): T { - return datasource.transaction(true) { + override fun inTransaction(block: VedtaksvurderingRepository.(TransactionalSession) -> T): T = + datasource.transaction(true) { this.block(it) } - } fun opprettVedtak( opprettVedtak: OpprettVedtak, @@ -82,8 +83,7 @@ class VedtaksvurderingRepository(private val datasource: DataSource) : Transacti "vedtakstatus" to opprettVedtak.status.name, "type" to opprettVedtak.type.name, ) + innholdParams, - ) - .let { query -> this.run(query.asUpdateAndReturnGeneratedKey) } + ).let { query -> this.run(query.asUpdateAndReturnGeneratedKey) } ?.let { vedtakId -> if (opprettVedtak.innhold is VedtakInnhold.Behandling) { opprettUtbetalingsperioder(vedtakId, opprettVedtak.innhold.utbetalingsperioder, this) @@ -171,8 +171,14 @@ class VedtaksvurderingRepository(private val datasource: DataSource) : Transacti paramMap = mapOf( "vedtakid" to vedtakId, - "datofom" to it.periode.fom.atDay(1).let(Date::valueOf), - "datotom" to it.periode.tom?.atEndOfMonth()?.let(Date::valueOf), + "datofom" to + it.periode.fom + .atDay(1) + .let(Date::valueOf), + "datotom" to + it.periode.tom + ?.atEndOfMonth() + ?.let(Date::valueOf), "type" to it.type.name, "beloep" to it.beloep, ), @@ -309,8 +315,7 @@ class VedtaksvurderingRepository(private val datasource: DataSource) : Transacti "behandlingId" to behandlingId, ), loggtekst = "Fatter vedtak for behandling $behandlingId", - ) - .also { require(it == 1) } + ).also { require(it == 1) } .let { hentVedtakNonNull(behandlingId, this) } } @@ -335,10 +340,9 @@ class VedtaksvurderingRepository(private val datasource: DataSource) : Transacti "behandlingId" to behandlingId, ), loggtekst = "Attesterer vedtak $behandlingId", - ) - .also { - require(it == 1) - } + ).also { + require(it == 1) + } opprett( query = """ @@ -368,8 +372,7 @@ class VedtaksvurderingRepository(private val datasource: DataSource) : Transacti """, params = mapOf("vedtakstatus" to VedtakStatus.RETURNERT.name, "behandlingId" to behandlingId), loggtekst = "Underkjenner vedtak for behandling $behandlingId", - ) - .also { require(it == 1) } + ).also { require(it == 1) } return@session hentVedtakNonNull(behandlingId, this) } @@ -382,8 +385,7 @@ class VedtaksvurderingRepository(private val datasource: DataSource) : Transacti query = "UPDATE vedtak SET vedtakstatus = :vedtakstatus WHERE behandlingId = :behandlingId", params = mapOf("vedtakstatus" to VedtakStatus.TIL_SAMORDNING.name, "behandlingId" to behandlingId), loggtekst = "Lagrer til_samordning vedtak", - ) - .also { require(it == 1) } + ).also { require(it == 1) } return@session hentVedtakNonNull(behandlingId, this) } @@ -396,8 +398,7 @@ class VedtaksvurderingRepository(private val datasource: DataSource) : Transacti query = "UPDATE vedtak SET vedtakstatus = :vedtakstatus WHERE behandlingId = :behandlingId", params = mapOf("vedtakstatus" to VedtakStatus.SAMORDNET.name, "behandlingId" to behandlingId), loggtekst = "Lagrer samordnet vedtak", - ) - .also { require(it == 1) } + ).also { require(it == 1) } return@session hentVedtakNonNull(behandlingId, this) } @@ -410,8 +411,7 @@ class VedtaksvurderingRepository(private val datasource: DataSource) : Transacti query = "UPDATE vedtak SET vedtakstatus = :vedtakstatus WHERE behandlingId = :behandlingId", params = mapOf("vedtakstatus" to VedtakStatus.IVERKSATT.name, "behandlingId" to behandlingId), loggtekst = "Lagrer iverksatt vedtak", - ) - .also { require(it == 1) } + ).also { require(it == 1) } return@session hentVedtakNonNull(behandlingId, this) } @@ -504,8 +504,7 @@ class VedtaksvurderingRepository(private val datasource: DataSource) : Transacti "behandlingId" to behandlingId, ), loggtekst = "Returnerer vedtak $behandlingId", - ) - .also { require(it == 1) } + ).also { require(it == 1) } return@session hentVedtakNonNull(behandlingId, this) } } diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRoute.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRoute.kt index cfeca22a91c..6b226c621d7 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRoute.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRoute.kt @@ -241,7 +241,8 @@ fun Route.vedtaksvurderingRoute( call.respond(HttpStatusCode.NotFound) } - vedtakBehandlingService.samordnetVedtak(vedtak!!.behandlingId, brukerTokenInfo) + vedtakBehandlingService + .samordnetVedtak(vedtak!!.behandlingId, brukerTokenInfo) ?.let { samordnetVedtak -> rapidService.sendToRapid(samordnetVedtak) call.respond(HttpStatusCode.OK, samordnetVedtak.rapidInfo1.vedtak) @@ -404,10 +405,15 @@ private fun LoependeYtelse.toDto() = sisteLoependeBehandlingId = sisteLoependeBehandlingId, ) -data class UnderkjennVedtakDto(val kommentar: String, val valgtBegrunnelse: String) - -private class MismatchingIdException(message: String) : ForespoerselException( - HttpStatusCode.BadRequest.value, - "ID_MISMATCH_MELLOM_PATH_OG_BODY", - message, +data class UnderkjennVedtakDto( + val kommentar: String, + val valgtBegrunnelse: String, ) + +private class MismatchingIdException( + message: String, +) : ForespoerselException( + HttpStatusCode.BadRequest.value, + "ID_MISMATCH_MELLOM_PATH_OG_BODY", + message, + ) diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingService.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingService.kt index e5af9b25174..5331699e073 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingService.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingService.kt @@ -18,7 +18,5 @@ class VedtaksvurderingService( return repository.hentVedtak(behandlingId) } - fun hentVedtakISak(sakId: Long): List { - return repository.hentVedtakForSak(sakId) - } + fun hentVedtakISak(sakId: Long): List = repository.hentVedtakForSak(sakId) } diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/grunnlag/GrunnlagVersjonValidering.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/grunnlag/GrunnlagVersjonValidering.kt index a817b0686be..089c75fea2f 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/grunnlag/GrunnlagVersjonValidering.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/grunnlag/GrunnlagVersjonValidering.kt @@ -55,7 +55,9 @@ object GrunnlagVersjonValidering { } } -class UlikVersjonGrunnlag(detail: String) : UgyldigForespoerselException( - code = "ULIK_VERSJON_GRUNNLAG", - detail = detail, -) +class UlikVersjonGrunnlag( + detail: String, +) : UgyldigForespoerselException( + code = "ULIK_VERSJON_GRUNNLAG", + detail = detail, + ) diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/BehandlingKlient.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/BehandlingKlient.kt index 3789fdb9cf5..038f551b2da 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/BehandlingKlient.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/BehandlingKlient.kt @@ -28,7 +28,9 @@ import no.nav.etterlatte.vedtaksvurdering.VedtakHendelse import org.slf4j.LoggerFactory import java.util.UUID -interface BehandlingKlient : BehandlingTilgangsSjekk, SakTilgangsSjekk { +interface BehandlingKlient : + BehandlingTilgangsSjekk, + SakTilgangsSjekk { suspend fun hentBehandling( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, @@ -105,10 +107,15 @@ interface BehandlingKlient : BehandlingTilgangsSjekk, SakTilgangsSjekk { ): TilbakekrevingBehandling } -class BehandlingKlientException(override val message: String, override val cause: Throwable? = null) : - Exception(message, cause) +class BehandlingKlientException( + override val message: String, + override val cause: Throwable? = null, +) : Exception(message, cause) -class BehandlingKlientImpl(config: Config, httpClient: HttpClient) : BehandlingKlient { +class BehandlingKlientImpl( + config: Config, + httpClient: HttpClient, +) : BehandlingKlient { private val logger = LoggerFactory.getLogger(this::class.java) private val azureAdClient = AzureAdClient(config) @@ -133,8 +140,7 @@ class BehandlingKlientImpl(config: Config, httpClient: HttpClient) : BehandlingK url = "$resourceUrl/behandlinger/$behandlingId", ), brukerTokenInfo = brukerTokenInfo, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { throwableErrorMessage -> throw throwableErrorMessage }, ) @@ -157,8 +163,7 @@ class BehandlingKlientImpl(config: Config, httpClient: HttpClient) : BehandlingK url = "$resourceUrl/saker/$sakId", ), brukerTokenInfo = brukerTokenInfo, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { throwableErrorMessage -> throw throwableErrorMessage }, ) @@ -181,8 +186,7 @@ class BehandlingKlientImpl(config: Config, httpClient: HttpClient) : BehandlingK url = "$resourceUrl/oppgaver/sak/$sakId/oppgaver", ), brukerTokenInfo = brukerTokenInfo, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { throwableErrorMessage -> throw throwableErrorMessage }, ) @@ -309,64 +313,61 @@ class BehandlingKlientImpl(config: Config, httpClient: HttpClient) : BehandlingK override suspend fun kanFatteVedtak( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): Boolean { - return statussjekkForBehandling(behandlingId, brukerTokenInfo, BehandlingStatus.FATTET_VEDTAK) - } + ): Boolean = statussjekkForBehandling(behandlingId, brukerTokenInfo, BehandlingStatus.FATTET_VEDTAK) override suspend fun kanAttestereVedtak( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, vedtakHendelse: VedtakHendelse?, - ): Boolean { - return statussjekkForBehandling(behandlingId, brukerTokenInfo, BehandlingStatus.ATTESTERT) - } + ): Boolean = statussjekkForBehandling(behandlingId, brukerTokenInfo, BehandlingStatus.ATTESTERT) override suspend fun kanUnderkjenneVedtak( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, vedtakHendelse: VedtakHendelse?, - ): Boolean { - return statussjekkForBehandling(behandlingId, brukerTokenInfo, BehandlingStatus.RETURNERT) - } + ): Boolean = statussjekkForBehandling(behandlingId, brukerTokenInfo, BehandlingStatus.RETURNERT) override suspend fun tilSamordning( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, vedtakId: Long, - ) = downstreamResourceClient.post( - Resource(clientId = clientId, url = "$resourceUrl/behandlinger/$behandlingId/tilsamordning"), - brukerTokenInfo, - VedtakHendelse( - vedtakId = vedtakId, - inntruffet = Tidspunkt.now(), - ), - ).mapBoth({ true }, { false }) + ) = downstreamResourceClient + .post( + Resource(clientId = clientId, url = "$resourceUrl/behandlinger/$behandlingId/tilsamordning"), + brukerTokenInfo, + VedtakHendelse( + vedtakId = vedtakId, + inntruffet = Tidspunkt.now(), + ), + ).mapBoth({ true }, { false }) override suspend fun samordnet( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, vedtakId: Long, - ) = downstreamResourceClient.post( - Resource(clientId = clientId, url = "$resourceUrl/behandlinger/$behandlingId/samordnet"), - brukerTokenInfo, - VedtakHendelse( - vedtakId = vedtakId, - inntruffet = Tidspunkt.now(), - ), - ).mapBoth({ true }, { false }) + ) = downstreamResourceClient + .post( + Resource(clientId = clientId, url = "$resourceUrl/behandlinger/$behandlingId/samordnet"), + brukerTokenInfo, + VedtakHendelse( + vedtakId = vedtakId, + inntruffet = Tidspunkt.now(), + ), + ).mapBoth({ true }, { false }) override suspend fun iverksett( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, vedtakId: Long, - ) = downstreamResourceClient.post( - Resource(clientId = clientId, url = "$resourceUrl/behandlinger/$behandlingId/iverksett"), - brukerTokenInfo, - VedtakHendelse( - vedtakId = vedtakId, - inntruffet = Tidspunkt.now(), - ), - ).mapBoth({ true }, { false }) + ) = downstreamResourceClient + .post( + Resource(clientId = clientId, url = "$resourceUrl/behandlinger/$behandlingId/iverksett"), + brukerTokenInfo, + VedtakHendelse( + vedtakId = vedtakId, + inntruffet = Tidspunkt.now(), + ), + ).mapBoth({ true }, { false }) override suspend fun harTilgangTilBehandling( behandlingId: UUID, @@ -426,8 +427,7 @@ class BehandlingKlientImpl(config: Config, httpClient: HttpClient) : BehandlingK url = "$resourceUrl/api/tilbakekreving/$tilbakekrevingId", ), brukerTokenInfo = brukerTokenInfo, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { throwableErrorMessage -> throw throwableErrorMessage }, ) diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/BeregningKlient.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/BeregningKlient.kt index f8f7e19d4fa..01549471a33 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/BeregningKlient.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/BeregningKlient.kt @@ -24,10 +24,15 @@ interface BeregningKlient { ): BeregningOgAvkorting } -class BeregningKlientException(override val message: String, override val cause: Throwable) : - Exception(message, cause) +class BeregningKlientException( + override val message: String, + override val cause: Throwable, +) : Exception(message, cause) -class BeregningKlientImpl(config: Config, httpClient: HttpClient) : BeregningKlient { +class BeregningKlientImpl( + config: Config, + httpClient: HttpClient, +) : BeregningKlient { private val logger = LoggerFactory.getLogger(BeregningKlient::class.java) private val azureAdClient = AzureAdClient(config) @@ -40,8 +45,8 @@ class BeregningKlientImpl(config: Config, httpClient: HttpClient) : BeregningKli behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, saktype: SakType, - ): BeregningOgAvkorting { - return BeregningOgAvkorting( + ): BeregningOgAvkorting = + BeregningOgAvkorting( beregning = hentBeregning(behandlingId, brukerTokenInfo), avkorting = if (saktype == SakType.OMSTILLINGSSTOENAD) { @@ -50,7 +55,6 @@ class BeregningKlientImpl(config: Config, httpClient: HttpClient) : BeregningKli null }, ) - } private suspend fun hentBeregning( behandlingId: UUID, @@ -66,8 +70,7 @@ class BeregningKlientImpl(config: Config, httpClient: HttpClient) : BeregningKli url = "$resourceUrl/api/beregning/$behandlingId", ), brukerTokenInfo = brukerTokenInfo, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { throwableErrorMessage -> throw throwableErrorMessage }, ) @@ -93,8 +96,7 @@ class BeregningKlientImpl(config: Config, httpClient: HttpClient) : BeregningKli url = "$resourceUrl/api/beregning/avkorting/$behandlingId/ferdig", ), brukerTokenInfo = brukerTokenInfo, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { throwableErrorMessage -> throw throwableErrorMessage }, ) diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/SamordningsKlient.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/SamordningsKlient.kt index d095a1ce7a3..abdcfc5de04 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/SamordningsKlient.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/SamordningsKlient.kt @@ -114,7 +114,12 @@ internal fun Vedtak.tilSamordneRequest(etterbetaling: Boolean): SamordneVedtakRe vedtakId = this.id, sakId = this.sakId, virkFom = innhold.virkningstidspunkt.atDay(1), - virkTom = innhold.utbetalingsperioder.maxByOrNull { it.periode.fom }?.periode?.tom?.atEndOfMonth(), + virkTom = + innhold.utbetalingsperioder + .maxByOrNull { it.periode.fom } + ?.periode + ?.tom + ?.atEndOfMonth(), fagomrade = "EYO", ytelseType = "OMS", etterbetaling = etterbetaling, @@ -132,12 +137,18 @@ internal data class SamordneVedtakRequest( val etterbetaling: Boolean, ) -private class SamordneVedtakRespons(val ventPaaSvar: Boolean) - -class SamordneVedtakBehandlingUgyldigForespoerselException(override val message: String) : UgyldigForespoerselException( - "SAMORDNE_VEDTAK_UGYLDIG_FORESPOERSEL", - message, +private class SamordneVedtakRespons( + val ventPaaSvar: Boolean, ) -class SamordneVedtakGenerellException(override val message: String, override val cause: Throwable) : - Exception(message, cause) +class SamordneVedtakBehandlingUgyldigForespoerselException( + override val message: String, +) : UgyldigForespoerselException( + "SAMORDNE_VEDTAK_UGYLDIG_FORESPOERSEL", + message, + ) + +class SamordneVedtakGenerellException( + override val message: String, + override val cause: Throwable, +) : Exception(message, cause) diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/TrygdetidKlient.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/TrygdetidKlient.kt index 2d74104d4b3..27bbb433fa3 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/TrygdetidKlient.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/TrygdetidKlient.kt @@ -15,10 +15,15 @@ import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo import org.slf4j.LoggerFactory import java.util.UUID -class TrygdetidKlientException(override val message: String, override val cause: Throwable) : - Exception(message, cause) +class TrygdetidKlientException( + override val message: String, + override val cause: Throwable, +) : Exception(message, cause) -class TrygdetidKlient(config: Config, httpClient: HttpClient) { +class TrygdetidKlient( + config: Config, + httpClient: HttpClient, +) { private val logger = LoggerFactory.getLogger(TrygdetidKlient::class.java) private val azureAdClient = AzureAdClient(config) private val downstreamResourceClient = DownstreamResourceClient(azureAdClient, httpClient) @@ -40,8 +45,7 @@ class TrygdetidKlient(config: Config, httpClient: HttpClient) { url = "$resourceUrl/api/trygdetid_v2/$behandlingId", ), brukerTokenInfo = brukerTokenInfo, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response?.let { objectMapper.readValue(it.toString()) } ?: emptyList() }, diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/VilkaarsvurderingKlient.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/VilkaarsvurderingKlient.kt index 7391c9334bc..d2a1fd73d70 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/VilkaarsvurderingKlient.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/VilkaarsvurderingKlient.kt @@ -20,10 +20,15 @@ interface VilkaarsvurderingKlient { ): VilkaarsvurderingDto? } -class VilkaarsvurderingKlientException(override val message: String, override val cause: Throwable) : - Exception(message, cause) +class VilkaarsvurderingKlientException( + override val message: String, + override val cause: Throwable, +) : Exception(message, cause) -class VilkaarsvurderingKlientImpl(config: Config, httpClient: HttpClient) : VilkaarsvurderingKlient { +class VilkaarsvurderingKlientImpl( + config: Config, + httpClient: HttpClient, +) : VilkaarsvurderingKlient { private val logger = LoggerFactory.getLogger(VilkaarsvurderingKlientImpl::class.java) private val azureAdClient = AzureAdClient(config) private val downstreamResourceClient = DownstreamResourceClient(azureAdClient, httpClient) @@ -45,8 +50,7 @@ class VilkaarsvurderingKlientImpl(config: Config, httpClient: HttpClient) : Vilk url = "$resourceUrl/api/vilkaarsvurdering/$behandlingId", ), brukerTokenInfo = brukerTokenInfo, - ) - .mapBoth( + ).mapBoth( success = { json -> json.response?.let { objectMapper.readValue(it.toString()) } }, failure = { throwableErrorMessage -> throw throwableErrorMessage }, ) diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/metrics/VedtakMetrics.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/metrics/VedtakMetrics.kt index 1a2c0acdb02..0f5c386d51c 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/metrics/VedtakMetrics.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/metrics/VedtakMetrics.kt @@ -12,7 +12,8 @@ class VedtakMetrics( private val logger = LoggerFactory.getLogger(this::class.java) val loependeVedtak by lazy { - Gauge.build("etterlatte_vedtak_loepende", "Løpende vedtak for etterlatte ytelser") + Gauge + .build("etterlatte_vedtak_loepende", "Løpende vedtak for etterlatte ytelser") .labelNames("saktype") .register(registry) } diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/metrics/VedtakMetrikkerDao.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/metrics/VedtakMetrikkerDao.kt index f0230068907..9266f21254a 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/metrics/VedtakMetrikkerDao.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/metrics/VedtakMetrikkerDao.kt @@ -5,7 +5,9 @@ import no.nav.etterlatte.libs.database.toList import java.sql.ResultSet import javax.sql.DataSource -class VedtakMetrikkerDao(private val dataSource: DataSource) { +class VedtakMetrikkerDao( + private val dataSource: DataSource, +) { companion object { fun using(datasource: DataSource): VedtakMetrikkerDao = VedtakMetrikkerDao(datasource) } diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/outbox/OutboxRepository.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/outbox/OutboxRepository.kt index 1d4ba73248b..720dfe9fba7 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/outbox/OutboxRepository.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/outbox/OutboxRepository.kt @@ -6,9 +6,11 @@ import no.nav.etterlatte.libs.database.transaction import java.util.UUID import javax.sql.DataSource -class OutboxRepository(private val datasource: DataSource) { - fun hentUpubliserte(): List { - return datasource.transaction { tx -> +class OutboxRepository( + private val datasource: DataSource, +) { + fun hentUpubliserte(): List = + datasource.transaction { tx -> queryOf( """ SELECT * FROM outbox_vedtakshendelse @@ -17,7 +19,6 @@ class OutboxRepository(private val datasource: DataSource) { """.trimIndent(), ).let { query -> tx.run(query.map { row -> row.toOutboxItem() }.asList) } } - } fun merkSomPublisert(id: UUID) { datasource.transaction { tx -> diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/outbox/OutboxService.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/outbox/OutboxService.kt index 7b23ce46012..710c9417465 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/outbox/OutboxService.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/outbox/OutboxService.kt @@ -74,12 +74,11 @@ internal fun Vedtak.typeToEksternApi(): String { } } -internal fun SakType.toEksternApi(): String { - return when (this) { +internal fun SakType.toEksternApi(): String = + when (this) { SakType.BARNEPENSJON -> "BP" SakType.OMSTILLINGSSTOENAD -> "OMS" } -} internal data class Vedtakshendelse( val ident: String, diff --git a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakBehandlingServiceTest.kt b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakBehandlingServiceTest.kt index f85842bc99c..42b2e8b9d05 100644 --- a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakBehandlingServiceTest.kt +++ b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakBehandlingServiceTest.kt @@ -71,7 +71,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class VedtakBehandlingServiceTest(private val dataSource: DataSource) { +internal class VedtakBehandlingServiceTest( + private val dataSource: DataSource, +) { private lateinit var repository: VedtaksvurderingRepository private val beregningKlientMock = mockk() @@ -1255,7 +1257,8 @@ internal class VedtakBehandlingServiceTest(private val dataSource: DataSource) { val behandlingId = randomUUID() runBlocking { val oppretta = - repository.opprettVedtak(opprettVedtak(behandlingId = behandlingId)) + repository + .opprettVedtak(opprettVedtak(behandlingId = behandlingId)) .let { repository.fattVedtak(behandlingId, VedtakFattet(SAKSBEHANDLER_1, "0001", Tidspunkt.now())) } Assertions.assertEquals(oppretta.status, VedtakStatus.FATTET_VEDTAK) val tilbakestilt = service.tilbakestillIkkeIverksatteVedtak(behandlingId) diff --git a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakKlageServiceTest.kt b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakKlageServiceTest.kt index 95fcef4ce36..88f9b31ba63 100644 --- a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakKlageServiceTest.kt +++ b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakKlageServiceTest.kt @@ -39,7 +39,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -internal class VedtakKlageServiceTest(dataSource: DataSource) { +internal class VedtakKlageServiceTest( + dataSource: DataSource, +) { private val vedtaksvurderingRepository = VedtaksvurderingRepository(dataSource) private val vedtaksvurderingRapidService = mockk() private val vedtakKlageService = VedtakKlageService(vedtaksvurderingRepository, vedtaksvurderingRapidService) @@ -234,8 +236,8 @@ internal class VedtakKlageServiceTest(dataSource: DataSource) { brev = KlageVedtaksbrev(brevId = 1L), ) - private fun klage(utfall: KlageUtfallMedData? = null): Klage { - return Klage( + private fun klage(utfall: KlageUtfallMedData? = null): Klage = + Klage( UUID.randomUUID(), Sak(FNR_1, SakType.BARNEPENSJON, 1L, ENHET_1), Tidspunkt.now(), @@ -249,7 +251,6 @@ internal class VedtakKlageServiceTest(dataSource: DataSource) { aarsakTilAvbrytelse = null, initieltUtfall = null, ) - } private fun vedtakInnholdToKlage(vedtak: Vedtak) = deserialize((vedtak.innhold as VedtakInnhold.Klage).klage.toJson()) } diff --git a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakstidslinjeTest.kt b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakstidslinjeTest.kt index 63071d21cba..8fc9366ebfc 100644 --- a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakstidslinjeTest.kt +++ b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakstidslinjeTest.kt @@ -770,8 +770,8 @@ private fun lagVedtak( vedtakFattetDato: Tidspunkt = Tidspunkt.now(), utbetalingsperioder: List = emptyList(), opphoerFraOgMed: YearMonth? = null, -): Vedtak { - return Vedtak( +): Vedtak = + Vedtak( id = id, sakId = 1L, sakType = SakType.BARNEPENSJON, @@ -807,7 +807,6 @@ private fun lagVedtak( }, ), ) -} private fun lagStandardVedtakMedEnAapenUtbetalingsperiode( id: Long, diff --git a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRepositoryTest.kt b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRepositoryTest.kt index dcdb08bb064..a66c5e890dc 100644 --- a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRepositoryTest.kt +++ b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRepositoryTest.kt @@ -34,7 +34,9 @@ import java.time.YearMonth import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) -internal class VedtaksvurderingRepositoryTest(private val dataSource: DataSource) { +internal class VedtaksvurderingRepositoryTest( + private val dataSource: DataSource, +) { private lateinit var repository: VedtaksvurderingRepository companion object { @@ -370,8 +372,7 @@ internal class VedtaksvurderingRepositoryTest(private val dataSource: DataSource virkningstidspunkt = YearMonth.of(2024, Month.JUNE), status = VedtakStatus.TIL_SAMORDNING, ), - ) - .map { repository.opprettVedtak(it) } + ).map { repository.opprettVedtak(it) } .forEach { repository.iverksattVedtak(it.behandlingId) } val results = repository.hentFerdigstilteVedtak(soeker2, SakType.BARNEPENSJON) diff --git a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRouteTest.kt b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRouteTest.kt index 872d3db9d2b..8305d3ce321 100644 --- a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRouteTest.kt +++ b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRouteTest.kt @@ -179,13 +179,14 @@ internal class VedtaksvurderingRouteTest { } val vedtak = - client.get("/api/vedtak/${UUID.randomUUID()}") { - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - header(HttpHeaders.Authorization, "Bearer $token") - }.let { - it.status shouldBe HttpStatusCode.OK - deserialize(it.bodyAsText()) - } + client + .get("/api/vedtak/${UUID.randomUUID()}") { + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + header(HttpHeaders.Authorization, "Bearer $token") + }.let { + it.status shouldBe HttpStatusCode.OK + deserialize(it.bodyAsText()) + } with(vedtak) { id shouldBe opprettetVedtak.id @@ -233,13 +234,14 @@ internal class VedtaksvurderingRouteTest { } val vedtak = - client.get("/api/vedtak/${UUID.randomUUID()}") { - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - header(HttpHeaders.Authorization, "Bearer $token") - }.let { - it.status shouldBe HttpStatusCode.OK - deserialize(it.bodyAsText()) - } + client + .get("/api/vedtak/${UUID.randomUUID()}") { + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + header(HttpHeaders.Authorization, "Bearer $token") + }.let { + it.status shouldBe HttpStatusCode.OK + deserialize(it.bodyAsText()) + } with(vedtak) { id shouldBe opprettetVedtak.id @@ -287,13 +289,14 @@ internal class VedtaksvurderingRouteTest { } val vedtak = - client.get("/api/vedtak/${UUID.randomUUID()}") { - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - header(HttpHeaders.Authorization, "Bearer $token") - }.let { - it.status shouldBe HttpStatusCode.OK - deserialize(it.bodyAsText()) - } + client + .get("/api/vedtak/${UUID.randomUUID()}") { + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + header(HttpHeaders.Authorization, "Bearer $token") + }.let { + it.status shouldBe HttpStatusCode.OK + deserialize(it.bodyAsText()) + } with(vedtak) { id shouldBe opprettetVedtak.id @@ -335,13 +338,14 @@ internal class VedtaksvurderingRouteTest { } val vedtaksammendrag = - client.get("/api/vedtak/${UUID.randomUUID()}/sammendrag") { - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - header(HttpHeaders.Authorization, "Bearer $token") - }.let { - it.status shouldBe HttpStatusCode.OK - deserialize(it.bodyAsText()) - } + client + .get("/api/vedtak/${UUID.randomUUID()}/sammendrag") { + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + header(HttpHeaders.Authorization, "Bearer $token") + }.let { + it.status shouldBe HttpStatusCode.OK + deserialize(it.bodyAsText()) + } vedtaksammendrag.id shouldBe attestertVedtak.id.toString() vedtaksammendrag.behandlingId shouldBe attestertVedtak.behandlingId @@ -375,13 +379,14 @@ internal class VedtaksvurderingRouteTest { } val hentetLoependeYtelse = - client.get("/api/vedtak/loepende/$sakId?dato=${loependeYtelse.dato}") { - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - header(HttpHeaders.Authorization, "Bearer $token") - }.let { - it.status shouldBe HttpStatusCode.OK - deserialize(it.bodyAsText()) - } + client + .get("/api/vedtak/loepende/$sakId?dato=${loependeYtelse.dato}") { + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + header(HttpHeaders.Authorization, "Bearer $token") + }.let { + it.status shouldBe HttpStatusCode.OK + deserialize(it.bodyAsText()) + } hentetLoependeYtelse.erLoepende shouldBe loependeYtelse.erLoepende hentetLoependeYtelse.dato shouldBe loependeYtelse.dato @@ -409,13 +414,14 @@ internal class VedtaksvurderingRouteTest { } val vedtak = - client.post("/api/vedtak/${UUID.randomUUID()}/upsert") { - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - header(HttpHeaders.Authorization, "Bearer $token") - }.let { - it.status shouldBe HttpStatusCode.OK - deserialize(it.bodyAsText()) - } + client + .post("/api/vedtak/${UUID.randomUUID()}/upsert") { + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + header(HttpHeaders.Authorization, "Bearer $token") + }.let { + it.status shouldBe HttpStatusCode.OK + deserialize(it.bodyAsText()) + } with(vedtak) { id shouldBe opprettetVedtak.id @@ -472,13 +478,14 @@ internal class VedtaksvurderingRouteTest { } val vedtak = - client.post("/api/vedtak/${UUID.randomUUID()}/fattvedtak") { - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - header(HttpHeaders.Authorization, "Bearer $token") - }.let { - it.status shouldBe HttpStatusCode.OK - deserialize(it.bodyAsText()) - } + client + .post("/api/vedtak/${UUID.randomUUID()}/fattvedtak") { + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + header(HttpHeaders.Authorization, "Bearer $token") + }.let { + it.status shouldBe HttpStatusCode.OK + deserialize(it.bodyAsText()) + } with(vedtak) { id shouldBe fattetVedtak.id @@ -538,14 +545,15 @@ internal class VedtaksvurderingRouteTest { } val vedtakDto = - client.post("/api/vedtak/${UUID.randomUUID()}/attester") { - setBody(attestertVedtakKommentar.toJson()) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - header(HttpHeaders.Authorization, "Bearer $token") - }.let { - it.status shouldBe HttpStatusCode.OK - deserialize(it.bodyAsText()) - } + client + .post("/api/vedtak/${UUID.randomUUID()}/attester") { + setBody(attestertVedtakKommentar.toJson()) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + header(HttpHeaders.Authorization, "Bearer $token") + }.let { + it.status shouldBe HttpStatusCode.OK + deserialize(it.bodyAsText()) + } with(vedtakDto) { id shouldBe attestertVedtak.id @@ -605,14 +613,15 @@ internal class VedtaksvurderingRouteTest { } val vedtak = - client.post("/api/vedtak/${UUID.randomUUID()}/underkjenn") { - setBody(begrunnelse.toJson()) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - header(HttpHeaders.Authorization, "Bearer $token") - }.let { - it.status shouldBe HttpStatusCode.OK - deserialize(it.bodyAsText()) - } + client + .post("/api/vedtak/${UUID.randomUUID()}/underkjenn") { + setBody(begrunnelse.toJson()) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + header(HttpHeaders.Authorization, "Bearer $token") + }.let { + it.status shouldBe HttpStatusCode.OK + deserialize(it.bodyAsText()) + } with(vedtak) { id shouldBe underkjentVedtak.id @@ -667,12 +676,13 @@ internal class VedtaksvurderingRouteTest { ) } - client.patch("/api/vedtak/${UUID.randomUUID()}/tilbakestill") { - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - header(HttpHeaders.Authorization, "Bearer $token") - }.let { - it.status shouldBe HttpStatusCode.OK - } + client + .patch("/api/vedtak/${UUID.randomUUID()}/tilbakestill") { + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + header(HttpHeaders.Authorization, "Bearer $token") + }.let { + it.status shouldBe HttpStatusCode.OK + } coVerify(exactly = 1) { behandlingKlient.harTilgangTilBehandling(any(), any(), any()) @@ -702,14 +712,15 @@ internal class VedtaksvurderingRouteTest { ) } val vedtakDto: VedtakDto = - client.post("/vedtak/klage/${klage.id}/upsert") { - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - header(HttpHeaders.Authorization, "Bearer $token") - setBody(klage.toJson()) - }.let { - it.status shouldBe HttpStatusCode.OK - deserialize(it.bodyAsText()) - } + client + .post("/vedtak/klage/${klage.id}/upsert") { + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + header(HttpHeaders.Authorization, "Bearer $token") + setBody(klage.toJson()) + }.let { + it.status shouldBe HttpStatusCode.OK + deserialize(it.bodyAsText()) + } vedtakDto.id shouldBe vedtakKlage.id coVerify(exactly = 1) { @@ -723,8 +734,8 @@ internal class VedtaksvurderingRouteTest { private val token: String by lazy { server.issueSaksbehandlerToken(navIdent = SAKSBEHANDLER_1) } - private fun klage(): Klage { - return Klage( + private fun klage(): Klage = + Klage( UUID.randomUUID(), Sak("ident", SakType.BARNEPENSJON, 1L, "einheit"), Tidspunkt.now(), @@ -738,5 +749,4 @@ internal class VedtaksvurderingRouteTest { aarsakTilAvbrytelse = null, initieltUtfall = null, ) - } } diff --git a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/grunnlag/GrunnlagVersjonValideringTest.kt b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/grunnlag/GrunnlagVersjonValideringTest.kt index 2c169cdbb59..8f85107d749 100644 --- a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/grunnlag/GrunnlagVersjonValideringTest.kt +++ b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/grunnlag/GrunnlagVersjonValideringTest.kt @@ -210,18 +210,16 @@ internal class GrunnlagVersjonValideringTest { } } -private fun mockTrygdetidDtoUtenDiff(): TrygdetidDto { - return mockk { +private fun mockTrygdetidDtoUtenDiff(): TrygdetidDto = + mockk { every { opplysningerDifferanse } returns OpplysningerDifferanse(false, mockk()) } -} -private fun mockTrygdetidDtoMedDiff(): TrygdetidDto { - return mockk { +private fun mockTrygdetidDtoMedDiff(): TrygdetidDto = + mockk { every { opplysningerDifferanse } returns OpplysningerDifferanse(true, mockk()) } -} diff --git a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/metrics/VedtakMetricsTest.kt b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/metrics/VedtakMetricsTest.kt index fb6f2a7ade4..b854c880050 100644 --- a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/metrics/VedtakMetricsTest.kt +++ b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/metrics/VedtakMetricsTest.kt @@ -19,7 +19,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -class VedtakMetricsTest(private val dataSource: DataSource) { +class VedtakMetricsTest( + private val dataSource: DataSource, +) { private lateinit var vedtakRepo: VedtaksvurderingRepository private lateinit var vedtakMetrikkerDao: VedtakMetrikkerDao @@ -40,13 +42,21 @@ class VedtakMetricsTest(private val dataSource: DataSource) { @Test fun `Metrikker for loepende vedtak skal ha labels`() { - val metrikker = vedtakMetrics.loependeVedtak.collect().first().samples + val metrikker = + vedtakMetrics.loependeVedtak + .collect() + .first() + .samples metrikker.first().labelNames shouldContainExactly listOf("saktype") } @Test fun `Metrikker for loepende vedtak skal ha riktig antall`() { - val metrikker = vedtakMetrics.loependeVedtak.collect().first().samples + val metrikker = + vedtakMetrics.loependeVedtak + .collect() + .first() + .samples metrikker.first { it.labelValues[0] == SakType.BARNEPENSJON.name }.value shouldBe 2 metrikker.first { it.labelValues[0] == SakType.OMSTILLINGSSTOENAD.name }.value shouldBe 1 } diff --git a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/migrering/AutomatiskBehandlingRoutesKtTest.kt b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/migrering/AutomatiskBehandlingRoutesKtTest.kt index ffbd508e1bc..08a48cb3c77 100644 --- a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/migrering/AutomatiskBehandlingRoutesKtTest.kt +++ b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/migrering/AutomatiskBehandlingRoutesKtTest.kt @@ -126,13 +126,14 @@ internal class AutomatiskBehandlingRoutesKtTest { } val respons = - client.post("/api/vedtak/1/$behandlingId/automatisk") { - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - header(HttpHeaders.Authorization, "Bearer $token") - }.let { - it.status shouldBe HttpStatusCode.OK - deserialize(it.bodyAsText()) - } + client + .post("/api/vedtak/1/$behandlingId/automatisk") { + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + header(HttpHeaders.Authorization, "Bearer $token") + }.let { + it.status shouldBe HttpStatusCode.OK + deserialize(it.bodyAsText()) + } assertEquals(respons.vedtak.id, opprettetVedtak.id) assertEquals(respons.rapidInfo1.vedtakhendelse, VedtakKafkaHendelseHendelseType.FATTET) @@ -202,14 +203,15 @@ internal class AutomatiskBehandlingRoutesKtTest { } val respons = - client.post("/api/vedtak/1/$behandlingId/automatisk/stegvis") { - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - header(HttpHeaders.Authorization, "Bearer $token") - setBody(MigreringKjoringVariant.FULL_KJORING.toJson()) - }.let { - it.status shouldBe HttpStatusCode.OK - deserialize(it.bodyAsText()) - } + client + .post("/api/vedtak/1/$behandlingId/automatisk/stegvis") { + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + header(HttpHeaders.Authorization, "Bearer $token") + setBody(MigreringKjoringVariant.FULL_KJORING.toJson()) + }.let { + it.status shouldBe HttpStatusCode.OK + deserialize(it.bodyAsText()) + } assertEquals(respons.vedtak.id, opprettetVedtak.id) assertEquals(respons.rapidInfo1.vedtakhendelse, VedtakKafkaHendelseHendelseType.FATTET) @@ -257,14 +259,15 @@ internal class AutomatiskBehandlingRoutesKtTest { } val respons = - client.post("/api/vedtak/1/$behandlingId/automatisk/stegvis") { - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - header(HttpHeaders.Authorization, "Bearer $token") - setBody(MigreringKjoringVariant.MED_PAUSE.toJson()) - }.let { - it.status shouldBe HttpStatusCode.OK - deserialize(it.bodyAsText()) - } + client + .post("/api/vedtak/1/$behandlingId/automatisk/stegvis") { + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + header(HttpHeaders.Authorization, "Bearer $token") + setBody(MigreringKjoringVariant.MED_PAUSE.toJson()) + }.let { + it.status shouldBe HttpStatusCode.OK + deserialize(it.bodyAsText()) + } assertEquals(respons.vedtak.id, opprettetVedtak.id) @@ -313,14 +316,15 @@ internal class AutomatiskBehandlingRoutesKtTest { } val respons = - client.post("/api/vedtak/1/$behandlingId/automatisk/stegvis") { - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - header(HttpHeaders.Authorization, "Bearer $token") - setBody(MigreringKjoringVariant.FORTSETT_ETTER_PAUSE.toJson()) - }.let { - it.status shouldBe HttpStatusCode.OK - deserialize(it.bodyAsText()) - } + client + .post("/api/vedtak/1/$behandlingId/automatisk/stegvis") { + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + header(HttpHeaders.Authorization, "Bearer $token") + setBody(MigreringKjoringVariant.FORTSETT_ETTER_PAUSE.toJson()) + }.let { + it.status shouldBe HttpStatusCode.OK + deserialize(it.bodyAsText()) + } assertEquals(respons.vedtak.id, opprettetVedtak.id) diff --git a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/outbox/OutboxIntegrationTest.kt b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/outbox/OutboxIntegrationTest.kt index 502c01e6d2d..16a543cbb4f 100644 --- a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/outbox/OutboxIntegrationTest.kt +++ b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/outbox/OutboxIntegrationTest.kt @@ -25,7 +25,9 @@ import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) @ExtendWith(DatabaseExtension::class) -class OutboxIntegrationTest(private val dataSource: DataSource) { +class OutboxIntegrationTest( + private val dataSource: DataSource, +) { private val testProdusent = TestProdusent() private val vedtaksvurderingRepository = VedtaksvurderingRepository(dataSource) private val vedtaksvurderingService = VedtaksvurderingService(vedtaksvurderingRepository) @@ -105,7 +107,8 @@ class OutboxIntegrationTest(private val dataSource: DataSource) { // Verifiser at hendelsene er merket som publisert dataSource.connection.use { conn -> conn.createStatement().use { stmt -> - stmt.executeQuery("SELECT COUNT(1) FROM outbox_vedtakshendelse WHERE publisert = false") + stmt + .executeQuery("SELECT COUNT(1) FROM outbox_vedtakshendelse WHERE publisert = false") .single { getLong(1) } shouldBe 0 } } diff --git a/apps/etterlatte-vilkaarsvurdering-kafka/src/main/kotlin/no/nav/etterlatte/Application.kt b/apps/etterlatte-vilkaarsvurdering-kafka/src/main/kotlin/no/nav/etterlatte/Application.kt index ae775e000ea..deac1a2d0f9 100644 --- a/apps/etterlatte-vilkaarsvurdering-kafka/src/main/kotlin/no/nav/etterlatte/Application.kt +++ b/apps/etterlatte-vilkaarsvurdering-kafka/src/main/kotlin/no/nav/etterlatte/Application.kt @@ -9,9 +9,11 @@ import no.nav.helse.rapids_rivers.RapidApplication fun main() { val rapidEnv = getRapidEnv() - RapidApplication.create(rapidEnv).also { rapidsConnection -> - val vilkaarsvurderingService = AppBuilder(Miljoevariabler(rapidEnv)).lagVilkaarsvurderingKlient() - VilkaarsvurderingRiver(rapidsConnection, vilkaarsvurderingService) - TidshendelseRiver(rapidsConnection, vilkaarsvurderingService) - }.start() + RapidApplication + .create(rapidEnv) + .also { rapidsConnection -> + val vilkaarsvurderingService = AppBuilder(Miljoevariabler(rapidEnv)).lagVilkaarsvurderingKlient() + VilkaarsvurderingRiver(rapidsConnection, vilkaarsvurderingService) + TidshendelseRiver(rapidsConnection, vilkaarsvurderingService) + }.start() } diff --git a/apps/etterlatte-vilkaarsvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/AppBuilder.kt b/apps/etterlatte-vilkaarsvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/AppBuilder.kt index 97767804cad..d89a9ac055d 100644 --- a/apps/etterlatte-vilkaarsvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/AppBuilder.kt +++ b/apps/etterlatte-vilkaarsvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/AppBuilder.kt @@ -6,7 +6,9 @@ import no.nav.etterlatte.libs.common.Miljoevariabler import no.nav.etterlatte.libs.ktor.httpClientClientCredentials import no.nav.etterlatte.vilkaarsvurdering.services.VilkaarsvurderingServiceImpl -class AppBuilder(props: Miljoevariabler) { +class AppBuilder( + props: Miljoevariabler, +) { private val config: Config = ConfigFactory.load() private val vilkaarsvurderingHttpKlient = httpClientClientCredentials( @@ -17,7 +19,6 @@ class AppBuilder(props: Miljoevariabler) { ) private val vilkaarsvurderingUrl = requireNotNull(props["ETTERLATTE_VILKAARSVURDERING_URL"]) - fun lagVilkaarsvurderingKlient(): VilkaarsvurderingServiceImpl { - return VilkaarsvurderingServiceImpl(vilkaarsvurderingHttpKlient, vilkaarsvurderingUrl) - } + fun lagVilkaarsvurderingKlient(): VilkaarsvurderingServiceImpl = + VilkaarsvurderingServiceImpl(vilkaarsvurderingHttpKlient, vilkaarsvurderingUrl) } diff --git a/apps/etterlatte-vilkaarsvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRiver.kt b/apps/etterlatte-vilkaarsvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRiver.kt index 1334eda9611..4df73fd2252 100644 --- a/apps/etterlatte-vilkaarsvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRiver.kt +++ b/apps/etterlatte-vilkaarsvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRiver.kt @@ -18,8 +18,7 @@ import org.slf4j.LoggerFactory internal class VilkaarsvurderingRiver( rapidsConnection: RapidsConnection, private val vilkaarsvurderingService: VilkaarsvurderingService, -) : - ListenerMedLoggingOgFeilhaandtering() { +) : ListenerMedLoggingOgFeilhaandtering() { private val logger = LoggerFactory.getLogger(VilkaarsvurderingRiver::class.java) init { diff --git a/apps/etterlatte-vilkaarsvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/services/VilkaarsvurderingService.kt b/apps/etterlatte-vilkaarsvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/services/VilkaarsvurderingService.kt index f77f65a1818..ff9d0ca7348 100644 --- a/apps/etterlatte-vilkaarsvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/services/VilkaarsvurderingService.kt +++ b/apps/etterlatte-vilkaarsvurdering-kafka/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/services/VilkaarsvurderingService.kt @@ -30,8 +30,10 @@ interface VilkaarsvurderingService { fun harRettUtenTidsbegrensning(behandlingId: String): Boolean } -class VilkaarsvurderingServiceImpl(private val vilkaarsvurderingKlient: HttpClient, private val url: String) : - VilkaarsvurderingService { +class VilkaarsvurderingServiceImpl( + private val vilkaarsvurderingKlient: HttpClient, + private val url: String, +) : VilkaarsvurderingService { override fun kopierForrigeVilkaarsvurdering( behandlingId: UUID, behandlingViOmregnerFra: UUID, @@ -60,13 +62,15 @@ class VilkaarsvurderingServiceImpl(private val vilkaarsvurderingKlient: HttpClie override fun harMigrertYrkesskadefordel(behandlingId: String): Boolean = runBlocking { - vilkaarsvurderingKlient.get("$url/api/vilkaarsvurdering/$behandlingId/migrert-yrkesskadefordel") + vilkaarsvurderingKlient + .get("$url/api/vilkaarsvurdering/$behandlingId/migrert-yrkesskadefordel") .body>()["migrertYrkesskadefordel"] as Boolean } override fun harRettUtenTidsbegrensning(behandlingId: String): Boolean = runBlocking { - vilkaarsvurderingKlient.get("$url/api/vilkaarsvurdering/$behandlingId/rett-uten-tidsbegrensning") + vilkaarsvurderingKlient + .get("$url/api/vilkaarsvurdering/$behandlingId/rett-uten-tidsbegrensning") .body>()["rettUtenTidsbegrensning"] as Boolean } } diff --git a/apps/etterlatte-vilkaarsvurdering-kafka/src/test/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRiverTest.kt b/apps/etterlatte-vilkaarsvurdering-kafka/src/test/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRiverTest.kt index 6026a2667ce..256a46b7979 100644 --- a/apps/etterlatte-vilkaarsvurdering-kafka/src/test/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRiverTest.kt +++ b/apps/etterlatte-vilkaarsvurdering-kafka/src/test/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRiverTest.kt @@ -29,14 +29,15 @@ internal class VilkaarsvurderingRiverTest { val behandlingViOmregnerFra = UUID.randomUUID() val melding = - JsonMessage.newMessage( - mapOf( - ReguleringHendelseType.BEHANDLING_OPPRETTA.lagParMedEventNameKey(), - SAK_ID_KEY to 1, - BEHANDLING_ID_KEY to behandlingId, - BEHANDLING_VI_OMREGNER_FRA_KEY to behandlingViOmregnerFra, - ), - ).toJson() + JsonMessage + .newMessage( + mapOf( + ReguleringHendelseType.BEHANDLING_OPPRETTA.lagParMedEventNameKey(), + SAK_ID_KEY to 1, + BEHANDLING_ID_KEY to behandlingId, + BEHANDLING_VI_OMREGNER_FRA_KEY to behandlingViOmregnerFra, + ), + ).toJson() testRapid.sendTestMessage(melding) coVerify(exactly = 1) { diff --git a/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/Application.kt b/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/Application.kt index 9efeb9f59b5..5bb57b88a08 100644 --- a/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/Application.kt +++ b/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/Application.kt @@ -12,7 +12,9 @@ fun main() { ApplicationContext().let { Server(it).run() } } -class Server(private val context: ApplicationContext) { +class Server( + private val context: ApplicationContext, +) { init { sikkerLoggOppstartOgAvslutning("etterlatte-vilkaarsvurdering") } diff --git a/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/DelvilkaarRepository.kt b/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/DelvilkaarRepository.kt index 775e6556a01..681a64b44d4 100644 --- a/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/DelvilkaarRepository.kt +++ b/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/DelvilkaarRepository.kt @@ -135,8 +135,7 @@ class DelvilkaarRepository { WHERE vilkaar_id = :vilkaar_id """, mapOf("vilkaar_id" to vilkaarId), - ) - .let { tx.run(it.asUpdate) } + ).let { tx.run(it.asUpdate) } } } diff --git a/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRepository.kt b/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRepository.kt index 75df002377b..e6a51e34fea 100644 --- a/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRepository.kt +++ b/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRepository.kt @@ -24,7 +24,10 @@ import java.time.YearMonth import java.util.UUID import javax.sql.DataSource -class VilkaarsvurderingRepository(private val ds: DataSource, private val delvilkaarRepository: DelvilkaarRepository) { +class VilkaarsvurderingRepository( + private val ds: DataSource, + private val delvilkaarRepository: DelvilkaarRepository, +) { private val logger = LoggerFactory.getLogger(VilkaarsvurderingRepository::class.java) fun hent(behandlingId: UUID): Vilkaarsvurdering? = @@ -32,10 +35,11 @@ class VilkaarsvurderingRepository(private val ds: DataSource, private val delvil queryOf(Queries.HENT_VILKAARSVURDERING, mapOf("behandling_id" to behandlingId)) .let { query -> session.run( - query.map { row -> - val vilkaarsvurderingId = row.uuid("id") - row.toVilkaarsvurdering(hentVilkaar(vilkaarsvurderingId, session)) - }.asSingle, + query + .map { row -> + val vilkaarsvurderingId = row.uuid("id") + row.toVilkaarsvurdering(hentVilkaar(vilkaarsvurderingId, session)) + }.asSingle, ) } } @@ -171,7 +175,10 @@ class VilkaarsvurderingRepository(private val ds: DataSource, private val delvil mapOf( "id" to vurdertVilkaar.vilkaarId, "resultat_kommentar" to vurdertVilkaar.vurdering.kommentar, - "resultat_tidspunkt" to vurdertVilkaar.vurdering.tidspunkt.toTidspunkt().toTimestamp(), + "resultat_tidspunkt" to + vurdertVilkaar.vurdering.tidspunkt + .toTidspunkt() + .toTimestamp(), "resultat_saksbehandler" to vurdertVilkaar.vurdering.saksbehandler, ), loggtekst = "Lagrer vilkårresultat", @@ -185,12 +192,13 @@ class VilkaarsvurderingRepository(private val ds: DataSource, private val delvil behandlingId: UUID, vilkaarId: UUID, ): Vilkaarsvurdering = - ds.transaction { tx -> - queryOf(Queries.SLETT_VILKAAR_RESULTAT, mapOf("id" to vilkaarId)) - .let { tx.run(it.asUpdate) } + ds + .transaction { tx -> + queryOf(Queries.SLETT_VILKAAR_RESULTAT, mapOf("id" to vilkaarId)) + .let { tx.run(it.asUpdate) } - delvilkaarRepository.slettDelvilkaarResultat(vilkaarId, tx) - }.let { hentNonNull(behandlingId) } + delvilkaarRepository.slettDelvilkaarResultat(vilkaarId, tx) + }.let { hentNonNull(behandlingId) } fun slettVilkaarvurdering(id: UUID) = ds.transaction { tx -> @@ -209,10 +217,10 @@ class VilkaarsvurderingRepository(private val ds: DataSource, private val delvil ): List = queryOf(Queries.HENT_VILKAAR, mapOf("vilkaarsvurdering_id" to vilkaarsvurderingId)) .let { query -> - session.run( - query.map { row -> row.toVilkaarWrapper() }.asList, - ) - .groupBy { it.vilkaarId } + session + .run( + query.map { row -> row.toVilkaarWrapper() }.asList, + ).groupBy { it.vilkaarId } .map { (vilkaarId, alleDelvilkaar) -> val hovedvilkaar = alleDelvilkaar.first { it.hovedvilkaar } val unntaksvilkaar = alleDelvilkaar.filter { !it.hovedvilkaar }.map { it.delvilkaar } @@ -255,7 +263,11 @@ class VilkaarsvurderingRepository(private val ds: DataSource, private val delvil "id" to vilkaar.id, "vilkaarsvurdering_id" to vilkaarsvurderingId, "resultat_kommentar" to vilkaar.vurdering?.kommentar, - "resultat_tidspunkt" to vilkaar.vurdering?.tidspunkt?.toTidspunkt()?.toTimestamp(), + "resultat_tidspunkt" to + vilkaar.vurdering + ?.tidspunkt + ?.toTidspunkt() + ?.toTimestamp(), "resultat_saksbehandler" to vilkaar.vurdering?.saksbehandler, ), ).let { tx.run(it.asUpdate) } diff --git a/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRoutes.kt b/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRoutes.kt index 52f6c37bbe4..2f6cf821c69 100644 --- a/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRoutes.kt +++ b/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRoutes.kt @@ -292,7 +292,9 @@ fun Route.vilkaarsvurdering( } } -data class StatusOppdatertDto(val statusOppdatert: Boolean) +data class StatusOppdatertDto( + val statusOppdatert: Boolean, +) private fun VurdertVilkaarDto.toVurdertVilkaar(saksbehandler: String) = VurdertVilkaar( @@ -337,8 +339,8 @@ fun toDto( private suspend fun PipelineContext.behandlingGrunnlagVersjon( vilkaarsvurderingService: VilkaarsvurderingService, behandlingId: UUID, -): Long { - return vilkaarsvurderingService.hentBehandlingensGrunnlag(behandlingId, brukerTokenInfo) +): Long = + vilkaarsvurderingService + .hentBehandlingensGrunnlag(behandlingId, brukerTokenInfo) .metadata .versjon -} diff --git a/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingService.kt b/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingService.kt index 3ad30535e10..33430284a3f 100644 --- a/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingService.kt +++ b/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingService.kt @@ -28,8 +28,9 @@ import no.nav.etterlatte.vilkaarsvurdering.vilkaar.OmstillingstoenadVilkaar import org.slf4j.LoggerFactory import java.util.UUID -class VirkningstidspunktIkkeSattException(behandlingId: UUID) : - RuntimeException("Virkningstidspunkt ikke satt for behandling $behandlingId") +class VirkningstidspunktIkkeSattException( + behandlingId: UUID, +) : RuntimeException("Virkningstidspunkt ikke satt for behandling $behandlingId") class VilkaarsvurderingService( private val vilkaarsvurderingRepository: VilkaarsvurderingRepository, @@ -38,31 +39,29 @@ class VilkaarsvurderingService( ) { private val logger = LoggerFactory.getLogger(VilkaarsvurderingService::class.java) - fun hentVilkaarsvurdering(behandlingId: UUID): Vilkaarsvurdering? { - return vilkaarsvurderingRepository.hent(behandlingId) - } + fun hentVilkaarsvurdering(behandlingId: UUID): Vilkaarsvurdering? = vilkaarsvurderingRepository.hent(behandlingId) - fun erMigrertYrkesskadefordel(behandlingId: UUID): Boolean { - return vilkaarsvurderingRepository.hent(behandlingId)?.vilkaar + fun erMigrertYrkesskadefordel(behandlingId: UUID): Boolean = + vilkaarsvurderingRepository + .hent(behandlingId) + ?.vilkaar ?.filter { it.hovedvilkaar.type == VilkaarType.BP_YRKESSKADE_AVDOED_2024 } ?.filter { it.hovedvilkaar.resultat == Utfall.OPPFYLT } ?.any { it.vurdering?.saksbehandler?.equals(Vedtaksloesning.PESYS.name, true) == true } ?: false - } - fun harRettUtenTidsbegrensning(behandlingId: UUID): Boolean { - return vilkaarsvurderingRepository.hent(behandlingId)?.vilkaar + fun harRettUtenTidsbegrensning(behandlingId: UUID): Boolean = + vilkaarsvurderingRepository + .hent(behandlingId) + ?.vilkaar ?.filter { it.hovedvilkaar.type == VilkaarType.OMS_RETT_UTEN_TIDSBEGRENSNING } ?.any { it.hovedvilkaar.resultat == Utfall.OPPFYLT } ?: false - } suspend fun hentBehandlingensGrunnlag( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): Grunnlag { - return hentDataForVilkaarsvurdering(behandlingId, brukerTokenInfo).second - } + ): Grunnlag = hentDataForVilkaarsvurdering(behandlingId, brukerTokenInfo).second suspend fun oppdaterTotalVurdering( behandlingId: UUID, @@ -176,7 +175,8 @@ class VilkaarsvurderingService( ) // Hvis minst ett av vilkårene mangler vurdering - slett vilkårsvurderingresultat - if (!kopierResultat || ( + if (!kopierResultat || + ( behandling.revurderingsaarsak != Revurderingaarsak.REGULERING && nyVilkaarsvurdering.vilkaar.any { v -> v.vurdering == null } ) @@ -204,11 +204,13 @@ class VilkaarsvurderingService( ) val nyeHovedvilkaarTyper = - gjeldendeVilkaarForVirkningstidspunkt.map { it.hovedvilkaar.type } + gjeldendeVilkaarForVirkningstidspunkt + .map { it.hovedvilkaar.type } .subtract(kopierteVilkaar.map { it.hovedvilkaar.type }.toSet()) val slettetHovedvilkaarTyper = - kopierteVilkaar.map { it.hovedvilkaar.type } + kopierteVilkaar + .map { it.hovedvilkaar.type } .subtract(gjeldendeVilkaarForVirkningstidspunkt.map { it.hovedvilkaar.type }.toSet()) val nyeVilkaar = @@ -383,36 +385,41 @@ class VilkaarsvurderingService( private suspend fun hentDataForVilkaarsvurdering( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, - ): Pair { - return coroutineScope { + ): Pair = + coroutineScope { val behandling = behandlingKlient.hentBehandling(behandlingId, brukerTokenInfo) val grunnlag = async { grunnlagKlient.hentGrunnlag(behandling.sak, behandlingId, brukerTokenInfo) } Pair(behandling, grunnlag.await()) } - } } class BehandlingstilstandException : IllegalStateException() -class VilkaarsvurderingTilstandException(message: String) : IllegalStateException(message) - -class VilkaarsvurderingIkkeFunnet : IkkeFunnetException( - code = "VILKAARSVURDERING_IKKE_FUNNET", - detail = "Vilkårsvurdering ikke funnet", -) - -class VilkaarsvurderingManglerResultat : UgyldigForespoerselException( - code = "VILKAARSVURDERING_MANGLER_RESULTAT", - detail = "Vilkårsvurderingen har ikke et resultat", -) - -class VirkningstidspunktSamsvarerIkke : UgyldigForespoerselException( - code = "VILKAARSVURDERING_VIRKNINGSTIDSPUNKT_SAMSVARER_IKKE", - detail = "Vilkårsvurderingen har et virkningstidspunkt som ikke samsvarer med behandling", -) - -class BehandlingVirkningstidspunktIkkeFastsatt : UgyldigForespoerselException( - code = "VILKAARSVURDERING_VIRKNINGSTIDSPUNKT_IKKE_SATT", - detail = "Virkningstidspunkt for behandlingen er ikke satt", -) +class VilkaarsvurderingTilstandException( + message: String, +) : IllegalStateException(message) + +class VilkaarsvurderingIkkeFunnet : + IkkeFunnetException( + code = "VILKAARSVURDERING_IKKE_FUNNET", + detail = "Vilkårsvurdering ikke funnet", + ) + +class VilkaarsvurderingManglerResultat : + UgyldigForespoerselException( + code = "VILKAARSVURDERING_MANGLER_RESULTAT", + detail = "Vilkårsvurderingen har ikke et resultat", + ) + +class VirkningstidspunktSamsvarerIkke : + UgyldigForespoerselException( + code = "VILKAARSVURDERING_VIRKNINGSTIDSPUNKT_SAMSVARER_IKKE", + detail = "Vilkårsvurderingen har et virkningstidspunkt som ikke samsvarer med behandling", + ) + +class BehandlingVirkningstidspunktIkkeFastsatt : + UgyldigForespoerselException( + code = "VILKAARSVURDERING_VIRKNINGSTIDSPUNKT_IKKE_SATT", + detail = "Virkningstidspunkt for behandlingen er ikke satt", + ) diff --git a/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/klienter/BehandlingKlient.kt b/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/klienter/BehandlingKlient.kt index bd85f03ba9e..a700c884c56 100644 --- a/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/klienter/BehandlingKlient.kt +++ b/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/klienter/BehandlingKlient.kt @@ -49,9 +49,15 @@ interface BehandlingKlient : BehandlingTilgangsSjekk { ): SisteIverksatteBehandling } -class BehandlingKlientException(override val message: String, override val cause: Throwable) : Exception(message, cause) - -class BehandlingKlientImpl(config: Config, httpClient: HttpClient) : BehandlingKlient { +class BehandlingKlientException( + override val message: String, + override val cause: Throwable, +) : Exception(message, cause) + +class BehandlingKlientImpl( + config: Config, + httpClient: HttpClient, +) : BehandlingKlient { private val logger = LoggerFactory.getLogger(BehandlingKlient::class.java) private val azureAdClient = AzureAdClient(config) @@ -77,8 +83,7 @@ class BehandlingKlientImpl(config: Config, httpClient: HttpClient) : BehandlingK url = "$resourceUrl/behandlinger/$behandlingId", ), brukerTokenInfo = brukerTokenInfo, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { throwableErrorMessage -> throw throwableErrorMessage }, ) diff --git a/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/klienter/GrunnlagKlient.kt b/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/klienter/GrunnlagKlient.kt index edb087d3d8e..112e73a01b2 100644 --- a/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/klienter/GrunnlagKlient.kt +++ b/apps/etterlatte-vilkaarsvurdering/src/main/kotlin/no/nav/etterlatte/vilkaarsvurdering/klienter/GrunnlagKlient.kt @@ -24,9 +24,15 @@ interface GrunnlagKlient { ): Grunnlag } -class GrunnlagKlientException(override val message: String, override val cause: Throwable) : Exception(message, cause) +class GrunnlagKlientException( + override val message: String, + override val cause: Throwable, +) : Exception(message, cause) -class GrunnlagKlientImpl(config: Config, httpClient: HttpClient) : GrunnlagKlient { +class GrunnlagKlientImpl( + config: Config, + httpClient: HttpClient, +) : GrunnlagKlient { private val logger = LoggerFactory.getLogger(GrunnlagKlient::class.java) private val azureAdClient = AzureAdClient(config) @@ -51,8 +57,7 @@ class GrunnlagKlientImpl(config: Config, httpClient: HttpClient) : GrunnlagKlien url = "$resourceUrl/grunnlag/behandling/$behandlingId", ), brukerTokenInfo = brukerTokenInfo, - ) - .mapBoth( + ).mapBoth( success = { resource -> resource.response.let { objectMapper.readValue(it.toString()) } }, failure = { throwableErrorMessage -> throw throwableErrorMessage }, ) diff --git a/apps/etterlatte-vilkaarsvurdering/src/test/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRepositoryTest.kt b/apps/etterlatte-vilkaarsvurdering/src/test/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRepositoryTest.kt index 072d44c773d..7168e03b09e 100644 --- a/apps/etterlatte-vilkaarsvurdering/src/test/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRepositoryTest.kt +++ b/apps/etterlatte-vilkaarsvurdering/src/test/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRepositoryTest.kt @@ -20,7 +20,9 @@ import java.util.UUID import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) -internal class VilkaarsvurderingRepositoryTest(ds: DataSource) { +internal class VilkaarsvurderingRepositoryTest( + ds: DataSource, +) { private val vilkaarsvurderingRepository = VilkaarsvurderingRepository(ds, DelvilkaarRepository()) @AfterEach @@ -141,7 +143,8 @@ internal class VilkaarsvurderingRepositoryTest(ds: DataSource) { saksbehandler shouldBe vurdertVilkaar.vurdering.saksbehandler } it.hovedvilkaar.resultat shouldBe Utfall.IKKE_VURDERT - it.unntaksvilkaar.first { delvilkaar -> delvilkaar.type == VilkaarType.BP_ALDER_BARN_UNNTAK_UTDANNING } + it.unntaksvilkaar + .first { delvilkaar -> delvilkaar.type == VilkaarType.BP_ALDER_BARN_UNNTAK_UTDANNING } .resultat shouldBe Utfall.IKKE_VURDERT } } @@ -182,7 +185,8 @@ internal class VilkaarsvurderingRepositoryTest(ds: DataSource) { oppdatertVilkaarsvurdering.vilkaar.first { it.id == vilkaar.id }.let { it.vurdering shouldBe null it.hovedvilkaar.resultat shouldBe null - it.unntaksvilkaar.first { delvilkaar -> delvilkaar.type == VilkaarType.BP_ALDER_BARN_UNNTAK_UTDANNING } + it.unntaksvilkaar + .first { delvilkaar -> delvilkaar.type == VilkaarType.BP_ALDER_BARN_UNNTAK_UTDANNING } .resultat shouldBe null } } @@ -230,7 +234,8 @@ internal class VilkaarsvurderingRepositoryTest(ds: DataSource) { ) val resultatVilkaar = - vilkaarsvurderingRepository.hent(behandlingId = opprettetVilkaarsvurdering.behandlingId)!! + vilkaarsvurderingRepository + .hent(behandlingId = opprettetVilkaarsvurdering.behandlingId)!! .vilkaar .first { it.hovedvilkaar.type == VilkaarType.BP_FORUTGAAENDE_MEDLEMSKAP } @@ -260,7 +265,8 @@ internal class VilkaarsvurderingRepositoryTest(ds: DataSource) { ) val resultatVilkaar = - vilkaarsvurderingRepository.hent(behandlingId = opprettetVilkaarsvurdering.behandlingId)!! + vilkaarsvurderingRepository + .hent(behandlingId = opprettetVilkaarsvurdering.behandlingId)!! .vilkaar .first { it.hovedvilkaar.type == VilkaarType.BP_FORUTGAAENDE_MEDLEMSKAP } diff --git a/apps/etterlatte-vilkaarsvurdering/src/test/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRoutesTest.kt b/apps/etterlatte-vilkaarsvurdering/src/test/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRoutesTest.kt index 6bc5ab6e082..3833b5fd039 100644 --- a/apps/etterlatte-vilkaarsvurdering/src/test/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRoutesTest.kt +++ b/apps/etterlatte-vilkaarsvurdering/src/test/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingRoutesTest.kt @@ -53,7 +53,9 @@ import java.util.UUID import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) -internal class VilkaarsvurderingRoutesTest(private val ds: DataSource) { +internal class VilkaarsvurderingRoutesTest( + private val ds: DataSource, +) { private val server = MockOAuth2Server() private val behandlingKlient = mockk() private val grunnlagKlient = mockk() @@ -288,7 +290,8 @@ internal class VilkaarsvurderingRoutesTest(private val ds: DataSource) { VurdertVilkaarDto( vilkaarId = vilkaarsvurdering - .hentVilkaarMedHovedvilkaarType(VilkaarType.BP_FORUTGAAENDE_MEDLEMSKAP_2024)?.id!!, + .hentVilkaarMedHovedvilkaarType(VilkaarType.BP_FORUTGAAENDE_MEDLEMSKAP_2024) + ?.id!!, hovedvilkaar = VilkaarTypeOgUtfall( type = VilkaarType.BP_FORUTGAAENDE_MEDLEMSKAP_2024, @@ -304,8 +307,10 @@ internal class VilkaarsvurderingRoutesTest(private val ds: DataSource) { } val vurdertVilkaar = - vilkaarsvurderingServiceImpl.hentVilkaarsvurdering(behandlingId)!! - .vilkaar.first { it.hovedvilkaar.type == vurdertVilkaarDto.hovedvilkaar.type } + vilkaarsvurderingServiceImpl + .hentVilkaarsvurdering(behandlingId)!! + .vilkaar + .first { it.hovedvilkaar.type == vurdertVilkaarDto.hovedvilkaar.type } assertNotNull(vurdertVilkaar) assertNotNull(vurdertVilkaar.vurdering) @@ -316,7 +321,8 @@ internal class VilkaarsvurderingRoutesTest(private val ds: DataSource) { VurdertVilkaarDto( vilkaarId = vilkaarsvurdering - .hentVilkaarMedHovedvilkaarType(VilkaarType.BP_FORUTGAAENDE_MEDLEMSKAP_2024)?.id!!, + .hentVilkaarMedHovedvilkaarType(VilkaarType.BP_FORUTGAAENDE_MEDLEMSKAP_2024) + ?.id!!, hovedvilkaar = VilkaarTypeOgUtfall( type = VilkaarType.BP_FORUTGAAENDE_MEDLEMSKAP_2024, @@ -339,8 +345,10 @@ internal class VilkaarsvurderingRoutesTest(private val ds: DataSource) { } val vurdertVilkaarPaaUnntak = - vilkaarsvurderingServiceImpl.hentVilkaarsvurdering(behandlingId)!! - .vilkaar.first { it.hovedvilkaar.type == vurdertVilkaarDto.hovedvilkaar.type } + vilkaarsvurderingServiceImpl + .hentVilkaarsvurdering(behandlingId)!! + .vilkaar + .first { it.hovedvilkaar.type == vurdertVilkaarDto.hovedvilkaar.type } assertEquals(Utfall.IKKE_OPPFYLT, vurdertVilkaarPaaUnntak.hovedvilkaar.resultat) assertNotNull(vurdertVilkaarPaaUnntak.vurdering) @@ -382,8 +390,10 @@ internal class VilkaarsvurderingRoutesTest(private val ds: DataSource) { } val vurdertVilkaar = - vilkaarsvurderingServiceImpl.hentVilkaarsvurdering(behandlingId)!! - .vilkaar.first { it.hovedvilkaar.type == vurdertVilkaarDto.hovedvilkaar.type } + vilkaarsvurderingServiceImpl + .hentVilkaarsvurdering(behandlingId)!! + .vilkaar + .first { it.hovedvilkaar.type == vurdertVilkaarDto.hovedvilkaar.type } assertNotNull(vurdertVilkaar) assertNotNull(vurdertVilkaar.vurdering) @@ -397,7 +407,9 @@ internal class VilkaarsvurderingRoutesTest(private val ds: DataSource) { } val vurdertVilkaarSlettet = - vilkaarsvurderingServiceImpl.hentVilkaarsvurdering(behandlingId)!!.vilkaar + vilkaarsvurderingServiceImpl + .hentVilkaarsvurdering(behandlingId)!! + .vilkaar .first { it.hovedvilkaar.type == vurdertVilkaarDto.hovedvilkaar.type } assertEquals(HttpStatusCode.OK, response.status) @@ -484,16 +496,18 @@ internal class VilkaarsvurderingRoutesTest(private val ds: DataSource) { kommentar = "Søker oppfyller vilkåret", ) - client.post("/api/vilkaarsvurdering/$behandlingId") { - setBody(vurdertVilkaarDto.toJson()) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - header(HttpHeaders.Authorization, "Bearer $token") - }.let { assertEquals(HttpStatusCode.PreconditionFailed, it.status) } - client.delete("/api/vilkaarsvurdering/$behandlingId/${vurdertVilkaarDto.vilkaarId}") { - setBody(vurdertVilkaarDto.toJson()) - header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - header(HttpHeaders.Authorization, "Bearer $token") - }.let { assertEquals(HttpStatusCode.PreconditionFailed, it.status) } + client + .post("/api/vilkaarsvurdering/$behandlingId") { + setBody(vurdertVilkaarDto.toJson()) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + header(HttpHeaders.Authorization, "Bearer $token") + }.let { assertEquals(HttpStatusCode.PreconditionFailed, it.status) } + client + .delete("/api/vilkaarsvurdering/$behandlingId/${vurdertVilkaarDto.vilkaarId}") { + setBody(vurdertVilkaarDto.toJson()) + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + header(HttpHeaders.Authorization, "Bearer $token") + }.let { assertEquals(HttpStatusCode.PreconditionFailed, it.status) } } } @@ -719,7 +733,8 @@ internal class VilkaarsvurderingRoutesTest(private val ds: DataSource) { VurdertVilkaarDto( vilkaarId = vilkaarsvurdering - .hentVilkaarMedHovedvilkaarType(VilkaarType.BP_FORUTGAAENDE_MEDLEMSKAP_2024)?.id!!, + .hentVilkaarMedHovedvilkaarType(VilkaarType.BP_FORUTGAAENDE_MEDLEMSKAP_2024) + ?.id!!, hovedvilkaar = VilkaarTypeOgUtfall( type = VilkaarType.BP_FORUTGAAENDE_MEDLEMSKAP_2024, diff --git a/apps/etterlatte-vilkaarsvurdering/src/test/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingServiceTest.kt b/apps/etterlatte-vilkaarsvurdering/src/test/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingServiceTest.kt index 27867e3c8d1..33ba1957989 100644 --- a/apps/etterlatte-vilkaarsvurdering/src/test/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingServiceTest.kt +++ b/apps/etterlatte-vilkaarsvurdering/src/test/kotlin/no/nav/etterlatte/vilkaarsvurdering/VilkaarsvurderingServiceTest.kt @@ -57,7 +57,9 @@ import java.util.UUID import javax.sql.DataSource @TestInstance(TestInstance.Lifecycle.PER_CLASS) -internal class VilkaarsvurderingServiceTest(private val ds: DataSource) { +internal class VilkaarsvurderingServiceTest( + private val ds: DataSource, +) { companion object { @RegisterExtension val dbExtension = DatabaseExtension() @@ -140,7 +142,8 @@ internal class VilkaarsvurderingServiceTest(private val ds: DataSource) { every { behandlingType } returns BehandlingType.FØRSTEGANGSBEHANDLING every { soeker } returns "10095512345" every { virkningstidspunkt } returns - VirkningstidspunktTestData.virkningstidsunkt() + VirkningstidspunktTestData + .virkningstidsunkt() .copy(dato = YearMonth.of(2024, 1)) every { revurderingsaarsak } returns null } @@ -763,8 +766,9 @@ internal class VilkaarsvurderingServiceTest(private val ds: DataSource) { ) } - private fun ikkeGjeldendeVilkaar(): List { - return BarnepensjonVilkaar2024.inngangsvilkaar() + private fun ikkeGjeldendeVilkaar(): List = + BarnepensjonVilkaar2024 + .inngangsvilkaar() .subList(0, 2) // Reduserer til de 3 første vilkårene .toMutableList() .apply { @@ -785,7 +789,6 @@ internal class VilkaarsvurderingServiceTest(private val ds: DataSource) { ), ) } - } private fun grunnlag() = GrunnlagTestData().hentOpplysningsgrunnlag() @@ -829,9 +832,7 @@ internal class VilkaarsvurderingServiceTest(private val ds: DataSource) { } } - private suspend fun opprettVilkaarsvurdering(): Vilkaarsvurdering { - return service.opprettVilkaarsvurdering(uuid, brukerTokenInfo) - } + private suspend fun opprettVilkaarsvurdering(): Vilkaarsvurdering = service.opprettVilkaarsvurdering(uuid, brukerTokenInfo) private fun vilkaarsVurderingData() = VilkaarVurderingData("en kommentar", Tidspunkt.now().toLocalDatetimeUTC(), "saksbehandler") diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index b2f771cb6d8..abd3f5c4578 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -32,7 +32,7 @@ dependencies { tasks { withType { - gradleVersion = "8.7" + gradleVersion = "8.8" } withType { diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e6441136f3d4ba8a0da8d277868979cfbc8ad796..d64cd4917707c1f8861d8cb53dd15194d4248596 100644 GIT binary patch delta 34176 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 SGW6ptSs!X7{rG*o_g?|vpSEZK delta 34118 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b82aa23a4f0..a4413138c96 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew.bat b/gradlew.bat index 25da30dbdee..93e3f59f135 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -43,11 +43,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. 1>&2 -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. goto fail @@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. 1>&2 -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. goto fail diff --git a/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/behandling/Aktivitetsplikt.kt b/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/behandling/Aktivitetsplikt.kt index 4ff90d838bc..2396cfa38e8 100644 --- a/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/behandling/Aktivitetsplikt.kt +++ b/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/behandling/Aktivitetsplikt.kt @@ -21,7 +21,9 @@ data class OpprettRevurderingForAktivitetspliktDto( val behandlingsmaaned: YearMonth, val jobbType: JobbType, ) { - enum class JobbType(val beskrivelse: String) { + enum class JobbType( + val beskrivelse: String, + ) { OMS_DOED_6MND("Vurdering av aktivitetsplikt OMS etter 6 mnd"), OMS_DOED_12MND("Vurdering av aktivitetsplikt OMS etter 12 mnd"), } diff --git a/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/behandling/BehandlingsBehov.kt b/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/behandling/BehandlingsBehov.kt index a6628eef019..36acfcd763d 100644 --- a/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/behandling/BehandlingsBehov.kt +++ b/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/behandling/BehandlingsBehov.kt @@ -9,8 +9,9 @@ data class BehandlingsBehov( val mottattDato: String, ) -class PersongalleriFeilException(message: String) : - UgyldigForespoerselException(code = "PERSONGALLERI_MAA_VAERE_GYLDIG", detail = message) +class PersongalleriFeilException( + message: String, +) : UgyldigForespoerselException(code = "PERSONGALLERI_MAA_VAERE_GYLDIG", detail = message) data class NyBehandlingRequest( val sakType: SakType, diff --git a/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/behandling/JaNeiMedBegrunnelse.kt b/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/behandling/JaNeiMedBegrunnelse.kt index 4224a23719e..532e589af3a 100644 --- a/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/behandling/JaNeiMedBegrunnelse.kt +++ b/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/behandling/JaNeiMedBegrunnelse.kt @@ -2,6 +2,9 @@ package no.nav.etterlatte.libs.common.behandling enum class JaNei { JA, NEI } -data class JaNeiMedBegrunnelse(val svar: JaNei, val begrunnelse: String) { +data class JaNeiMedBegrunnelse( + val svar: JaNei, + val begrunnelse: String, +) { fun erJa() = svar == JaNei.JA } diff --git a/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/behandling/Klage.kt b/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/behandling/Klage.kt index d766b776021..506d4fb38f4 100644 --- a/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/behandling/Klage.kt +++ b/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/behandling/Klage.kt @@ -41,33 +41,19 @@ enum class KlageStatus { ; companion object { - fun kanOppdatereFormkrav(status: KlageStatus): Boolean { - return status !== FERDIGSTILT - } + fun kanOppdatereFormkrav(status: KlageStatus): Boolean = status !== FERDIGSTILT - fun kanOppdatereUtfall(status: KlageStatus): Boolean { - return status in listOf(FORMKRAV_IKKE_OPPFYLT, FORMKRAV_OPPFYLT, UTFALL_VURDERT) - } + fun kanOppdatereUtfall(status: KlageStatus): Boolean = status in listOf(FORMKRAV_IKKE_OPPFYLT, FORMKRAV_OPPFYLT, UTFALL_VURDERT) - fun kanAvbryte(status: KlageStatus): Boolean { - return status !in listOf(FERDIGSTILT, AVBRUTT) - } + fun kanAvbryte(status: KlageStatus): Boolean = status !in listOf(FERDIGSTILT, AVBRUTT) - fun kanEndres(status: KlageStatus): Boolean { - return status in listOf(OPPRETTET, FORMKRAV_OPPFYLT, UTFALL_VURDERT) - } + fun kanEndres(status: KlageStatus): Boolean = status in listOf(OPPRETTET, FORMKRAV_OPPFYLT, UTFALL_VURDERT) - fun kanFatteVedtak(status: KlageStatus): Boolean { - return status in listOf(UTFALL_VURDERT, RETURNERT) - } + fun kanFatteVedtak(status: KlageStatus): Boolean = status in listOf(UTFALL_VURDERT, RETURNERT) - fun kanAttestereVedtak(status: KlageStatus): Boolean { - return status == FATTET_VEDTAK - } + fun kanAttestereVedtak(status: KlageStatus): Boolean = status == FATTET_VEDTAK - fun kanUnderkjenneVedtak(status: KlageStatus): Boolean { - return status == FATTET_VEDTAK - } + fun kanUnderkjenneVedtak(status: KlageStatus): Boolean = status == FATTET_VEDTAK } } @@ -257,31 +243,24 @@ data class Klage( ) } - private fun kanOppdatereFormkrav(): Boolean { - return KlageStatus.kanOppdatereFormkrav(this.status) - } + private fun kanOppdatereFormkrav(): Boolean = KlageStatus.kanOppdatereFormkrav(this.status) - private fun kanOppdatereUtfall(): Boolean { - return KlageStatus.kanOppdatereUtfall(this.status) - } + private fun kanOppdatereUtfall(): Boolean = KlageStatus.kanOppdatereUtfall(this.status) - fun kanFerdigstille(): Boolean { - return when (this.status) { + fun kanFerdigstille(): Boolean = + when (this.status) { KlageStatus.UTFALL_VURDERT -> { this.utfall != null } else -> false } - } private fun erFormkraveneOppfylt() = this.formkrav?.formkrav?.erFormkraveneOppfylt private fun erKlagenFramsattInnenFrist() = this.formkrav?.formkrav?.erKlagenFramsattInnenFrist - fun kanAvbryte(): Boolean { - return KlageStatus.kanAvbryte(this.status) - } + fun kanAvbryte(): Boolean = KlageStatus.kanAvbryte(this.status) fun tilBrevbakerBlankett(): BrevbakerBlankettDTO { if (this.utfall !is KlageUtfallMedData.StadfesteVedtak) { @@ -351,8 +330,8 @@ data class Klage( fun ny( sak: Sak, innkommendeDokument: InnkommendeKlage?, - ): Klage { - return Klage( + ): Klage = + Klage( id = UUID.randomUUID(), sak = sak, opprettet = Tidspunkt.now(), @@ -366,7 +345,6 @@ data class Klage( aarsakTilAvbrytelse = null, initieltUtfall = null, ) - } } } @@ -445,37 +423,34 @@ sealed class KlageUtfallMedData { override fun harSammeUtfall(other: KlageUtfallUtenBrev): Boolean = other is KlageUtfallUtenBrev.AvvistMedOmgjoering } - fun innstilling(): InnstillingTilKabal? { - return when (this) { + fun innstilling(): InnstillingTilKabal? = + when (this) { is StadfesteVedtak -> innstilling is DelvisOmgjoering -> innstilling is Omgjoering -> null is Avvist -> null is AvvistMedOmgjoering -> null } - } - fun omgjoering(): KlageOmgjoering? { - return when (this) { + fun omgjoering(): KlageOmgjoering? = + when (this) { is StadfesteVedtak -> null is DelvisOmgjoering -> omgjoering is Omgjoering -> omgjoering is Avvist -> null is AvvistMedOmgjoering -> omgjoering } - } } sealed class GyldigForYtelse { abstract val gyldigForBarnepensjon: Boolean abstract val gyldigForOmstillingsstoenad: Boolean - fun gyldigForSaktype(sakType: SakType): Boolean { - return when (sakType) { + fun gyldigForSaktype(sakType: SakType): Boolean = + when (sakType) { SakType.BARNEPENSJON -> gyldigForBarnepensjon SakType.OMSTILLINGSSTOENAD -> gyldigForOmstillingsstoenad } - } data object OmsOgBp : GyldigForYtelse() { override val gyldigForBarnepensjon = true @@ -493,7 +468,10 @@ sealed class GyldigForYtelse { } } -enum class KabalHjemmel(private val gyldigForYtelse: GyldigForYtelse, private val leseligTekst: String) { +enum class KabalHjemmel( + private val gyldigForYtelse: GyldigForYtelse, + private val leseligTekst: String, +) { FTRL_1_3(GyldigForYtelse.OmsOgBp, "Ftrl. § 1-3"), FTRL_1_3_A(GyldigForYtelse.OmsOgBp, "Ftrl. § 1-3-A"), FTRL_1_3_B(GyldigForYtelse.OmsOgBp, "Ftrl. § 1-3-B"), @@ -596,13 +574,9 @@ enum class KabalHjemmel(private val gyldigForYtelse: GyldigForYtelse, private va FTRL_17_A_8(GyldigForYtelse.KunOms, "Ftrl. § 17 A-8"), ; - fun kanBrukesForSaktype(sakType: SakType): Boolean { - return this.gyldigForYtelse.gyldigForSaktype(sakType) - } + fun kanBrukesForSaktype(sakType: SakType): Boolean = this.gyldigForYtelse.gyldigForSaktype(sakType) - fun lesbarTekst(): String { - return this.leseligTekst - } + fun lesbarTekst(): String = this.leseligTekst } enum class GrunnForOmgjoering { @@ -614,7 +588,10 @@ enum class GrunnForOmgjoering { ANNET, } -data class KlageOmgjoering(val grunnForOmgjoering: GrunnForOmgjoering, val begrunnelse: String) +data class KlageOmgjoering( + val grunnForOmgjoering: GrunnForOmgjoering, + val begrunnelse: String, +) class InnstillingTilKabal( val lovhjemmel: KabalHjemmel, @@ -623,16 +600,26 @@ class InnstillingTilKabal( val brev: KlageOversendelsebrev, ) -class InnstillingTilKabalUtenBrev(val lovhjemmel: String, internKommentar: String?, val innstillingTekst: String) { +class InnstillingTilKabalUtenBrev( + val lovhjemmel: String, + internKommentar: String?, + val innstillingTekst: String, +) { val internKommentar: String? = internKommentar get() = if (field.isNullOrBlank()) null else field } -data class KlageOversendelsebrev(val brevId: Long) +data class KlageOversendelsebrev( + val brevId: Long, +) -data class KlageVedtaksbrev(val brevId: Long) +data class KlageVedtaksbrev( + val brevId: Long, +) -data class KlageVedtak(val vedtakId: Long) +data class KlageVedtak( + val vedtakId: Long, +) @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "utfall") sealed class KlageUtfallUtenBrev { @@ -653,7 +640,7 @@ sealed class KlageUtfallUtenBrev { ) : KlageUtfallUtenBrev() @JsonTypeName("AVVIST") - class Avvist() : KlageUtfallUtenBrev() + class Avvist : KlageUtfallUtenBrev() @JsonTypeName("AVVIST_MED_OMGJOERING") data class AvvistMedOmgjoering( @@ -700,7 +687,10 @@ data class FormkravMedBeslutter( val saksbehandler: Grunnlagsopplysning.Saksbehandler, ) -data class KlageOversendelseDto(val klage: Klage, val ekstraData: EkstradataInnstilling) +data class KlageOversendelseDto( + val klage: Klage, + val ekstraData: EkstradataInnstilling, +) @JsonIgnoreProperties(ignoreUnknown = true) data class Mottaker( diff --git a/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/omregning/OpprettOmregningResponse.kt b/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/omregning/OpprettOmregningResponse.kt index 60d26ab55da..6b8aaf61589 100644 --- a/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/omregning/OpprettOmregningResponse.kt +++ b/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/omregning/OpprettOmregningResponse.kt @@ -3,4 +3,8 @@ package no.nav.etterlatte.libs.common.omregning import no.nav.etterlatte.libs.common.behandling.SakType import java.util.UUID -data class OpprettOmregningResponse(val behandlingId: UUID, val forrigeBehandlingId: UUID, val sakType: SakType) +data class OpprettOmregningResponse( + val behandlingId: UUID, + val forrigeBehandlingId: UUID, + val sakType: SakType, +) diff --git a/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/sak/ReguleringFeiletHendelse.kt b/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/sak/ReguleringFeiletHendelse.kt index 7fb69676fdd..7741fd28b24 100644 --- a/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/sak/ReguleringFeiletHendelse.kt +++ b/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/sak/ReguleringFeiletHendelse.kt @@ -1,3 +1,6 @@ package no.nav.etterlatte.libs.common.sak -data class ReguleringFeiletHendelse(val sakId: Long, val kjoering: String) +data class ReguleringFeiletHendelse( + val sakId: Long, + val kjoering: String, +) diff --git a/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/sak/SakIDListe.kt b/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/sak/SakIDListe.kt index 8001ef6322e..1bb5b7bc431 100644 --- a/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/sak/SakIDListe.kt +++ b/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/sak/SakIDListe.kt @@ -12,7 +12,10 @@ data class SakIDListe( fun aapneBehandlingerForSak(id: Long): List = aapneBehandlinger.filter { it.sakId == id }.map { it.behandlingId } } -data class BehandlingOgSak(val behandlingId: UUID, val sakId: Long) +data class BehandlingOgSak( + val behandlingId: UUID, + val sakId: Long, +) data class HentSakerRequest( val spesifikkeSaker: List, diff --git a/libs/etterlatte-behandling-model/src/test/kotlin/no/nav/etterlatte/libs/common/behandling/KlageTest.kt b/libs/etterlatte-behandling-model/src/test/kotlin/no/nav/etterlatte/libs/common/behandling/KlageTest.kt index e31af3031f5..398b7e49e9e 100644 --- a/libs/etterlatte-behandling-model/src/test/kotlin/no/nav/etterlatte/libs/common/behandling/KlageTest.kt +++ b/libs/etterlatte-behandling-model/src/test/kotlin/no/nav/etterlatte/libs/common/behandling/KlageTest.kt @@ -62,7 +62,8 @@ class KlageTest { val sak = Sak(ident = "bruker", sakType = SakType.BARNEPENSJON, id = 1, enhet = "1337") val saksbehandler = Grunnlagsopplysning.Saksbehandler.create("en saksbehandler") val klage = - Klage.ny(sak, null) + Klage + .ny(sak, null) .copy( utfall = KlageUtfallMedData.Omgjoering( @@ -123,8 +124,8 @@ class KlageTest { private fun formkrav( erFormkraveneOppfylt: JaNei = JaNei.NEI, erKlagenFramsattInnenFrist: JaNei = JaNei.NEI, - ): Formkrav { - return Formkrav( + ): Formkrav = + Formkrav( vedtaketKlagenGjelder = null, erKlagerPartISaken = JaNei.NEI, erKlagenSignert = JaNei.NEI, @@ -132,10 +133,9 @@ class KlageTest { erKlagenFramsattInnenFrist = erKlagenFramsattInnenFrist, erFormkraveneOppfylt = erFormkraveneOppfylt, ) - } - private fun alleFormkravOppfylt(): Formkrav { - return Formkrav( + private fun alleFormkravOppfylt(): Formkrav = + Formkrav( vedtaketKlagenGjelder = VedtaketKlagenGjelder( id = "", @@ -149,5 +149,4 @@ class KlageTest { erKlagenFramsattInnenFrist = JaNei.JA, erFormkraveneOppfylt = JaNei.JA, ) - } } diff --git a/libs/etterlatte-behandling-model/src/test/kotlin/no/nav/etterlatte/libs/common/behandling/KlageUtfallMedDataTest.kt b/libs/etterlatte-behandling-model/src/test/kotlin/no/nav/etterlatte/libs/common/behandling/KlageUtfallMedDataTest.kt index acab72a2303..fb2fed9b45b 100644 --- a/libs/etterlatte-behandling-model/src/test/kotlin/no/nav/etterlatte/libs/common/behandling/KlageUtfallMedDataTest.kt +++ b/libs/etterlatte-behandling-model/src/test/kotlin/no/nav/etterlatte/libs/common/behandling/KlageUtfallMedDataTest.kt @@ -14,10 +14,11 @@ class KlageUtfallMedDataTest { @Test fun toJson() { - KlageUtfallMedData.Omgjoering( - KlageOmgjoering(GrunnForOmgjoering.FEIL_LOVANVENDELSE, "abc"), - Grunnlagsopplysning.Saksbehandler("UB40", tidspunkt), - ).toJson() shouldBeEqual + KlageUtfallMedData + .Omgjoering( + KlageOmgjoering(GrunnForOmgjoering.FEIL_LOVANVENDELSE, "abc"), + Grunnlagsopplysning.Saksbehandler("UB40", tidspunkt), + ).toJson() shouldBeEqual """ {"utfall":"OMGJOERING","omgjoering":{"grunnForOmgjoering":"FEIL_LOVANVENDELSE","begrunnelse":"abc"}, "saksbehandler":{"ident":"UB40","tidspunkt":"2024-04-05T17:45:00Z","type":"saksbehandler"}} diff --git a/libs/etterlatte-beregning-model/src/main/kotlin/GrunnlagMedPeriode.kt b/libs/etterlatte-beregning-model/src/main/kotlin/GrunnlagMedPeriode.kt index c5bc8f963bc..c6aa0b0085a 100644 --- a/libs/etterlatte-beregning-model/src/main/kotlin/GrunnlagMedPeriode.kt +++ b/libs/etterlatte-beregning-model/src/main/kotlin/GrunnlagMedPeriode.kt @@ -44,7 +44,8 @@ fun List>.kombinerOverlappendePerioder(): List List>.kombinerOverlappendePerioder(): List List>.mapVerdier(mapVerdi: (T) -> R): List> { - return this.map { GrunnlagMedPeriode(data = mapVerdi(it.data), fom = it.fom, tom = it.tom) } -} +fun List>.mapVerdier(mapVerdi: (T) -> R): List> = + this.map { + GrunnlagMedPeriode(data = mapVerdi(it.data), fom = it.fom, tom = it.tom) + } private val kastFeilUtenforPerioder = { dato: LocalDate, _: LocalDate, _: LocalDate? -> throw PeriodiseringAvGrunnlagFeil.DatoUtenforPerioder(dato) } @@ -90,18 +94,17 @@ object PeriodisertBeregningGrunnlag { senesteTom = sorterteOpplysninger.last().tom } - override fun finnAlleKnekkpunkter(): Set { - return ( + override fun finnAlleKnekkpunkter(): Set = + ( sorterteOpplysninger.map { it.fom } + sorterteOpplysninger.mapNotNull { it.tom?.plusDays(1) } ).toSet() - } - override fun finnGrunnlagForPeriode(datoIPeriode: LocalDate): T { - return sorterteOpplysninger.find { - it.fom <= datoIPeriode && (it.tom == null || it.tom >= datoIPeriode) - }?.data ?: opplysningUtenforPeriode(datoIPeriode, tidligsteFom, senesteTom) - } + override fun finnGrunnlagForPeriode(datoIPeriode: LocalDate): T = + sorterteOpplysninger + .find { + it.fom <= datoIPeriode && (it.tom == null || it.tom >= datoIPeriode) + }?.data ?: opplysningUtenforPeriode(datoIPeriode, tidligsteFom, senesteTom) } fun lagKomplettPeriodisertGrunnlag( @@ -130,18 +133,16 @@ object PeriodisertBeregningGrunnlag { fun lagGrunnlagMedDefaultUtenforPerioder( perioder: List>, defaultGrunnlag: (datoIPeriode: LocalDate, foersteFom: LocalDate, senesteTom: LocalDate?) -> T, - ): PeriodisertGrunnlag { - return Grunnlag( + ): PeriodisertGrunnlag = + Grunnlag( opplysninger = perioder, opplysningUtenforPeriode = defaultGrunnlag, ) - } - fun perioderOverlapper(sortertePerioder: List>): Boolean { - return !sortertePerioder.zipWithNext().all { (first, second) -> + fun perioderOverlapper(sortertePerioder: List>): Boolean = + !sortertePerioder.zipWithNext().all { (first, second) -> first.tom != null && first.tom < second.fom } - } private fun ingenHullInnadIPerioder(sortertePerioder: List>): Boolean { return sortertePerioder.zipWithNext().all { (first, second) -> @@ -172,21 +173,27 @@ data class GrunnlagForHelePerioden( fun harGrunnlagForHelePerioden() = ingenHullInnad && harGrunnlagIStarten && varerUtPerioden.varerUtPerioden() } -data class VarerUtPerioden(val tom: LocalDate?, val hoeyesteTom: LocalDate?) { +data class VarerUtPerioden( + val tom: LocalDate?, + val hoeyesteTom: LocalDate?, +) { fun varerUtPerioden() = hoeyesteTom == null || (tom != null && tom <= hoeyesteTom) } -sealed class PeriodiseringAvGrunnlagFeil(detail: String) : - UgyldigForespoerselException("PERIODISERING_AV_GRUNNLAG_FEIL", detail) { - class DatoUtenforPerioder(datoIPeriode: LocalDate) : - PeriodiseringAvGrunnlagFeil("Datoen $datoIPeriode er ikke innenfor grunnlaget") +sealed class PeriodiseringAvGrunnlagFeil( + detail: String, +) : UgyldigForespoerselException("PERIODISERING_AV_GRUNNLAG_FEIL", detail) { + class DatoUtenforPerioder( + datoIPeriode: LocalDate, + ) : PeriodiseringAvGrunnlagFeil("Datoen $datoIPeriode er ikke innenfor grunnlaget") class IngenPerioder : PeriodiseringAvGrunnlagFeil("Ingen perioder for grunnlaget ble gitt for periodisering") class PerioderOverlapper : PeriodiseringAvGrunnlagFeil("Periodene for periodisering overlapper") - class PerioderErIkkeKomplett(grunnlagForHelePerioden: GrunnlagForHelePerioden) : - PeriodiseringAvGrunnlagFeil( + class PerioderErIkkeKomplett( + grunnlagForHelePerioden: GrunnlagForHelePerioden, + ) : PeriodiseringAvGrunnlagFeil( "Periodene gitt er ikke komplette for den overordnede perioden: $grunnlagForHelePerioden", ) } diff --git a/libs/etterlatte-beregning-model/src/main/kotlin/InstitusjonsoppholdBeregningsgrunnlag.kt b/libs/etterlatte-beregning-model/src/main/kotlin/InstitusjonsoppholdBeregningsgrunnlag.kt index 290ceab7490..086d8a07547 100644 --- a/libs/etterlatte-beregning-model/src/main/kotlin/InstitusjonsoppholdBeregningsgrunnlag.kt +++ b/libs/etterlatte-beregning-model/src/main/kotlin/InstitusjonsoppholdBeregningsgrunnlag.kt @@ -13,7 +13,9 @@ data class InstitusjonsoppholdBeregningsgrunnlag( } } -enum class Reduksjon(val verdi: Prosent?) { +enum class Reduksjon( + val verdi: Prosent?, +) { VELG_REDUKSJON(null), JA_VANLIG(Prosent(90)), JA_FORELDRELOES(Prosent(55)), diff --git a/libs/etterlatte-beregning-model/src/main/kotlin/Prosent.kt b/libs/etterlatte-beregning-model/src/main/kotlin/Prosent.kt index d96da1320d6..f2457891fff 100644 --- a/libs/etterlatte-beregning-model/src/main/kotlin/Prosent.kt +++ b/libs/etterlatte-beregning-model/src/main/kotlin/Prosent.kt @@ -1,6 +1,8 @@ package no.nav.etterlatte.beregning.grunnlag -data class Prosent(val verdi: Int) { +data class Prosent( + val verdi: Int, +) { init { require(verdi in 0..100) } diff --git a/libs/etterlatte-beregning-model/src/main/kotlin/SoeskenMedIBeregning.kt b/libs/etterlatte-beregning-model/src/main/kotlin/SoeskenMedIBeregning.kt index 8690c5a72a1..8eb5ddc81a5 100644 --- a/libs/etterlatte-beregning-model/src/main/kotlin/SoeskenMedIBeregning.kt +++ b/libs/etterlatte-beregning-model/src/main/kotlin/SoeskenMedIBeregning.kt @@ -6,4 +6,7 @@ import no.nav.etterlatte.libs.common.person.Folkeregisteridentifikator * Beregningsgrunnlag for hvilke soesken som skal tas med i beregningen * */ -data class SoeskenMedIBeregning(val foedselsnummer: Folkeregisteridentifikator, val skalBrukes: Boolean) +data class SoeskenMedIBeregning( + val foedselsnummer: Folkeregisteridentifikator, + val skalBrukes: Boolean, +) diff --git a/libs/etterlatte-beregning-model/src/test/kotlin/KombinerOverlappendePerioderTest.kt b/libs/etterlatte-beregning-model/src/test/kotlin/KombinerOverlappendePerioderTest.kt index fe414664a4d..655a2de2b53 100644 --- a/libs/etterlatte-beregning-model/src/test/kotlin/KombinerOverlappendePerioderTest.kt +++ b/libs/etterlatte-beregning-model/src/test/kotlin/KombinerOverlappendePerioderTest.kt @@ -28,9 +28,10 @@ class KombinerOverlappendePerioderTest { assertEquals(3, kombinert.size) assertEquals( setOf(g1.fom, g1.tom, g2.fom, g2.fom, g2.fom.minusDays(1), g2.tom, g2.tom?.plusDays(1)), - kombinert.flatMap { - listOf(it.fom, it.tom) - }.toSet(), + kombinert + .flatMap { + listOf(it.fom, it.tom) + }.toSet(), ) } diff --git a/libs/etterlatte-brev-model/src/main/kotlin/no/nav/etterlatte/brev/Brevkoder.kt b/libs/etterlatte-brev-model/src/main/kotlin/no/nav/etterlatte/brev/Brevkoder.kt index 6163153e51d..6f97690b537 100644 --- a/libs/etterlatte-brev-model/src/main/kotlin/no/nav/etterlatte/brev/Brevkoder.kt +++ b/libs/etterlatte-brev-model/src/main/kotlin/no/nav/etterlatte/brev/Brevkoder.kt @@ -1,6 +1,9 @@ package no.nav.etterlatte.brev -enum class Brevkoder(val redigering: EtterlatteBrevKode, val ferdigstilling: EtterlatteBrevKode = redigering) { +enum class Brevkoder( + val redigering: EtterlatteBrevKode, + val ferdigstilling: EtterlatteBrevKode = redigering, +) { OMREGNING( EtterlatteBrevKode.BARNEPENSJON_VEDTAK_OMREGNING, EtterlatteBrevKode.BARNEPENSJON_VEDTAK_OMREGNING_FERDIG, diff --git a/libs/etterlatte-brev-model/src/main/kotlin/no/nav/etterlatte/brev/EtterlatteBrevkode.kt b/libs/etterlatte-brev-model/src/main/kotlin/no/nav/etterlatte/brev/EtterlatteBrevkode.kt index db9b79e7e8f..68641e24b37 100644 --- a/libs/etterlatte-brev-model/src/main/kotlin/no/nav/etterlatte/brev/EtterlatteBrevkode.kt +++ b/libs/etterlatte-brev-model/src/main/kotlin/no/nav/etterlatte/brev/EtterlatteBrevkode.kt @@ -1,6 +1,9 @@ package no.nav.etterlatte.brev -enum class EtterlatteBrevKode(val brevtype: Brevtype, val tittel: String? = null) { +enum class EtterlatteBrevKode( + val brevtype: Brevtype, + val tittel: String? = null, +) { BARNEPENSJON_AVSLAG(Brevtype.VEDTAK, "Vedtak om avslått barnepensjon"), BARNEPENSJON_AVSLAG_UTFALL(Brevtype.VEDTAK, "Vedtak om avslått barnepensjon"), BARNEPENSJON_INNVILGELSE(Brevtype.VEDTAK, "Vedtak om innvilget barnepensjon"), @@ -62,7 +65,5 @@ enum class Brevtype { SLETTET_VARSEL, ; - fun erKobletTilEnBehandling(): Boolean { - return this in listOf(VEDTAK, VARSEL, VEDLEGG) - } + fun erKobletTilEnBehandling(): Boolean = this in listOf(VEDTAK, VARSEL, VEDLEGG) } diff --git a/libs/etterlatte-database/src/main/kotlin/KotliqueryUtils.kt b/libs/etterlatte-database/src/main/kotlin/KotliqueryUtils.kt index 30f90b247a3..89770e11a4b 100644 --- a/libs/etterlatte-database/src/main/kotlin/KotliqueryUtils.kt +++ b/libs/etterlatte-database/src/main/kotlin/KotliqueryUtils.kt @@ -22,13 +22,12 @@ fun DataSource.transaction( interface Transactions { fun inTransaction(block: T.(TransactionalSession) -> R): R - fun TransactionalSession?.session(block: TransactionalSession.() -> R): R { - return if (this == null) { + fun TransactionalSession?.session(block: TransactionalSession.() -> R): R = + if (this == null) { inTransaction { it.run(block) } } else { this.block() } - } } fun TransactionalSession.opprett( @@ -39,8 +38,7 @@ fun TransactionalSession.opprett( queryOf( statement = query, paramMap = params, - ) - .also { logger.info(loggtekst) } + ).also { logger.info(loggtekst) } .let { tx.run(it.asExecute) } } @@ -69,7 +67,8 @@ fun TransactionalSession.hentListe( queryOf(statement = queryString, paramMap = params.invoke()) .let { query -> this.run( - query.map { row -> converter.invoke(row) } + query + .map { row -> converter.invoke(row) } .asList, ) } diff --git a/libs/etterlatte-database/src/testFixtures/kotlin/no/nav/etterlatte/DataSourceInsert.kt b/libs/etterlatte-database/src/testFixtures/kotlin/no/nav/etterlatte/DataSourceInsert.kt index 3388fe2e0c3..7f86cc96327 100644 --- a/libs/etterlatte-database/src/testFixtures/kotlin/no/nav/etterlatte/DataSourceInsert.kt +++ b/libs/etterlatte-database/src/testFixtures/kotlin/no/nav/etterlatte/DataSourceInsert.kt @@ -15,7 +15,6 @@ fun DataSource.insert( VALUES (${params.keys.joinToString(", ") { ":$it" }})""", paramMap = params, - ) - .let { query -> tx.run(query.asUpdate) } + ).let { query -> tx.run(query.asUpdate) } } } diff --git a/libs/etterlatte-funksjonsbrytere/src/main/kotlin/no/nav/etterlatte/funksjonsbrytere/FeatureToggleConfig.kt b/libs/etterlatte-funksjonsbrytere/src/main/kotlin/no/nav/etterlatte/funksjonsbrytere/FeatureToggleConfig.kt index a0420495ebb..523d42de81d 100644 --- a/libs/etterlatte-funksjonsbrytere/src/main/kotlin/no/nav/etterlatte/funksjonsbrytere/FeatureToggleConfig.kt +++ b/libs/etterlatte-funksjonsbrytere/src/main/kotlin/no/nav/etterlatte/funksjonsbrytere/FeatureToggleConfig.kt @@ -6,7 +6,9 @@ interface FeatureToggle { fun key(): String } -enum class FellesFeatureToggle(private val key: String) : FeatureToggle { +enum class FellesFeatureToggle( + private val key: String, +) : FeatureToggle { NoOperationToggle("pensjon-etterlatte.no-operation-toggle"), ; diff --git a/libs/etterlatte-funksjonsbrytere/src/main/kotlin/no/nav/etterlatte/funksjonsbrytere/FeatureToggleService.kt b/libs/etterlatte-funksjonsbrytere/src/main/kotlin/no/nav/etterlatte/funksjonsbrytere/FeatureToggleService.kt index 56ad8df0e1b..b149fca4c64 100644 --- a/libs/etterlatte-funksjonsbrytere/src/main/kotlin/no/nav/etterlatte/funksjonsbrytere/FeatureToggleService.kt +++ b/libs/etterlatte-funksjonsbrytere/src/main/kotlin/no/nav/etterlatte/funksjonsbrytere/FeatureToggleService.kt @@ -31,7 +31,8 @@ class UnleashFeatureToggleService( private val defaultUnleash = DefaultUnleash( - UnleashConfig.builder() + UnleashConfig + .builder() .appName(properties.applicationName) .unleashAPI(properties.uri()) .unleashContextProvider(lagUnleashContextProvider(brukerIdent)) @@ -43,7 +44,8 @@ class UnleashFeatureToggleService( private fun lagUnleashContextProvider(brukerIdentResolver: () -> String?) = UnleashContextProvider { - UnleashContext.builder() + UnleashContext + .builder() .appName(properties.applicationName) .also { builder -> brukerIdentResolver()?.let { userId -> builder.userId(userId) } } .build() @@ -61,11 +63,11 @@ class UnleashFeatureToggleService( defaultValue } - private fun merge(other: UnleashContext): UnleashContext { - return UnleashContext.builder() + private fun merge(other: UnleashContext): UnleashContext = + UnleashContext + .builder() .appName(other.appName.orElse(properties.applicationName)) .userId(other.userId.orElse(brukerIdent())) .sessionId(other.sessionId.orElse(null)) .build() - } } diff --git a/libs/etterlatte-jobs/src/main/kotlin/jobs/LeaderElection.kt b/libs/etterlatte-jobs/src/main/kotlin/jobs/LeaderElection.kt index 29a1d7da06f..93147f5ce6c 100644 --- a/libs/etterlatte-jobs/src/main/kotlin/jobs/LeaderElection.kt +++ b/libs/etterlatte-jobs/src/main/kotlin/jobs/LeaderElection.kt @@ -22,7 +22,12 @@ open class LeaderElection( if (electorPath != null) { val leader = runBlocking { - httpClient.get("http://$electorPath/").bodyAsText().let(objectMapper::readTree).get("name").asText() + httpClient + .get("http://$electorPath/") + .bodyAsText() + .let(objectMapper::readTree) + .get("name") + .asText() } val isLeader = leader == hostName() logger.info("Current pod: ${hostName()?.sanitize()}. Leader: ${leader.sanitize()}. Current pod is leader: $isLeader") diff --git a/libs/etterlatte-jobs/src/main/kotlin/jobs/TimerUtils.kt b/libs/etterlatte-jobs/src/main/kotlin/jobs/TimerUtils.kt index e411f97e8e4..4843ee60404 100644 --- a/libs/etterlatte-jobs/src/main/kotlin/jobs/TimerUtils.kt +++ b/libs/etterlatte-jobs/src/main/kotlin/jobs/TimerUtils.kt @@ -10,7 +10,11 @@ import java.util.Timer import java.util.UUID import kotlin.concurrent.fixedRateTimer -data class LoggerInfo(val logger: Logger, val sikkerLogg: Logger? = null, val loggTilSikkerLogg: Boolean = false) +data class LoggerInfo( + val logger: Logger, + val sikkerLogg: Logger? = null, + val loggTilSikkerLogg: Boolean = false, +) fun fixedRateCancellableTimer( name: String?, @@ -19,8 +23,8 @@ fun fixedRateCancellableTimer( loggerInfo: LoggerInfo, openingHours: OpeningHours? = null, action: (correlationId: String) -> Unit, -): Timer { - return fixedRateTimer( +): Timer = + fixedRateTimer( name = name, daemon = true, initialDelay = initialDelay, @@ -30,7 +34,6 @@ fun fixedRateCancellableTimer( run(action, loggerInfo.logger, name, loggerInfo.sikkerLogg, loggerInfo.loggTilSikkerLogg) } } -} fun fixedRateCancellableTimer( name: String?, diff --git a/libs/etterlatte-jobs/src/test/kotlin/jobs/LeaderElectionTest.kt b/libs/etterlatte-jobs/src/test/kotlin/jobs/LeaderElectionTest.kt index cd945528915..05349f75e8c 100644 --- a/libs/etterlatte-jobs/src/test/kotlin/jobs/LeaderElectionTest.kt +++ b/libs/etterlatte-jobs/src/test/kotlin/jobs/LeaderElectionTest.kt @@ -63,6 +63,9 @@ internal class LeaderElectionTest { } } -class LeaderElectionLocalhost(electorPath: String, httpClient: HttpClient) : LeaderElection(electorPath, httpClient) { +class LeaderElectionLocalhost( + electorPath: String, + httpClient: HttpClient, +) : LeaderElection(electorPath, httpClient) { override fun hostName() = "localhost" } diff --git a/libs/etterlatte-kafka/src/main/kotlin/kafka/JsonMessage.kt b/libs/etterlatte-kafka/src/main/kotlin/kafka/JsonMessage.kt index 6f3a5a57ef8..f0a16bb24e2 100644 --- a/libs/etterlatte-kafka/src/main/kotlin/kafka/JsonMessage.kt +++ b/libs/etterlatte-kafka/src/main/kotlin/kafka/JsonMessage.kt @@ -74,9 +74,10 @@ open class JsonMessage( compute("image") { _, _ -> serviceImage } } if (node.path(PARTICIPATING_SERVICES_KEY).isMissingOrNull()) { - (node as ObjectNode).putArray( - PARTICIPATING_SERVICES_KEY, - ).add(objectMapper.valueToTree(entry)) + (node as ObjectNode) + .putArray( + PARTICIPATING_SERVICES_KEY, + ).add(objectMapper.valueToTree(entry)) } else { (node.path(PARTICIPATING_SERVICES_KEY) as ArrayNode).add(objectMapper.valueToTree(entry)) } diff --git a/libs/etterlatte-kafka/src/main/kotlin/kafka/JsonMessageSerializer.kt b/libs/etterlatte-kafka/src/main/kotlin/kafka/JsonMessageSerializer.kt index ab4705699cf..fd21d25012f 100644 --- a/libs/etterlatte-kafka/src/main/kotlin/kafka/JsonMessageSerializer.kt +++ b/libs/etterlatte-kafka/src/main/kotlin/kafka/JsonMessageSerializer.kt @@ -3,7 +3,9 @@ package no.nav.etterlatte.kafka import org.apache.kafka.common.serialization.Serializer class JsonMessageSerializer : Serializer { - private val stringSerializer = org.apache.kafka.common.serialization.StringSerializer() + private val stringSerializer = + org.apache.kafka.common.serialization + .StringSerializer() override fun configure( configs: Map, @@ -15,7 +17,5 @@ class JsonMessageSerializer : Serializer { override fun serialize( topic: String, data: JsonMessage, - ): ByteArray { - return stringSerializer.serialize(topic, data.toJson()) - } + ): ByteArray = stringSerializer.serialize(topic, data.toJson()) } diff --git a/libs/etterlatte-kafka/src/main/kotlin/kafka/KafkaProdusent.kt b/libs/etterlatte-kafka/src/main/kotlin/kafka/KafkaProdusent.kt index e2f58de3c2b..074a72ba7f8 100644 --- a/libs/etterlatte-kafka/src/main/kotlin/kafka/KafkaProdusent.kt +++ b/libs/etterlatte-kafka/src/main/kotlin/kafka/KafkaProdusent.kt @@ -34,25 +34,30 @@ class KafkaProdusentImpl( noekkel: K, verdi: V, headers: Map?, - ): Pair { - return kafka.send( - ProducerRecord(topic, noekkel, verdi).also { - headers?.forEach { h -> - it.headers().add(h.key, h.value) - } - }, - ).get().let { - it.partition() to it.offset() - } - } + ): Pair = + kafka + .send( + ProducerRecord(topic, noekkel, verdi).also { + headers?.forEach { h -> + it.headers().add(h.key, h.value) + } + }, + ).get() + .let { + it.partition() to it.offset() + } override fun close() { kafka.close() } } -class TestProdusent() : KafkaProdusent { - data class Record(val noekkel: K, val verdi: V, val headers: Map?) +class TestProdusent : KafkaProdusent { + data class Record( + val noekkel: K, + val verdi: V, + val headers: Map?, + ) var closed = false private set diff --git a/libs/etterlatte-ktor/src/main/kotlin/AuthorizationPlugin.kt b/libs/etterlatte-ktor/src/main/kotlin/AuthorizationPlugin.kt index d69837c230a..df94ac58469 100644 --- a/libs/etterlatte-ktor/src/main/kotlin/AuthorizationPlugin.kt +++ b/libs/etterlatte-ktor/src/main/kotlin/AuthorizationPlugin.kt @@ -27,7 +27,11 @@ val AuthorizationPlugin = // If issuers are set and current authenticated user is not authenticated by one // of the issuers, then skip authorization - authorization should be handled elsewhere then. // If no issuers are set, then always perform authorization - if (issuers.isEmpty() || principal.context.issuers.intersect(issuers).isNotEmpty()) { + if (issuers.isEmpty() || + principal.context.issuers + .intersect(issuers) + .isNotEmpty() + ) { val roller = call.brukerTokenInfo.roller if (roller.intersect(roles).isEmpty()) { application.log.info("Request avslått pga manglende rolle (gyldige: $roles)") diff --git a/libs/etterlatte-ktor/src/main/kotlin/JWTTokenClaimsUtils.kt b/libs/etterlatte-ktor/src/main/kotlin/JWTTokenClaimsUtils.kt index c8687df6d81..115d299512b 100644 --- a/libs/etterlatte-ktor/src/main/kotlin/JWTTokenClaimsUtils.kt +++ b/libs/etterlatte-ktor/src/main/kotlin/JWTTokenClaimsUtils.kt @@ -7,7 +7,8 @@ import no.nav.security.token.support.core.jwt.JwtTokenClaims import no.nav.security.token.support.v2.TokenValidationContextPrincipal fun ApplicationCall.hentTokenClaims(issuerName: String): JwtTokenClaims? = - this.principal() + this + .principal() ?.context ?.let { it.hentTokenClaims(issuerName) } diff --git a/libs/etterlatte-ktor/src/main/kotlin/MaskinportenScopeAuthorizationPlugin.kt b/libs/etterlatte-ktor/src/main/kotlin/MaskinportenScopeAuthorizationPlugin.kt index aa2845b7a36..861bb806f59 100644 --- a/libs/etterlatte-ktor/src/main/kotlin/MaskinportenScopeAuthorizationPlugin.kt +++ b/libs/etterlatte-ktor/src/main/kotlin/MaskinportenScopeAuthorizationPlugin.kt @@ -18,7 +18,8 @@ val MaskinportenScopeAuthorizationPlugin = on(AuthenticationChecked) { call -> call.firstValidTokenClaims()?.let { token -> val userScopes = - token.getStringClaim("scope") + token + .getStringClaim("scope") ?.split(" ") ?: emptyList() diff --git a/libs/etterlatte-ktor/src/main/kotlin/feilhaandtering/StatusPagesKonfigurasjon.kt b/libs/etterlatte-ktor/src/main/kotlin/feilhaandtering/StatusPagesKonfigurasjon.kt index ae28b02fea0..af60a54a613 100644 --- a/libs/etterlatte-ktor/src/main/kotlin/feilhaandtering/StatusPagesKonfigurasjon.kt +++ b/libs/etterlatte-ktor/src/main/kotlin/feilhaandtering/StatusPagesKonfigurasjon.kt @@ -19,7 +19,9 @@ import no.nav.etterlatte.libs.ktor.erDeserialiseringsException import no.nav.etterlatte.libs.ktor.route.routeLogger import org.slf4j.Logger -class StatusPagesKonfigurasjon(private val sikkerLogg: Logger) { +class StatusPagesKonfigurasjon( + private val sikkerLogg: Logger, +) { private val statusCodes4xx = HttpStatusCode.allStatusCodes.filter { it.value in 400..499 }.toTypedArray() private val statusCodes5xx = HttpStatusCode.allStatusCodes.filter { it.value in 500..599 }.toTypedArray() diff --git a/libs/etterlatte-ktor/src/main/kotlin/ktor/ClientCredentialAuthProvider.kt b/libs/etterlatte-ktor/src/main/kotlin/ktor/ClientCredentialAuthProvider.kt index c8944c44879..22512578749 100644 --- a/libs/etterlatte-ktor/src/main/kotlin/ktor/ClientCredentialAuthProvider.kt +++ b/libs/etterlatte-ktor/src/main/kotlin/ktor/ClientCredentialAuthProvider.kt @@ -27,7 +27,9 @@ class ClientCredentialAuthConfig { lateinit var config: Map } -class ClientCredentialAuthProvider(config: Map) : AuthProvider { +class ClientCredentialAuthProvider( + config: Map, +) : AuthProvider { @Deprecated("Please use sendWithoutRequest function instead") override val sendWithoutRequest: Boolean = true @@ -39,11 +41,11 @@ class ClientCredentialAuthProvider(config: Map) : AuthProvider { grantType = GrantType.CLIENT_CREDENTIALS, scope = config["AZURE_APP_OUTBOUND_SCOPE"]?.split(",") ?: emptyList(), authentication = - ClientAuthenticationProperties.builder( - clientId = config.getOrThrow("AZURE_APP_CLIENT_ID"), - clientAuthMethod = ClientAuthenticationMethod.PRIVATE_KEY_JWT, - ) - .clientJwk(config.getOrThrow("AZURE_APP_JWK")) + ClientAuthenticationProperties + .builder( + clientId = config.getOrThrow("AZURE_APP_CLIENT_ID"), + clientAuthMethod = ClientAuthenticationMethod.PRIVATE_KEY_JWT, + ).clientJwk(config.getOrThrow("AZURE_APP_JWK")) .build(), // conf["resource_url"]?.let { URI(it) }, resourceUrl = null, @@ -57,9 +59,7 @@ class ClientCredentialAuthProvider(config: Map) : AuthProvider { private val httpClient = DefaultOAuth2HttpClient() private val accessTokenService = setupOAuth2AccessTokenService(httpClient = httpClient) - override fun isApplicable(auth: HttpAuthHeader): Boolean { - return true - } + override fun isApplicable(auth: HttpAuthHeader): Boolean = true override suspend fun addRequestHeaders( request: HttpRequestBuilder, @@ -71,8 +71,8 @@ class ClientCredentialAuthProvider(config: Map) : AuthProvider { } } -internal fun setupOAuth2AccessTokenService(httpClient: DefaultOAuth2HttpClient): OAuth2AccessTokenService { - return OAuth2AccessTokenService( +internal fun setupOAuth2AccessTokenService(httpClient: DefaultOAuth2HttpClient): OAuth2AccessTokenService = + OAuth2AccessTokenService( tokenResolver = { throw IllegalArgumentException("Skal ikke kalle denne") }, onBehalfOfTokenClient = OnBehalfOfTokenClient(httpClient), clientCredentialsTokenClient = ClientCredentialsTokenClient(httpClient), @@ -83,4 +83,3 @@ internal fun setupOAuth2AccessTokenService(httpClient: DefaultOAuth2HttpClient): ), tokenExchangeClient = TokenExchangeClient(httpClient), ) -} diff --git a/libs/etterlatte-ktor/src/main/kotlin/ktor/DefaultOAuth2HttpClient.kt b/libs/etterlatte-ktor/src/main/kotlin/ktor/DefaultOAuth2HttpClient.kt index c43adcad4b1..4859099e016 100644 --- a/libs/etterlatte-ktor/src/main/kotlin/ktor/DefaultOAuth2HttpClient.kt +++ b/libs/etterlatte-ktor/src/main/kotlin/ktor/DefaultOAuth2HttpClient.kt @@ -29,17 +29,17 @@ class DefaultOAuth2HttpClient : OAuth2HttpClient { } // Override default POST with other form parameters specified for Idp request - override fun post(req: OAuth2HttpRequest): OAuth2AccessTokenResponse { - return runBlocking { - defaultHttpClient.submitForm( - url = req.tokenEndpointUrl.toString(), - formParameters = - Parameters.build { - req.formParameters.forEach { - append(it.key, it.value) - } - }, - ).body() + override fun post(req: OAuth2HttpRequest): OAuth2AccessTokenResponse = + runBlocking { + defaultHttpClient + .submitForm( + url = req.tokenEndpointUrl.toString(), + formParameters = + Parameters.build { + req.formParameters.forEach { + append(it.key, it.value) + } + }, + ).body() } - } } diff --git a/libs/etterlatte-ktor/src/main/kotlin/ktor/ktorobo/AzureAdClient.kt b/libs/etterlatte-ktor/src/main/kotlin/ktor/ktorobo/AzureAdClient.kt index a45752f257f..dd3cbce9134 100644 --- a/libs/etterlatte-ktor/src/main/kotlin/ktor/ktorobo/AzureAdClient.kt +++ b/libs/etterlatte-ktor/src/main/kotlin/ktor/ktorobo/AzureAdClient.kt @@ -65,7 +65,9 @@ interface IAzureAdHttpClient { ): HttpResponse } -class AzureAdHttpClient(val httpClient: HttpClient) : IAzureAdHttpClient { +class AzureAdHttpClient( + val httpClient: HttpClient, +) : IAzureAdHttpClient { override suspend fun doGet(url: String) = httpClient.get(url) override suspend fun submitForm( @@ -88,10 +90,11 @@ class AzureAdClient( private suspend inline fun fetchAccessToken(formParameters: Parameters): AccessToken = try { - httpClient.submitForm( - openIdConfiguration.tokenEndpoint, - formParameters, - ).body() + httpClient + .submitForm( + openIdConfiguration.tokenEndpoint, + formParameters, + ).body() } catch (ex: Throwable) { val responseBody: String? = when (ex) { @@ -142,13 +145,14 @@ class AzureAdClient( } } - return value.handle { token, exception -> - if (exception != null) { - Err(ThrowableErrorMessage("Henting av token feilet", exception)) - } else { - Ok(token) - } - }.asDeferred() + return value + .handle { token, exception -> + if (exception != null) { + Err(ThrowableErrorMessage("Henting av token feilet", exception)) + } else { + Ok(token) + } + }.asDeferred() .await() } @@ -195,16 +199,12 @@ class TokenBasedExpiration : Expiry { value: AccessToken?, currentTime: Long, currentDuration: Long, - ): Long { - return currentDuration - } + ): Long = currentDuration override fun expireAfterRead( key: TokenRequest?, value: AccessToken?, currentTime: Long, currentDuration: Long, - ): Long { - return currentDuration - } + ): Long = currentDuration } diff --git a/libs/etterlatte-ktor/src/main/kotlin/ktor/ktorobo/DownstreamResourceClient.kt b/libs/etterlatte-ktor/src/main/kotlin/ktor/ktorobo/DownstreamResourceClient.kt index e3f4cf8f908..fe7103a426b 100644 --- a/libs/etterlatte-ktor/src/main/kotlin/ktor/ktorobo/DownstreamResourceClient.kt +++ b/libs/etterlatte-ktor/src/main/kotlin/ktor/ktorobo/DownstreamResourceClient.kt @@ -89,7 +89,8 @@ class DownstreamResourceClient( resource: Resource, brukerTokenInfo: BrukerTokenInfo, action: suspend (token: AccessToken) -> HttpResponse, - ) = azureAdClient.hentTokenFraAD(brukerTokenInfo, listOf("api://${resource.clientId}/.default")) + ) = azureAdClient + .hentTokenFraAD(brukerTokenInfo, listOf("api://${resource.clientId}/.default")) .andThen { runCatching { action(it) }.fold(resource) } .andThen { response -> when (response) { diff --git a/libs/etterlatte-ktor/src/main/kotlin/ktor/ktorobo/Tokens.kt b/libs/etterlatte-ktor/src/main/kotlin/ktor/ktorobo/Tokens.kt index df0456e49ae..7b42a31cda2 100644 --- a/libs/etterlatte-ktor/src/main/kotlin/ktor/ktorobo/Tokens.kt +++ b/libs/etterlatte-ktor/src/main/kotlin/ktor/ktorobo/Tokens.kt @@ -12,7 +12,9 @@ data class OboTokenRequest( val accessToken: String, ) : TokenRequest(scopes) -data class ClientCredentialsTokenRequest(override val scopes: List) : TokenRequest(scopes) +data class ClientCredentialsTokenRequest( + override val scopes: List, +) : TokenRequest(scopes) @JsonIgnoreProperties(ignoreUnknown = true) data class AccessToken( diff --git a/libs/etterlatte-ktor/src/main/kotlin/route/RouteUtils.kt b/libs/etterlatte-ktor/src/main/kotlin/route/RouteUtils.kt index 9a5df944c2e..1cfcfa99a5c 100644 --- a/libs/etterlatte-ktor/src/main/kotlin/route/RouteUtils.kt +++ b/libs/etterlatte-ktor/src/main/kotlin/route/RouteUtils.kt @@ -29,7 +29,9 @@ const val KLAGEID_CALL_PARAMETER = "klageId" const val GENERELLBEHANDLINGID_CALL_PARAMETER = "generellBehandlingId" const val TILBAKEKREVINGID_CALL_PARAMETER = "tilbakekrevingId" -enum class CallParamAuthId(val value: String) { +enum class CallParamAuthId( + val value: String, +) { BEHANDLINGID(BEHANDLINGID_CALL_PARAMETER), SAKID(SAKID_CALL_PARAMETER), OPPGAVEID(OPPGAVEID_CALL_PARAMETER), @@ -235,10 +237,11 @@ fun ApplicationCall.uuid(param: String) = "$param er ikke i path params", ) -class UgyldigDatoFormatException : UgyldigForespoerselException( - code = "UGYLDIG-DATOFORMAT", - detail = "Forventet format YYYY-MM-DD (ISO-8601)", -) +class UgyldigDatoFormatException : + UgyldigForespoerselException( + code = "UGYLDIG-DATOFORMAT", + detail = "Forventet format YYYY-MM-DD (ISO-8601)", + ) fun ApplicationCall.dato(param: String) = this.parameters[param]?.let { @@ -258,11 +261,12 @@ suspend fun PipelineContext.hvisEnabled( } } -class FeatureIkkeStoettetException : ForespoerselException( - code = "NOT_IMPLEMENTED", - status = HttpStatusCode.NotImplemented.value, - detail = "Funksjonaliteten er ikke tilgjengelig enda.", -) +class FeatureIkkeStoettetException : + ForespoerselException( + code = "NOT_IMPLEMENTED", + status = HttpStatusCode.NotImplemented.value, + detail = "Funksjonaliteten er ikke tilgjengelig enda.", + ) fun BrukerTokenInfo.lagGrunnlagsopplysning() = if (this is Saksbehandler) { diff --git a/libs/etterlatte-ktor/src/main/kotlin/route/Tilgangssjekker.kt b/libs/etterlatte-ktor/src/main/kotlin/route/Tilgangssjekker.kt index 292d1869c2f..307cd29c8a7 100644 --- a/libs/etterlatte-ktor/src/main/kotlin/route/Tilgangssjekker.kt +++ b/libs/etterlatte-ktor/src/main/kotlin/route/Tilgangssjekker.kt @@ -19,7 +19,9 @@ import java.util.UUID class Tilgangssjekker( config: Config, httpClient: HttpClient, -) : BehandlingTilgangsSjekk, SakTilgangsSjekk, PersonTilgangsSjekk { +) : BehandlingTilgangsSjekk, + SakTilgangsSjekk, + PersonTilgangsSjekk { private val azureAdClient = AzureAdClient(config) private val downstreamResourceClient = DownstreamResourceClient(azureAdClient, httpClient) @@ -27,7 +29,8 @@ class Tilgangssjekker( private val resourceUrl = config.getString("behandling.resource.url") private val tilgangscache = - Caffeine.newBuilder() + Caffeine + .newBuilder() .expireAfterWrite(Duration.ofMinutes(1)) .build() @@ -55,10 +58,10 @@ class Tilgangssjekker( url = "$resourceUrl/tilgang/behandling/$behandlingId?skrivetilgang=$skrivetilgang", ), brukerTokenInfo = bruker, - ) - .mapBoth( + ).mapBoth( success = { resource -> - resource.response.let { objectMapper.readValue(it.toString()) } + resource.response + .let { objectMapper.readValue(it.toString()) } .also { tilgangscache.put(tilgangsrequest, it) } }, failure = { throwableErrorMessage -> throw throwableErrorMessage }, @@ -90,10 +93,10 @@ class Tilgangssjekker( ), brukerTokenInfo = bruker, postBody = foedselsnummer.value, - ) - .mapBoth( + ).mapBoth( success = { resource -> - resource.response.let { objectMapper.readValue(it.toString()) } + resource.response + .let { objectMapper.readValue(it.toString()) } .also { tilgangscache.put(tilgangsrequest, it) } }, failure = { throwableErrorMessage -> throw throwableErrorMessage }, @@ -124,8 +127,7 @@ class Tilgangssjekker( url = "$resourceUrl/tilgang/sak/$sakId?skrivetilgang=$skrivetilgang", ), brukerTokenInfo = bruker, - ) - .mapBoth( + ).mapBoth( success = { deserialize(it.response.toString()) .also { resultat -> tilgangscache.put(tilgangsrequest, resultat) } @@ -138,8 +140,10 @@ class Tilgangssjekker( } } -class TilgangssjekkException(override val message: String, override val cause: Throwable? = null) : - Exception(message, cause) +class TilgangssjekkException( + override val message: String, + override val cause: Throwable? = null, +) : Exception(message, cause) data class Tilgangsrequest( val id: Any, diff --git a/libs/etterlatte-ktor/src/main/kotlin/token/BrukerTokenInfo.kt b/libs/etterlatte-ktor/src/main/kotlin/token/BrukerTokenInfo.kt index 8c8da3fe809..33eed2936f4 100644 --- a/libs/etterlatte-ktor/src/main/kotlin/token/BrukerTokenInfo.kt +++ b/libs/etterlatte-ktor/src/main/kotlin/token/BrukerTokenInfo.kt @@ -27,8 +27,8 @@ sealed class BrukerTokenInfo { oid: String?, sub: String?, claims: JwtTokenClaims?, - ): BrukerTokenInfo { - return if (erSystembruker(oid = oid, sub = sub)) { + ): BrukerTokenInfo = + if (erSystembruker(oid = oid, sub = sub)) { Systembruker(oid!!, sub!!, ident = claims?.getStringClaim("azp_name"), claims) } else if (saksbehandler != null) { Saksbehandler(accessToken, ident = saksbehandler, claims) @@ -37,7 +37,6 @@ sealed class BrukerTokenInfo { "Er ikke systembruker, og Navident er null i token, sannsynligvis manglende claim NAVident", ) } - } } } @@ -102,7 +101,9 @@ enum class Claims { sub, } -enum class Systembrukere(val oid: String) { +enum class Systembrukere( + val oid: String, +) { BREV("brev"), MIGRERING("migrering"), DOEDSHENDELSE("doedshendelse"), diff --git a/libs/etterlatte-ktor/src/main/kotlin/token/Fagsaksystem.kt b/libs/etterlatte-ktor/src/main/kotlin/token/Fagsaksystem.kt index b3738625fe0..5db978b0a42 100644 --- a/libs/etterlatte-ktor/src/main/kotlin/token/Fagsaksystem.kt +++ b/libs/etterlatte-ktor/src/main/kotlin/token/Fagsaksystem.kt @@ -1,5 +1,9 @@ package no.nav.etterlatte.libs.ktor.token -enum class Fagsaksystem(val navn: String, val enhet: String, val systemnavn: String) { +enum class Fagsaksystem( + val navn: String, + val enhet: String, + val systemnavn: String, +) { EY("EY", "0000", "Gjenny"), } diff --git a/libs/etterlatte-ktor/src/test/kotlin/RestModuleTest.kt b/libs/etterlatte-ktor/src/test/kotlin/RestModuleTest.kt index d7bf76bbc24..3c0c124c9c3 100644 --- a/libs/etterlatte-ktor/src/test/kotlin/RestModuleTest.kt +++ b/libs/etterlatte-ktor/src/test/kotlin/RestModuleTest.kt @@ -102,33 +102,39 @@ class RestModuleTest { tilgangTestRoute() }.also { setReady() } - client.get("/behandling/${UUID.randomUUID()}") { - header(HttpHeaders.Authorization, "Bearer $token") - }.let { assertEquals(OK, it.status) } - client.get("/sak/1") { - header(HttpHeaders.Authorization, "Bearer $token") - }.let { assertEquals(OK, it.status) } - client.post("/person") { - header(HttpHeaders.Authorization, "Bearer $token") - contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO("27458328671").toJson()) - }.let { assertEquals(OK, it.status) } + client + .get("/behandling/${UUID.randomUUID()}") { + header(HttpHeaders.Authorization, "Bearer $token") + }.let { assertEquals(OK, it.status) } + client + .get("/sak/1") { + header(HttpHeaders.Authorization, "Bearer $token") + }.let { assertEquals(OK, it.status) } + client + .post("/person") { + header(HttpHeaders.Authorization, "Bearer $token") + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO("27458328671").toJson()) + }.let { assertEquals(OK, it.status) } coEvery { behandlingTilgangsSjekkMock.harTilgangTilBehandling(any(), any(), any()) } returns false coEvery { sakTilgangsSjekkMock.harTilgangTilSak(any(), any(), any()) } returns false coEvery { personTilgangsSjekkMock.harTilgangTilPerson(any(), any(), any()) } returns false - client.get("/behandling/${UUID.randomUUID()}") { - header(HttpHeaders.Authorization, "Bearer $token") - }.let { assertEquals(NotFound, it.status) } - client.get("/sak/1") { - header(HttpHeaders.Authorization, "Bearer $token") - }.let { assertEquals(NotFound, it.status) } - client.post("/person") { - header(HttpHeaders.Authorization, "Bearer $token") - contentType(ContentType.Application.Json) - setBody(FoedselsnummerDTO("27458328671").toJson()) - }.let { assertEquals(NotFound, it.status) } + client + .get("/behandling/${UUID.randomUUID()}") { + header(HttpHeaders.Authorization, "Bearer $token") + }.let { assertEquals(NotFound, it.status) } + client + .get("/sak/1") { + header(HttpHeaders.Authorization, "Bearer $token") + }.let { assertEquals(NotFound, it.status) } + client + .post("/person") { + header(HttpHeaders.Authorization, "Bearer $token") + contentType(ContentType.Application.Json) + setBody(FoedselsnummerDTO("27458328671").toJson()) + }.let { assertEquals(NotFound, it.status) } } } @@ -236,46 +242,51 @@ class RestModuleTest { routesMedForskjelligeFeil() } - client.get("ikke_funnet/exception") { - header(HttpHeaders.Authorization, "Bearer $token") - header(HttpHeaders.Accept, ContentType.Application.Json) - }.also { - val body = it.body() - assertEquals("IKKE_FUNNET", body.code) - assertEquals(NotFound.value, body.status) - } + client + .get("ikke_funnet/exception") { + header(HttpHeaders.Authorization, "Bearer $token") + header(HttpHeaders.Accept, ContentType.Application.Json) + }.also { + val body = it.body() + assertEquals("IKKE_FUNNET", body.code) + assertEquals(NotFound.value, body.status) + } - client.get("ikke_funnet/status") { - header(HttpHeaders.Authorization, "Bearer $token") - header(HttpHeaders.Accept, ContentType.Application.Json) - }.also { - val body = it.body() - assertEquals(NotFound.value, body.status) - assertEquals("NOT_FOUND", body.code) - } - client.get("intern/vilkaarlig") { - header(HttpHeaders.Authorization, "Bearer $token") - header(HttpHeaders.Accept, ContentType.Application.Json) - }.also { - val bodyMapped = it.body() - assertEquals(InternalServerError.value, bodyMapped.status) - } + client + .get("ikke_funnet/status") { + header(HttpHeaders.Authorization, "Bearer $token") + header(HttpHeaders.Accept, ContentType.Application.Json) + }.also { + val body = it.body() + assertEquals(NotFound.value, body.status) + assertEquals("NOT_FOUND", body.code) + } + client + .get("intern/vilkaarlig") { + header(HttpHeaders.Authorization, "Bearer $token") + header(HttpHeaders.Accept, ContentType.Application.Json) + }.also { + val bodyMapped = it.body() + assertEquals(InternalServerError.value, bodyMapped.status) + } - client.get("intern/exception") { - header(HttpHeaders.Authorization, "Bearer $token") - header(HttpHeaders.Accept, ContentType.Application.Json) - }.also { - val bodyMapped = it.body() - assertEquals(InternalServerError.value, bodyMapped.status) - } + client + .get("intern/exception") { + header(HttpHeaders.Authorization, "Bearer $token") + header(HttpHeaders.Accept, ContentType.Application.Json) + }.also { + val bodyMapped = it.body() + assertEquals(InternalServerError.value, bodyMapped.status) + } - client.get("intern/status") { - header(HttpHeaders.Authorization, "Bearer $token") - header(HttpHeaders.Accept, ContentType.Application.Json) - }.also { - val bodyMapped = it.body() - assertEquals(InternalServerError.value, bodyMapped.status) - } + client + .get("intern/status") { + header(HttpHeaders.Authorization, "Bearer $token") + header(HttpHeaders.Accept, ContentType.Application.Json) + }.also { + val bodyMapped = it.body() + assertEquals(InternalServerError.value, bodyMapped.status) + } } } @@ -345,5 +356,8 @@ class RestModuleTest { } } - private data class TestObjektDto(val verdi1: String, val verdi2: Int) + private data class TestObjektDto( + val verdi1: String, + val verdi2: Int, + ) } diff --git a/libs/etterlatte-ktor/src/testFixtures/kotlin/no/nav/etterlatte/ktor/TokenIssuer.kt b/libs/etterlatte-ktor/src/testFixtures/kotlin/no/nav/etterlatte/ktor/TokenIssuer.kt index f0b7a3517a3..a483a3f2eba 100644 --- a/libs/etterlatte-ktor/src/testFixtures/kotlin/no/nav/etterlatte/ktor/TokenIssuer.kt +++ b/libs/etterlatte-ktor/src/testFixtures/kotlin/no/nav/etterlatte/ktor/TokenIssuer.kt @@ -11,29 +11,31 @@ fun MockOAuth2Server.issueSaksbehandlerToken( navIdent: String = "Saksbehandler01", groups: List = listOf(), ): String = - this.issueToken( - issuerId = AZURE_ISSUER, - audience = CLIENT_ID, - claims = - mapOf( - "navn" to navn, - "NAVident" to navIdent, - "groups" to groups, - ), - ).serialize() + this + .issueToken( + issuerId = AZURE_ISSUER, + audience = CLIENT_ID, + claims = + mapOf( + "navn" to navn, + "NAVident" to navIdent, + "groups" to groups, + ), + ).serialize() fun MockOAuth2Server.issueSystembrukerToken( mittsystem: String = UUID.randomUUID().toString(), roles: List = listOf(), ): String = - this.issueToken( - issuerId = AZURE_ISSUER, - audience = CLIENT_ID, - claims = - mapOf( - "sub" to mittsystem, - "oid" to mittsystem, - "azp_name" to mittsystem, - "roles" to roles, - ), - ).serialize() + this + .issueToken( + issuerId = AZURE_ISSUER, + audience = CLIENT_ID, + claims = + mapOf( + "sub" to mittsystem, + "oid" to mittsystem, + "azp_name" to mittsystem, + "roles" to roles, + ), + ).serialize() diff --git a/libs/etterlatte-migrering-model/src/main/kotlin/no/nav/etterlatte/rapidsandrivers/migrering/MigreringRequest.kt b/libs/etterlatte-migrering-model/src/main/kotlin/no/nav/etterlatte/rapidsandrivers/migrering/MigreringRequest.kt index 2d51cd2be19..45b3d1cf79c 100644 --- a/libs/etterlatte-migrering-model/src/main/kotlin/no/nav/etterlatte/rapidsandrivers/migrering/MigreringRequest.kt +++ b/libs/etterlatte-migrering-model/src/main/kotlin/no/nav/etterlatte/rapidsandrivers/migrering/MigreringRequest.kt @@ -6,4 +6,6 @@ enum class MigreringKjoringVariant { FORTSETT_ETTER_PAUSE, } -data class PesysId(val id: Long) +data class PesysId( + val id: Long, +) diff --git a/libs/etterlatte-mq/src/main/kotlin/no/nav/etterlatte/mq/JmsConnectionFactory.kt b/libs/etterlatte-mq/src/main/kotlin/no/nav/etterlatte/mq/JmsConnectionFactory.kt index 92c37b17f17..0b7e5213ac8 100644 --- a/libs/etterlatte-mq/src/main/kotlin/no/nav/etterlatte/mq/JmsConnectionFactory.kt +++ b/libs/etterlatte-mq/src/main/kotlin/no/nav/etterlatte/mq/JmsConnectionFactory.kt @@ -43,23 +43,24 @@ class JmsConnectionFactory( private val password: String, ) : EtterlatteJmsConnectionFactory { private val connectionFactory = - MQConnectionFactory().also { - it.hostName = hostname - it.port = port - it.queueManager = queueManager - it.channel = channel - it.transportType = WMQConstants.WMQ_CM_CLIENT - it.ccsid = UTF_8_WITH_PUA - - it.setBooleanProperty(JmsConstants.USER_AUTHENTICATION_MQCSP, true) - it.setIntProperty(WMQConstants.JMS_IBM_CHARACTER_SET, UTF_8_WITH_PUA) - it.setIntProperty(WMQConstants.JMS_IBM_ENCODING, MQC.MQENC_NATIVE) - }.let { - val pooledConnectionFactory = JmsPoolConnectionFactory() - pooledConnectionFactory.connectionFactory = it - pooledConnectionFactory.maxConnections = 1 - pooledConnectionFactory - } + MQConnectionFactory() + .also { + it.hostName = hostname + it.port = port + it.queueManager = queueManager + it.channel = channel + it.transportType = WMQConstants.WMQ_CM_CLIENT + it.ccsid = UTF_8_WITH_PUA + + it.setBooleanProperty(JmsConstants.USER_AUTHENTICATION_MQCSP, true) + it.setIntProperty(WMQConstants.JMS_IBM_CHARACTER_SET, UTF_8_WITH_PUA) + it.setIntProperty(WMQConstants.JMS_IBM_ENCODING, MQC.MQENC_NATIVE) + }.let { + val pooledConnectionFactory = JmsPoolConnectionFactory() + pooledConnectionFactory.connectionFactory = it + pooledConnectionFactory.maxConnections = 1 + pooledConnectionFactory + } private fun connection(): Connection = connectionFactory.createConnection(username, password) @@ -111,7 +112,9 @@ class JmsConnectionFactory( } } -enum class Prioritet(val verdi: Int) { +enum class Prioritet( + val verdi: Int, +) { NORMAL(4), LAV(1), } diff --git a/libs/etterlatte-oppgave-model/src/main/kotlin/oppgave/OppgaveIntern.kt b/libs/etterlatte-oppgave-model/src/main/kotlin/oppgave/OppgaveIntern.kt index 62c43a0f684..5ab57dd50c3 100644 --- a/libs/etterlatte-oppgave-model/src/main/kotlin/oppgave/OppgaveIntern.kt +++ b/libs/etterlatte-oppgave-model/src/main/kotlin/oppgave/OppgaveIntern.kt @@ -30,9 +30,7 @@ data class OppgaveIntern( val fnr: String? = null, val frist: Tidspunkt?, ) { - fun manglerSaksbehandler(): Boolean { - return saksbehandler == null - } + fun manglerSaksbehandler(): Boolean = saksbehandler == null fun erAvsluttet(): Boolean = status.erAvsluttet() @@ -51,7 +49,10 @@ data class OppgaveIntern( ) } -data class OppgavebenkStats(val antallOppgavelistaOppgaver: Long, val antallMinOppgavelisteOppgaver: Long) +data class OppgavebenkStats( + val antallOppgavelistaOppgaver: Long, + val antallMinOppgavelisteOppgaver: Long, +) enum class Status { NY, @@ -64,8 +65,8 @@ enum class Status { AVBRUTT, ; - fun erAvsluttet(): Boolean { - return when (this) { + fun erAvsluttet(): Boolean = + when (this) { NY, UNDER_BEHANDLING, PAA_VENT, @@ -78,7 +79,6 @@ enum class Status { AVBRUTT, -> true } - } // TODO: Gå gjennom navngiving her. Gir det mening med "under behandling" som status OG samlebegrep...? fun erUnderBehandling(): Boolean = this in listOf(UNDER_BEHANDLING, PAA_VENT, ATTESTERING, UNDERKJENT) @@ -177,8 +177,8 @@ fun opprettNyOppgaveMedReferanseOgSak( oppgaveType: OppgaveType, merknad: String?, frist: Tidspunkt? = null, -): OppgaveIntern { - return OppgaveIntern( +): OppgaveIntern = + OppgaveIntern( id = UUID.randomUUID(), status = Status.NY, enhet = sak.enhet, @@ -193,4 +193,3 @@ fun opprettNyOppgaveMedReferanseOgSak( frist = frist, type = oppgaveType, ) -} diff --git a/libs/etterlatte-pdl-model/src/main/kotlin/pdl/PersonDTO.kt b/libs/etterlatte-pdl-model/src/main/kotlin/pdl/PersonDTO.kt index 215c97e57a9..90b21a27dcb 100644 --- a/libs/etterlatte-pdl-model/src/main/kotlin/pdl/PersonDTO.kt +++ b/libs/etterlatte-pdl-model/src/main/kotlin/pdl/PersonDTO.kt @@ -62,4 +62,7 @@ data class PersonDTO( ) } -open class OpplysningDTO(val verdi: T, val opplysningsid: String?) +open class OpplysningDTO( + val verdi: T, + val opplysningsid: String?, +) diff --git a/libs/etterlatte-regler/src/main/kotlin/regler/PeriodisertGrunnlag.kt b/libs/etterlatte-regler/src/main/kotlin/regler/PeriodisertGrunnlag.kt index 65d5360661a..df292343f5c 100644 --- a/libs/etterlatte-regler/src/main/kotlin/regler/PeriodisertGrunnlag.kt +++ b/libs/etterlatte-regler/src/main/kotlin/regler/PeriodisertGrunnlag.kt @@ -5,16 +5,18 @@ import java.time.LocalDate interface PeriodisertGrunnlag { fun finnAlleKnekkpunkter(): Set - fun finnKnekkpunkterInnenforPeriode(periode: RegelPeriode): Set { - return finnAlleKnekkpunkter().filter { knekkpunkt -> - knekkpunkt >= periode.fraDato && (periode.tilDato?.let { it >= knekkpunkt } ?: true) - }.toSet() - } + fun finnKnekkpunkterInnenforPeriode(periode: RegelPeriode): Set = + finnAlleKnekkpunkter() + .filter { knekkpunkt -> + knekkpunkt >= periode.fraDato && (periode.tilDato?.let { it >= knekkpunkt } ?: true) + }.toSet() fun finnGrunnlagForPeriode(datoIPeriode: LocalDate): G } -class KonstantGrunnlag(private val konstantGrunnlag: G) : PeriodisertGrunnlag { +class KonstantGrunnlag( + private val konstantGrunnlag: G, +) : PeriodisertGrunnlag { override fun finnAlleKnekkpunkter(): Set = emptySet() override fun finnGrunnlagForPeriode(datoIPeriode: LocalDate): G = konstantGrunnlag diff --git a/libs/etterlatte-regler/src/main/kotlin/regler/Regelkjoering.kt b/libs/etterlatte-regler/src/main/kotlin/regler/Regelkjoering.kt index 975c6f82522..02b22b45544 100644 --- a/libs/etterlatte-regler/src/main/kotlin/regler/Regelkjoering.kt +++ b/libs/etterlatte-regler/src/main/kotlin/regler/Regelkjoering.kt @@ -8,15 +8,18 @@ data class PeriodisertResultat( val reglerVersjon: String, ) -sealed class RegelkjoeringResultat(open val reglerVersjon: String) { +sealed class RegelkjoeringResultat( + open val reglerVersjon: String, +) { data class Suksess( val periodiserteResultater: List>, override val reglerVersjon: String, - ) : - RegelkjoeringResultat(reglerVersjon) + ) : RegelkjoeringResultat(reglerVersjon) - data class UgyldigPeriode(val ugyldigeReglerForPeriode: List>, override val reglerVersjon: String) : - RegelkjoeringResultat(reglerVersjon) + data class UgyldigPeriode( + val ugyldigeReglerForPeriode: List>, + override val reglerVersjon: String, + ) : RegelkjoeringResultat(reglerVersjon) } object Regelkjoering { @@ -30,7 +33,8 @@ object Regelkjoering { val ugyldigePerioder = regel.finnUgyldigePerioder(periode) return if (ugyldigePerioder.isEmpty()) { - regel.finnAlleKnekkpunkter() + regel + .finnAlleKnekkpunkter() .asSequence() .plus(grunnlag.finnKnekkpunkterInnenforPeriode(periode)) .filter { knekkpunktGyldigForPeriode(it, periode) } @@ -43,8 +47,7 @@ object Regelkjoering { fraDato = periodeFra, tilDato = nestePeriodeFra.takeIf { it.isBefore(LocalDate.MAX) }?.minusDays(1) ?: periode.tilDato, ) - } - .toList() + }.toList() .associateWith { p -> regel.anvend(grunnlag.finnGrunnlagForPeriode(p.fraDato), p) } .let { RegelkjoeringResultat.Suksess( diff --git a/libs/etterlatte-regler/src/main/kotlin/regler/Regler.kt b/libs/etterlatte-regler/src/main/kotlin/regler/Regler.kt index a70103728df..8f87311a61c 100644 --- a/libs/etterlatte-regler/src/main/kotlin/regler/Regler.kt +++ b/libs/etterlatte-regler/src/main/kotlin/regler/Regler.kt @@ -3,13 +3,19 @@ package no.nav.etterlatte.libs.regler import com.fasterxml.jackson.annotation.JsonIgnore import java.time.LocalDate -data class RegelPeriode(val fraDato: LocalDate, val tilDato: LocalDate? = null) { +data class RegelPeriode( + val fraDato: LocalDate, + val tilDato: LocalDate? = null, +) { init { check(tilDato == null || tilDato >= fraDato) { "Tildato må være større eller lik fradato" } } } -data class RegelReferanse(val id: String, val versjon: String = "1") +data class RegelReferanse( + val id: String, + val versjon: String = "1", +) abstract class Regel( open val gjelderFra: LocalDate, @@ -236,5 +242,6 @@ open class KonstantRegel( ) } -data class IngenGyldigeReglerForTidspunktException(val periode: RegelPeriode) : - Exception("Ingen gyldige regler er konfigurert for tidsrommet: ${periode.fraDato} - ${periode.tilDato}") +data class IngenGyldigeReglerForTidspunktException( + val periode: RegelPeriode, +) : Exception("Ingen gyldige regler er konfigurert for tidsrommet: ${periode.fraDato} - ${periode.tilDato}") diff --git a/libs/etterlatte-regler/src/main/kotlin/regler/Visitor.kt b/libs/etterlatte-regler/src/main/kotlin/regler/Visitor.kt index 77cae18c7c3..05d6867b08a 100644 --- a/libs/etterlatte-regler/src/main/kotlin/regler/Visitor.kt +++ b/libs/etterlatte-regler/src/main/kotlin/regler/Visitor.kt @@ -46,7 +46,9 @@ fun Regel<*, *>.finnAlleKnekkpunkter(): Set { return finnKnekkpunkterVisitor.knekkpunkter } -class KanAnvendesPaaPeriode(val periode: RegelPeriode) : RegelVisitor { +class KanAnvendesPaaPeriode( + val periode: RegelPeriode, +) : RegelVisitor { val ugyldigeReglerForPeriode = mutableListOf>() override fun visit(regel: Regel<*, *>) { diff --git a/libs/etterlatte-regler/src/test/kotlin/regler/FinnFaktumIGrunnlagRegelTest.kt b/libs/etterlatte-regler/src/test/kotlin/regler/FinnFaktumIGrunnlagRegelTest.kt index 0828c714c5f..f94e86d7c71 100644 --- a/libs/etterlatte-regler/src/test/kotlin/regler/FinnFaktumIGrunnlagRegelTest.kt +++ b/libs/etterlatte-regler/src/test/kotlin/regler/FinnFaktumIGrunnlagRegelTest.kt @@ -6,7 +6,9 @@ import org.junit.jupiter.api.Test import java.time.LocalDate class FinnFaktumIGrunnlagRegelTest { - data class Grunnlag(val testVerdi2021: FaktumNode) + data class Grunnlag( + val testVerdi2021: FaktumNode, + ) private val grunnlag = Grunnlag( diff --git a/libs/etterlatte-sporingslogg/src/main/kotlin/sporingslogg/CEFEntry.kt b/libs/etterlatte-sporingslogg/src/main/kotlin/sporingslogg/CEFEntry.kt index f4e853baa5f..177abc53591 100644 --- a/libs/etterlatte-sporingslogg/src/main/kotlin/sporingslogg/CEFEntry.kt +++ b/libs/etterlatte-sporingslogg/src/main/kotlin/sporingslogg/CEFEntry.kt @@ -27,7 +27,9 @@ enum class DeviceEventClassId { fun format() = "audit:${name.lowercase()}" } -enum class Name(val tekst: String) { +enum class Name( + val tekst: String, +) { OnBehalfOfAccess("On-behalf-of access"), } diff --git a/libs/etterlatte-tilbakekreving-model/src/main/kotlin/Kravgrunnlag.kt b/libs/etterlatte-tilbakekreving-model/src/main/kotlin/Kravgrunnlag.kt index fadc213a6c4..c82a4edfb5e 100644 --- a/libs/etterlatte-tilbakekreving-model/src/main/kotlin/Kravgrunnlag.kt +++ b/libs/etterlatte-tilbakekreving-model/src/main/kotlin/Kravgrunnlag.kt @@ -4,19 +4,34 @@ import no.nav.etterlatte.libs.common.UUID30 import java.math.BigDecimal import java.time.YearMonth -data class KravgrunnlagId(val value: Long) +data class KravgrunnlagId( + val value: Long, +) -data class SakId(val value: Long) +data class SakId( + val value: Long, +) -data class VedtakId(val value: Long) +data class VedtakId( + val value: Long, +) -data class Kontrollfelt(val value: String) +data class Kontrollfelt( + val value: String, +) -data class NavIdent(val value: String) +data class NavIdent( + val value: String, +) -data class KlasseKode(val value: String) +data class KlasseKode( + val value: String, +) -data class Periode(val fraOgMed: YearMonth, val tilOgMed: YearMonth) +data class Periode( + val fraOgMed: YearMonth, + val tilOgMed: YearMonth, +) enum class KravgrunnlagStatus { ANNU, ANOM, AVSL, BEHA, ENDR, FEIL, MANU, NY, SPER } diff --git a/libs/etterlatte-tilbakekreving-model/src/main/kotlin/Tilbakekreving.kt b/libs/etterlatte-tilbakekreving-model/src/main/kotlin/Tilbakekreving.kt index 768b55f1f10..c981df06ea1 100644 --- a/libs/etterlatte-tilbakekreving-model/src/main/kotlin/Tilbakekreving.kt +++ b/libs/etterlatte-tilbakekreving-model/src/main/kotlin/Tilbakekreving.kt @@ -151,8 +151,8 @@ data class Tilbakekrevingsbelop( ) } -fun List.tilTilbakekrevingPerioder(): List { - return map { periode -> +fun List.tilTilbakekrevingPerioder(): List = + map { periode -> val ytelse = requireNotNull(periode.grunnlagsbeloep.find { it.klasseType == KlasseType.YTEL }) { "Fant ingen ytelse" } @@ -165,7 +165,6 @@ fun List.tilTilbakekrevingPerioder(): List get() = - this[TILBAKESTILTE_BEHANDLINGER_KEY].asText().trim().split(";") + this[TILBAKESTILTE_BEHANDLINGER_KEY] + .asText() + .trim() + .split(";") .filter { it.isNotEmpty() } .map { UUID.fromString(it) } set(name) { @@ -68,7 +71,10 @@ var JsonMessage.tilbakestilteBehandlinger: List var JsonMessage.aapneBehandlinger: List get() = - this[AAPNE_BEHANDLINGER_KEY].asText().trim().split(";") + this[AAPNE_BEHANDLINGER_KEY] + .asText() + .trim() + .split(";") .filter { it.isNotEmpty() } .map { UUID.fromString(it) } set(name) { diff --git a/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/ListenerMedLogging.kt b/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/ListenerMedLogging.kt index dd13def4d3e..570ff20ff63 100644 --- a/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/ListenerMedLogging.kt +++ b/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/ListenerMedLogging.kt @@ -53,9 +53,10 @@ abstract class ListenerMedLogging : River.PacketListener { block: River.() -> Unit = {}, ) { logger.info("Initialiserer river for ${this.javaClass.simpleName}") - River(rapidsConnection).apply { - correlationId() - block() - }.register(this) + River(rapidsConnection) + .apply { + correlationId() + block() + }.register(this) } } diff --git a/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/ListenerMedLoggingOgFeilhaandtering.kt b/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/ListenerMedLoggingOgFeilhaandtering.kt index 48c7572c7da..2615ee94505 100644 --- a/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/ListenerMedLoggingOgFeilhaandtering.kt +++ b/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/ListenerMedLoggingOgFeilhaandtering.kt @@ -46,10 +46,11 @@ abstract class ListenerMedLoggingOgFeilhaandtering : River.PacketListener { block: River.() -> Unit = {}, ) { logger.info("Initialiserer river for ${this.javaClass.simpleName}") - River(rapidsConnection).apply { - eventName(hendelsestype.lagEventnameForType()) - correlationId() - block() - }.register(this) + River(rapidsConnection) + .apply { + eventName(hendelsestype.lagEventnameForType()) + correlationId() + block() + }.register(this) } } diff --git a/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/RapidEnv.kt b/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/RapidEnv.kt index 34292417236..70d1a447500 100644 --- a/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/RapidEnv.kt +++ b/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/RapidEnv.kt @@ -8,11 +8,10 @@ import org.apache.kafka.clients.producer.ProducerConfig import org.apache.kafka.common.config.SaslConfigs import java.util.Properties -fun getRapidEnv(): Map { - return System.getenv().toMutableMap().apply { +fun getRapidEnv(): Map = + System.getenv().toMutableMap().apply { put("KAFKA_CONSUMER_GROUP_ID", get("NAIS_APP_NAME")!!.replace("-", "")) } -} fun configFromEnvironment(env: Map): Config { val gcpConfigAvailable = env.containsKey("KAFKA_BROKERS") && env.containsKey("KAFKA_CREDSTORE_PASSWORD") @@ -23,33 +22,32 @@ fun configFromEnvironment(env: Map): Config { } } -class LocalKafkaConfig(private val env: Map) : Config { - override fun producerConfig(properties: Properties): Properties { - return properties.apply { +class LocalKafkaConfig( + private val env: Map, +) : Config { + override fun producerConfig(properties: Properties): Properties = + properties.apply { connectionConfig(this) put(ProducerConfig.ACKS_CONFIG, "all") put(ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, "1") put(ProducerConfig.LINGER_MS_CONFIG, "0") put(ProducerConfig.RETRIES_CONFIG, "0") } - } override fun consumerConfig( groupId: String, properties: Properties, - ): Properties { - return properties.apply { + ): Properties = + properties.apply { connectionConfig(this) put(ConsumerConfig.GROUP_ID_CONFIG, groupId) put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest") } - } - override fun adminConfig(properties: Properties): Properties { - return properties.apply { + override fun adminConfig(properties: Properties): Properties = + properties.apply { connectionConfig(this) } - } private fun connectionConfig(properties: Properties) = properties.apply { diff --git a/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/ReguleringEvents.kt b/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/ReguleringEvents.kt index 915df1948cb..2246cd19433 100644 --- a/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/ReguleringEvents.kt +++ b/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/ReguleringEvents.kt @@ -11,7 +11,10 @@ object ReguleringEvents { var JsonMessage.saker: List get() = - this[ReguleringEvents.SPESIFIKKE_SAKER].asText().trim().split(";") + this[ReguleringEvents.SPESIFIKKE_SAKER] + .asText() + .trim() + .split(";") .filter { it.isNotEmpty() } .map { it.toLong() } set(name) { diff --git a/libs/saksbehandling-common/src/main/kotlin/EnvUtils.kt b/libs/saksbehandling-common/src/main/kotlin/EnvUtils.kt index 25aef9b6ba5..e5213c530a0 100644 --- a/libs/saksbehandling-common/src/main/kotlin/EnvUtils.kt +++ b/libs/saksbehandling-common/src/main/kotlin/EnvUtils.kt @@ -6,12 +6,12 @@ fun Map.requireEnvValue(key: String) = else -> value } -data class Miljoevariabler(val props: Map) { +data class Miljoevariabler( + val props: Map, +) { fun requireEnvValue(key: String): String = props.requireEnvValue(key) - fun maybeEnvValue(key: String): String? { - return props[key] - } + fun maybeEnvValue(key: String): String? = props[key] operator fun get(key: String) = props[key] diff --git a/libs/saksbehandling-common/src/main/kotlin/Jackson.kt b/libs/saksbehandling-common/src/main/kotlin/Jackson.kt index 9eac59b76c9..775047a5f12 100644 --- a/libs/saksbehandling-common/src/main/kotlin/Jackson.kt +++ b/libs/saksbehandling-common/src/main/kotlin/Jackson.kt @@ -12,7 +12,8 @@ import com.fasterxml.jackson.module.kotlin.KotlinModule import com.fasterxml.jackson.module.kotlin.readValue val objectMapper: ObjectMapper = - JsonMapper.builder() + JsonMapper + .builder() .addModule(JavaTimeModule()) .addModule(KotlinModule.Builder().build()) .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) diff --git a/libs/saksbehandling-common/src/main/kotlin/NaisUtils.kt b/libs/saksbehandling-common/src/main/kotlin/NaisUtils.kt index d6fe2496ff8..89c49565475 100644 --- a/libs/saksbehandling-common/src/main/kotlin/NaisUtils.kt +++ b/libs/saksbehandling-common/src/main/kotlin/NaisUtils.kt @@ -4,7 +4,9 @@ fun appName(): String? = System.getenv()["NAIS_APP_NAME"] fun clusterNavn(): String? = System.getenv()["NAIS_CLUSTER_NAME"] -enum class GcpEnv(val env: String) { +enum class GcpEnv( + val env: String, +) { PROD("prod-gcp"), DEV("dev-gcp"), } @@ -13,9 +15,8 @@ fun isDev(): Boolean = clusterNavn() == GcpEnv.DEV.env fun isProd(): Boolean = clusterNavn() == GcpEnv.PROD.env -fun appIsInGCP(): Boolean { - return when (val naisClusterName = clusterNavn()) { +fun appIsInGCP(): Boolean = + when (val naisClusterName = clusterNavn()) { null -> false else -> GcpEnv.entries.map { it.env }.contains(naisClusterName) } -} diff --git a/libs/saksbehandling-common/src/main/kotlin/Retry.kt b/libs/saksbehandling-common/src/main/kotlin/Retry.kt index 3e7005d48ad..4ff26350770 100644 --- a/libs/saksbehandling-common/src/main/kotlin/Retry.kt +++ b/libs/saksbehandling-common/src/main/kotlin/Retry.kt @@ -5,9 +5,14 @@ import no.nav.etterlatte.libs.common.RetryResult.Success import no.nav.etterlatte.libs.common.logging.samleExceptions sealed class RetryResult { - data class Success(val content: T, val previousExceptions: List = emptyList()) : RetryResult() + data class Success( + val content: T, + val previousExceptions: List = emptyList(), + ) : RetryResult() - data class Failure(val exceptions: List = emptyList()) : RetryResult() { + data class Failure( + val exceptions: List = emptyList(), + ) : RetryResult() { fun samlaExceptions(): Exception = samleExceptions(this.exceptions) } } @@ -31,8 +36,8 @@ private suspend fun retryInner( times: Int, exceptions: List, block: suspend () -> T, -): RetryResult { - return try { +): RetryResult = + try { Success(block(), exceptions) } catch (ex: Exception) { if (times < 1) { @@ -41,4 +46,3 @@ private suspend fun retryInner( retryInner(times - 1, exceptions + ex, block) } } -} diff --git a/libs/saksbehandling-common/src/main/kotlin/UUID30.kt b/libs/saksbehandling-common/src/main/kotlin/UUID30.kt index 56435237eb7..ec4f31cbb8a 100644 --- a/libs/saksbehandling-common/src/main/kotlin/UUID30.kt +++ b/libs/saksbehandling-common/src/main/kotlin/UUID30.kt @@ -2,6 +2,13 @@ package no.nav.etterlatte.libs.common import java.util.UUID -fun UUID.toUUID30() = this.toString().replace("-", "").substring(0, 30).let { UUID30(it) } +fun UUID.toUUID30() = + this + .toString() + .replace("-", "") + .substring(0, 30) + .let { UUID30(it) } -data class UUID30(val value: String) +data class UUID30( + val value: String, +) diff --git a/libs/saksbehandling-common/src/main/kotlin/VedtakType.kt b/libs/saksbehandling-common/src/main/kotlin/VedtakType.kt index 6c5f35766fc..03b07c7f5ab 100644 --- a/libs/saksbehandling-common/src/main/kotlin/VedtakType.kt +++ b/libs/saksbehandling-common/src/main/kotlin/VedtakType.kt @@ -1,6 +1,8 @@ package no.nav.etterlatte.libs.common.vedtak -enum class VedtakType(val kanLoepe: Boolean) { +enum class VedtakType( + val kanLoepe: Boolean, +) { INNVILGELSE(true), OPPHOER(true), AVSLAG(true), diff --git a/libs/saksbehandling-common/src/main/kotlin/behandling/Navn.kt b/libs/saksbehandling-common/src/main/kotlin/behandling/Navn.kt index 10044fc4b36..7a1bd35ddef 100644 --- a/libs/saksbehandling-common/src/main/kotlin/behandling/Navn.kt +++ b/libs/saksbehandling-common/src/main/kotlin/behandling/Navn.kt @@ -1,5 +1,9 @@ package no.nav.etterlatte.libs.common.behandling -data class Navn(val fornavn: String, val mellomnavn: String? = null, val etternavn: String) { +data class Navn( + val fornavn: String, + val mellomnavn: String? = null, + val etternavn: String, +) { override fun toString(): String = listOfNotNull(fornavn, mellomnavn, etternavn).joinToString(" ") } diff --git a/libs/saksbehandling-common/src/main/kotlin/behandling/Revurderingaarsak.kt b/libs/saksbehandling-common/src/main/kotlin/behandling/Revurderingaarsak.kt index 5b82c7fbfb2..ef2843a697c 100644 --- a/libs/saksbehandling-common/src/main/kotlin/behandling/Revurderingaarsak.kt +++ b/libs/saksbehandling-common/src/main/kotlin/behandling/Revurderingaarsak.kt @@ -103,7 +103,9 @@ enum class Revurderingaarsak( fun erStoettaRevurdering(sakType: SakType) = kanBrukesIMiljo() && gyldigForSakType(sakType) && this != NY_SOEKNAD } -enum class GcpEnv(val env: String) { +enum class GcpEnv( + val env: String, +) { PROD("prod-gcp"), DEV("dev-gcp"), } diff --git a/libs/saksbehandling-common/src/main/kotlin/behandling/SakType.kt b/libs/saksbehandling-common/src/main/kotlin/behandling/SakType.kt index 5ad087870c5..d73cc3c85a4 100644 --- a/libs/saksbehandling-common/src/main/kotlin/behandling/SakType.kt +++ b/libs/saksbehandling-common/src/main/kotlin/behandling/SakType.kt @@ -1,6 +1,9 @@ package no.nav.etterlatte.libs.common.behandling -enum class SakType(val tema: String, val behandlingsnummer: String) { +enum class SakType( + val tema: String, + val behandlingsnummer: String, +) { BARNEPENSJON("EYB", "B359"), OMSTILLINGSSTOENAD("EYO", "B373"), } diff --git a/libs/saksbehandling-common/src/main/kotlin/event/SoeknadInnsendt.kt b/libs/saksbehandling-common/src/main/kotlin/event/SoeknadInnsendt.kt index 7946fcbb695..191191d59e0 100644 --- a/libs/saksbehandling-common/src/main/kotlin/event/SoeknadInnsendt.kt +++ b/libs/saksbehandling-common/src/main/kotlin/event/SoeknadInnsendt.kt @@ -13,7 +13,9 @@ interface ISoeknadInnsendt { object SoeknadInnsendt : ISoeknadInnsendt -enum class SoeknadInnsendtHendelseType(val eventname: String) : EventnameHendelseType { +enum class SoeknadInnsendtHendelseType( + val eventname: String, +) : EventnameHendelseType { EVENT_NAME_INNSENDT("soeknad_innsendt"), EVENT_NAME_BEHANDLINGBEHOV("trenger_behandling"), ; diff --git a/libs/saksbehandling-common/src/main/kotlin/grunnlag/Grunnlag.kt b/libs/saksbehandling-common/src/main/kotlin/grunnlag/Grunnlag.kt index 93522d7c84f..fb093e54924 100644 --- a/libs/saksbehandling-common/src/main/kotlin/grunnlag/Grunnlag.kt +++ b/libs/saksbehandling-common/src/main/kotlin/grunnlag/Grunnlag.kt @@ -48,7 +48,8 @@ class Grunnlag( private fun hentFamiliemedlemmer(personRolle: PersonRolle): List> { val aktuellePersoner = folkMedRolle(personRolle) - return familie.filter { it.hentFoedselsnummer()?.verdi?.value in aktuellePersoner } + return familie + .filter { it.hentFoedselsnummer()?.verdi?.value in aktuellePersoner } .filter { it.hentPersonrolle()?.verdi == personRolle } } @@ -66,4 +67,7 @@ fun Grunnlag.folkMedRolle(rolle: PersonRolle): List { } } -data class Metadata(val sakId: Long, val versjon: Long) +data class Metadata( + val sakId: Long, + val versjon: Long, +) diff --git a/libs/saksbehandling-common/src/main/kotlin/grunnlag/Grunnlagsopplysning.kt b/libs/saksbehandling-common/src/main/kotlin/grunnlag/Grunnlagsopplysning.kt index 08e1c1a5871..e8f2ca12801 100644 --- a/libs/saksbehandling-common/src/main/kotlin/grunnlag/Grunnlagsopplysning.kt +++ b/libs/saksbehandling-common/src/main/kotlin/grunnlag/Grunnlagsopplysning.kt @@ -31,8 +31,8 @@ open class Grunnlagsopplysning( fnr: Folkeregisteridentifikator, fom: YearMonth?, tom: YearMonth? = null, - ): Grunnlagsopplysning { - return Grunnlagsopplysning( + ): Grunnlagsopplysning = + Grunnlagsopplysning( id = UUID.randomUUID(), kilde = kilde, opplysningType = opplysningType, @@ -42,14 +42,11 @@ open class Grunnlagsopplysning( fnr = fnr, periode = fom?.let { Periode(it, tom) }, ) - } val automatiskSaksbehandler = Saksbehandler.create(ident = "Gjenny") } - override fun toString(): String { - return "Opplysning om ${opplysningType.name}: oppgitt av $kilde til å være: $opplysning. Id: $id" - } + override fun toString(): String = "Opplysning om ${opplysningType.name}: oppgitt av $kilde til å være: $opplysning. Id: $id" @JsonTypeInfo( use = JsonTypeInfo.Id.NAME, @@ -67,51 +64,58 @@ open class Grunnlagsopplysning( JsonSubTypes.Type(value = UkjentInnsender::class, name = "ukjentinnsender"), JsonSubTypes.Type(value = Gjenny::class, name = "gjenny"), ) - sealed class Kilde(val type: String) { + sealed class Kilde( + val type: String, + ) { fun toJson() = objectMapperKilde.writeValueAsString(this) } - data class Saksbehandler(val ident: String, val tidspunkt: Tidspunkt) : Kilde("saksbehandler") { + data class Saksbehandler( + val ident: String, + val tidspunkt: Tidspunkt, + ) : Kilde("saksbehandler") { companion object { fun create(ident: String) = Saksbehandler(ident, Tidspunkt.now()) } - override fun toString(): String { - return "saksbehandler $ident" - } + override fun toString(): String = "saksbehandler $ident" } - data class Gjenny(val ident: String, val tidspunkt: Tidspunkt) : Kilde("gjenny") { + data class Gjenny( + val ident: String, + val tidspunkt: Tidspunkt, + ) : Kilde("gjenny") { companion object { fun create(ident: String) = Saksbehandler(ident, Tidspunkt.now()) } - override fun toString(): String { - return "gjenny $ident" - } + override fun toString(): String = "gjenny $ident" } - data class Pesys(val tidspunkt: Tidspunkt) : Kilde("pesys") { + data class Pesys( + val tidspunkt: Tidspunkt, + ) : Kilde("pesys") { companion object { fun create() = Pesys(Tidspunkt.now()) } - override fun toString(): String { - return "pesys" - } + override fun toString(): String = "pesys" } - data class Gjenoppretting(val tidspunkt: Tidspunkt) : Kilde("gjenoppretting") { + data class Gjenoppretting( + val tidspunkt: Tidspunkt, + ) : Kilde("gjenoppretting") { companion object { fun create() = Gjenoppretting(Tidspunkt.now()) } - override fun toString(): String { - return "gjenoppretting" - } + override fun toString(): String = "gjenoppretting" } - data class Privatperson(val fnr: String, val mottatDato: Tidspunkt) : Kilde("privatperson") + data class Privatperson( + val fnr: String, + val mottatDato: Tidspunkt, + ) : Kilde("privatperson") data class Pdl( val tidspunktForInnhenting: Tidspunkt, @@ -120,9 +124,7 @@ open class Grunnlagsopplysning( ) : Kilde("pdl") { val navn = "pdl" - override fun toString(): String { - return navn - } + override fun toString(): String = navn } data class Persondata( @@ -132,18 +134,20 @@ open class Grunnlagsopplysning( ) : Kilde("persondata") { val navn = "persondata" - override fun toString(): String { - return navn - } + override fun toString(): String = navn } - data class RegelKilde(val navn: String, val ts: Tidspunkt, val versjon: String) : Kilde("regel") { - override fun toString(): String { - return "beregningsregel $navn" - } + data class RegelKilde( + val navn: String, + val ts: Tidspunkt, + val versjon: String, + ) : Kilde("regel") { + override fun toString(): String = "beregningsregel $navn" } - data class UkjentInnsender(val tidspunkt: Tidspunkt) : Kilde("ukjentinnsender") { + data class UkjentInnsender( + val tidspunkt: Tidspunkt, + ) : Kilde("ukjentinnsender") { companion object { fun create() = UkjentInnsender(Tidspunkt.now()) } @@ -162,8 +166,8 @@ fun lagOpplysning( kilde: Grunnlagsopplysning.Kilde, opplysning: T, periode: Periode? = null, -): Grunnlagsopplysning { - return Grunnlagsopplysning( +): Grunnlagsopplysning = + Grunnlagsopplysning( id = UUID.randomUUID(), kilde = kilde, opplysningType = opplysningsType, @@ -171,4 +175,3 @@ fun lagOpplysning( opplysning = opplysning, periode = periode, ) -} diff --git a/libs/saksbehandling-common/src/main/kotlin/grunnlag/Opplysning.kt b/libs/saksbehandling-common/src/main/kotlin/grunnlag/Opplysning.kt index 3eebee4fc76..505bedd4d2c 100644 --- a/libs/saksbehandling-common/src/main/kotlin/grunnlag/Opplysning.kt +++ b/libs/saksbehandling-common/src/main/kotlin/grunnlag/Opplysning.kt @@ -12,7 +12,9 @@ import java.util.UUID @JsonSubTypes( JsonSubTypes.Type(value = Opplysning.Konstant::class, name = "konstant"), ) -sealed class Opplysning(val type: String) { +sealed class Opplysning( + val type: String, +) { data class Konstant( val id: UUID, val kilde: Grunnlagsopplysning.Kilde, diff --git a/libs/saksbehandling-common/src/main/kotlin/gyldigSoeknad/VurdertGyldighet.kt b/libs/saksbehandling-common/src/main/kotlin/gyldigSoeknad/VurdertGyldighet.kt index 021e18eec3a..a92d3e59341 100644 --- a/libs/saksbehandling-common/src/main/kotlin/gyldigSoeknad/VurdertGyldighet.kt +++ b/libs/saksbehandling-common/src/main/kotlin/gyldigSoeknad/VurdertGyldighet.kt @@ -20,7 +20,9 @@ data class GyldighetsResultat( val vurdertDato: LocalDateTime, ) -enum class VurderingsResultat(val prioritet: Int) { +enum class VurderingsResultat( + val prioritet: Int, +) { OPPFYLT(1), KAN_IKKE_VURDERE_PGA_MANGLENDE_OPPLYSNING(2), IKKE_OPPFYLT(3), diff --git a/libs/saksbehandling-common/src/main/kotlin/jobs/OpeningHours.kt b/libs/saksbehandling-common/src/main/kotlin/jobs/OpeningHours.kt index ba29c7b633e..662be5288af 100644 --- a/libs/saksbehandling-common/src/main/kotlin/jobs/OpeningHours.kt +++ b/libs/saksbehandling-common/src/main/kotlin/jobs/OpeningHours.kt @@ -2,11 +2,18 @@ package no.nav.etterlatte.libs.common import java.time.Clock -class FeilAntallTiderException(message: String) : Exception(message) +class FeilAntallTiderException( + message: String, +) : Exception(message) -class UgyldigTidException(message: String) : Exception(message) +class UgyldigTidException( + message: String, +) : Exception(message) -data class OpeningHours(val start: Int, val slutt: Int) { +data class OpeningHours( + val start: Int, + val slutt: Int, +) { companion object { fun of(openingHours: String): OpeningHours { val startOgSlutt = openingHours.split("-").toList() diff --git a/libs/saksbehandling-common/src/main/kotlin/periode/Periode.kt b/libs/saksbehandling-common/src/main/kotlin/periode/Periode.kt index ff68d90cbb9..530ac9f6168 100644 --- a/libs/saksbehandling-common/src/main/kotlin/periode/Periode.kt +++ b/libs/saksbehandling-common/src/main/kotlin/periode/Periode.kt @@ -2,4 +2,7 @@ package no.nav.etterlatte.libs.common.periode import java.time.YearMonth -data class Periode(val fom: YearMonth, val tom: YearMonth?) +data class Periode( + val fom: YearMonth, + val tom: YearMonth?, +) diff --git a/libs/saksbehandling-common/src/main/kotlin/person/Folkeregisteridentifikator.kt b/libs/saksbehandling-common/src/main/kotlin/person/Folkeregisteridentifikator.kt index c4b26d9fb6c..ef54d15e331 100644 --- a/libs/saksbehandling-common/src/main/kotlin/person/Folkeregisteridentifikator.kt +++ b/libs/saksbehandling-common/src/main/kotlin/person/Folkeregisteridentifikator.kt @@ -93,9 +93,7 @@ class Folkeregisteridentifikator private constructor( return firesifretAarstallFraTosifret(year, individnummer) } - fun getAge(): Int { - return ChronoUnit.YEARS.between(getBirthDate(), LocalDate.now()).toInt() - } + fun getAge(): Int = ChronoUnit.YEARS.between(getBirthDate(), LocalDate.now()).toInt() /** * Sjekker om fødselsnummeret er av typen "Hjelpenummer". @@ -136,8 +134,8 @@ class Folkeregisteridentifikator private constructor( internal fun firesifretAarstallFraTosifret( year: Int, individnummer: Int, -): Int { - return if (individnummer < 500) { +): Int = + if (individnummer < 500) { (year + 1900) } else if ((individnummer < 750) && (54 < year)) { (year + 1800) @@ -148,9 +146,10 @@ internal fun firesifretAarstallFraTosifret( } else { throw IllegalArgumentException("Ingen gyldig årstall funnet for individnummer $individnummer") } -} -class InvalidFoedselsnummerException(details: String) : UgyldigForespoerselException( - code = "UGYLDIG_FNR", - detail = details, -) +class InvalidFoedselsnummerException( + details: String, +) : UgyldigForespoerselException( + code = "UGYLDIG_FNR", + detail = details, + ) diff --git a/libs/saksbehandling-common/src/main/kotlin/person/FolkeregisteridentifikatorValidator.kt b/libs/saksbehandling-common/src/main/kotlin/person/FolkeregisteridentifikatorValidator.kt index 961d3f25186..6284a98e562 100644 --- a/libs/saksbehandling-common/src/main/kotlin/person/FolkeregisteridentifikatorValidator.kt +++ b/libs/saksbehandling-common/src/main/kotlin/person/FolkeregisteridentifikatorValidator.kt @@ -12,12 +12,11 @@ class FolkeregisteridentifikatorValidator { * It does not have a BigInteger value of 0. * Control digits are valid. */ - fun isValid(value: String): Boolean { - return !Regex("0{11}").matches(value) && + fun isValid(value: String): Boolean = + !Regex("0{11}").matches(value) && value.length == 11 && value.toBigIntegerOrNull() != null && validateControlDigits(value) - } /** * Validate control digits. @@ -47,7 +46,8 @@ class FolkeregisteridentifikatorValidator { value: String, ): Int { val sum = - arr.withIndex() + arr + .withIndex() .sumOf { (i, m) -> m * Character.getNumericValue(value[i]) } val result = 11 - (sum % 11) diff --git a/libs/saksbehandling-common/src/main/kotlin/person/Person.kt b/libs/saksbehandling-common/src/main/kotlin/person/Person.kt index 1b3362f558f..c9a43b3af72 100644 --- a/libs/saksbehandling-common/src/main/kotlin/person/Person.kt +++ b/libs/saksbehandling-common/src/main/kotlin/person/Person.kt @@ -12,7 +12,9 @@ import no.nav.etterlatte.libs.common.logging.sikkerlogger import java.time.LocalDate import java.time.LocalDateTime -enum class PDLIdentGruppeTyper(val navn: String) { +enum class PDLIdentGruppeTyper( + val navn: String, +) { FOLKEREGISTERIDENT("FOLKEREGISTERIDENT"), // Kan være DNR og FNR AKTORID("AKTORID"), NPID("NPID"), @@ -193,16 +195,18 @@ interface Verge { fun navn(): String } -data class Vergemaal(val navn: String, val foedselsnummer: Folkeregisteridentifikator) : Verge { - override fun navn(): String { - return navn - } +data class Vergemaal( + val navn: String, + val foedselsnummer: Folkeregisteridentifikator, +) : Verge { + override fun navn(): String = navn } -data class ForelderVerge(val foedselsnummer: Folkeregisteridentifikator, val navn: String) : Verge { - override fun navn(): String { - return navn - } +data class ForelderVerge( + val foedselsnummer: Folkeregisteridentifikator, + val navn: String, +) : Verge { + override fun navn(): String = navn } @JsonIgnoreProperties(ignoreUnknown = true) @@ -217,7 +221,9 @@ data class BrevMottaker( * Denne pakker inn fødselsnummer i {value: ""}, fordi det skal matche responsen fra brev-api... */ @JsonIgnoreProperties(ignoreUnknown = true) -data class MottakerFoedselsnummer(val value: String) { +data class MottakerFoedselsnummer( + val value: String, +) { /** * Skal ALLTID returnere anonymisert fødselsnummer. * @@ -252,9 +258,7 @@ enum class AdressebeskyttelseGradering { UGRADERT, ; - fun erGradert(): Boolean { - return this == STRENGT_FORTROLIG_UTLAND || this == STRENGT_FORTROLIG || this == FORTROLIG - } + fun erGradert(): Boolean = this == STRENGT_FORTROLIG_UTLAND || this == STRENGT_FORTROLIG || this == FORTROLIG } fun List.hentPrioritertGradering() = this.filterNotNull().minOrNull() ?: AdressebeskyttelseGradering.UGRADERT diff --git a/libs/saksbehandling-common/src/main/kotlin/sak/Sak.kt b/libs/saksbehandling-common/src/main/kotlin/sak/Sak.kt index 924ef3c4af8..3b436ef241e 100644 --- a/libs/saksbehandling-common/src/main/kotlin/sak/Sak.kt +++ b/libs/saksbehandling-common/src/main/kotlin/sak/Sak.kt @@ -2,8 +2,19 @@ package no.nav.etterlatte.libs.common.sak import no.nav.etterlatte.libs.common.behandling.SakType -data class Sak(val ident: String, val sakType: SakType, val id: Long, val enhet: String) +data class Sak( + val ident: String, + val sakType: SakType, + val id: Long, + val enhet: String, +) -data class VedtakSak(val ident: String, val sakType: SakType, val id: Long) +data class VedtakSak( + val ident: String, + val sakType: SakType, + val id: Long, +) -data class Saker(val saker: List) +data class Saker( + val saker: List, +) diff --git a/libs/saksbehandling-common/src/main/kotlin/tidspunkt/Tidspunkt.kt b/libs/saksbehandling-common/src/main/kotlin/tidspunkt/Tidspunkt.kt index 9765162dd68..f1d66290a9c 100644 --- a/libs/saksbehandling-common/src/main/kotlin/tidspunkt/Tidspunkt.kt +++ b/libs/saksbehandling-common/src/main/kotlin/tidspunkt/Tidspunkt.kt @@ -97,7 +97,8 @@ class Tidspunkt fun medTimeMinuttSekund(tid: LocalTime): Tidspunkt = Tidspunkt( - ZonedDateTime.ofInstant(instant, standardTidssoneUTC) + ZonedDateTime + .ofInstant(instant, standardTidssoneUTC) .withHour(tid.hour) .withMinute(tid.minute) .withSecond(tid.second) diff --git a/libs/saksbehandling-common/src/test/kotlin/jobs/OpeningHoursTest.kt b/libs/saksbehandling-common/src/test/kotlin/jobs/OpeningHoursTest.kt index a6cd89b34ff..41d458dcd5f 100644 --- a/libs/saksbehandling-common/src/test/kotlin/jobs/OpeningHoursTest.kt +++ b/libs/saksbehandling-common/src/test/kotlin/jobs/OpeningHoursTest.kt @@ -21,13 +21,25 @@ class OpeningHoursTest { @Test fun `kl bittelitt over 16 er utenfor aapningstida 8-16`() { - val sekstenish = ZonedDateTime.now().withHour(16).withMinute(0).withSecond(1).toInstant() + val sekstenish = + ZonedDateTime + .now() + .withHour(16) + .withMinute(0) + .withSecond(1) + .toInstant() openingHours08to16.isOpen(Clock.fixed(sekstenish, norskTidssone)) shouldBe false } @Test fun `midnatt er utenfor aapningstida 8-16`() { - val midnatt = ZonedDateTime.now().withHour(0).withMinute(0).withSecond(1).toInstant() + val midnatt = + ZonedDateTime + .now() + .withHour(0) + .withMinute(0) + .withSecond(1) + .toInstant() openingHours08to16.isOpen(Clock.fixed(midnatt, norskTidssone)) shouldBe false } diff --git a/libs/saksbehandling-common/src/test/kotlin/person/FoedselsnummerTest.kt b/libs/saksbehandling-common/src/test/kotlin/person/FoedselsnummerTest.kt index 49ae66834b2..c135e0f033b 100644 --- a/libs/saksbehandling-common/src/test/kotlin/person/FoedselsnummerTest.kt +++ b/libs/saksbehandling-common/src/test/kotlin/person/FoedselsnummerTest.kt @@ -51,9 +51,20 @@ internal class FoedselsnummerTest { val ugyldigeFnrListe = listOf( - "00000000000", "11111111111", "22222222222", "33333333333", "44444444444", - "55555555555", "66666666666", "77777777777", "88888888888", "99999999999", - "36117512737", "12345678901", "00000000001", "10000000000", + "00000000000", + "11111111111", + "22222222222", + "33333333333", + "44444444444", + "55555555555", + "66666666666", + "77777777777", + "88888888888", + "99999999999", + "36117512737", + "12345678901", + "00000000001", + "10000000000", ) assertAll( diff --git a/libs/testdata/src/main/kotlin/grunnlag/TestDataMaps.kt b/libs/testdata/src/main/kotlin/grunnlag/TestDataMaps.kt index 98b173e2f0e..62885ed4b90 100644 --- a/libs/testdata/src/main/kotlin/grunnlag/TestDataMaps.kt +++ b/libs/testdata/src/main/kotlin/grunnlag/TestDataMaps.kt @@ -220,8 +220,7 @@ internal val avdoedTestopplysningerMap: Map> = - avdoedTestopplysningerMap.toMutableMap().let { map -> - map[DOEDSDATO] = - Opplysning.Konstant(randomUUID(), kilde, AVDOED_FOEDSELSNUMMER.getBirthDate().plusYears(67).toJsonNode()) + avdoedTestopplysningerMap + .toMutableMap() + .let { map -> + map[DOEDSDATO] = + Opplysning.Konstant(randomUUID(), kilde, AVDOED_FOEDSELSNUMMER.getBirthDate().plusYears(67).toJsonNode()) - map - }.toMap() + map + }.toMap() internal val gjenlevendeTestopplysningerMap: Map> = mapOf( @@ -287,8 +288,8 @@ internal val gjenlevendeTestopplysningerMap: Map