Repository: navikt/fp-inntektsmelding
Pull request #55: Pofim 221 uregistrerte
Author: login: AnjaAalerud
Created: 2025-04-25T11:48:56Z | Merged: 2025-04-25T13:03:51Z



Diff:
diff --git a/src/main/java/no/nav/familie/inntektsmelding/imdialog/rest/ArbeidsgiverinitiertDialogRest.java b/src/main/java/no/nav/familie/inntektsmelding/imdialog/rest/ArbeidsgiverinitiertDialogRest.java
index 9cd1da2f..fb506391 100644
--- a/src/main/java/no/nav/familie/inntektsmelding/imdialog/rest/ArbeidsgiverinitiertDialogRest.java
+++ b/src/main/java/no/nav/familie/inntektsmelding/imdialog/rest/ArbeidsgiverinitiertDialogRest.java
@@ -12,6 +12,10 @@
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
 
+import no.nav.familie.inntektsmelding.integrasjoner.person.PersonIdent;
+
+import no.nav.familie.inntektsmelding.koder.Ytelsetype;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -31,6 +35,7 @@ public class ArbeidsgiverinitiertDialogRest {
 
     public static final String BASE_PATH = "/arbeidsgiverinitiert";
     private static final String HENT_ARBEIDSFORHOLD = "/arbeidsforhold";
+    private static final String HENT_ARBEIDSGIVERE_FOR_UREGISTRERT = "/arbeidsgivereForUregistrert";
     private static final String HENT_OPPLYSNINGER = "/opplysninger";
 
     private GrunnlagDtoTjeneste grunnlagDtoTjeneste;
@@ -71,6 +76,22 @@ public Response hentArbeidsforhold(@Valid @NotNull HentArbeidsgiverRequest reque
         return dto.map(d ->Response.ok(d).build()).orElseGet(() -> Response.status(Response.Status.NOT_FOUND).build());
     }
 
+    @POST
+    @Path(HENT_ARBEIDSGIVERE_FOR_UREGISTRERT)
+    @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
+    @Tilgangskontrollert
+    public Response hentArbeidsgivereforUregistrert(@Valid @NotNull ArbeidsgiverinitiertDialogRest.HentArbeidsgivereUregistrert request) {
+        LOG.info("Henter personinformasjon for {}, og organisasjoner som innsender har tilgang til", request.fødselsnummer());
+        var personInfo = grunnlagDtoTjeneste.finnPersoninfo(request.fødselsnummer(), request.ytelseType());
+        if (personInfo == null) {
+            return Response.status(Response.Status.NOT_FOUND).build();
+        }
+        var dto = grunnlagDtoTjeneste.hentSøkerinfoOgOrganisasjonerArbeidsgiverHarTilgangTil(personInfo);
+        return dto.map(d -> Response.ok(d).build()).orElseGet(() -> Response.status(Response.Status.NOT_FOUND).build());
+    }
+
+    public record HentArbeidsgivereUregistrert(@Valid @NotNull PersonIdent fødselsnummer, @Valid @NotNull Ytelsetype ytelseType) {}
+
     @POST
     @Path(HENT_OPPLYSNINGER)
     @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
diff --git a/src/main/java/no/nav/familie/inntektsmelding/imdialog/rest/HentArbeidsgiverRequest.java b/src/main/java/no/nav/familie/inntektsmelding/imdialog/rest/HentArbeidsgiverRequest.java
index 2267bd36..2a94e74e 100644
--- a/src/main/java/no/nav/familie/inntektsmelding/imdialog/rest/HentArbeidsgiverRequest.java
+++ b/src/main/java/no/nav/familie/inntektsmelding/imdialog/rest/HentArbeidsgiverRequest.java
@@ -9,6 +9,6 @@
 import no.nav.familie.inntektsmelding.koder.Ytelsetype;
 
 public record HentArbeidsgiverRequest(@Valid @NotNull PersonIdent fødselsnummer,
-                                     @Valid @NotNull Ytelsetype ytelseType,
-                                     @Valid @NotNull LocalDate førsteFraværsdag) {
+                                      @Valid @NotNull Ytelsetype ytelseType,
+                                      @Valid @NotNull LocalDate førsteFraværsdag) {
 }
diff --git a/src/main/java/no/nav/familie/inntektsmelding/imdialog/tjenester/GrunnlagDtoTjeneste.java b/src/main/java/no/nav/familie/inntektsmelding/imdialog/tjenester/GrunnlagDtoTjeneste.java
index 7eead699..ce1ac248 100644
--- a/src/main/java/no/nav/familie/inntektsmelding/imdialog/tjenester/GrunnlagDtoTjeneste.java
+++ b/src/main/java/no/nav/familie/inntektsmelding/imdialog/tjenester/GrunnlagDtoTjeneste.java
@@ -207,12 +207,12 @@ private InntektsmeldingDialogDto.PersonInfoResponseDto lagPersonDto(AktørIdEnti
     public Optional<SlåOppArbeidstakerResponseDto> finnArbeidsforholdForFnr(PersonInfo personInfo,
                                                                             LocalDate førsteFraværsdag) {
         // TODO Skal vi sjekke noe mtp kode 6/7
-        var arbeidsforholdBrukerHarTilgangTil = arbeidstakerTjeneste.finnArbeidsforholdInnsenderHarTilgangTil(personInfo.fødselsnummer(), førsteFraværsdag);
-        if (arbeidsforholdBrukerHarTilgangTil.isEmpty()) {
+        var arbeidsforholdSøkerHarHosArbeidsgiver = arbeidstakerTjeneste.finnSøkersArbeidsforholdSomArbeidsgiverHarTilgangTil(personInfo.fødselsnummer(), førsteFraværsdag);
+        if (arbeidsforholdSøkerHarHosArbeidsgiver.isEmpty()) {
             return Optional.empty();
         }
 
-        var arbeidsforholdDto = arbeidsforholdBrukerHarTilgangTil.stream()
+        var arbeidsforholdDto = arbeidsforholdSøkerHarHosArbeidsgiver.stream()
             .map(a -> new SlåOppArbeidstakerResponseDto.ArbeidsforholdDto(organisasjonTjeneste.finnOrganisasjon(a.organisasjonsnummer()).navn(),
                 a.organisasjonsnummer()))
             .collect(Collectors.toSet());
@@ -223,6 +223,21 @@ private InntektsmeldingDialogDto.PersonInfoResponseDto lagPersonDto(AktørIdEnti
             personInfo.kjønn()));
     }
 
+
+    public Optional<SlåOppArbeidstakerResponseDto> hentSøkerinfoOgOrganisasjonerArbeidsgiverHarTilgangTil(PersonInfo personInfo) {
+        var organisasjonerArbeidsgiverHarTilgangTil = arbeidstakerTjeneste.finnOrganisasjonerArbeidsgiverHarTilgangTil(personInfo.fødselsnummer());
+
+        var organisasjoner = organisasjonerArbeidsgiverHarTilgangTil.stream()
+            .map(orgnrDto -> new SlåOppArbeidstakerResponseDto.ArbeidsforholdDto(organisasjonTjeneste.finnOrganisasjon(orgnrDto.orgnr()).navn(),
+                orgnrDto.orgnr()))
+            .collect(Collectors.toSet());
+        return Optional.of(new SlåOppArbeidstakerResponseDto(personInfo.fornavn(),
+            personInfo.mellomnavn(),
+            personInfo.etternavn(),
+            organisasjoner,
+            personInfo.kjønn()));
+    }
+
     public PersonInfo finnPersoninfo(PersonIdent fødselsnummer, Ytelsetype ytelsetype) {
         return personTjeneste.hentPersonFraIdent(fødselsnummer, ytelsetype);
     }
diff --git a/src/main/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/ArbeidstakerTjeneste.java b/src/main/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/ArbeidstakerTjeneste.java
index d25f07dd..bfdfa6c3 100644
--- a/src/main/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/ArbeidstakerTjeneste.java
+++ b/src/main/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/ArbeidstakerTjeneste.java
@@ -4,6 +4,8 @@
 
 import jakarta.inject.Inject;
 
+import no.nav.familie.inntektsmelding.typer.dto.OrganisasjonsnummerDto;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -30,25 +32,35 @@ public ArbeidstakerTjeneste(ArbeidsforholdTjeneste arbeidsforholdTjeneste, Altin
         this.altinnTilgangTjeneste = altinnTilgangTjeneste;
     }
 
-    public List<Arbeidsforhold> finnArbeidsforholdInnsenderHarTilgangTil(PersonIdent ident, LocalDate førsteFraværsdag) {
-        var alleArbeidsforhold = arbeidsforholdTjeneste.hentArbeidsforhold(ident, førsteFraværsdag);
-        LOG.info("Fant {} arbeidsforhold i Aa-registeret for {}", alleArbeidsforhold.size(), ident);
+    public List<Arbeidsforhold> finnSøkersArbeidsforholdSomArbeidsgiverHarTilgangTil(PersonIdent ident, LocalDate førsteFraværsdag) {
+        var alleArbeidsforholdTilSøker = arbeidsforholdTjeneste.hentArbeidsforhold(ident, førsteFraværsdag);
+        LOG.info("Fant {} arbeidsforhold i Aa-registeret for {}", alleArbeidsforholdTilSøker.size(), ident);
 
-        if (alleArbeidsforhold.isEmpty()) {
+        if (alleArbeidsforholdTilSøker.isEmpty()) {
             LOG.warn("Fant ingen arbeidsforhold i Aa-registeret for {}", ident);
             return Collections.emptyList();
         }
 
-        var arbeidsforholdInnsenderHarTilgangTil = alleArbeidsforhold
+        var arbeidsforholdArbeidsgiverHarTilgangTil = alleArbeidsforholdTilSøker
             .stream()
             .filter(dto -> altinnTilgangTjeneste.harTilgangTilBedriften(dto.organisasjonsnummer()))
             .toList();
 
-        if (alleArbeidsforhold.size() > arbeidsforholdInnsenderHarTilgangTil.size()) {
-            LOG.info("Innsender har tilgang til {} av {} arbeidsforhold for {}", arbeidsforholdInnsenderHarTilgangTil.size(), alleArbeidsforhold.size(), ident);
+        if (alleArbeidsforholdTilSøker.size() > arbeidsforholdArbeidsgiverHarTilgangTil.size()) {
+            LOG.info("Innsender har tilgang til {} av {} arbeidsforhold for {}", arbeidsforholdArbeidsgiverHarTilgangTil.size(), alleArbeidsforholdTilSøker.size(), ident);
         }
 
         LOG.info("Returnerer informasjon om arbeidsforhold for {}", ident);
-        return arbeidsforholdInnsenderHarTilgangTil;
+        return arbeidsforholdArbeidsgiverHarTilgangTil;
+    }
+
+    public List<OrganisasjonsnummerDto> finnOrganisasjonerArbeidsgiverHarTilgangTil(PersonIdent ident) {
+        var organisasjoner = altinnTilgangTjeneste.hentBedrifterArbeidsgiverHarTilgangTil().stream()
+            .map(OrganisasjonsnummerDto::new)
+            .toList();
+
+        LOG.info("Arbeidsgiver har tilgang til følgende organisasjoner {} for {}", organisasjoner, ident);
+
+        return organisasjoner;
     }
 }
diff --git a/src/main/java/no/nav/familie/inntektsmelding/integrasjoner/altinn/AltinnAutoriseringKlient.java b/src/main/java/no/nav/familie/inntektsmelding/integrasjoner/altinn/AltinnAutoriseringKlient.java
index 8e494d62..4b1769cd 100644
--- a/src/main/java/no/nav/familie/inntektsmelding/integrasjoner/altinn/AltinnAutoriseringKlient.java
+++ b/src/main/java/no/nav/familie/inntektsmelding/integrasjoner/altinn/AltinnAutoriseringKlient.java
@@ -95,6 +95,12 @@ public boolean harTilgangTilBedriften(String orgnr) {
         }
     }
 
+    public List<String> hentBedrifterArbeidsgiverHarTilgangTil() {
+        return gjørKallMedPagineringOgRetry().stream()
+            .map(AltinnReportee::organizationNumber)
+            .toList();
+    }
+
     @JsonNaming(PropertyNamingStrategies.UpperCamelCaseStrategy.class)
     record AltinnReportee(String name,
                           String organizationForm,
diff --git a/src/main/java/no/nav/familie/inntektsmelding/pip/AltinnTilgangTjeneste.java b/src/main/java/no/nav/familie/inntektsmelding/pip/AltinnTilgangTjeneste.java
index fc5bc710..6df257f1 100644
--- a/src/main/java/no/nav/familie/inntektsmelding/pip/AltinnTilgangTjeneste.java
+++ b/src/main/java/no/nav/familie/inntektsmelding/pip/AltinnTilgangTjeneste.java
@@ -1,5 +1,7 @@
 package no.nav.familie.inntektsmelding.pip;
 
+import java.util.List;
+
 import jakarta.enterprise.context.Dependent;
 
 import no.nav.familie.inntektsmelding.integrasjoner.altinn.AltinnAutoriseringKlient;
@@ -24,4 +26,8 @@ public boolean harTilgangTilBedriften(String orgNr) {
     public boolean manglerTilgangTilBedriften(String orgNr) {
         return !harTilgangTilBedriften(orgNr);
     }
+
+    public List<String> hentBedrifterArbeidsgiverHarTilgangTil() {
+        return altinnKlient.hentBedrifterArbeidsgiverHarTilgangTil();
+    }
 }
diff --git a/src/test/java/no/nav/familie/inntektsmelding/imdialog/tjenester/GrunnlagDtoTjenesteTest.java b/src/test/java/no/nav/familie/inntektsmelding/imdialog/tjenester/GrunnlagDtoTjenesteTest.java
index adc09b00..7b6e9113 100644
--- a/src/test/java/no/nav/familie/inntektsmelding/imdialog/tjenester/GrunnlagDtoTjenesteTest.java
+++ b/src/test/java/no/nav/familie/inntektsmelding/imdialog/tjenester/GrunnlagDtoTjenesteTest.java
@@ -12,6 +12,8 @@
 import java.util.Set;
 import java.util.UUID;
 
+import no.nav.familie.inntektsmelding.typer.dto.OrganisasjonsnummerDto;
+
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
@@ -209,7 +211,7 @@ void skal_hente_arbeidsforhold_gitt_fnr() {
         var aktørId = new AktørIdEntitet("9999999999999");
         var personInfo = new PersonInfo("Navn", null, "Navnesen", fnr, aktørId, LocalDate.now(), null, null);
         var orgnr = "999999999";
-        when(arbeidstakerTjeneste.finnArbeidsforholdInnsenderHarTilgangTil(fnr, førsteFraværsdag)).thenReturn(List.of(new Arbeidsforhold(orgnr,
+        when(arbeidstakerTjeneste.finnSøkersArbeidsforholdSomArbeidsgiverHarTilgangTil(fnr, førsteFraværsdag)).thenReturn(List.of(new Arbeidsforhold(orgnr,
             new AnsettelsesperiodeDto(new PeriodeDto(LocalDate.now().minusMonths(2), Tid.TIDENES_ENDE)))));
         when(organisasjonTjeneste.finnOrganisasjon(orgnr)).thenReturn(new Organisasjon("Bedriften", orgnr));
         // Act
@@ -225,6 +227,34 @@ void skal_hente_arbeidsforhold_gitt_fnr() {
         assertThat(response.kjønn()).isNull();
     }
 
+    @Test
+    void skal_hente_personinfo_og_organisasjoner_innsender_har_tilgang_til_gitt_fnr() {
+        // Arrange
+        var fnr = new PersonIdent("11111111111");
+        var aktørId = new AktørIdEntitet("9999999999999");
+        var personInfo = new PersonInfo("Navn", null, "Navnesen", fnr, aktørId, LocalDate.now(), null, null);
+        var orgnr1 = new OrganisasjonsnummerDto("123456789");
+        var orgnr2 = new OrganisasjonsnummerDto("987654321");
+        var navn1 = "Organisasjon 1";
+        var navn2 = "Organisasjon 2";
+        when(arbeidstakerTjeneste.finnOrganisasjonerArbeidsgiverHarTilgangTil(fnr)).thenReturn(List.of(orgnr1, orgnr2));
+        when(organisasjonTjeneste.finnOrganisasjon(orgnr1.orgnr())).thenReturn(new Organisasjon(navn1, orgnr1.orgnr()));
+        when(organisasjonTjeneste.finnOrganisasjon(orgnr2.orgnr())).thenReturn(new Organisasjon(navn2, orgnr2.orgnr()));
+        // Act
+        var response = grunnlagDtoTjeneste.hentSøkerinfoOgOrganisasjonerArbeidsgiverHarTilgangTil(personInfo).orElse(null);
+
+        // Assert
+        assertThat(response).isNotNull();
+        assertThat(response.fornavn()).isEqualTo("Navn");
+        assertThat(response.etternavn()).isEqualTo("Navnesen");
+        assertThat(response.arbeidsforhold()).hasSize(2);
+        assertThat(response.arbeidsforhold().stream()).anyMatch(o -> o.organisasjonsnavn().equals(navn1));
+        assertThat(response.arbeidsforhold().stream()).anyMatch(o -> o.organisasjonsnavn().equals(navn2));
+        assertThat(response.arbeidsforhold().stream()).anyMatch(o -> o.organisasjonsnummer().equals(orgnr1.orgnr()));
+        assertThat(response.arbeidsforhold().stream()).anyMatch(o -> o.organisasjonsnummer().equals(orgnr2.orgnr()));
+        assertThat(response.kjønn()).isNull();
+    }
+
     @Test
     void skal_ikke_få_lov_å_sende_inn_hvis_ingen_eksisterende_forespørsler_for_personen_finnes() {
         // Arrange
diff --git a/src/test/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/ArbeidstakerTjenesteTest.java b/src/test/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/ArbeidstakerTjenesteTest.java
index dc8e6c81..0f80e379 100644
--- a/src/test/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/ArbeidstakerTjenesteTest.java
+++ b/src/test/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/ArbeidstakerTjenesteTest.java
@@ -11,6 +11,7 @@
 
 import no.nav.familie.inntektsmelding.integrasjoner.aareg.dto.PeriodeDto;
 
+import no.nav.familie.inntektsmelding.typer.dto.OrganisasjonsnummerDto;
 import no.nav.vedtak.konfig.Tid;
 
 import org.junit.jupiter.api.BeforeEach;
@@ -49,7 +50,7 @@ void returnerer_arbeidstakerinfo_om_dette_finnes() {
         );
         when(altinnTilgangTjenesteMock.harTilgangTilBedriften(any())).thenReturn(true);
 
-        var resultat = arbeidstakerTjeneste.finnArbeidsforholdInnsenderHarTilgangTil(TILFELDIG_PERSON_IDENT, førsteFraværsdag);
+        var resultat = arbeidstakerTjeneste.finnSøkersArbeidsforholdSomArbeidsgiverHarTilgangTil(TILFELDIG_PERSON_IDENT, førsteFraværsdag);
         assertThat(resultat)
             .isNotNull()
             .hasSize(1);
@@ -67,7 +68,7 @@ void verifiserer_arbeidsforhold_detaljer() {
             List.of(new Arbeidsforhold("00000000", ansettelsesPeriode)));
         when(altinnTilgangTjenesteMock.harTilgangTilBedriften(any())).thenReturn(true);
 
-        var resultat = arbeidstakerTjeneste.finnArbeidsforholdInnsenderHarTilgangTil(TILFELDIG_PERSON_IDENT, førsteFraværsdag);
+        var resultat = arbeidstakerTjeneste.finnSøkersArbeidsforholdSomArbeidsgiverHarTilgangTil(TILFELDIG_PERSON_IDENT, førsteFraværsdag);
 
         assertThat(resultat).hasSize(1);
         var arbeidsforhold = resultat.getFirst();
@@ -90,7 +91,7 @@ void filtrerer_ut_arbeidsforhold_man_ikke_har_tilgang_til() {
         when(altinnTilgangTjenesteMock.harTilgangTilBedriften("00000000")).thenReturn(false);
         when(altinnTilgangTjenesteMock.harTilgangTilBedriften("00000001")).thenReturn(true);
 
-        var resultat = arbeidstakerTjeneste.finnArbeidsforholdInnsenderHarTilgangTil(TILFELDIG_PERSON_IDENT, førsteFraværsdag);
+        var resultat = arbeidstakerTjeneste.finnSøkersArbeidsforholdSomArbeidsgiverHarTilgangTil(TILFELDIG_PERSON_IDENT, førsteFraværsdag);
 
         assertThat(resultat).hasSize(1);
         var arbeidsforhold = resultat.getFirst();
@@ -98,4 +99,16 @@ void filtrerer_ut_arbeidsforhold_man_ikke_har_tilgang_til() {
         assertThat(arbeidsforhold.organisasjonsnummer()).isEqualTo("00000001");
         assertThat(arbeidsforhold.ansettelsesperiode()).isEqualTo(ansettelsesPeriode2);
     }
+    @Test
+    void returnerer_organisasjoner_innsender_har_tilgang_til() {
+        var organisasjoner = List.of("000000000", "000000001", "000000002");
+        var forventetListe = organisasjoner.stream().map(OrganisasjonsnummerDto::new).toList();
+
+        when(altinnTilgangTjenesteMock.hentBedrifterArbeidsgiverHarTilgangTil()).thenReturn(organisasjoner);
+
+        var resultat = arbeidstakerTjeneste.finnOrganisasjonerArbeidsgiverHarTilgangTil(TILFELDIG_PERSON_IDENT);
+
+        assertThat(resultat).hasSize(3);
+        assertThat(resultat).isEqualTo(forventetListe);
+    }
 }


Reviews:
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR updates the naming of methods related to fetching arbeidsforhold and introduces new functionality to retrieve organization details that the employer has access to. It also adds corresponding tests and a new REST endpoint for unregistered employers.
- Renames finnArbeidsforholdInnsenderHarTilgangTil to finnSøkersArbeidsforholdSomArbeidsgiverHarTilgangTil for clarity.
- Adds functionality to fetch organizations via a new method and REST endpoint.
- Extends test coverage to validate these changes.

### Reviewed Changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.

<details>
<summary>Show a summary per file</summary>

| File | Description |
| ---- | ----------- |
| src/test/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/ArbeidstakerTjenesteTest.java | Updated method calls and added a new test case for organization access. |
| src/test/java/no/nav/familie/inntektsmelding/imdialog/tjenester/GrunnlagDtoTjenesteTest.java | Updated test calls to match the renamed methods and added tests for organization data. |
| src/main/java/no/nav/familie/inntektsmelding/pip/AltinnTilgangTjeneste.java | Added a method to fetch a list of organization numbers. |
| src/main/java/no/nav/familie/inntektsmelding/integrasjoner/altinn/AltinnAutoriseringKlient.java | Introduced a method to retrieve organization numbers from Altinn with pagination and retry. |
| src/main/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/ArbeidstakerTjeneste.java | Renamed the method and added organization fetching logic. |
| src/main/java/no/nav/familie/inntektsmelding/imdialog/tjenester/GrunnlagDtoTjeneste.java | Updated integration to use renamed methods and added a new method for fetching søker info with organization access. |
| src/main/java/no/nav/familie/inntektsmelding/imdialog/rest/ArbeidsgiverinitiertDialogRest.java | Implemented a new REST endpoint for unregistered employers. |
</details>



<details>
<summary>Comments suppressed due to low confidence (1)</summary>

**src/main/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/ArbeidstakerTjeneste.java:44**
* [nitpick] The variable name 'arbeidsforholdArbeisdgiverHarTilgangTil' appears to have a typo; consider renaming it to 'arbeidsforholdArbeidsgiverHarTilgangTil' for clarity and consistency.
```
var arbeidsforholdArbeisdgiverHarTilgangTil = alleArbeidsforholdTilSøker
```
</details>


state: COMMENTED
author_association: NONE
submitted_at: 2025-04-25T12:07:48Z
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR implements changes to update method names and behavior for retrieving employment relationships and associated organizations for unregistered employers, as well as adding a new endpoint for unregistered employers in the REST API. Key changes include:
- Renaming and refactoring methods from finnArbeidsforholdInnsenderHarTilgangTil to finnSøkersArbeidsforholdSomArbeidsgiverHarTilgangTil.
- Adding new methods for retrieving organization data (finnOrganisasjonerArbeidsgiverHarTilgangTil) and corresponding test cases.
- Updating the REST API to expose a new endpoint (hentArbeidsgivereForUregistrert) for unregistered employers.

### Reviewed Changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.

<details>
<summary>Show a summary per file</summary>

| File | Description |
| ---- | ----------- |
| src/test/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/ArbeidstakerTjenesteTest.java | Updated method names in tests and added tests for organization access; minor duplicate mocking call observed. |
| src/test/java/no/nav/familie/inntektsmelding/imdialog/tjenester/GrunnlagDtoTjenesteTest.java | Updated tests to use new method names and added tests for retrieving person info and organizations. |
| src/main/java/no/nav/familie/inntektsmelding/pip/AltinnTilgangTjeneste.java | Added a method to retrieve list of organizations (hentBedrifterArbeidsgiverHarTilgangTil). |
| src/main/java/no/nav/familie/inntektsmelding/integrasjoner/altinn/AltinnAutoriseringKlient.java | Added method to retrieve accessible organization numbers with proper transformation. |
| src/main/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/ArbeidstakerTjeneste.java | Refactored service methods to use updated naming conventions and added new organization retrieval method. |
| src/main/java/no/nav/familie/inntektsmelding/imdialog/tjenester/GrunnlagDtoTjeneste.java | Updated business logic to align with refactored service methods. |
| src/main/java/no/nav/familie/inntektsmelding/imdialog/rest/ArbeidsgiverinitiertDialogRest.java | Introduced a new REST endpoint to handle unregistered employers. |
</details>





state: COMMENTED
author_association: NONE
submitted_at: 2025-04-25T12:14:30Z
user: login: pekern
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-25T12:45:49Z
user: login: AnjaAalerud
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-25T13:03:20Z

Review comments:
diff_hunk: @@ -90,12 +91,25 @@ void filtrerer_ut_arbeidsforhold_man_ikke_har_tilgang_til() {
         when(altinnTilgangTjenesteMock.harTilgangTilBedriften("00000000")).thenReturn(false);
         when(altinnTilgangTjenesteMock.harTilgangTilBedriften("00000001")).thenReturn(true);
 
-        var resultat = arbeidstakerTjeneste.finnArbeidsforholdInnsenderHarTilgangTil(TILFELDIG_PERSON_IDENT, førsteFraværsdag);
+        var resultat = arbeidstakerTjeneste.finnSøkersArbeidsforholdSomArbeidsgiverHarTilgangTil(TILFELDIG_PERSON_IDENT, førsteFraværsdag);
 
         assertThat(resultat).hasSize(1);
         var arbeidsforhold = resultat.getFirst();
 
         assertThat(arbeidsforhold.organisasjonsnummer()).isEqualTo("00000001");
         assertThat(arbeidsforhold.ansettelsesperiode()).isEqualTo(ansettelsesPeriode2);
     }
+    @Test
+    void returnerer_organisasjoner_innsender_har_tilgang_til() {
+        var organisasjoner = List.of("000000000", "000000001", "000000002");
+        var forventetListe = organisasjoner.stream().map(OrganisasjonsnummerDto::new).toList();
+
+        when(altinnTilgangTjenesteMock.hentBedrifterInnsenderHarTilgangTil()).thenReturn(organisasjoner);
+        when(altinnTilgangTjenesteMock.hentBedrifterInnsenderHarTilgangTil()).thenReturn(organisasjoner);
+
path: src/test/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/ArbeidstakerTjenesteTest.java
user: login: Copilot
body: Duplicate stubbing for hentBedrifterInnsenderHarTilgangTil is present; please remove one of the duplicate lines to avoid confusion.
```suggestion

```
created_at: 2025-04-25T12:07:47Z
author_association: NONE
diff_hunk: @@ -90,12 +91,25 @@ void filtrerer_ut_arbeidsforhold_man_ikke_har_tilgang_til() {
         when(altinnTilgangTjenesteMock.harTilgangTilBedriften("00000000")).thenReturn(false);
         when(altinnTilgangTjenesteMock.harTilgangTilBedriften("00000001")).thenReturn(true);
 
-        var resultat = arbeidstakerTjeneste.finnArbeidsforholdInnsenderHarTilgangTil(TILFELDIG_PERSON_IDENT, førsteFraværsdag);
+        var resultat = arbeidstakerTjeneste.finnSøkersArbeidsforholdSomArbeidsgiverHarTilgangTil(TILFELDIG_PERSON_IDENT, førsteFraværsdag);
 
         assertThat(resultat).hasSize(1);
         var arbeidsforhold = resultat.getFirst();
 
         assertThat(arbeidsforhold.organisasjonsnummer()).isEqualTo("00000001");
         assertThat(arbeidsforhold.ansettelsesperiode()).isEqualTo(ansettelsesPeriode2);
     }
+    @Test
+    void returnerer_organisasjoner_innsender_har_tilgang_til() {
+        var organisasjoner = List.of("000000000", "000000001", "000000002");
+        var forventetListe = organisasjoner.stream().map(OrganisasjonsnummerDto::new).toList();
+
+        when(altinnTilgangTjenesteMock.hentBedrifterArbeidsgiverHarTilgangTil()).thenReturn(organisasjoner);
+        when(altinnTilgangTjenesteMock.hentBedrifterArbeidsgiverHarTilgangTil()).thenReturn(organisasjoner);
+
path: src/test/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/ArbeidstakerTjenesteTest.java
user: login: Copilot
body: The mock for hentBedrifterArbeidsgiverHarTilgangTil() is set twice consecutively with the same return value. Please remove the duplicate call to simplify the test setup.
```suggestion

```
created_at: 2025-04-25T12:14:30Z
author_association: NONE
diff_hunk: @@ -30,25 +32,35 @@ public ArbeidstakerTjeneste(ArbeidsforholdTjeneste arbeidsforholdTjeneste, Altin
         this.altinnTilgangTjeneste = altinnTilgangTjeneste;
     }
 
-    public List<Arbeidsforhold> finnArbeidsforholdInnsenderHarTilgangTil(PersonIdent ident, LocalDate førsteFraværsdag) {
-        var alleArbeidsforhold = arbeidsforholdTjeneste.hentArbeidsforhold(ident, førsteFraværsdag);
-        LOG.info("Fant {} arbeidsforhold i Aa-registeret for {}", alleArbeidsforhold.size(), ident);
+    public List<Arbeidsforhold> finnSøkersArbeidsforholdSomArbeidsgiverHarTilgangTil(PersonIdent ident, LocalDate førsteFraværsdag) {
+        var alleArbeidsforholdTilSøker = arbeidsforholdTjeneste.hentArbeidsforhold(ident, førsteFraværsdag);
+        LOG.info("Fant {} arbeidsforhold i Aa-registeret for {}", alleArbeidsforholdTilSøker.size(), ident);
 
-        if (alleArbeidsforhold.isEmpty()) {
+        if (alleArbeidsforholdTilSøker.isEmpty()) {
             LOG.warn("Fant ingen arbeidsforhold i Aa-registeret for {}", ident);
             return Collections.emptyList();
         }
 
-        var arbeidsforholdInnsenderHarTilgangTil = alleArbeidsforhold
+        var arbeidsforholdArbeidsgiverHarTilgangTil = alleArbeidsforholdTilSøker
             .stream()
             .filter(dto -> altinnTilgangTjeneste.harTilgangTilBedriften(dto.organisasjonsnummer()))
             .toList();
 
-        if (alleArbeidsforhold.size() > arbeidsforholdInnsenderHarTilgangTil.size()) {
-            LOG.info("Innsender har tilgang til {} av {} arbeidsforhold for {}", arbeidsforholdInnsenderHarTilgangTil.size(), alleArbeidsforhold.size(), ident);
+        if (alleArbeidsforholdTilSøker.size() > arbeidsforholdArbeidsgiverHarTilgangTil.size()) {
+            LOG.info("Innsender har tilgang til {} av {} arbeidsforhold for {}", arbeidsforholdArbeidsgiverHarTilgangTil.size(), alleArbeidsforholdTilSøker.size(), ident);
         }
 
         LOG.info("Returnerer informasjon om arbeidsforhold for {}", ident);
-        return arbeidsforholdInnsenderHarTilgangTil;
+        return arbeidsforholdArbeidsgiverHarTilgangTil;
+    }
+
+    public List<OrganisasjonsnummerDto> finnOrganisasjonerArbeidsgiverHarTilgangTil(PersonIdent ident) {
path: src/main/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/ArbeidstakerTjeneste.java
user: login: pekern
body: Trenger du ta inn ident her?
created_at: 2025-04-25T12:45:29Z
author_association: CONTRIBUTOR
diff_hunk: @@ -30,25 +32,35 @@ public ArbeidstakerTjeneste(ArbeidsforholdTjeneste arbeidsforholdTjeneste, Altin
         this.altinnTilgangTjeneste = altinnTilgangTjeneste;
     }
 
-    public List<Arbeidsforhold> finnArbeidsforholdInnsenderHarTilgangTil(PersonIdent ident, LocalDate førsteFraværsdag) {
-        var alleArbeidsforhold = arbeidsforholdTjeneste.hentArbeidsforhold(ident, førsteFraværsdag);
-        LOG.info("Fant {} arbeidsforhold i Aa-registeret for {}", alleArbeidsforhold.size(), ident);
+    public List<Arbeidsforhold> finnSøkersArbeidsforholdSomArbeidsgiverHarTilgangTil(PersonIdent ident, LocalDate førsteFraværsdag) {
+        var alleArbeidsforholdTilSøker = arbeidsforholdTjeneste.hentArbeidsforhold(ident, førsteFraværsdag);
+        LOG.info("Fant {} arbeidsforhold i Aa-registeret for {}", alleArbeidsforholdTilSøker.size(), ident);
 
-        if (alleArbeidsforhold.isEmpty()) {
+        if (alleArbeidsforholdTilSøker.isEmpty()) {
             LOG.warn("Fant ingen arbeidsforhold i Aa-registeret for {}", ident);
             return Collections.emptyList();
         }
 
-        var arbeidsforholdInnsenderHarTilgangTil = alleArbeidsforhold
+        var arbeidsforholdArbeidsgiverHarTilgangTil = alleArbeidsforholdTilSøker
             .stream()
             .filter(dto -> altinnTilgangTjeneste.harTilgangTilBedriften(dto.organisasjonsnummer()))
             .toList();
 
-        if (alleArbeidsforhold.size() > arbeidsforholdInnsenderHarTilgangTil.size()) {
-            LOG.info("Innsender har tilgang til {} av {} arbeidsforhold for {}", arbeidsforholdInnsenderHarTilgangTil.size(), alleArbeidsforhold.size(), ident);
+        if (alleArbeidsforholdTilSøker.size() > arbeidsforholdArbeidsgiverHarTilgangTil.size()) {
+            LOG.info("Innsender har tilgang til {} av {} arbeidsforhold for {}", arbeidsforholdArbeidsgiverHarTilgangTil.size(), alleArbeidsforholdTilSøker.size(), ident);
         }
 
         LOG.info("Returnerer informasjon om arbeidsforhold for {}", ident);
-        return arbeidsforholdInnsenderHarTilgangTil;
+        return arbeidsforholdArbeidsgiverHarTilgangTil;
+    }
+
+    public List<OrganisasjonsnummerDto> finnOrganisasjonerArbeidsgiverHarTilgangTil(PersonIdent ident) {
path: src/main/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/ArbeidstakerTjeneste.java
user: login: AnjaAalerud
body: Jeg tenker det er greit å ha informasjon om ident i logginnslaget inntil vi vet det funker, det blir litt lettere å spore hvis noe oppfører seg uventet. Vi kan vurdere å fjerne det senere
created_at: 2025-04-25T13:03:20Z
author_association: CONTRIBUTOR

PR comments:
user: login: sonarqubecloud[bot]
created_at: 2025-04-25T12:19:42Z
body: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=navikt_fp-inntektsmelding&pullRequest=55) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [1 New issue](https://sonarcloud.io/project/issues?id=navikt_fp-inntektsmelding&pullRequest=55&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=navikt_fp-inntektsmelding&pullRequest=55&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=navikt_fp-inntektsmelding&pullRequest=55&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [65.1% Coverage on New Code](https://sonarcloud.io/component_measures?id=navikt_fp-inntektsmelding&pullRequest=55&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=navikt_fp-inntektsmelding&pullRequest=55&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=navikt_fp-inntektsmelding&pullRequest=55)


author_association: NONE