diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 000000000..a8e0c65b5 --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +java temurin-21.0.3+9.0.LTS diff --git a/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/Innsyn.java b/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/Innsyn.java index a62a948a7..b314c2394 100644 --- a/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/Innsyn.java +++ b/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/Innsyn.java @@ -6,6 +6,7 @@ import no.nav.foreldrepenger.common.domain.Saksnummer; import no.nav.foreldrepenger.common.innsyn.AnnenPartSak; import no.nav.foreldrepenger.common.innsyn.Saker; +import no.nav.foreldrepenger.common.innsyn.inntektsmelding.FpOversiktInntektsmeldingDto; import no.nav.foreldrepenger.selvbetjening.http.RetryAware; public interface Innsyn extends RetryAware { @@ -20,5 +21,5 @@ public interface Innsyn extends RetryAware { Optional annenPartVedtak(AnnenPartSakIdentifikator request); - List inntektsmeldinger(Saksnummer saksnummer); + List inntektsmeldinger(Saksnummer saksnummer); } diff --git a/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/InnsynConnection.java b/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/InnsynConnection.java index 087b66caf..4bd1f4285 100644 --- a/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/InnsynConnection.java +++ b/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/InnsynConnection.java @@ -6,6 +6,8 @@ import java.util.List; import java.util.Optional; +import no.nav.foreldrepenger.common.innsyn.inntektsmelding.FpOversiktInntektsmeldingDto; + import org.springframework.stereotype.Component; import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.RestOperations; @@ -58,8 +60,8 @@ public List hentUttalelserOmTilbakekreving() { .orElse(emptyList()); } - public List hentInntekstmeldingFor(Saksnummer saksnummer) { - return Optional.ofNullable(getForObject(cfg.inntektsmelding(saksnummer), InntektsmeldingDto[].class)) + public List hentInntekstmeldingFor(Saksnummer saksnummer) { + return Optional.ofNullable(getForObject(cfg.inntektsmelding(saksnummer), FpOversiktInntektsmeldingDto[].class)) .map(Arrays::asList) .orElse(emptyList()); } diff --git a/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/InnsynTjeneste.java b/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/InnsynTjeneste.java index ce39377e9..c6085bfeb 100644 --- a/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/InnsynTjeneste.java +++ b/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/InnsynTjeneste.java @@ -3,6 +3,8 @@ import java.util.List; import java.util.Optional; +import no.nav.foreldrepenger.common.innsyn.inntektsmelding.FpOversiktInntektsmeldingDto; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; @@ -54,7 +56,7 @@ public Optional annenPartVedtak(AnnenPartSakIdentifikator annenPar } @Override - public List inntektsmeldinger(Saksnummer saksnummer) { + public List inntektsmeldinger(Saksnummer saksnummer) { return innsynConnection.hentInntekstmeldingFor(saksnummer); } diff --git a/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/InntektsmeldingDto.java b/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/InntektsmeldingDto.java deleted file mode 100644 index c32ac2164..000000000 --- a/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/InntektsmeldingDto.java +++ /dev/null @@ -1,6 +0,0 @@ -package no.nav.foreldrepenger.selvbetjening.innsyn; - -import java.time.LocalDateTime; - -public record InntektsmeldingDto(LocalDateTime opprettet) { -} diff --git a/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/inntektsmelding/InntektsmeldingController.java b/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/inntektsmelding/InntektsmeldingController.java new file mode 100644 index 000000000..20ec95aab --- /dev/null +++ b/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/inntektsmelding/InntektsmeldingController.java @@ -0,0 +1,30 @@ +package no.nav.foreldrepenger.selvbetjening.innsyn.inntektsmelding; + +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import no.nav.foreldrepenger.common.domain.Saksnummer; +import no.nav.foreldrepenger.common.innsyn.inntektsmelding.FpOversiktInntektsmeldingDto; +import no.nav.foreldrepenger.selvbetjening.http.ProtectedRestController; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +@ProtectedRestController("/rest/innsyn/inntektsmeldinger") +public class InntektsmeldingController { + private final InntektsmeldingTjeneste inntektsmeldingTjeneste; + + @Autowired + public InntektsmeldingController(InntektsmeldingTjeneste inntektsmeldingTjeneste) { + this.inntektsmeldingTjeneste = inntektsmeldingTjeneste; + } + + @GetMapping(produces = MediaType.APPLICATION_JSON_VALUE) + public List hentInntektsmeldinger(@RequestParam @Valid @NotNull Saksnummer saksnummer) { + return inntektsmeldingTjeneste.hentInntektsmeldinger(saksnummer); + } + +} diff --git a/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/inntektsmelding/InntektsmeldingTjeneste.java b/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/inntektsmelding/InntektsmeldingTjeneste.java new file mode 100644 index 000000000..ed42aa416 --- /dev/null +++ b/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/inntektsmelding/InntektsmeldingTjeneste.java @@ -0,0 +1,23 @@ +package no.nav.foreldrepenger.selvbetjening.innsyn.inntektsmelding; + +import no.nav.foreldrepenger.common.domain.Saksnummer; +import no.nav.foreldrepenger.common.innsyn.inntektsmelding.FpOversiktInntektsmeldingDto; +import no.nav.foreldrepenger.selvbetjening.innsyn.Innsyn; + +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class InntektsmeldingTjeneste { + + private final Innsyn innsyn; + + public InntektsmeldingTjeneste(Innsyn innsyn) { + this.innsyn = innsyn; + } + + public List hentInntektsmeldinger(Saksnummer saksnummer) { + return innsyn.inntektsmeldinger(saksnummer); + } +} diff --git a/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/tidslinje/TidslinjeTjeneste.java b/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/tidslinje/TidslinjeTjeneste.java index 06bf8c28d..f83df598d 100644 --- a/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/tidslinje/TidslinjeTjeneste.java +++ b/domene/src/main/java/no/nav/foreldrepenger/selvbetjening/innsyn/tidslinje/TidslinjeTjeneste.java @@ -8,6 +8,8 @@ import java.util.Optional; import java.util.stream.Stream; +import no.nav.foreldrepenger.common.innsyn.inntektsmelding.FpOversiktInntektsmeldingDto; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; @@ -15,7 +17,6 @@ import no.nav.foreldrepenger.common.domain.Fødselsnummer; import no.nav.foreldrepenger.common.domain.Saksnummer; import no.nav.foreldrepenger.selvbetjening.innsyn.Innsyn; -import no.nav.foreldrepenger.selvbetjening.innsyn.InntektsmeldingDto; import no.nav.foreldrepenger.selvbetjening.innsyn.dokument.EnkelJournalpost; import no.nav.foreldrepenger.selvbetjening.innsyn.dokument.SafSelvbetjeningTjeneste; @@ -126,12 +127,16 @@ private static TidslinjeHendelseDto.Dokument tilDokument(EnkelJournalpost.Dokume return new TidslinjeHendelseDto.Dokument(journalpostId, dokument.dokumentId(), dokument.tittel()); } - private static TidslinjeHendelseDto tilTidslinjeHendelse(InntektsmeldingDto inntektsmelding) { + private static TidslinjeHendelseDto tilTidslinjeHendelse(FpOversiktInntektsmeldingDto inntektsmelding) { + // versjon 1 har ikke journalPostId. + var dokumenter = inntektsmelding.versjon() == 2 ? + List.of(new TidslinjeHendelseDto.Dokument(inntektsmelding.journalpostId(), null, "")) : List.of(); + return new TidslinjeHendelseDto( - inntektsmelding.opprettet(), + inntektsmelding.mottattTidspunkt(), TidslinjeHendelseDto.AktørType.ARBEIDSGIVER, TidslinjeHendelseDto.TidslinjeHendelseType.INNTEKTSMELDING, - List.of() + dokumenter ); } } diff --git a/domene/src/test/java/no/nav/foreldrepenger/selvbetjening/innsyn/inntektsmelding/InntektsmeldingControllerTest.java b/domene/src/test/java/no/nav/foreldrepenger/selvbetjening/innsyn/inntektsmelding/InntektsmeldingControllerTest.java new file mode 100644 index 000000000..dd05e8558 --- /dev/null +++ b/domene/src/test/java/no/nav/foreldrepenger/selvbetjening/innsyn/inntektsmelding/InntektsmeldingControllerTest.java @@ -0,0 +1,50 @@ +package no.nav.foreldrepenger.selvbetjening.innsyn.inntektsmelding; + +import no.nav.foreldrepenger.common.domain.Saksnummer; +import no.nav.foreldrepenger.common.innsyn.inntektsmelding.FpOversiktInntektsmeldingDto; + +import org.junit.jupiter.api.Test; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class InntektsmeldingControllerTest { + + + private static final String FAKE_SAKSNUMMER = "123456789"; + private InntektsmeldingTjeneste inntektsmeldingTjeneste = mock(InntektsmeldingTjeneste.class); + + @Test + void sakErOppdatertHvisOppdateringstidspunktErEtterMottattidspunktetTilJournalposten() { + var imController = new InntektsmeldingController(inntektsmeldingTjeneste); + + when(inntektsmeldingTjeneste.hentInntektsmeldinger(new Saksnummer(FAKE_SAKSNUMMER))).thenReturn(List.of(standardInntektsmelding())); + + var result = imController.hentInntektsmeldinger(new Saksnummer(FAKE_SAKSNUMMER)); + assertThat(result).hasSize(1); + } + + private static FpOversiktInntektsmeldingDto standardInntektsmelding() { + return new FpOversiktInntektsmeldingDto( + 2, + true, + BigDecimal.valueOf(70), + BigDecimal.valueOf(5000), + BigDecimal.valueOf(5000), + "Arbeidsgiver", + "123123123", + "1", + LocalDateTime.now(), + LocalDate.now(), + List.of(), + List.of() + ); + } + +} diff --git a/domene/src/test/java/no/nav/foreldrepenger/selvbetjening/innsyn/tidslinje/TidslinjeTjenesteTest.java b/domene/src/test/java/no/nav/foreldrepenger/selvbetjening/innsyn/tidslinje/TidslinjeTjenesteTest.java index ac85d96a4..052604e6a 100644 --- a/domene/src/test/java/no/nav/foreldrepenger/selvbetjening/innsyn/tidslinje/TidslinjeTjenesteTest.java +++ b/domene/src/test/java/no/nav/foreldrepenger/selvbetjening/innsyn/tidslinje/TidslinjeTjenesteTest.java @@ -5,8 +5,11 @@ import static org.mockito.Mockito.when; import java.time.LocalDateTime; +import java.util.Collections; import java.util.List; +import no.nav.foreldrepenger.common.innsyn.inntektsmelding.FpOversiktInntektsmeldingDto; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -14,7 +17,6 @@ import no.nav.foreldrepenger.common.domain.Saksnummer; import no.nav.foreldrepenger.common.domain.felles.DokumentType; import no.nav.foreldrepenger.selvbetjening.innsyn.Innsyn; -import no.nav.foreldrepenger.selvbetjening.innsyn.InntektsmeldingDto; import no.nav.foreldrepenger.selvbetjening.innsyn.dokument.EnkelJournalpost; import no.nav.foreldrepenger.selvbetjening.innsyn.dokument.SafSelvbetjeningTjeneste; @@ -355,7 +357,9 @@ public static EnkelJournalpost etterlysIM(Saksnummer saksnummer) { ); } - public static InntektsmeldingDto standardInntektsmelding(LocalDateTime opprettet) { - return new InntektsmeldingDto(opprettet); + public static FpOversiktInntektsmeldingDto standardInntektsmelding(LocalDateTime opprettet) { + return new FpOversiktInntektsmeldingDto( + 1, true, null, null, null, null, null, null, opprettet, null, Collections.emptyList(), Collections.emptyList() + ); } } diff --git a/pom.xml b/pom.xml index df0579c5e..4839351ba 100644 --- a/pom.xml +++ b/pom.xml @@ -43,7 +43,7 @@ UTF-8 2.1.1 - 3.1.9 + 3.1.10 4.0.5 5.1.2