diff --git a/apps/backend/src/main/java/no/nav/data/etterlevelse/graphql/resolver/EtterlevelseDokumentasjonFieldResolver.java b/apps/backend/src/main/java/no/nav/data/etterlevelse/graphql/resolver/EtterlevelseDokumentasjonFieldResolver.java index fc6ed7109..b4034454d 100644 --- a/apps/backend/src/main/java/no/nav/data/etterlevelse/graphql/resolver/EtterlevelseDokumentasjonFieldResolver.java +++ b/apps/backend/src/main/java/no/nav/data/etterlevelse/graphql/resolver/EtterlevelseDokumentasjonFieldResolver.java @@ -66,6 +66,8 @@ public LocalDateTime sistEndretDokumentasjon(EtterlevelseDokumentasjonResponse e public EtterlevelseDokumentasjonStats stats(EtterlevelseDokumentasjonResponse etterlevelseDokumentasjon) { + List etterlevelseList = etterlevelseService.getByEtterlevelseDokumentasjon(etterlevelseDokumentasjon.getId().toString()); + List krav; List irrelevantKrav; @@ -78,9 +80,7 @@ public EtterlevelseDokumentasjonStats stats(EtterlevelseDokumentasjonResponse et } krav.forEach(k -> { - if (k.getEtterlevelser() != null && !k.getEtterlevelser().isEmpty()) { - k.setEtterlevelser(k.getEtterlevelser().stream().filter(e -> e.getEtterlevelseDokumentasjonId().equals(etterlevelseDokumentasjon.getId().toString())).toList()); - } + k.setEtterlevelser(etterlevelseList.stream().filter(e -> e.getKravNummer().equals(k.getKravNummer()) && e.getKravVersjon().equals(k.getKravVersjon())).map(Etterlevelse::toResponse).toList()); }); var fylt = krav.stream().filter(k -> k.getEtterlevelser() != null && !k.getEtterlevelser().isEmpty() && k.getStatus().equals(KravStatus.AKTIV) ).toList(); diff --git a/apps/backend/src/main/java/no/nav/data/etterlevelse/graphql/resolver/KravFieldResolver.java b/apps/backend/src/main/java/no/nav/data/etterlevelse/graphql/resolver/KravFieldResolver.java index 89bb8af7e..0a32260e5 100644 --- a/apps/backend/src/main/java/no/nav/data/etterlevelse/graphql/resolver/KravFieldResolver.java +++ b/apps/backend/src/main/java/no/nav/data/etterlevelse/graphql/resolver/KravFieldResolver.java @@ -39,17 +39,18 @@ public class KravFieldResolver implements GraphQLResolver { private final KravService kravService; private final KravPrioriteringService kravPrioriteringService; - public List etterlevelser(KravResponse krav, boolean onlyForEtterlevelseDokumentasjon, DataFetchingEnvironment env) { + public List etterlevelser(KravResponse krav, boolean onlyForEtterlevelseDokumentasjon, UUID etterlevelseDokumentasjonId, DataFetchingEnvironment env) { Integer nummer = krav.getKravNummer(); Integer versjon = krav.getKravVersjon(); log.info("etterlevelse for krav {}.{}", nummer, versjon); var etterlevelser = etterlevelseService.getByKravNummer(nummer, versjon); - if (onlyForEtterlevelseDokumentasjon) { - String etterlevelseDokumentasjonId = KravFilter.get(env, Fields.etterlevelseDokumentasjonId); - if(etterlevelseDokumentasjonId != null) { - etterlevelser = filter(etterlevelser, e -> etterlevelseDokumentasjonId.equals(e.getEtterlevelseDokumentasjonId())); + if (onlyForEtterlevelseDokumentasjon || etterlevelseDokumentasjonId != null) { + String dokumentasjonId = etterlevelseDokumentasjonId != null ? etterlevelseDokumentasjonId.toString() : KravFilter.get(env, Fields.etterlevelseDokumentasjonId); + + if(dokumentasjonId != null) { + etterlevelser = filter(etterlevelser, e -> dokumentasjonId.equals(e.getEtterlevelseDokumentasjonId())); } } diff --git a/apps/backend/src/main/resources/graphql/types.graphqls b/apps/backend/src/main/resources/graphql/types.graphqls index c68cb1a46..2a8606e5a 100644 --- a/apps/backend/src/main/resources/graphql/types.graphqls +++ b/apps/backend/src/main/resources/graphql/types.graphqls @@ -28,7 +28,7 @@ type Krav { status: KravStatus! prioriteringsId: String! - etterlevelser(onlyForEtterlevelseDokumentasjon: Boolean): [Etterlevelse!]! + etterlevelser(onlyForEtterlevelseDokumentasjon: Boolean, etterlevelseDokumentasjonId: ID): [Etterlevelse!]! tilbakemeldinger: [Tilbakemelding!]! begreper: [Begrep!]! virkemidler: [Virkemiddel!]! diff --git a/apps/backend/src/test/java/no/nav/data/etterlevelse/etterlevelseDokumentasjon/EtterlevelseDokumentasjonGraphQIIT.java b/apps/backend/src/test/java/no/nav/data/etterlevelse/etterlevelseDokumentasjon/EtterlevelseDokumentasjonGraphQIIT.java new file mode 100644 index 000000000..1f3baa76c --- /dev/null +++ b/apps/backend/src/test/java/no/nav/data/etterlevelse/etterlevelseDokumentasjon/EtterlevelseDokumentasjonGraphQIIT.java @@ -0,0 +1,82 @@ +package no.nav.data.etterlevelse.etterlevelseDokumentasjon; + +import lombok.SneakyThrows; +import no.nav.data.TestConfig.MockFilter; +import no.nav.data.etterlevelse.etterlevelse.domain.Etterlevelse; +import no.nav.data.etterlevelse.etterlevelseDokumentasjon.domain.EtterlevelseDokumentasjon; +import no.nav.data.etterlevelse.etterlevelseDokumentasjon.dto.EtterlevelseDokumentasjonRequest; +import no.nav.data.etterlevelse.krav.domain.Krav; +import no.nav.data.etterlevelse.krav.domain.KravStatus; +import no.nav.data.graphql.GraphQLTestBase; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import java.util.List; +import java.util.Map; + +import static no.nav.data.graphql.GraphQLAssert.assertThat; + +public class EtterlevelseDokumentasjonGraphQIIT extends GraphQLTestBase { + + private EtterlevelseDokumentasjon generateEtterlevelseDok(List irrelevans) { + return etterlevelseDokumentasjonService.save( + EtterlevelseDokumentasjonRequest.builder() + .title("test dokumentasjon") + .etterlevelseNummer(101) + .knyttetTilVirkemiddel(false) + .virkemiddelId("") + .knytteTilTeam(false) + .teams(List.of("")) + .irrelevansFor(irrelevans) + .update(false) + .behandlerPersonopplysninger(true) + .behandlingIds(List.of("")) + .build() + ); + } + + @BeforeEach + void setUp() { + MockFilter.setUser(MockFilter.KRAVEIER); + } + + @Nested + class EtterlevelseDokumentasjonFilter { + @Test + @SneakyThrows + void statsForEtterlevelseDokOnlyRelevenatEtterlevelse() { + + EtterlevelseDokumentasjon etterlevelseDokumentasjon = generateEtterlevelseDok(List.of("INNSYN")); + + storageService.save(Krav.builder() + .navn("Krav 1").kravNummer(50).kravVersjon(1) + .status(KravStatus.AKTIV) + .relevansFor(List.of("SAK")) + .build()); + storageService.save(Krav.builder() + .navn("Krav 2").kravNummer(51).kravVersjon(1) + .status(KravStatus.AKTIV) + .relevansFor(List.of("SAK")) + .build()); + + storageService.save(Etterlevelse.builder() + .kravNummer(50).kravVersjon(1) + .etterlevelseDokumentasjonId(String.valueOf(etterlevelseDokumentasjon.getId())) + .build()); + storageService.save(Etterlevelse.builder() + .kravNummer(50).kravVersjon(1) + .build()); + + var var = Map.of("etterlevelseDokumentasjonId",String.valueOf(etterlevelseDokumentasjon.getId())); + var response = graphQLTestTemplate.perform("graphqltest/stats_for_etterlevelseDokumentasjon.graphql", vars(var)); + System.out.println(response); + assertThat(response, "etterlevelseDokumentasjon") + .hasNoErrors() + .hasSize("content", 1) + .hasSize("content[0].stats.ikkeFyltKrav", 1) + .hasSize("content[0].stats.fyltKrav", 1) + .hasSize("content[0].stats.fyltKrav[0].etterlevelser", 1); + } + } +} diff --git a/apps/backend/src/test/resources/graphqltest/stats_for_etterlevelseDokumentasjon.graphql b/apps/backend/src/test/resources/graphqltest/stats_for_etterlevelseDokumentasjon.graphql new file mode 100644 index 000000000..63c2aa557 --- /dev/null +++ b/apps/backend/src/test/resources/graphqltest/stats_for_etterlevelseDokumentasjon.graphql @@ -0,0 +1,28 @@ +query getEtterlevelseDokumentasjonStats($etterlevelseDokumentasjonId: ID) { + etterlevelseDokumentasjon(filter: { id: $etterlevelseDokumentasjonId }) { + content { + stats { + fyltKrav { + kravNummer + kravVersjon + navn + aktivertDato + etterlevelser(etterlevelseDokumentasjonId: $etterlevelseDokumentasjonId) { + etterlevelseDokumentasjonId + id + } + } + ikkeFyltKrav { + kravNummer + kravVersjon + navn + aktivertDato + etterlevelser(etterlevelseDokumentasjonId: $etterlevelseDokumentasjonId) { + etterlevelseDokumentasjonId + id + } + } + } + } + } +} \ No newline at end of file diff --git a/apps/frontend/src/pages/DokumentasjonPage.tsx b/apps/frontend/src/pages/DokumentasjonPage.tsx index d2255b83d..34f75e510 100644 --- a/apps/frontend/src/pages/DokumentasjonPage.tsx +++ b/apps/frontend/src/pages/DokumentasjonPage.tsx @@ -378,7 +378,7 @@ export const statsQuery = gql` navn status aktivertDato - etterlevelser(onlyForEtterlevelseDokumentasjon: true) { + etterlevelser(etterlevelseDokumentasjonId: $etterlevelseDokumentasjonId) { status etterlevelseDokumentasjonId fristForFerdigstillelse @@ -406,7 +406,7 @@ export const statsQuery = gql` navn status aktivertDato - etterlevelser(onlyForEtterlevelseDokumentasjon: true) { + etterlevelser(etterlevelseDokumentasjonId: $etterlevelseDokumentasjonId) { status etterlevelseDokumentasjonId fristForFerdigstillelse @@ -434,7 +434,7 @@ export const statsQuery = gql` navn status aktivertDato - etterlevelser(onlyForEtterlevelseDokumentasjon: true) { + etterlevelser(etterlevelseDokumentasjonId: $etterlevelseDokumentasjonId) { status etterlevelseDokumentasjonId fristForFerdigstillelse @@ -462,7 +462,7 @@ export const statsQuery = gql` navn status aktivertDato - etterlevelser(onlyForEtterlevelseDokumentasjon: true) { + etterlevelser(etterlevelseDokumentasjonId: $etterlevelseDokumentasjonId) { behandlingId status etterlevelseDokumentasjonId