diff --git a/apps/adresse-service/config.yml b/apps/adresse-service/config.yml index 9afa0b9e9c5..74d4e2e4ef8 100644 --- a/apps/adresse-service/config.yml +++ b/apps/adresse-service/config.yml @@ -39,31 +39,20 @@ spec: accessPolicy: inbound: rules: - - application: testnav-oversikt-frontend - cluster: dev-gcp + - application: dolly-frontend + - application: dolly-frontend-dev + - application: dolly-frontend-dev-unstable + - application: dolly-idporten - application: team-dolly-lokal-app - cluster: dev-gcp + - application: testnav-endringsmelding-service - application: testnav-organisasjon-forvalter - cluster: dev-gcp + - application: testnav-oversikt-frontend - application: testnav-pdl-forvalter - cluster: dev-gcp - application: testnav-pdl-forvalter-dev - cluster: dev-gcp - - application: tps-forvalteren-dev - cluster: dev-fss - application: tps-forvalteren cluster: dev-fss - - application: dolly-frontend-dev - cluster: dev-gcp - - application: dolly-frontend - cluster: dev-gcp - - application: dolly-idporten - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp - - application: testnav-endringsmelding-service - cluster: dev-gcp + - application: tps-forvalteren-dev + cluster: dev-fss outbound: external: - host: testnav-pdl-proxy.dev-fss-pub.nais.io diff --git a/apps/amelding-service/config.yml b/apps/amelding-service/config.yml index 6bbad77339c..658233016a0 100644 --- a/apps/amelding-service/config.yml +++ b/apps/amelding-service/config.yml @@ -11,23 +11,13 @@ spec: accessPolicy: inbound: rules: - - application: team-dolly-lokal-app - cluster: dev-gcp - - application: testnav-oversikt-frontend - cluster: dev-gcp - - application: dolly-backend-dev - cluster: dev-gcp - application: dolly-backend - cluster: dev-gcp - - application: dolly-frontend-dev - cluster: dev-gcp + - application: dolly-backend-dev - application: dolly-frontend - cluster: dev-gcp + - application: dolly-frontend-dev - application: dolly-idporten - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp + - application: team-dolly-lokal-app + - application: testnav-oversikt-frontend outbound: rules: - application: testnav-oppsummeringsdokument-service diff --git a/apps/app-tilgang-analyse-service/config.yml b/apps/app-tilgang-analyse-service/config.yml index 19edc95c9ab..6af65eac8e0 100644 --- a/apps/app-tilgang-analyse-service/config.yml +++ b/apps/app-tilgang-analyse-service/config.yml @@ -19,12 +19,7 @@ spec: inbound: rules: - application: team-dolly-lokal-app - cluster: dev-gcp - application: testnav-oversikt-frontend - cluster: dev-gcp - - application: app-1 - cluster: dev-gcp - namespace: plattformsikkerhet outbound: external: - host: api.github.com diff --git a/apps/batch-bestilling-service/config.yml b/apps/batch-bestilling-service/config.yml index dfc14304b02..5ab41a834d7 100644 --- a/apps/batch-bestilling-service/config.yml +++ b/apps/batch-bestilling-service/config.yml @@ -15,12 +15,11 @@ spec: inbound: rules: - application: team-dolly-lokal-app - cluster: dev-gcp - application: testnav-oversikt-frontend - cluster: dev-gcp outbound: rules: - application: dolly-backend + - application: dolly-backend-dev azure: application: allowAllUsers: true diff --git a/apps/batch-bestilling-service/src/main/java/no/nav/registre/testnorge/batchbestillingservice/config/DevConfig.java b/apps/batch-bestilling-service/src/main/java/no/nav/registre/testnorge/batchbestillingservice/config/DevConfig.java index d5795d77967..7f2ce2bae18 100644 --- a/apps/batch-bestilling-service/src/main/java/no/nav/registre/testnorge/batchbestillingservice/config/DevConfig.java +++ b/apps/batch-bestilling-service/src/main/java/no/nav/registre/testnorge/batchbestillingservice/config/DevConfig.java @@ -2,6 +2,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; +import org.springframework.lang.NonNull; import org.springframework.vault.annotation.VaultPropertySource; import org.springframework.vault.authentication.ClientAuthentication; import org.springframework.vault.authentication.TokenAuthentication; @@ -13,17 +14,18 @@ @Configuration @Profile("dev") @VaultPropertySource(value = "secret/dolly/lokal", ignoreSecretNotFound = false) -@VaultPropertySource(value = "secret/.common/tokenx/dev/app-1", ignoreSecretNotFound = false) public class DevConfig extends AbstractVaultConfiguration { - private static final String VAULT_TOKEN = "spring.cloud.vault.token"; + private static final String VAULT_TOKEN = "spring.cloud.vault.token"; @Override + @NonNull public VaultEndpoint vaultEndpoint() { return VaultEndpoint.create("vault.adeo.no", 443); } @Override + @NonNull public ClientAuthentication clientAuthentication() { if (System.getenv().containsKey("VAULT_TOKEN")) { System.setProperty(VAULT_TOKEN, System.getenv("VAULT_TOKEN")); diff --git a/apps/bruker-service/config.test.yml b/apps/bruker-service/config.test.yml index a9afa1ccde4..212ff54597d 100644 --- a/apps/bruker-service/config.test.yml +++ b/apps/bruker-service/config.test.yml @@ -20,19 +20,11 @@ spec: accessPolicy: inbound: rules: - - application: team-dolly-lokal-app - cluster: dev-gcp - - application: testnav-oversikt-frontend - cluster: dev-gcp - application: dolly-frontend-dev - cluster: dev-gcp - - application: dolly-idporten - cluster: dev-gcp - application: dolly-frontend-dev-unstable - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp + - application: dolly-idporten + - application: team-dolly-lokal-app + - application: testnav-oversikt-frontend outbound: rules: - application: testnav-person-organisasjon-tilgang-service-dev diff --git a/apps/dolly-backend/config.test.yml b/apps/dolly-backend/config.test.yml index dfd3b0c610b..46df37d2e1f 100644 --- a/apps/dolly-backend/config.test.yml +++ b/apps/dolly-backend/config.test.yml @@ -16,23 +16,16 @@ spec: accessPolicy: inbound: rules: - - application: testnav-oversikt-frontend - cluster: dev-gcp - application: dolly-frontend-dev - cluster: dev-gcp - - application: dolly-idporten - cluster: dev-gcp - application: dolly-frontend-dev-unstable - cluster: dev-gcp - - application: testnav-batch-bestilling-service - cluster: dev-gcp + - application: dolly-idporten - application: team-dolly-lokal-app - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp + - application: testnav-batch-bestilling-service + - application: testnav-dollystatus + - application: testnav-oversikt-frontend outbound: rules: + - application: generer-navn-service - application: testnav-amelding-service - application: testnav-arbeidsforhold-service - application: testnav-arbeidsplassencv-proxy diff --git a/apps/dolly-backend/config.yml b/apps/dolly-backend/config.yml index 8919f2da7e5..ab8d0dc02a3 100644 --- a/apps/dolly-backend/config.yml +++ b/apps/dolly-backend/config.yml @@ -16,30 +16,18 @@ spec: inbound: rules: - application: dolly-frontend - cluster: dev-gcp - application: dolly-idporten - cluster: dev-gcp + - application: testnav-batch-bestilling-service - application: testnav-dollystatus - cluster: dev-gcp + - application: testnav-helsepersonell-service - application: testnav-oversikt-frontend - cluster: dev-gcp - - application: testnav-batch-bestilling-service - cluster: dev-gcp - application: etterlatte-testdata - cluster: dev-gcp namespace: etterlatte - - application: devtools - cluster: dev-gcp - namespace: aap - - application: bot - cluster: dev-gcp - namespace: aap - - application: testnav-helsepersonell-service - cluster: dev-gcp - application: statuspoll namespace: navdig outbound: rules: + - application: generer-navn-service - application: testnav-amelding-service - application: testnav-arbeidsforhold-service - application: testnav-arbeidsplassencv-proxy @@ -50,6 +38,7 @@ spec: - application: testnav-organisasjon-service - application: testnav-pdl-forvalter - application: testnav-person-service + - application: testnav-skattekort-service - application: testnav-sykemelding-api - application: testnav-synt-sykemelding-api - application: testnav-tps-messaging-service diff --git a/apps/dolly-frontend/config.idporten.yml b/apps/dolly-frontend/config.idporten.yml index f0ff358a783..abf0e070cf6 100644 --- a/apps/dolly-frontend/config.idporten.yml +++ b/apps/dolly-frontend/config.idporten.yml @@ -24,29 +24,38 @@ spec: accessPolicy: outbound: rules: - - application: testnorge-tilbakemelding-api + - application: dolly-backend + - application: dolly-backend-dev + - application: dolly-redis-session + - application: generer-navn-service - application: testnav-adresse-service + - application: testnav-amelding-service - application: testnav-arbeidsplassencv-proxy + - application: testnav-bruker-service + - application: testnav-bruker-service-dev + - application: testnav-generer-synt-amelding-service + - application: testnav-helsepersonell-service + - application: testnav-joark-dokument-service + - application: testnav-kodeverk-service - application: testnav-miljoer-service - - application: testnav-organisasjon-service - - application: testnav-organisasjon-forvalter - application: testnav-oppsummeringsdokument-service - - application: testnorge-profil-api - - application: testnav-organisasjon-tilgang-service - - application: testnav-joark-dokument-service - application: testnav-organisasjon-faste-data-service - - application: testnav-tps-messaging-service - - application: testnav-varslinger-service - - application: dolly-redis-session - - application: testnav-person-organisasjon-tilgang-service + - application: testnav-organisasjon-forvalter + - application: testnav-organisasjon-service + - application: testnav-organisasjon-tilgang-service - application: testnav-pdl-forvalter - - application: testnav-bruker-service + - application: testnav-person-faste-data-service + - application: testnav-person-organisasjon-tilgang-service + - application: testnav-person-organisasjon-tilgang-service-dev - application: testnav-person-search-service - - application: testnav-helsepersonell-service - - application: dolly-backend - application: testnav-person-service - - application: generer-navn-service - - application: testnav-kodeverk-service + - application: testnav-skattekort-service + - application: testnav-sykemelding-api + - application: testnav-tenor-search-service + - application: testnav-tps-messaging-service + - application: testnav-varslinger-service + - application: testnorge-profil-api + - application: testnorge-tilbakemelding-api external: - host: testnav-pensjon-testdata-facade-proxy.dev-fss-pub.nais.io - host: testnav-sigrunstub-proxy.dev-fss-pub.nais.io diff --git a/apps/dolly-frontend/config.test.yml b/apps/dolly-frontend/config.test.yml index 346c9a52e14..04c162a3877 100644 --- a/apps/dolly-frontend/config.test.yml +++ b/apps/dolly-frontend/config.test.yml @@ -18,6 +18,7 @@ spec: autoLoginIgnorePaths: - /login - /assets/* + - / application: allowAllUsers: true enabled: true @@ -29,29 +30,35 @@ spec: accessPolicy: outbound: rules: + - application: dolly-backend-dev + - application: dolly-dev-redis-session + - application: generer-navn-service - application: testnav-adresse-service + - application: testnav-amelding-service - application: testnav-arbeidsplassencv-proxy + - application: testnav-bruker-service-dev + - application: testnav-generer-synt-amelding-service + - application: testnav-helsepersonell-service + - application: testnav-joark-dokument-service + - application: testnav-kodeverk-service - application: testnav-miljoer-service - - application: testnav-organisasjon-service - - application: testnav-organisasjon-forvalter - - application: testnorge-profil-api-dev - - application: testnav-organisasjon-tilgang-service - application: testnav-oppsummeringsdokument-service - - application: testnav-joark-dokument-service - application: testnav-organisasjon-faste-data-service - - application: testnav-tps-messaging-service - - application: testnav-varslinger-service-dev - - application: dolly-dev-redis-session - - application: testnav-person-organisasjon-tilgang-service-dev + - application: testnav-organisasjon-forvalter + - application: testnav-organisasjon-service + - application: testnav-organisasjon-tilgang-service - application: testnav-pdl-forvalter-dev - - application: testnav-bruker-service-dev + - application: testnav-person-faste-data-service + - application: testnav-person-organisasjon-tilgang-service-dev - application: testnav-person-search-service - - application: testnav-helsepersonell-service - - application: testnorge-tilbakemelding-api - - application: dolly-backend-dev - application: testnav-person-service - - application: generer-navn-service - - application: testnav-kodeverk-service + - application: testnav-sykemelding-api + - application: testnav-tenor-search-service + - application: testnav-tps-messaging-service + - application: testnav-varslinger-service + - application: testnav-varslinger-service-dev + - application: testnorge-profil-api-dev + - application: testnorge-tilbakemelding-api external: - host: testnav-pensjon-testdata-facade-proxy.dev-fss-pub.nais.io - host: testnav-sigrunstub-proxy.dev-fss-pub.nais.io diff --git a/apps/dolly-frontend/config.unstable.yml b/apps/dolly-frontend/config.unstable.yml index c783b30f66c..59a1ad3f7ee 100644 --- a/apps/dolly-frontend/config.unstable.yml +++ b/apps/dolly-frontend/config.unstable.yml @@ -18,6 +18,7 @@ spec: autoLoginIgnorePaths: - /login - /assets/* + - / application: allowAllUsers: true enabled: true @@ -29,29 +30,30 @@ spec: accessPolicy: outbound: rules: - - application: testnav-arbeidsplassencv-proxy - - application: generer-navn-service - - application: testnav-person-service - application: dolly-backend-dev - - application: testnav-helsepersonell-service - - application: testnav-person-search-service - - application: testnav-bruker-service-dev - - application: testnav-pdl-forvalter-dev - - application: testnav-person-organisasjon-tilgang-service-dev - application: dolly-dev-redis-session - - application: testnav-varslinger-service-dev - - application: testnav-tps-messaging-service - - application: testnav-organisasjon-faste-data-service + - application: generer-navn-service + - application: testnav-adresse-service + - application: testnav-arbeidsplassencv-proxy + - application: testnav-bruker-service-dev + - application: testnav-helsepersonell-service - application: testnav-joark-dokument-service + - application: testnav-kodeverk-service + - application: testnav-miljoer-service - application: testnav-oppsummeringsdokument-service - - application: testnav-organisasjon-tilgang-service - - application: testnorge-profil-api-dev + - application: testnav-organisasjon-faste-data-service - application: testnav-organisasjon-forvalter - application: testnav-organisasjon-service - - application: testnav-miljoer-service - - application: testnav-adresse-service + - application: testnav-organisasjon-tilgang-service + - application: testnav-pdl-forvalter-dev + - application: testnav-person-organisasjon-tilgang-service-dev + - application: testnav-person-search-service + - application: testnav-person-service + - application: testnav-tenor-search-service + - application: testnav-tps-messaging-service + - application: testnav-varslinger-service-dev + - application: testnorge-profil-api-dev - application: testnorge-tilbakemelding-api - - application: testnav-kodeverk-service external: - host: testnav-pensjon-testdata-facade-proxy.dev-fss-pub.nais.io - host: testnav-sigrunstub-proxy.dev-fss-pub.nais.io diff --git a/apps/dolly-frontend/config.yml b/apps/dolly-frontend/config.yml index 7705a4a5be1..9307d463c81 100644 --- a/apps/dolly-frontend/config.yml +++ b/apps/dolly-frontend/config.yml @@ -18,6 +18,7 @@ spec: autoLoginIgnorePaths: - /login - /assets/* + - / application: allowAllUsers: true enabled: true @@ -34,29 +35,35 @@ spec: accessPolicy: outbound: rules: - - application: testnav-arbeidsplassencv-proxy - - application: generer-navn-service - - application: testnav-person-service - application: dolly-backend - - application: testnav-helsepersonell-service - - application: testnav-person-search-service + - application: dolly-redis-session + - application: generer-navn-service + - application: testnav-adresse-service + - application: testnav-amelding-service + - application: testnav-arbeidsplassencv-proxy - application: testnav-bruker-service + - application: testnav-generer-synt-amelding-service + - application: testnav-helsepersonell-service + - application: testnav-joark-dokument-service + - application: testnav-kodeverk-service + - application: testnav-miljoer-service + - application: testnav-oppsummeringsdokument-service + - application: testnav-organisasjon-faste-data-service + - application: testnav-organisasjon-forvalter + - application: testnav-organisasjon-service + - application: testnav-organisasjon-tilgang-service - application: testnav-pdl-forvalter + - application: testnav-person-faste-data-service - application: testnav-person-organisasjon-tilgang-service - - application: dolly-redis-session - - application: testnav-varslinger-service + - application: testnav-person-search-service + - application: testnav-person-service + - application: testnav-skattekort-service + - application: testnav-sykemelding-api + - application: testnav-tenor-search-service - application: testnav-tps-messaging-service - - application: testnav-organisasjon-faste-data-service - - application: testnav-joark-dokument-service - - application: testnav-organisasjon-tilgang-service + - application: testnav-varslinger-service - application: testnorge-profil-api - - application: testnav-organisasjon-forvalter - - application: testnav-oppsummeringsdokument-service - - application: testnav-organisasjon-service - - application: testnav-miljoer-service - - application: testnav-adresse-service - application: testnorge-tilbakemelding-api - - application: testnav-kodeverk-service external: - host: testnav-pensjon-testdata-facade-proxy.dev-fss-pub.nais.io - host: testnav-sigrunstub-proxy.dev-fss-pub.nais.io diff --git a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java index ef995a4ec85..06c00ec7121 100644 --- a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java +++ b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java @@ -82,6 +82,7 @@ public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { .route(createRoute(consumers.getTestnavPersonService(), "person-service")) .route(createRoute(consumers.getGenererNavnService())) .route(createRoute(consumers.getTestnavKodeverkService())) + .route(createRoute(consumers.getTestnavTenorSearchService())) .build(); } diff --git a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/Consumers.java b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/Consumers.java index f95d054c95d..e6a490b6be1 100644 --- a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/Consumers.java +++ b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/Consumers.java @@ -61,4 +61,6 @@ public class Consumers { private ServerProperties testnavVarslingerService; private ServerProperties testnorgeProfilApi; private ServerProperties testnorgeTilbakemeldingApi; + private ServerProperties testnavTenorSearchService; + } diff --git a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/LocalVaultConfig.java b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/LocalVaultConfig.java index db8513cfdb5..9d48992a2e6 100644 --- a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/LocalVaultConfig.java +++ b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/LocalVaultConfig.java @@ -2,6 +2,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; +import org.springframework.lang.NonNull; import org.springframework.vault.annotation.VaultPropertySource; import org.springframework.vault.authentication.ClientAuthentication; import org.springframework.vault.authentication.TokenAuthentication; @@ -12,18 +13,19 @@ @Configuration @Profile("local") -@VaultPropertySource(value = "secret/.common/tokenx/dev/app-1", ignoreSecretNotFound = false) @VaultPropertySource(value = "secret/dolly/lokal", ignoreSecretNotFound = false) public class LocalVaultConfig extends AbstractVaultConfiguration { private static final String VAULT_TOKEN = "spring.cloud.vault.token"; @Override + @NonNull public VaultEndpoint vaultEndpoint() { return VaultEndpoint.create("vault.adeo.no", 443); } @Override + @NonNull public ClientAuthentication clientAuthentication() { if (System.getenv().containsKey("VAULT_TOKEN")) { System.setProperty(VAULT_TOKEN, System.getenv("VAULT_TOKEN")); diff --git a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/provider/web/ForwardAndRedirectController.java b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/provider/web/ForwardAndRedirectController.java index 24c04fe82a4..b82a5fef45f 100644 --- a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/provider/web/ForwardAndRedirectController.java +++ b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/provider/web/ForwardAndRedirectController.java @@ -29,6 +29,7 @@ public RouterFunction htmlRouter(@Value("classpath:/static/index .andRoute(RequestPredicates.GET("/login/**"), indexHandler) .andRoute(RequestPredicates.GET("/bruker/**"), indexHandler) .andRoute(RequestPredicates.GET("/team/**"), indexHandler) - .andRoute(RequestPredicates.GET("/dollysoek/**"), indexHandler); + .andRoute(RequestPredicates.GET("/dollysoek/**"), indexHandler) + .andRoute(RequestPredicates.GET("/tenor/**"), indexHandler); } } diff --git a/apps/dolly-frontend/src/main/js/cypress/e2e/TenorSoek.cy.ts b/apps/dolly-frontend/src/main/js/cypress/e2e/TenorSoek.cy.ts new file mode 100644 index 00000000000..f25a8cc059f --- /dev/null +++ b/apps/dolly-frontend/src/main/js/cypress/e2e/TenorSoek.cy.ts @@ -0,0 +1,58 @@ +import { CypressSelector } from '../mocks/Selectors' +import { + responseFalse, + responseTrue, + tenorSoekOversiktMock, + tenorSoekTestdataMock, +} from '../mocks/BasicMocks' + +describe('Tenor-søk testing', () => { + const tenorSoekOversikt = new RegExp( + /testnav-tenor-search-service\/api\/v1\/tenor\/testdata\/oversikt\?antall=10&side=0/, + ) + const tenorSoekTestdata = new RegExp( + /testnav-tenor-search-service\/api\/v1\/tenor\/testdata\?kilde=FREG&type=AlleFelter/, + ) + const dollyBackendFinnesTrue = new RegExp(/dolly-backend\/api\/v1\/ident\/finnes\/12345678912/) + const dollyBackendFinnesFalse = new RegExp(/dolly-backend\/api\/v1\/ident\/finnes\/98765432198/) + + it('passes', () => { + cy.visit('') + + cy.intercept({ method: 'POST', url: tenorSoekOversikt }, tenorSoekOversiktMock) + cy.intercept({ method: 'POST', url: tenorSoekTestdata }, tenorSoekTestdataMock) + cy.intercept({ method: 'GET', url: dollyBackendFinnesTrue }, responseTrue) + cy.intercept({ method: 'GET', url: dollyBackendFinnesFalse }, responseFalse) + + // Naviger til Tenor-soek og gjoer et soek + cy.dollyGet(CypressSelector.BUTTON_HEADER_FINNPERSON).click() + cy.dollyGet(CypressSelector.BUTTON_HEADER_TENOR).click() + cy.get('h1').contains('Søk etter personer i Tenor').should('exist') + cy.dollyGet(CypressSelector.CHECKBOX_TENORSOEK).click() + cy.wait(1000) + + // Velg person som ikke ligger i Dolly og start import av personen + cy.get('div').contains('TIGER ULV').click() + cy.get('h2').contains('TIGER ULV').should('exist') + cy.dollyGet(CypressSelector.BUTTON_IMPORTER_PERSONER).click() + cy.wait(500) + cy.get('h1').contains('Importer person').should('exist') + cy.dollyGet(CypressSelector.BUTTON_IMPORTER).click() + cy.wait(500) + cy.get('.bestillingsveileder').should('exist') + cy.dollyGet(CypressSelector.BUTTON_AVBRYT).click() + cy.wait(500) + cy.dollyGet(CypressSelector.BUTTON_BEKREFT).click() + cy.wait(1000) + cy.get('h1').contains('Søk etter personer i Tenor').should('exist') + + // Naviger til foerste person som ligger i Dolly + cy.dollyGet(CypressSelector.BUTTON_VIS_I_GRUPPE).first().click() + cy.wait(500) + cy.get('h1').contains('Testytest').should('exist') + + // Gaa til soek fra gruppe + cy.dollyGet(CypressSelector.BUTTON_IMPORTER_PERSONER).click() + cy.get('h1').contains('Søk etter personer i Tenor').should('exist') + }) +}) diff --git a/apps/dolly-frontend/src/main/js/cypress/e2e/Test-Norge.cy.ts b/apps/dolly-frontend/src/main/js/cypress/e2e/Test-Norge.cy.ts index 3095b01ddeb..9ba32b566ec 100644 --- a/apps/dolly-frontend/src/main/js/cypress/e2e/Test-Norge.cy.ts +++ b/apps/dolly-frontend/src/main/js/cypress/e2e/Test-Norge.cy.ts @@ -17,11 +17,5 @@ describe('Test-Norge søk testing', () => { cy.wait(200) cy.get('.skjemaelement__feilmelding').should('not.exist') - - cy.dollyGet(CypressSelector.BUTTON_HEADER_PERSONER).click() - cy.get('div').contains('Testytest').click() - cy.dollyGet(CypressSelector.BUTTON_IMPORTER_PERSONER).click() - - cy.dollyGet(CypressSelector.TITLE_TESTNORGE).should('exist') }) }) diff --git a/apps/dolly-frontend/src/main/js/cypress/mocks/BasicMocks.tsx b/apps/dolly-frontend/src/main/js/cypress/mocks/BasicMocks.tsx index edcbf1ffa56..1fc226842bf 100644 --- a/apps/dolly-frontend/src/main/js/cypress/mocks/BasicMocks.tsx +++ b/apps/dolly-frontend/src/main/js/cypress/mocks/BasicMocks.tsx @@ -1882,3 +1882,72 @@ export const bestillingFragmentNavigerMock = { bestillingNavigerTil: 1, sidetall: 0, } + +export const tenorSoekOversiktMock = { + status: 'OK', + data: { + treff: 2, + rader: 2, + offset: 0, + nesteSide: null, + seed: 1111, + personer: [ + { + id: '12345678912', + fornavn: 'TESTYTEST', + etternavn: 'CAFE', + tenorRelasjoner: ['Freg'], + }, + { + id: '98765432198', + fornavn: 'TIGER', + etternavn: 'ULV', + tenorRelasjoner: ['Freg'], + }, + ], + }, + query: 'legitimasjonsdokument:*', + error: null, +} + +export const tenorSoekTestdataMock = { + status: 'OK', + data: { + treff: 2, + rader: 2, + offset: 0, + nesteSide: null, + seed: 1111, + dokumentListe: [ + { + foedselsdato: '1992-06-04', + identifikator: ['12345678912'], + kjoenn: 'kvinne', + personstatus: 'midlertidig', + sivilstand: 'gift', + tenorMetadata: { + kildedata: '{}', + }, + visningnavn: 'TESTYTEST CAFE', + }, + { + foedselsdato: '1974-02-02', + identifikator: ['98765432198'], + kjoenn: 'kvinne', + personstatus: 'bosatt', + sivilstand: 'ugift', + tenorMetadata: { + kildedata: '{}', + }, + visningnavn: 'TIGER ULV', + }, + ], + fasetter: {}, + }, + query: '', + error: null, +} + +export const responseTrue = { body: true } + +export const responseFalse = { body: false } diff --git a/apps/dolly-frontend/src/main/js/cypress/mocks/Selectors.tsx b/apps/dolly-frontend/src/main/js/cypress/mocks/Selectors.tsx index 93441179b1a..e84eb12d154 100644 --- a/apps/dolly-frontend/src/main/js/cypress/mocks/Selectors.tsx +++ b/apps/dolly-frontend/src/main/js/cypress/mocks/Selectors.tsx @@ -2,6 +2,7 @@ export enum CypressSelector { INPUT_MINSIDE_SOEK_MAL = 'input-minside-mal', INPUT_DOLLY_SOEK = 'input-dolly-soek', INPUT_TESTNORGE_FNR = 'input-testnorge-fnr', + INPUT_TENORSOEK_FNR = 'input-tenorsoek-fnr', INPUT_NAVN = 'input-navn', INPUT_NY_GRUPPE_NAVN = 'input-ny-gruppe-navn', INPUT_NY_GRUPPE_HENSIKT = 'input-ny-gruppe-hensikt', @@ -44,6 +45,8 @@ export enum CypressSelector { BUTTON_FJERN_ALLE = 'button-fjern-alle', BUTTON_VIDERE = 'button-videre', BUTTON_TILBAKE = 'button-tilbake', + BUTTON_AVBRYT = 'button-avbryt', + BUTTON_BEKREFT = 'button-bekreft', BUTTON_FLYTT_PERSONER = 'button-flytt-personer', BUTTON_FLYTT_PERSONER_AVBRYT = 'button-flytt-personer-avbryt', BUTTON_VARSLING_LUKK = 'button-varsling-lukk', @@ -55,6 +58,7 @@ export enum CypressSelector { BUTTON_HEADER_FINNPERSON = 'button-header-finnperson', BUTTON_HEADER_DOLLYSOEK = 'button-header-dollysoek', BUTTON_HEADER_TESTNORGE = 'button-header-testnorge', + BUTTON_HEADER_TENOR = 'button-header-tenor', BUTTON_HEADER_ENDRINGSMELDING = 'button-header-endringsmelding', BUTTON_PROFIL = 'button-minside', BUTTON_PROFIL_MINSIDE = 'button-profil-minside', @@ -62,6 +66,7 @@ export enum CypressSelector { BUTTON_FULLFOER_BESTILLING = 'button-fullfoer-bestilling', BUTTON_AVBRYT_BESTILLING = 'button-avbryt-bestilling', BUTTON_IMPORTER_PERSONER = 'button-importer-personer', + BUTTON_IMPORTER = 'button-importer', BUTTON_MINSIDE_ENDRE_MALNAVN = 'button-minside-endre-malnavn', BUTTON_MINSIDE_LAGRE_MALNAVN = 'button-minside-lagre-malnavn', BUTTON_LUKK_BESTILLING_RESULTAT = 'button-lukk-bestilling-resultat', @@ -82,10 +87,12 @@ export enum CypressSelector { BUTTON_GJENOPPRETT_GRUPPE = 'button-gjenopprett-gruppe', BUTTON_REDIGER_GRUPPE = 'button-rediger-gruppe', BUTTON_TIDLIGEREBESTILLINGER_NAVIGER = 'button-tidligerebestillinger-naviger', + BUTTON_PERSON_TENORSOEK = 'button-person-tenorsoek', SELECT_PERSON_SEARCH = 'select-person-search', SELECT_TAGS = 'select-tags', HOVER_MILJOE = 'hover-miljoe', CHECKBOX_FORBEDRING_ANONYM = 'checkbox-forbedring-anonym', + CHECKBOX_TENORSOEK = 'checkbox-tenorsoek', ERROR_MESSAGE_NAVIGERING = 'error-message-navigering', EXPANDABLE_PERSONINFORMASJON = 'expandable-personinformasjon', CONTAINER_VALGTE_PERSONER = 'container-valgte-personer', diff --git a/apps/dolly-frontend/src/main/js/proxy-routes.json b/apps/dolly-frontend/src/main/js/proxy-routes.json index afc66adbf63..0b650890bcf 100644 --- a/apps/dolly-frontend/src/main/js/proxy-routes.json +++ b/apps/dolly-frontend/src/main/js/proxy-routes.json @@ -223,5 +223,10 @@ "target": "http://localhost:8020", "changeOrigin": true, "secure": false + }, + "/testnav-tenor-search-service/api": { + "target": "http://localhost:8020", + "changeOrigin": true, + "secure": false } } \ No newline at end of file diff --git a/apps/dolly-frontend/src/main/js/src/allRoutes.tsx b/apps/dolly-frontend/src/main/js/src/allRoutes.tsx index ab5b93461f9..e9ce10dde76 100644 --- a/apps/dolly-frontend/src/main/js/src/allRoutes.tsx +++ b/apps/dolly-frontend/src/main/js/src/allRoutes.tsx @@ -12,6 +12,7 @@ const UI = lazy(() => import('@/pages/ui/index')) const TestnorgePage = lazy(() => import('@/pages/testnorgePage/index')) const Endringsmelding = lazy(() => import('@/pages/endringsmelding/Endringsmelding')) const DollySoekPage = lazy(() => import('@/pages/dollySoek/DollySoekPage')) +const TenorSoekPage = lazy(() => import('@/pages/tenorSoek/TenorSoekPage')) const GruppeBreadcrumb = (props) => Gruppe #{props.match?.params?.gruppeId} @@ -45,8 +46,9 @@ const allRoutes = [ }, { path: '/minside', breadcrumb: 'Min side', element: () => }, { path: '/ui', breadcrumb: 'UI demo', element: () => }, - { path: '/testnorge', breadcrumb: 'Søk i Test-Norge', element: () => }, { path: '/dollysoek', breadcrumb: 'Søk i Dolly', element: () => }, + { path: '/testnorge', breadcrumb: 'Søk i Test-Norge', element: () => }, + { path: '/tenor', breadcrumb: 'Søk i Tenor', element: () => }, { path: '/importer', breadcrumb: 'Importer', diff --git a/apps/dolly-frontend/src/main/js/src/assets/icons/custom/TenorLogo.svg b/apps/dolly-frontend/src/main/js/src/assets/icons/custom/TenorLogo.svg new file mode 100644 index 00000000000..b490296398c --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/assets/icons/custom/TenorLogo.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/apps/dolly-frontend/src/main/js/src/components/adresseVelger/AdresseSok.tsx b/apps/dolly-frontend/src/main/js/src/components/adresseVelger/AdresseSok.tsx index 8091117e730..b5b001bfe38 100644 --- a/apps/dolly-frontend/src/main/js/src/components/adresseVelger/AdresseSok.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/adresseVelger/AdresseSok.tsx @@ -51,7 +51,7 @@ export default ({ onSubmit, loading = false }: Props) => { setKommunenummer(e ? e.value : null)} diff --git a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/BestillingsveilederHeader.tsx b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/BestillingsveilederHeader.tsx index 9499f2f71b7..c0ef33d8aa8 100644 --- a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/BestillingsveilederHeader.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/BestillingsveilederHeader.tsx @@ -9,7 +9,7 @@ export const BestillingsveilederHeader = () => { const opts = useContext(BestillingsveilederContext) const ident = getLeggTilIdent(opts.personFoerLeggTil, opts.identMaster) const importFra = opts.is.leggTil && opts.identMaster === 'PDL' ? 'Test-Norge' : undefined - const { gruppe } = useGruppeById(opts?.gruppeId) + const { gruppe } = useGruppeById(opts?.gruppeId || opts?.gruppe?.id) if (opts.is.nyOrganisasjon || opts.is.nyStandardOrganisasjon || opts.is.nyOrganisasjonFraMal) { const titleValue = opts.is.nyStandardOrganisasjon ? 'Standard organisasjon' : 'Organisasjon' diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/alderspensjon/form/Form.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/alderspensjon/form/Form.tsx index b5f35922307..52764cecfe6 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/alderspensjon/form/Form.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/alderspensjon/form/Form.tsx @@ -98,7 +98,7 @@ export const AlderspensjonForm = () => { const foedselListe = opts?.importPersoner?.flatMap( (person) => person?.data?.hentPerson?.foedsel, ) - if (foedselListe?.some((f) => f.foedselsaar < 1944 && !f.metadata?.historisk)) { + if (foedselListe?.some((f) => f?.foedselsaar < 1944 && !f?.metadata?.historisk)) { ugyldigFoedselsaar = true } } diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/organisasjoner/form/partials/Adresser.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/organisasjoner/form/partials/Adresser.tsx index 78b57ed55da..1274451f270 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/organisasjoner/form/partials/Adresser.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/organisasjoner/form/partials/Adresser.tsx @@ -50,7 +50,7 @@ export const Adresser = ({ formMethods, path }: AdresserProps) => { @@ -100,7 +100,7 @@ export const Adresser = ({ formMethods, path }: AdresserProps) => { diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/pdlf/form/partials/foedsel/Foedsel.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/pdlf/form/partials/foedsel/Foedsel.tsx index 7418928e16d..40cc2a20f78 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/pdlf/form/partials/foedsel/Foedsel.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/pdlf/form/partials/foedsel/Foedsel.tsx @@ -68,7 +68,7 @@ export const FoedselForm = ({ formMethods, path }: FoedselTypes) => { { } return result } + return ( attributt?.empty || Object.values(flattenData(attributt)).every((x) => x === null || x === '' || x === false) diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/skatteetaten/visning/SkatteetatenVisning.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/skatteetaten/visning/SkatteetatenVisning.tsx new file mode 100644 index 00000000000..778b59e2200 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/skatteetaten/visning/SkatteetatenVisning.tsx @@ -0,0 +1,37 @@ +import React from 'react' +import Loading from '@/components/ui/loading/Loading' +import Icon from '@/components/ui/icon/Icon' +import { TitleValue } from '@/components/ui/titleValue/TitleValue' + +type SkatteetatenVisningProps = { + data: { + tenorRelasjoner: string[] + } + loading: boolean +} + +// Midlertidig visning av daglig leder-rolle fra Tenor. Skrives om naar det er behov for aa vise flere Tenor-data. +export const SkatteetatenVisning = ({ data, loading }: SkatteetatenVisningProps) => { + if (loading) { + return + } + + const harDagligLederRolle = data?.tenorRelasjoner?.includes('BrregErFr') + + if (!data || !harDagligLederRolle) { + return null + } + + return ( +
+
+ +

Data fra Tenor

+
+

Enhetsregisteret og Foretaksregisteret

+
+ +
+
+ ) +} diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/udistub/form/validation.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/udistub/form/validation.tsx index 9c868f32eba..689165b6bcd 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/udistub/form/validation.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/udistub/form/validation.tsx @@ -88,7 +88,7 @@ export const validation = { Yup.object({ aliaser: ifPresent('$udistub.aliaser', aliaser), arbeidsadgang: ifPresent('$udistub.arbeidsadgang', arbeidsadgang), - flyktning: requiredBoolean, + flyktning: ifPresent('$udistub.flyktning', requiredBoolean), oppholdStatus: ifPresent('$udistub.oppholdStatus', oppholdStatus), soeknadOmBeskyttelseUnderBehandling: ifPresent( '$udistub.soeknadOmBeskyttelseUnderBehandling', diff --git a/apps/dolly-frontend/src/main/js/src/components/layout/header/FinnPersonDropdown.tsx b/apps/dolly-frontend/src/main/js/src/components/layout/header/FinnPersonDropdown.tsx index a895e562ffb..d65b9543e8b 100644 --- a/apps/dolly-frontend/src/main/js/src/components/layout/header/FinnPersonDropdown.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/layout/header/FinnPersonDropdown.tsx @@ -45,6 +45,14 @@ export const FinnPersonDropdown = () => { Søk i Test-Norge + navigate('/tenor')} + style={{ color: '#212529' }} + > + + Søk i Tenor + diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/button/AvbrytButton/AvbrytButton.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/button/AvbrytButton/AvbrytButton.tsx index 484c64e394b..dff3cd62c9d 100644 --- a/apps/dolly-frontend/src/main/js/src/components/ui/button/AvbrytButton/AvbrytButton.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/ui/button/AvbrytButton/AvbrytButton.tsx @@ -5,6 +5,7 @@ import DollyModal from '@/components/ui/modal/DollyModal' import Icon from '@/components/ui/icon/Icon' import './AvbrytModal.less' +import { CypressSelector } from '../../../../../cypress/mocks/Selectors' type Props = { action: Function @@ -16,7 +17,7 @@ export const AvbrytButton = ({ action, children }: Props) => { return ( - + Avbryt @@ -31,6 +32,7 @@ export const AvbrytButton = ({ action, children }: Props) => { Nei { closeModal() return action() diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/select/Select.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/select/Select.tsx index 6c534c328f6..6f58a79c7bc 100644 --- a/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/select/Select.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/select/Select.tsx @@ -42,6 +42,7 @@ type SelectProps = { info?: any visHvisAvhuket?: any afterChange?: any + isInDialog?: boolean } export const Select = ({ @@ -59,6 +60,7 @@ export const Select = ({ isMulti = false, styles, onChange, + isInDialog = false, ...rest }: SelectProps) => { const formMethods = useFormContext() @@ -103,7 +105,13 @@ export const Select = ({ isMulti={isMulti} onChange={onChange} styles={styles ? styles : { menuPortal: (base) => ({ ...base, zIndex: 99999 }) }} - menuPortalTarget={document.getElementById('react-select-root')} + // Naar vi bruker modal fra Aksel maa vi referere til modalens className for at dropdowns ikke skal forsvinne bak modalen + menuPortalTarget={ + isInDialog + ? (document.getElementsByClassName('navds-modal')[0] as HTMLElement) + : document.getElementById('react-select-root') + } + menuPosition={isInDialog ? 'fixed' : undefined} {...rest} /> ) diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/icon/Icon.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/icon/Icon.tsx index c1a588d2963..24266da02d0 100644 --- a/apps/dolly-frontend/src/main/js/src/components/ui/icon/Icon.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/ui/icon/Icon.tsx @@ -66,6 +66,7 @@ import ReportProblemCircle from '@/assets/icons/custom/ProblemCircle.svg?raw' import CheckCircle from '@/assets/icons/custom/CheckCircle.svg?raw' import Dolly from '@/assets/icons/custom/Dolly.svg?raw' import DollyPanic from '@/assets/icons/custom/DollyPanic.svg?raw' +import TenorLogo from '@/assets/icons/custom/TenorLogo.svg?raw' import Cypress from '@/assets/img/cypress.png' import './Icon.less' @@ -79,6 +80,7 @@ export const icons = { dolly: Dolly, dollyPanic: DollyPanic, cypress: Cypress, + tenor: TenorLogo, trashcan: TrashIcon, 'add-circle': PlusCircleIcon, @@ -191,6 +193,7 @@ const Icon = ({ 'dolly', 'dollyPanic', 'cypress', + 'tenor', ] if (halvannenRemIkoner.includes(kind)) { diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx new file mode 100644 index 00000000000..e4e26d1697b --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx @@ -0,0 +1,98 @@ +import styled from 'styled-components' +import React from 'react' + +type HeaderProps = { + title: string + antall: number +} + +export const SoekefeltWrapper = styled.div` + display: flex; + flex-direction: column; + margin-bottom: 20px; + background-color: white; + border: 1px @color-bg-grey-border; + border-radius: 4px; +` + +export const Soekefelt = styled.div` + padding: 20px 15px 5px 15px; +` + +export const SoekKategori = styled.div` + display: flex; + flex-wrap: wrap; + font-size: medium; + + && { + .dolly-form-input { + min-width: 0; + flex-grow: 0; + } + } +` + +export const Buttons = styled.div` + margin: 15px 0 10px 0; + && { + button { + margin-right: 10px; + } + } +` + +const KategoriHeader = styled.div` + display: flex; + align-items: center; +` + +const KategoriCircle = styled.div` + display: flex; + width: 20px; + height: 20px; + border-radius: 50%; + margin-left: 10px; + background-color: #0067c5ff; + && { + p { + margin: auto; + margin-top: -1px; + font-size: 15px; + font-weight: bold; + color: white; + padding-bottom: 5px; + } + } +` + +export const Header = ({ title, antall }: HeaderProps) => ( + + {title} + {antall > 0 && ( + +

{antall}

+
+ )} +
+) + +export const requestIsEmpty = (updatedRequest: any) => { + let isEmpty = true + const flatten = (obj: any) => { + for (const i in obj) { + if (typeof obj[i] === 'object' && !Array.isArray(obj[i])) { + flatten(obj[i]) + } else { + if (Array.isArray(obj[i])) { + if (obj[i].length > 0) { + isEmpty = false + } + } else if (obj[i] !== null && obj[i] !== false && obj[i] !== '') { + isEmpty = false + } + } + } + } + flatten(updatedRequest) + return isEmpty +} diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/subOverskrift/SubOverskriftExpandable.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/subOverskrift/SubOverskriftExpandable.tsx new file mode 100644 index 00000000000..135f7937425 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/ui/subOverskrift/SubOverskriftExpandable.tsx @@ -0,0 +1,53 @@ +import Icon from '@/components/ui/icon/Icon' +import useBoolean from '@/utils/hooks/useBoolean' +import styled from 'styled-components' + +type Props = { + iconKind?: string + label?: string + isExpanded?: boolean + children?: any +} + +const Overskrift = styled.div` + background-color: #d3dee3; + margin: 5px 0 15px; + display: flex; + align-items: center; + padding: 4px; + cursor: pointer; + + h3 { + font-size: 1em; + margin: 0; + width: 100%; + } + + svg { + margin-right: 5px; + } +` + +export default function SubOverskriftExpandable({ + iconKind, + label, + isExpanded = false, + children, +}: Props) { + if (!label) { + return null + } + + const [expanded, setExpanded, setCollapsed] = useBoolean(isExpanded) + + return ( + <> + + {iconKind && } +

{label}

+ +
+ {expanded && children} + + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/dollySoek/SoekForm.tsx b/apps/dolly-frontend/src/main/js/src/pages/dollySoek/SoekForm.tsx index f072b84c754..5811a9bb785 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/dollySoek/SoekForm.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/dollySoek/SoekForm.tsx @@ -1,5 +1,4 @@ import '@/styles/variables.less' -import styled from 'styled-components' import { FormCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' import React, { SyntheticEvent, useState } from 'react' import { FormSelect } from '@/components/ui/form/inputs/select/Select' @@ -11,67 +10,14 @@ import { ResultatVisning } from '@/pages/dollySoek/ResultatVisning' import _ from 'lodash' import { CypressSelector } from '../../../cypress/mocks/Selectors' import { Form, FormProvider, useForm } from 'react-hook-form' - -const SoekefeltWrapper = styled.div` - display: flex; - flex-direction: column; - margin-bottom: 20px; - background-color: white; - border: 1px @color-bg-grey-border; - border-radius: 4px; -` - -const Soekefelt = styled.div` - padding: 20px 15px 5px 15px; -` - -const SoekKategori = styled.div` - display: flex; - flex-wrap: wrap; - font-size: medium; - - && { - .dolly-form-input { - min-width: 0; - flex-grow: 0; - } - } -` - -const Buttons = styled.div` - margin: 15px 0 10px 0; - - && { - button { - margin-right: 10px; - } - } -` - -const KategoriHeader = styled.div` - display: flex; - align-items: center; -` - -const KategoriCircle = styled.div` - display: flex; - width: 20px; - height: 20px; - border-radius: 50%; - margin-left: 10px; - background-color: #0067c5ff; - - && { - p { - margin: auto; - margin-top: -1px; - font-size: 15px; - font-weight: bold; - color: white; - padding-bottom: 5px; - } - } -` +import { + Buttons, + Header, + requestIsEmpty, + Soekefelt, + SoekefeltWrapper, + SoekKategori, +} from '@/components/ui/soekForm/SoekForm' const initialValues = { typer: [], @@ -112,17 +58,6 @@ const initialValues = { }, } -const Header = ({ title, antall }) => ( - - {title} - {antall > 0 && ( - -

{antall}

-
- )} -
-) - export const SoekForm = () => { const [request, setRequest] = useState(null as any) const { result, loading, error, mutate } = useSoekIdenter(request) @@ -152,27 +87,6 @@ export const SoekForm = () => { mutate() } - const requestIsEmpty = (updatedRequest) => { - let isEmpty = true - const flatten = (obj) => { - for (const i in obj) { - if (typeof obj[i] === 'object' && !Array.isArray(obj[i])) { - flatten(obj[i]) - } else { - if (Array.isArray(obj[i])) { - if (obj[i]?.length > 0) { - isEmpty = false - } - } else if (obj[i] !== null && obj[i] !== false && obj[i] !== '') { - isEmpty = false - } - } - } - } - flatten(updatedRequest) - return isEmpty - } - const handleChangeList = (value: any, path: string) => { const list = value.map((item: any) => item.value) setValue(path, list) diff --git a/apps/dolly-frontend/src/main/js/src/pages/gruppe/Gruppe.tsx b/apps/dolly-frontend/src/main/js/src/pages/gruppe/Gruppe.tsx index 03fe2083614..6aee5502b19 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/gruppe/Gruppe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/gruppe/Gruppe.tsx @@ -135,7 +135,7 @@ export default ({ data-cy={CypressSelector.BUTTON_IMPORTER_PERSONER} variant={bankIdBruker ? 'primary' : 'secondary'} onClick={() => - navigate(`/testnorge`, { + navigate(`/tenor`, { state: { gruppe: gruppe, }, diff --git a/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonMiljoeinfo/PdlDataTyper.tsx b/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonMiljoeinfo/PdlDataTyper.tsx index 11f47d257c0..1ee4089fe22 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonMiljoeinfo/PdlDataTyper.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonMiljoeinfo/PdlDataTyper.tsx @@ -15,6 +15,14 @@ export type PdlDataWrapper = { } } +export type PdlDataBolk = { + errors: any + data: { + hentPersonBolk: Array<{ person: HentPerson; ident: string }> + hentIdenterBolk: Array<{ identer: Array; ident: string }> + } +} + export type PdlData = { hentIdenter: { identer: [Ident] } hentPerson: HentPerson diff --git a/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx index b4fcfdf2329..e383a880d7e 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx @@ -88,6 +88,8 @@ import { SigrunstubPensjonsgivendeVisning } from '@/components/fagsystem/sigruns import { useUdistub } from '@/utils/hooks/useUdistub' import useBoolean from '@/utils/hooks/useBoolean' import { MalModal, malTyper } from '@/pages/minSide/maler/MalModal' +import { useTenorOversikt } from '@/utils/hooks/useTenorSoek' +import { SkatteetatenVisning } from '@/components/fagsystem/skatteetaten/visning/SkatteetatenVisning' const getIdenttype = (ident) => { if (parseInt(ident.charAt(0)) > 3) { @@ -231,6 +233,11 @@ export default ({ ident.ident, ) + const { response: tenorData, loading: loadingTenorData } = useTenorOversikt( + ident?.master === 'PDL' ? { identifikator: ident.ident } : null, + 1, + ) + const getGruppeIdenter = () => { return useAsync(async () => DollyApi.getGruppeById(gruppeId), [DollyApi.getGruppeById]) } @@ -517,6 +524,10 @@ export default ({ tilgjengeligMiljoe={tilgjengeligMiljoe} /> + person?.id === ident.ident)} + loading={loadingTenorData} + /> { + const formMethods = useForm({ + mode: 'onChange', + defaultValues: {}, + }) + + const { getValues, control, setValue, watch }: any = formMethods + + function getUpdatedRequest(request: any) { + for (let key of Object.keys(request)) { + if (request[key] === '' || request[key] === null || request[key] === undefined) { + delete request[key] + } else if (typeof request[key] === 'object' && !(request[key] instanceof Date)) { + request[key] = getUpdatedRequest(request[key]) + if (Object.keys(request[key]).length === 0) delete request[key] + } + } + return Array.isArray(request) ? request.filter((val) => val) : request + } + + const handleChange = (value: any, path: string) => { + if (isDate(value)) { + value = fixTimezone(value) + } + setValue(path, value) + const request = getUpdatedRequest(watch()) + setRequest({ ...request }) + mutate() + } + + const handleChangeList = (value: any, path: string) => { + const list = value.map((item: any) => item.value) + setValue(path, list) + const request = getUpdatedRequest(watch()) + setRequest({ ...request }) + mutate() + } + + const getAntallRequest = (liste: Array) => { + let antall = 0 + liste.forEach((item) => { + const attr = getValues(item) + if (Array.isArray(attr)) { + antall += attr.length + } else if (attr || attr === false) { + antall++ + } + }) + return antall + } + + const devEnabled = + window.location.hostname.includes('localhost') || + window.location.hostname.includes('dolly-frontend-dev') + + return ( + + + + <> +
+ + + +
+ + + + + + + +
+ + + + + + + +
+ + + + + + + +
+ + + + + + + +
+ + + + + + + +
+ + + + + + {/*TODO: Vis denne naar det er mulig aa importere og vise inntekt i Dolly*/} + {/**/} + {/* */} + {/* */} + {/* */} + {/* */} + {/* */} + {/* */} + {/**/} + + +
+ + + + + + + + {devEnabled && } + + + + + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx new file mode 100644 index 00000000000..b1078ffa61a --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx @@ -0,0 +1,88 @@ +import Title from '@/components/Title' +import { useTenorOversikt } from '@/utils/hooks/useTenorSoek' +import { SoekForm } from '@/pages/tenorSoek/SoekForm' +import { TreffListe } from '@/pages/tenorSoek/resultatVisning/TreffListe' +import { useEffect, useState } from 'react' + +const initialState = { + personListe: [], + side: 0, + seed: null, + nesteSide: null, +} + +export default () => { + const [request, setRequest] = useState({}) + const [state, setState] = useState(initialState) + const { response, loading, error, mutate } = useTenorOversikt(request, 10, state.side, state.seed) + + useEffect(() => { + setState(initialState) + }, [request]) + + useEffect(() => { + if (response?.data?.data?.personer?.length === 0) { + setState({ + ...state, + personListe: [], + nesteSide: response?.data?.data?.nesteSide, + }) + } else if (response && state.personListe?.length === 0) { + setState({ + ...state, + personListe: response?.data?.data?.personer, + seed: response?.data?.data?.seed, + nesteSide: response?.data?.data?.nesteSide, + }) + } else if (state.personListe?.length > 0 && response?.data?.data?.personer?.length > 0) { + if (state.side > 0) { + setState({ + ...state, + personListe: [...state.personListe, ...response?.data?.data?.personer], + nesteSide: response?.data?.data?.nesteSide, + }) + } else { + setState({ + ...state, + personListe: response?.data?.data?.personer, + nesteSide: response?.data?.data?.nesteSide, + }) + } + } + }, [response]) + + useEffect(() => { + window.addEventListener('scroll', handleScroll) + return () => window.removeEventListener('scroll', handleScroll) + }, []) + + const handleScroll = () => { + if ( + document.documentElement.scrollHeight - document.documentElement.scrollTop > + document.documentElement.clientHeight + ) { + return + } + setState((state: any) => { + if (state.side < 19 && state.nesteSide) { + return { ...state, side: state.nesteSide } + } + return state + }) + } + + return ( +
+
+ + </div> + <SoekForm setRequest={setRequest} mutate={mutate} /> + <TreffListe + response={response?.data} + personListe={state.personListe} + loading={loading} + error={error} + /> + </div> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning.tsx new file mode 100644 index 00000000000..fd7e42a2f7a --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning.tsx @@ -0,0 +1,63 @@ +import { DollyFieldArray } from '@/components/ui/form/fieldArray/DollyFieldArray' +import { TabsVisning } from '@/pages/tenorSoek/resultatVisning/TabsVisning' +import { TitleValue } from '@/components/ui/titleValue/TitleValue' +import { arrayToString } from '@/utils/DataFormatter' +import React from 'react' +import SubOverskriftExpandable from '@/components/ui/subOverskrift/SubOverskriftExpandable' + +export const EnhetsregisteretForetaksregisteretVisning = ({ data }: any) => { + if (!data || data.length < 1) { + return null + } + + return ( + <SubOverskriftExpandable + label={`Enhetsregisteret og Foretaksregisteret (${data.length})`} + iconKind="brreg" + > + <div> + <DollyFieldArray data={data} header={null} nested> + {(organisasjon: any) => { + return ( + <TabsVisning kildedata={organisasjon.tenorMetadata?.kildedata}> + <TitleValue title="Organisasjonsnummer" value={organisasjon.organisasjonsnummer} /> + <TitleValue + title="Organisasjonsform" + value={organisasjon.organisasjonsform?.kode} + /> + <TitleValue + title="Beskrivelse" + value={organisasjon.organisasjonsform?.beskrivelse} + /> + <TitleValue title="Navn" value={organisasjon.navn} /> + <TitleValue + title="Adresse" + value={arrayToString(organisasjon.forretningsadresse?.adresse)} + /> + <TitleValue + title="Postnummer" + value={organisasjon.forretningsadresse?.postnummer} + /> + <TitleValue title="Poststed" value={organisasjon.forretningsadresse?.poststed} /> + <TitleValue + title="Kommunenummer" + value={organisasjon.forretningsadresse?.kommunenummer} + /> + <TitleValue title="Kommune" value={organisasjon.forretningsadresse?.kommune} /> + <TitleValue + title="Reg. i Enhetsregisteret" + value={organisasjon.registreringsdatoEnhetsregisteret} + /> + <TitleValue title="Næringskode" value={arrayToString(organisasjon.naeringKode)} /> + <TitleValue + title="Næringsbeskrivelse" + value={arrayToString(organisasjon.naeringBeskrivelse)} + /> + </TabsVisning> + ) + }} + </DollyFieldArray> + </div> + </SubOverskriftExpandable> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx new file mode 100644 index 00000000000..bda387c6d6a --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx @@ -0,0 +1,52 @@ +import { TitleValue } from '@/components/ui/titleValue/TitleValue' +import React from 'react' +import { formatDate, arrayToString, codeToNorskLabel } from '@/utils/DataFormatter' +import { TabsVisning } from '@/pages/tenorSoek/resultatVisning/TabsVisning' +import SubOverskriftExpandable from '@/components/ui/subOverskrift/SubOverskriftExpandable' +import styled from 'styled-components' +import { manualOptions } from '@/pages/tenorSoek/utils' + +const RelasjonerTittel = styled.h3` + width: 100%; + border-top: 1px solid #ccc; + margin-top: 5px; + padding-top: 15px; +` +export const FolkeregisteretVisning = ({ data }: any) => { + if (!data) { + return null + } + + const relasjoner = data.tenorRelasjoner?.freg + + return ( + <SubOverskriftExpandable label="Folkeregisteret" iconKind="personinformasjon" isExpanded={true}> + <TabsVisning kildedata={data.tenorMetadata?.kildedata}> + <TitleValue title="Identifikator" value={arrayToString(data.identifikator, ', ')} /> + <TitleValue title="Navn" value={data.visningnavn} /> + <TitleValue title="Fødselsdato" value={formatDate(data.foedselsdato)} /> + <TitleValue title="Kjønn" value={codeToNorskLabel(data.kjoenn)} /> + <TitleValue title="Personstatus" value={codeToNorskLabel(data.personstatus)} /> + <TitleValue title="Sivilstand" value={codeToNorskLabel(data.sivilstand)} /> + <TitleValue title="Adressebeskyttelse" value={codeToNorskLabel(data.adresseBeskyttelse)} /> + <TitleValue title="Bostedsadresse" value={data.bostedsadresse} /> + <TitleValue + title="Siste hendelse" + value={manualOptions[data.sisteHendelse] || codeToNorskLabel(data.sisteHendelse)} + /> + {relasjoner?.length > 0 && ( + <> + <RelasjonerTittel>Relasjoner</RelasjonerTittel> + {relasjoner.map((relasjon: any, idx: number) => ( + <div className="title-value title-value_small" key={idx + relasjon.identifikator}> + <h4>{relasjon.tenorRelasjonsnavn}</h4> + <div>{`${arrayToString(relasjon.identifikator, ', ')} -`}</div> + <div>{relasjon.visningnavn}</div> + </div> + ))} + </> + )} + </TabsVisning> + </SubOverskriftExpandable> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx new file mode 100644 index 00000000000..db7d72a454f --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx @@ -0,0 +1,145 @@ +import { useLocation, useNavigate } from 'react-router-dom' +import { usePdlPersonbolk } from '@/utils/hooks/usePdlPerson' +import { Button, Checkbox } from '@navikt/ds-react' +import React, { useEffect, useState } from 'react' +import { MalValg } from '@/pages/tenorSoek/resultatVisning/MalValg' +import { EnterIcon } from '@navikt/aksel-icons' +import useBoolean from '@/utils/hooks/useBoolean' +import DollyModal from '@/components/ui/modal/DollyModal' +import { top } from '@popperjs/core' +import { Hjelpetekst } from '@/components/hjelpetekst/Hjelpetekst' +import styled from 'styled-components' +import { CypressSelector } from '../../../../cypress/mocks/Selectors' + +type ImporterValgtePersonerProps = { + identer: Array<string> + isMultiple: boolean +} + +const CheckboxWrapper = styled.div` + display: flex; + flex-wrap: wrap; + align-items: baseline; + margin-top: 20px; + border-bottom: 1px solid #ccc; + + && { + .navds-checkbox { + margin-bottom: 20px; + } + } +` + +export const ImporterValgtePersoner = ({ identer, isMultiple }: ImporterValgtePersonerProps) => { + const navigate = useNavigate() + const location = useLocation() + const { pdlPersoner, loading } = usePdlPersonbolk(identer) + const [modalIsOpen, openModal, closeModal] = useBoolean(false) + const [valgtMal, setValgtMal] = useState(null) + + const [partnere, setPartnere] = useState([]) + const [valgtePartnere, setValgtePartnere] = useState([]) + + const partnerSivilstander = ['GIFT', 'REGISTRERT_PARTNER', 'SEPARERT', 'SEPARERT_PARTNER'] + + useEffect(() => { + const partnerListe: Array<any> = [] + pdlPersoner?.hentPersonBolk?.map((ident) => { + const partner = ident.person?.sivilstand?.filter( + (sivilstand) => + !sivilstand?.metadata?.historisk && partnerSivilstander.includes(sivilstand?.type), + )?.[0]?.relatertVedSivilstand + if (partner) { + partnerListe.push(partner) + } + }) + // @ts-ignore + setPartnere(partnerListe) + }, [pdlPersoner]) + + const handleClick = () => { + navigate(`/importer`, { + state: { + importPersoner: identer.concat(valgtePartnere).map((ident) => { + return { + ident: ident, + data: { + hentPerson: pdlPersoner?.hentPersonBolk?.find((p) => p.ident === ident)?.person, + hentIdenter: pdlPersoner?.hentIdenterBolk?.find((p) => p.ident === ident)?.identer, + }, + } + }), + mal: valgtMal, + gruppe: location?.state?.gruppe, + }, + }) + } + + const handleClickPartnere = (event: any) => { + if (event.target.checked) { + setValgtePartnere(partnere) + } else { + setValgtePartnere([]) + } + } + + return ( + <> + {isMultiple ? ( + <Button + variant="primary" + size="small" + disabled={identer?.length < 1} + loading={loading} + onClick={openModal} + > + {identer?.length === 1 + ? 'Importer 1 valgt person' + : `Importer ${identer?.length} valgte personer`} + </Button> + ) : ( + <Button + data-cy={CypressSelector.BUTTON_IMPORTER_PERSONER} + variant="tertiary" + size="xsmall" + icon={<EnterIcon />} + loading={loading} + onClick={openModal} + style={{ minWidth: '155px', height: '24px', marginTop: '10px' }} + > + Importer person + </Button> + )} + {/*// @ts-ignore*/} + <DollyModal isOpen={modalIsOpen} closeModal={closeModal} width="60%" overflow="auto"> + <div> + <h1>{identer?.length === 1 ? 'Importer person' : 'Importer personer'}</h1> + {partnere.length > 0 && ( + <CheckboxWrapper> + <Checkbox + size="small" + onChange={(event) => handleClickPartnere(event)} + style={{ marginBottom: '20px' }} + > + Inkluder partner + </Checkbox> + <Hjelpetekst placement={top}> + En eller flere av de valgte personene har en partner. <br /> Vil du inkludere + partner(e) i importen? + </Hjelpetekst> + </CheckboxWrapper> + )} + <MalValg setValgtMal={setValgtMal} /> + <div className="dollymodal_buttons dollymodal_buttons--center"> + <Button data-cy={CypressSelector.BUTTON_IMPORTER} onClick={() => handleClick()}> + Importer + </Button> + <Button variant="secondary" onClick={closeModal}> + Avbryt + </Button> + </div> + </div> + </DollyModal> + </> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx new file mode 100644 index 00000000000..b9c320c636c --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx @@ -0,0 +1,33 @@ +import { TitleValue } from '@/components/ui/titleValue/TitleValue' +import { arrayToString, oversettBoolean } from '@/utils/DataFormatter' +import React from 'react' +import { DollyFieldArray } from '@/components/ui/form/fieldArray/DollyFieldArray' +import { TabsVisning } from '@/pages/tenorSoek/resultatVisning/TabsVisning' +import SubOverskriftExpandable from '@/components/ui/subOverskrift/SubOverskriftExpandable' + +export const InntektVisning = ({ data }: any) => { + if (!data || data.length < 1) { + return null + } + + return ( + <SubOverskriftExpandable label={`Inntekt A-ordningen (${data.length})`} iconKind="inntektstub"> + <div> + <DollyFieldArray data={data} header={null} nested> + {(inntekt: any) => { + return ( + <TabsVisning kildedata={inntekt.tenorMetadata?.kildedata}> + <TitleValue title="Periode" value={inntekt.periode} /> + <TitleValue title="Opplysningspliktig" value={inntekt.opplysningspliktig} /> + <TitleValue title="Inntektstype" value={arrayToString(inntekt.inntektstype)} /> + <TitleValue title="Beskrivelse" value={arrayToString(inntekt.beskrivelse)} /> + <TitleValue title="Forskuddstrekk" value={arrayToString(inntekt.forskuddstrekk)} /> + <TitleValue title="Har historikk" value={oversettBoolean(inntekt.harHistorikk)} /> + </TabsVisning> + ) + }} + </DollyFieldArray> + </div> + </SubOverskriftExpandable> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ListeValg.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ListeValg.tsx new file mode 100644 index 00000000000..593f23505f6 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ListeValg.tsx @@ -0,0 +1,42 @@ +import { useFinnesIDolly } from '@/utils/hooks/useIdent' +import { NavigerTilPerson } from '@/pages/tenorSoek/resultatVisning/NavigerTilPerson' +import { Checkbox } from '@navikt/ds-react' +import Loading from '@/components/ui/loading/Loading' +import React from 'react' + +type ListeValgProps = { + ident: string + markertePersoner: Array<string> + setMarkertePersoner: Function +} + +export const ListeValg = ({ ident, markertePersoner, setMarkertePersoner }: ListeValgProps) => { + const { finnesIDolly, loading: loadingFinnes } = useFinnesIDolly(ident) + + if (loadingFinnes) { + return <Loading onlySpinner /> + } + + const handleChangeCheckbox = (val: any) => { + if (val?.target?.checked) { + setMarkertePersoner([...markertePersoner, val?.target?.value]) + } else { + setMarkertePersoner(markertePersoner.filter((ident) => ident !== val?.target?.value)) + } + } + + return finnesIDolly ? ( + <NavigerTilPerson ident={ident} /> + ) : ( + <div style={{ margin: '-8px 0' }}> + <Checkbox + value={ident} + size="small" + onChange={(val: any) => handleChangeCheckbox(val)} + onClick={(e) => e.stopPropagation()} + > + Importer person + </Checkbox> + </div> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/MalValg.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/MalValg.tsx new file mode 100644 index 00000000000..b783e47e505 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/MalValg.tsx @@ -0,0 +1,81 @@ +import React, { useState } from 'react' +import { useDollyMaler } from '@/utils/hooks/useMaler' +import { useBrukerProfil } from '@/utils/hooks/useBruker' +import { DollySelect } from '@/components/ui/form/inputs/select/Select' +import { Switch } from '@navikt/ds-react' +import { useBoolean } from 'react-use' +import styled from 'styled-components' + +type MalValgProps = { + setValgtMal: Function +} + +const MalValgWrapper = styled.div` + margin-top: 20px; +` + +const getBrukerOptions = (malbestillinger: any) => + Object.keys(malbestillinger).map((ident) => ({ + value: ident, + label: ident, + })) + +const getMalOptions = (malbestillinger: any, bruker: any) => { + if (!malbestillinger || !malbestillinger[bruker]) { + return [] + } + return malbestillinger[bruker].map((mal: any) => ({ + value: mal.id, + label: mal.malNavn, + data: { bestilling: mal.bestilling, malNavn: mal.malNavn }, + })) +} + +export const MalValg = ({ setValgtMal }: MalValgProps) => { + const [benyttMal, setBenyttMal] = useBoolean(false) + const [malValue, setMalValue] = useState(null) + + const { maler, loading: loadingMaler } = useDollyMaler() + const { brukerProfil, loading: loadingBruker } = useBrukerProfil() + + const [malBruker, setMalBruker] = useState(brukerProfil?.visningsNavn) + + const brukerOptions = maler ? getBrukerOptions(maler) : [] + const malOptions = maler && malBruker ? getMalOptions(maler, malBruker) : [] + + return ( + <MalValgWrapper> + <Switch size="small" checked={benyttMal} onChange={() => setBenyttMal()}> + Benytt mal + </Switch> + <div className="flexbox--align-center--justify-start" style={{ marginTop: '5px' }}> + <DollySelect + name="zIdent" + label="Bruker" + isLoading={loadingBruker} + options={brukerOptions} + size="medium" + onChange={(e: any) => { + setMalBruker(e.value) + }} + value={malBruker} + isDisabled={!benyttMal} + isClearable={false} + /> + <DollySelect + name="mal" + label="Maler" + isLoading={loadingMaler} + options={malOptions} + size="grow" + onChange={(e: any) => { + setValgtMal(e?.data || null) + setMalValue(e?.value || null) + }} + isDisabled={!benyttMal} + value={malValue} + /> + </div> + </MalValgWrapper> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx new file mode 100644 index 00000000000..0cc16920931 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx @@ -0,0 +1,50 @@ +import { useNavigate } from 'react-router-dom' +import { useNaviger } from '@/utils/hooks/useNaviger' +import { Button } from '@navikt/ds-react' +import { CypressSelector } from '../../../../cypress/mocks/Selectors' +import { ArrowRightIcon } from '@navikt/aksel-icons' +import { useEffect, useState } from 'react' + +type NavigerTilPersonProps = { + ident: string +} + +export const NavigerTilPerson = ({ ident }: NavigerTilPersonProps) => { + const navigate = useNavigate() + const [navigateIdent, setNavigateIdent] = useState<string | null>(null) + const { loading, mutate } = useNaviger(navigateIdent) + + useEffect(() => { + mutate().then((result) => { + if (result?.gruppe?.id && !window.location.pathname.includes(`/${result?.gruppe?.id}`)) { + navigate(`/gruppe/${result?.gruppe?.id}`, { + replace: true, + state: { + hovedperson: result.identHovedperson, + visPerson: result.identNavigerTil, + sidetall: result.sidetall, + }, + }) + } + }) + }, [navigateIdent]) + + const handleClick = (event: any) => { + event.stopPropagation() + setNavigateIdent(ident) + } + + return ( + <Button + data-cy={CypressSelector.BUTTON_VIS_I_GRUPPE} + variant="tertiary" + size="xsmall" + icon={<ArrowRightIcon />} + loading={loading} + onClick={handleClick} + style={{ minWidth: '118px' }} + > + Vis i gruppe + </Button> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx new file mode 100644 index 00000000000..366bc1b8446 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx @@ -0,0 +1,75 @@ +import { Alert, Box } from '@navikt/ds-react' +import React from 'react' +import _ from 'lodash' +import { FolkeregisteretVisning } from '@/pages/tenorSoek/resultatVisning/FolkeregisteretVisning' +import styled from 'styled-components' +// TODO: Importer denne naar det er mulig aa importere og vise inntekt i Dolly +// import { InntektVisning } from '@/pages/tenorSoek/resultatVisning/InntektVisning' +import Loading from '@/components/ui/loading/Loading' +import { EnhetsregisteretForetaksregisteretVisning } from '@/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning' +import { NavigerTilPerson } from '@/pages/tenorSoek/resultatVisning/NavigerTilPerson' +import { ImporterValgtePersoner } from '@/pages/tenorSoek/resultatVisning/ImporterValgtePersoner' +import { useFinnesIDolly } from '@/utils/hooks/useIdent' + +type PersonVisningProps = { + person: any + ident: string + loading: boolean + error: any +} + +const PersonVisningWrapper = styled.div` + position: sticky; + top: 80px; + max-height: 92vh; + overflow: auto; + scrollbar-width: thin; +` + +const NavnHeader = styled.h2` + margin: 10px 0 15px 0; + word-break: break-word; + hyphens: auto; +` +export const PersonVisning = ({ person, ident, loading, error }: PersonVisningProps) => { + const { finnesIDolly, loading: loadingFinnes } = useFinnesIDolly(ident) + + if (loading) { + return <Loading label="Laster person ..." /> + } + + if (error) { + return <Alert variant="error">{`Feil ved henting av person: ${error}`}</Alert> + } + + if (!person) { + return null + } + + const personData = person.data?.dokumentListe?.find((dokument: any) => + dokument.identifikator?.includes(ident), + ) + + return ( + <PersonVisningWrapper> + <Box background="surface-default" padding="3" borderRadius="medium"> + <div className="flexbox--space"> + <NavnHeader>{personData?.visningnavn}</NavnHeader> + {loadingFinnes && <Loading onlySpinner />} + {!loadingFinnes && + (finnesIDolly ? ( + <NavigerTilPerson ident={ident} /> + ) : ( + <ImporterValgtePersoner identer={[ident]} isMultiple={false} /> + ))} + </div> + <FolkeregisteretVisning data={personData} /> + <EnhetsregisteretForetaksregisteretVisning + data={_.get(personData, 'tenorRelasjoner.brreg-er-fr')} + /> + {/*TODO: Vis denne naar det er mulig aa importere og vise inntekt i Dolly*/} + {/*<InntektVisning data={personData?.tenorRelasjoner?.inntekt} />*/} + </Box> + </PersonVisningWrapper> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx new file mode 100644 index 00000000000..b5181aecc03 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx @@ -0,0 +1,64 @@ +import { Tabs } from '@navikt/ds-react' +import React from 'react' +import styled from 'styled-components' +import { FileCodeIcon, KeyVerticalIcon } from '@navikt/aksel-icons' +import SyntaxHighlighter from 'react-syntax-highlighter' + +const TabsVisningFormatter = styled.div` + width: 100%; + && { + .navds-tabs__tablist-wrapper { + margin-bottom: 20px; + } + } + &&& { + button { + position: static; + } + } +` + +const StyledCodeView = styled(SyntaxHighlighter)` + font-size: 0.9em; + max-width: 820px; + margin: 0; +` + +export const TabsVisning = ({ children, kildedata }: any) => { + const kildedataJson = JSON.parse(kildedata) + const kildedataPretty = JSON.stringify(kildedataJson, null, 2) + + return ( + <TabsVisningFormatter> + <Tabs defaultValue="nokkelinfo" size="small"> + <Tabs.List> + <Tabs.Tab + value="nokkelinfo" + label="Nøkkelinformasjon" + icon={<KeyVerticalIcon title="a11y-title" fontSize="1.5rem" />} + /> + <Tabs.Tab + value="kildedata" + label="Kildedata" + icon={<FileCodeIcon title="a11y-title" fontSize="1.5rem" />} + /> + </Tabs.List> + <Tabs.Panel value="nokkelinfo"> + <div className="person-visning_content">{children}</div> + </Tabs.Panel> + <Tabs.Panel + value="kildedata" + style={{ + width: '100%', + maxHeight: '600px', + overflowX: 'auto', + scrollbarWidth: 'thin', + marginBottom: '15px', + }} + > + <StyledCodeView language="json">{kildedataPretty}</StyledCodeView> + </Tabs.Panel> + </Tabs> + </TabsVisningFormatter> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx new file mode 100644 index 00000000000..813510cdf94 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -0,0 +1,137 @@ +import { Box, VStack, Tag, Alert } from '@navikt/ds-react' +import React, { useEffect, useState } from 'react' +import { useTenorIdent } from '@/utils/hooks/useTenorSoek' +import { PersonVisning } from '@/pages/tenorSoek/resultatVisning/PersonVisning' +import Loading from '@/components/ui/loading/Loading' +import styled from 'styled-components' +import { ListeValg } from '@/pages/tenorSoek/resultatVisning/ListeValg' +import { ImporterValgtePersoner } from '@/pages/tenorSoek/resultatVisning/ImporterValgtePersoner' +import { CypressSelector } from '../../../../cypress/mocks/Selectors' + +const PersonNavn = styled.h3` + word-break: break-word; + hyphens: auto; + margin: 5px 0; +` + +const PersonIdent = styled.p` + margin: 5px 0 0 0; +` + +const TagsWrapper = styled.div` + margin: 10px 0; +` + +export const TreffListe = ({ response, personListe, loading, error }: any) => { + const [valgtPerson, setValgtPerson] = useState<any>(null) + + const { + person: valgtPersonData, + loading: valgtPersonLoading, + error: valgtPersonError, + } = useTenorIdent(valgtPerson?.id) + + useEffect(() => { + setValgtPerson(personListe?.[0] || null) + }, [personListe?.[0]]) + + const [markertePersoner, setMarkertePersoner] = useState([]) + + if ((!personListe || personListe?.length === 0) && loading) { + return <Loading label="Laster treff ..." /> + } + + if (error || response?.error) { + return ( + <Alert variant="error" size="small">{`Feil ved henting av personer: ${ + error || response?.error + }`}</Alert> + ) + } + + const antallTreff = response?.data?.treff + + return ( + <div className="flexbox--flex-wrap"> + <div + className="flexbox--full-width" + style={{ marginBottom: '20px', position: 'sticky', top: '10px', zIndex: 1 }} + > + <Box background="surface-default" padding="3" borderRadius="medium"> + <div className="flexbox--space"> + <h2 style={{ margin: '0', alignSelf: 'center' }}> + {antallTreff || antallTreff === 0 ? `${antallTreff} treff` : ''} + </h2> + <ImporterValgtePersoner identer={markertePersoner} isMultiple={true} /> + </div> + </Box> + </div> + <div style={{ width: '30%' }}> + <VStack gap="4"> + {personListe?.map((person: any) => { + return ( + <Box + key={person?.id} + data-cy={CypressSelector.BUTTON_PERSON_TENORSOEK} + padding="2" + background={ + person?.id === valgtPerson?.id ? 'surface-alt-3-moderate' : 'surface-alt-3-subtle' + } + borderRadius="medium" + onClick={() => setValgtPerson(person)} + style={{ cursor: 'pointer' }} + > + <PersonNavn> + {person?.fornavn} {person?.etternavn} + </PersonNavn> + <PersonIdent>{person?.id}</PersonIdent> + <TagsWrapper> + {person?.tenorRelasjoner?.map((relasjon: any, idx: number) => ( + <Tag + size="small" + variant="neutral" + key={person?.id + idx} + style={{ margin: '0 5px 5px 0' }} + > + {relasjon} + </Tag> + ))} + </TagsWrapper> + <ListeValg + ident={person?.id} + markertePersoner={markertePersoner} + setMarkertePersoner={setMarkertePersoner} + /> + </Box> + ) + })} + </VStack> + {loading && ( + <div style={{ margin: '10px 0' }}> + <Loading label="Laster treff ..." /> + </div> + )} + {personListe?.length === 200 && antallTreff > 200 && ( + <Alert variant="info" size="small" inline style={{ marginTop: '20px' }}> + Viser kun de 200 første treffene. <br /> Gjør et nytt søk for å se andre treff. + </Alert> + )} + </div> + <div + style={{ + width: '68%', + marginLeft: '2%', + }} + > + {valgtPerson && ( + <PersonVisning + person={valgtPersonData?.data} + ident={valgtPerson?.id} + loading={valgtPersonLoading} + error={valgtPersonError} + /> + )} + </div> + </div> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/EnhetsregisteretForetaksregisteret.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/EnhetsregisteretForetaksregisteret.tsx new file mode 100644 index 00000000000..cde0967aa50 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/EnhetsregisteretForetaksregisteret.tsx @@ -0,0 +1,23 @@ +import { SoekKategori } from '@/components/ui/soekForm/SoekForm' +import React, { SyntheticEvent } from 'react' +import { createOptions } from '@/pages/tenorSoek/utils' +import { FormSelect } from '@/components/ui/form/inputs/select/Select' +import { useTenorDomain } from '@/utils/hooks/useTenorSoek' + +export const EnhetsregisteretForetaksregisteret = ({ handleChangeList }: any) => { + const { domain: rollerOptions } = useTenorDomain('Roller') + return ( + <SoekKategori> + <div className="flexbox--full-width" style={{ fontSize: 'medium' }}> + <FormSelect + name="roller" + options={createOptions(rollerOptions?.data)} + isMulti={true} + size="grow" + label="Roller" + onChange={(val: SyntheticEvent) => handleChangeList(val || null, 'roller')} + /> + </div> + </SoekKategori> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretAdresse.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretAdresse.tsx new file mode 100644 index 00000000000..105e712c98d --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretAdresse.tsx @@ -0,0 +1,74 @@ +import { SoekKategori } from '@/components/ui/soekForm/SoekForm' +import { FormTextInput } from '@/components/ui/form/inputs/textInput/TextInput' +import React from 'react' +import { FormSelect } from '@/components/ui/form/inputs/select/Select' +import { SelectOptionsManager as Options } from '@/service/SelectOptions' +import { useTenorDomain } from '@/utils/hooks/useTenorSoek' +import { createOptions } from '@/pages/tenorSoek/utils' +import { FormCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' + +export const FolkeregisteretAdresse = ({ handleChange }: any) => { + const { domain: adresseGraderingOptions } = useTenorDomain('AdresseGradering') + + return ( + <SoekKategori> + <FormSelect + name="adresser.adresseGradering" + options={createOptions(adresseGraderingOptions?.data)} + label="Adressegradering" + onChange={(val: any) => handleChange(val?.value || null, 'adresser.adresseGradering')} + /> + <FormTextInput + name="adresser.kommunenummer" + label="Kommunenummer" + type="number" + // @ts-ignore + onBlur={(val: any) => handleChange(val?.target?.value || null, 'adresser.kommunenummer')} + visHvisAvhuket={false} + /> + <FormSelect + name="adresser.harAdresseSpesialtegn" + options={Options('boolean')} + label="Har spesialtegn i adresse" + onChange={(val: any) => handleChange(val?.value, 'adresser.harAdresseSpesialtegn')} + /> + <div className="flexbox--flex-wrap"> + <FormCheckbox + name="adresser.harBostedsadresse" + label="Har bostedsadresse" + onChange={(val: any) => + handleChange(val?.target?.checked || undefined, 'adresser.harBostedsadresse') + } + /> + <FormCheckbox + name="adresser.harOppholdAnnetSted" + label="Har opphold annet sted" + onChange={(val: any) => + handleChange(val?.target?.checked || undefined, 'adresser.harOppholdAnnetSted') + } + /> + <FormCheckbox + name="adresser.harPostadresseNorge" + label="Har postadresse i Norge" + onChange={(val: any) => + handleChange(val?.target?.checked || undefined, 'adresser.harPostadresseNorge') + } + /> + <FormCheckbox + name="adresser.harPostadresseUtland" + label="Har postadresse i utlandet" + onChange={(val: any) => + handleChange(val?.target?.checked || undefined, 'adresser.harPostadresseUtland') + } + /> + <FormCheckbox + name="adresser.harKontaktadresseDoedsbo" + label="Har kontaktadresse for dødsbo" + onChange={(val: any) => + handleChange(val?.target?.checked || undefined, 'adresser.harKontaktadresseDoedsbo') + } + /> + </div> + </SoekKategori> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretHendelser.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretHendelser.tsx new file mode 100644 index 00000000000..d0be257d0f2 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretHendelser.tsx @@ -0,0 +1,28 @@ +import { useTenorDomain } from '@/utils/hooks/useTenorSoek' +import { SoekKategori } from '@/components/ui/soekForm/SoekForm' +import { FormSelect } from '@/components/ui/form/inputs/select/Select' +import { createOptions } from '@/pages/tenorSoek/utils' +import React from 'react' + +export const FolkeregisteretHendelser = ({ handleChange }: any) => { + const { domain: hendelseOptions } = useTenorDomain('Hendelse') + + return ( + <SoekKategori> + <FormSelect + name="hendelser.hendelse" + options={createOptions(hendelseOptions?.data, true)} + size="xlarge" + label="Har hatt hendelse" + onChange={(val: any) => handleChange(val?.value || null, 'hendelser.hendelse')} + /> + <FormSelect + name="hendelser.sisteHendelse" + options={createOptions(hendelseOptions?.data, true)} + size="xlarge" + label="Siste hendelse" + onChange={(val: any) => handleChange(val?.value || null, 'hendelser.sisteHendelse')} + /> + </SoekKategori> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretIdentifikasjonStatus.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretIdentifikasjonStatus.tsx new file mode 100644 index 00000000000..9a248c50ef7 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretIdentifikasjonStatus.tsx @@ -0,0 +1,121 @@ +import { useTenorDomain } from '@/utils/hooks/useTenorSoek' +import { SoekKategori } from '@/components/ui/soekForm/SoekForm' +import { FormTextInput } from '@/components/ui/form/inputs/textInput/TextInput' +import React, { SyntheticEvent } from 'react' +import { FormSelect } from '@/components/ui/form/inputs/select/Select' +import { createOptions } from '@/pages/tenorSoek/utils' +import { SelectOptionsManager as Options } from '@/service/SelectOptions' +import { FormDatepicker } from '@/components/ui/form/inputs/datepicker/Datepicker' +import { FormCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' +import { CypressSelector } from '../../../../cypress/mocks/Selectors' + +export const FolkeregisteretIdentifikasjonStatus = ({ handleChange, handleChangeList }: any) => { + const { domain: identifikatorTypeOptions } = useTenorDomain('IdentifikatorType') + const { domain: kjoennOptions } = useTenorDomain('Kjoenn') + const { domain: personstatusOptions } = useTenorDomain('Personstatus') + const { domain: sivilstatusOptions } = useTenorDomain('Sivilstatus') + const { domain: utenlandskPersonIdentifikasjonOptions } = useTenorDomain( + 'UtenlandskPersonIdentifikasjon', + ) + const { domain: identitetsgrunnlagStatusOptions } = useTenorDomain('IdentitetsgrunnlagStatus') + const { domain: adressebeskyttelseOptions } = useTenorDomain('Adressebeskyttelse') + + return ( + <SoekKategori> + <FormTextInput + name="identifikator" + data-cy={CypressSelector.INPUT_TENORSOEK_FNR} + label="Fødselsnummer / D-nummer" + // @ts-ignore + onBlur={(val: any) => handleChange(val?.target?.value || null, 'identifikator')} + visHvisAvhuket={false} + /> + <FormSelect + name="identifikatorType" + options={createOptions(identifikatorTypeOptions?.data, true)} + label="Identifikatortype" + onChange={(val: any) => handleChange(val?.value || null, 'identifikatorType')} + /> + <FormDatepicker + name="foedselsdato.fraOgMed" + label="Fødselsdato f.o.m." + onChange={(val: SyntheticEvent) => handleChange(val || null, 'foedselsdato.fraOgMed')} + visHvisAvhuket={false} + /> + <FormDatepicker + name="foedselsdato.tilOgMed" + label="Fødselsdato t.o.m." + onChange={(val: SyntheticEvent) => handleChange(val || null, 'foedselsdato.tilOgMed')} + visHvisAvhuket={false} + /> + <FormDatepicker + name="doedsdato.fraOgMed" + label="Dødsdato f.o.m." + onChange={(val: SyntheticEvent) => handleChange(val || null, 'doedsdato.fraOgMed')} + visHvisAvhuket={false} + /> + <FormDatepicker + name="doedsdato.tilOgMed" + label="Dødsdato t.o.m." + onChange={(val: SyntheticEvent) => handleChange(val || null, 'doedsdato.tilOgMed')} + visHvisAvhuket={false} + /> + <FormSelect + name="kjoenn" + options={createOptions(kjoennOptions?.data)} + label="Kjønn" + onChange={(val: any) => handleChange(val?.value || null, 'kjoenn')} + /> + <FormSelect + name="personstatus" + options={createOptions(personstatusOptions?.data)} + label="Personstatus" + onChange={(val: any) => handleChange(val?.value || null, 'personstatus')} + /> + <FormSelect + name="sivilstand" + options={createOptions(sivilstatusOptions?.data)} + label="Sivilstand" + onChange={(val: any) => handleChange(val?.value || null, 'sivilstand')} + /> + <FormSelect + name="identitetsgrunnlagStatus" + options={createOptions(identitetsgrunnlagStatusOptions?.data)} + label="Identitetsgrunnlagsstatus" + onChange={(val: any) => handleChange(val?.value || null, 'identitetsgrunnlagStatus')} + /> + <FormSelect + name="adressebeskyttelse" + options={createOptions(adressebeskyttelseOptions?.data)} + label="Adressebeskyttelse" + onChange={(val: any) => handleChange(val?.value || null, 'adressebeskyttelse')} + /> + <FormSelect + name="harFalskIdentitet" + options={Options('boolean')} + label="Har falsk identitet" + onChange={(val: any) => handleChange(val?.value, 'harFalskIdentitet')} + /> + <div className="flexbox--full-width"> + <FormSelect + name="utenlandskPersonIdentifikasjon" + options={createOptions(utenlandskPersonIdentifikasjonOptions?.data)} + isMulti={true} + size="grow" + label="Utenlandsk identifikasjonsnummertype" + onChange={(val: SyntheticEvent) => + handleChangeList(val || null, 'utenlandskPersonIdentifikasjon') + } + /> + </div> + <FormCheckbox + name="harLegitimasjonsdokument" + data-cy={CypressSelector.CHECKBOX_TENORSOEK} + label="Har legitimasjonsdokument" + onChange={(val: any) => + handleChange(val?.target?.checked || undefined, 'harLegitimasjonsdokument') + } + /> + </SoekKategori> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretNavn.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretNavn.tsx new file mode 100644 index 00000000000..7e05d0a5002 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretNavn.tsx @@ -0,0 +1,48 @@ +import { SelectOptionsManager as Options } from '@/service/SelectOptions' +import { FormSelect } from '@/components/ui/form/inputs/select/Select' +import React from 'react' +import { SoekKategori } from '@/components/ui/soekForm/SoekForm' +import { FormTextInput } from '@/components/ui/form/inputs/textInput/TextInput' +import { FormCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' + +export const FolkeregisteretNavn = ({ handleChange }: any) => { + return ( + <SoekKategori> + <FormTextInput + name="navn.navnLengde.fraOgMed" + label="Lengde på navn f.o.m." + type="number" + // @ts-ignore + onBlur={(val: any) => handleChange(val?.target?.value || null, 'navn.navnLengde.fraOgMed')} + visHvisAvhuket={false} + /> + <FormTextInput + name="navn.navnLengde.tilOgMed" + label="Lengde på navn t.o.m." + type="number" + // @ts-ignore + onBlur={(val: any) => handleChange(val?.target?.value || null, 'navn.navnLengde.tilOgMed')} + visHvisAvhuket={false} + /> + <FormSelect + name="navn.harFlereFornavn" + options={Options('boolean')} + label="Har flere fornnavn" + onChange={(val: any) => handleChange(val?.value, 'navn.harFlereFornavn')} + /> + <FormSelect + name="navn.harNavnSpesialtegn" + options={Options('boolean')} + label="Har spesialtegn i navn" + onChange={(val: any) => handleChange(val?.value, 'navn.harNavnSpesialtegn')} + /> + <FormCheckbox + name="navn.harMellomnavn" + label="Har mellomnavn" + onChange={(val: any) => + handleChange(val?.target?.checked || undefined, 'navn.harMellomnavn') + } + /> + </SoekKategori> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretRelasjoner.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretRelasjoner.tsx new file mode 100644 index 00000000000..a62a2efbadd --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretRelasjoner.tsx @@ -0,0 +1,120 @@ +import { useTenorDomain } from '@/utils/hooks/useTenorSoek' +import { SoekKategori } from '@/components/ui/soekForm/SoekForm' +import { FormSelect } from '@/components/ui/form/inputs/select/Select' +import { createOptions } from '@/pages/tenorSoek/utils' +import React from 'react' +import { FormTextInput } from '@/components/ui/form/inputs/textInput/TextInput' +import { FormCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' + +export const FolkeregisteretRelasjoner = ({ handleChange }: any) => { + const { domain: relasjonOptions } = useTenorDomain('Relasjon') + + return ( + <SoekKategori> + <FormSelect + name="relasjoner.relasjon" + options={createOptions(relasjonOptions?.data)} + label="Relasjon" + onChange={(val: any) => handleChange(val?.value || null, 'relasjoner.relasjon')} + /> + <div className="flexbox--flex-wrap"> + <FormTextInput + name="relasjoner.antallBarn.fraOgMed" + label="Antall barn f.o.m." + type="number" + // @ts-ignore + onBlur={(val: any) => + handleChange(val?.target?.value || null, 'relasjoner.antallBarn.fraOgMed') + } + visHvisAvhuket={false} + /> + <FormTextInput + name="relasjoner.antallBarn.tilOgMed" + label="Antall barn t.o.m." + type="number" + // @ts-ignore + onBlur={(val: any) => + handleChange(val?.target?.value || null, 'relasjoner.antallBarn.tilOgMed') + } + visHvisAvhuket={false} + /> + </div> + <div className="flexbox--flex-wrap"> + <FormTextInput + name="relasjoner.relasjonMedFoedselsaar.fraOgMed" + label="Relasjon med fødselsår f.o.m." + type="number" + // @ts-ignore + onBlur={(val: any) => + handleChange(val?.target?.value || null, 'relasjoner.relasjonMedFoedselsaar.fraOgMed') + } + visHvisAvhuket={false} + /> + <FormTextInput + name="relasjoner.relasjonMedFoedselsaar.tilOgMed" + label="Relasjon med fødselsår t.o.m." + type="number" + // @ts-ignore + onBlur={(val: any) => + handleChange(val?.target?.value || null, 'relasjoner.relasjonMedFoedselsaar.tilOgMed') + } + visHvisAvhuket={false} + /> + </div> + <div className="flexbox--flex-wrap"> + <FormCheckbox + name="relasjoner.harForeldreAnsvar" + label="Har foreldreansvar" + onChange={(val: any) => + handleChange(val?.target?.checked || undefined, 'relasjoner.harForeldreAnsvar') + } + /> + <FormCheckbox + name="relasjoner.harDeltBosted" + label="Har delt bosted" + onChange={(val: any) => + handleChange(val?.target?.checked || undefined, 'relasjoner.harDeltBosted') + } + /> + <FormCheckbox + name="relasjoner.harVergemaalEllerFremtidsfullmakt" + label="Har vergemål eller fremtidsfullmakt" + onChange={(val: any) => + handleChange( + val?.target?.checked || undefined, + 'relasjoner.harVergemaalEllerFremtidsfullmakt', + ) + } + /> + <FormCheckbox + name="relasjoner.borMedMor" + label="Bor med mor" + onChange={(val: any) => + handleChange(val?.target?.checked || undefined, 'relasjoner.borMedMor') + } + /> + <FormCheckbox + name="relasjoner.borMedFar" + label="Bor med far" + onChange={(val: any) => + handleChange(val?.target?.checked || undefined, 'relasjoner.borMedFar') + } + /> + <FormCheckbox + name="relasjoner.borMedMedmor" + label="Bor med medmor" + onChange={(val: any) => + handleChange(val?.target?.checked || undefined, 'relasjoner.borMedMedmor') + } + /> + <FormCheckbox + name="relasjoner.foreldreHarSammeAdresse" + label="Foleldre har samme adresse" + onChange={(val: any) => + handleChange(val?.target?.checked || undefined, 'relasjoner.foreldreHarSammeAdresse') + } + /> + </div> + </SoekKategori> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretStatsborgerskap.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretStatsborgerskap.tsx new file mode 100644 index 00000000000..66e36739aa1 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretStatsborgerskap.tsx @@ -0,0 +1,23 @@ +import { SelectOptionsManager as Options } from '@/service/SelectOptions' +import { FormSelect } from '@/components/ui/form/inputs/select/Select' +import React from 'react' +import { SoekKategori } from '@/components/ui/soekForm/SoekForm' + +export const FolkeregisteretStatsborgerskap = ({ handleChange }: any) => { + return ( + <SoekKategori> + <FormSelect + name="harNorskStatsborgerskap" + options={Options('boolean')} + label="Har norsk statsborgerskap" + onChange={(val: any) => handleChange(val?.value, 'harNorskStatsborgerskap')} + /> + <FormSelect + name="harFlereStatsborgerskap" + options={Options('boolean')} + label="Har flere statsborgerskap" + onChange={(val: any) => handleChange(val?.value, 'harFlereStatsborgerskap')} + /> + </SoekKategori> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/InntektAordningen.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/InntektAordningen.tsx new file mode 100644 index 00000000000..de0c786da9c --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/InntektAordningen.tsx @@ -0,0 +1,80 @@ +import React, { SyntheticEvent } from 'react' +import { SelectOptionsManager as Options } from '@/service/SelectOptions' +import { FormSelect } from '@/components/ui/form/inputs/select/Select' +import { useTenorDomain } from '@/utils/hooks/useTenorSoek' +import { createOptions } from '@/pages/tenorSoek/utils' +import { SoekKategori } from '@/components/ui/soekForm/SoekForm' +import { Monthpicker } from '@/components/ui/form/inputs/monthpicker/Monthpicker' +import { FormTextInput } from '@/components/ui/form/inputs/textInput/TextInput' + +export const InntektAordningen = ({ handleChange, handleChangeList, getValue }: any) => { + const { domain: inntektstypeOptions } = useTenorDomain('Inntektstype') + const { domain: beskrivelseOptions } = useTenorDomain('AOrdningBeskrivelse') + const { domain: forskuddstrekkOptions } = useTenorDomain('Forskuddstrekk') + + return ( + <SoekKategori> + <Monthpicker + name="inntekt.periode.fraOgMed" + label="Periode f.o.m. dato" + // @ts-ignore + handleDateChange={(val: Date) => { + handleChange(val ? val.toISOString().substring(0, 7) : '', 'inntekt.periode.fraOgMed') + }} + date={getValue('inntekt.periode.fraOgMed')} + /> + <Monthpicker + name="inntekt.periode.tilOgMed" + label="Periode t.o.m. dato" + // @ts-ignore + handleDateChange={(val: Date) => { + handleChange(val ? val.toISOString().substring(0, 7) : '', 'inntekt.periode.tilOgMed') + }} + date={getValue('inntekt.periode.tilOgMed')} + /> + <FormTextInput + name="inntekt.opplysningspliktig" + label="Opplysningspliktig org.nr." + // @ts-ignore + onBlur={(val: any) => + handleChange(val?.target?.value || null, 'inntekt.opplysningspliktig') + } + visHvisAvhuket={false} + /> + <div className="flexbox--full-width" style={{ fontSize: 'medium' }}> + <FormSelect + name="inntekt.inntektstyper" + options={createOptions(inntektstypeOptions?.data)} + isMulti={true} + size="grow" + label="Inntektstyper" + onChange={(val: SyntheticEvent) => handleChangeList(val || null, 'inntekt.inntektstyper')} + /> + <FormSelect + name="inntekt.forskuddstrekk" + options={createOptions(forskuddstrekkOptions?.data)} + isMulti={true} + size="grow" + label="Forskuddstrekk" + onChange={(val: SyntheticEvent) => + handleChangeList(val || null, 'inntekt.forskuddstrekk') + } + /> + </div> + <FormSelect + name="inntekt.beskrivelse" + options={createOptions(beskrivelseOptions?.data)} + size="xlarge" + label="Beskrivelse" + onChange={(val: any) => handleChange(val?.value || null, 'inntekt.beskrivelse')} + /> + <FormSelect + name="inntekt.harHistorikk" + options={Options('boolean')} + size="small" + label="Har historikk" + onChange={(val: any) => handleChange(val?.value, 'inntekt.harHistorikk')} + /> + </SoekKategori> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/utils.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/utils.tsx new file mode 100644 index 00000000000..2316db49eac --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/utils.tsx @@ -0,0 +1,26 @@ +import { codeToNorskLabel } from '@/utils/DataFormatter' + +export const manualOptions = { + DNummer: 'D-nummer', + DNummerOgFoedselsnr: 'D-nummer og fødselsnummer', + EndringIFoedselINorge: 'Endring i fødsel i Norge', + endringIFoedselINorge: 'Endring i fødsel i Norge', + EndringIOppholdPaaSvalbard: 'Endring i opphold på Svalbard', + endringIOppholdPaaSvalbard: 'Endring i opphold på Svalbard', +} + +export const createOptions = (optionsList: Array<string>, hasManualOptions = false) => { + if (!optionsList || optionsList.length === 0) { + return [] + } + if (hasManualOptions) { + return optionsList.map((option) => ({ + value: option, + label: manualOptions[option] || codeToNorskLabel(option), + })) + } + return optionsList.map((option) => ({ + value: option, + label: codeToNorskLabel(option), + })) +} diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/useIdent.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/useIdent.tsx new file mode 100644 index 00000000000..7787a67fb43 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/useIdent.tsx @@ -0,0 +1,16 @@ +import useSWR from 'swr' +import { fetcher } from '@/api' + +export const useFinnesIDolly = (ident: string) => { + const { data, error, isLoading } = useSWR<boolean, Error>( + `dolly-backend/api/v1/ident/finnes/${ident}`, + // @ts-ignore + fetcher, + ) + + return { + finnesIDolly: data, + loading: isLoading, + error: error, + } +} diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/usePdlPerson.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/usePdlPerson.tsx index c7fb411f77c..64637de2f9d 100644 --- a/apps/dolly-frontend/src/main/js/src/utils/hooks/usePdlPerson.tsx +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/usePdlPerson.tsx @@ -1,11 +1,15 @@ import useSWR from 'swr' -import { PdlDataWrapper } from '@/pages/gruppe/PersonVisning/PersonMiljoeinfo/PdlDataTyper' +import { + PdlDataBolk, + PdlDataWrapper, +} from '@/pages/gruppe/PersonVisning/PersonMiljoeinfo/PdlDataTyper' import { fetcher } from '@/api' const personServiceUrl = '/person-service/api/v2/personer/' const getPersonoppslagUrl = (ident: string, miljoe: string | null) => `${personServiceUrl}ident/${ident}${miljoe ? '?pdlMiljoe=' + miljoe : ''}` -const getPersonoppslagBolkUrl = (ident) => `${personServiceUrl}identer?identer=${ident}` +const getPersonoppslagBolkUrl = (identer: Array<string>) => + `${personServiceUrl}identer?identer=${identer}` export const usePdlMiljoeinfo = (ident: string, hentQ1 = false) => { const { data, error, isLoading } = useSWR<PdlDataWrapper, Error>( @@ -22,8 +26,8 @@ export const usePdlMiljoeinfo = (ident: string, hentQ1 = false) => { } } -export const usePdlPersonbolk = (identer: string) => { - const { data, error, isLoading } = useSWR<PdlDataWrapper, Error>( +export const usePdlPersonbolk = (identer: Array<string>) => { + const { data, error, isLoading } = useSWR<PdlDataBolk, Error>( getPersonoppslagBolkUrl(identer), fetcher, ) diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx new file mode 100644 index 00000000000..934a0f599be --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx @@ -0,0 +1,57 @@ +import useSWR from 'swr' +import Request from '@/service/services/Request' + +const tenorSearchUrl = '/testnav-tenor-search-service/api/v1/tenor/testdata' + +export const useTenorIdent = (ident: string) => { + const { data, isLoading, error, mutate } = useSWR( + ident + ? [ + `${tenorSearchUrl}?kilde=FREG&type=AlleFelter`, + { + identifikator: ident, + }, + ] + : null, + ([url, headers]) => Request.post(url, headers), + ) + + return { + person: data, + loading: isLoading, + error: error, + mutate: mutate, + } +} + +export const useTenorOversikt = (request: any, antall = 10, side = 0, seed?: number | null) => { + const { data, isLoading, error, mutate } = useSWR( + request + ? [ + `${tenorSearchUrl}/oversikt?antall=${antall}&side=${side}${seed ? '&seed=' + seed : ''}`, + request, + ] + : null, + ([url, headers]) => Request.post(url, headers), + ) + + return { + response: data, + loading: isLoading, + error: error, + mutate: mutate, + } +} + +export const useTenorDomain = (lookup: string) => { + const { data, isLoading, error } = useSWR( + lookup ? `${tenorSearchUrl}/domain?lookup=${lookup}` : null, + (url) => Request.get(url), + ) + + return { + domain: data, + loading: isLoading, + error: error, + } +} diff --git a/apps/dolly-frontend/src/main/resources/application-local.yml b/apps/dolly-frontend/src/main/resources/application-local.yml index e205baf08dd..d25e52393fe 100644 --- a/apps/dolly-frontend/src/main/resources/application-local.yml +++ b/apps/dolly-frontend/src/main/resources/application-local.yml @@ -73,4 +73,6 @@ consumers: testnav-person-service: url: https://testnav-person-service.intern.dev.nav.no testnav-kodeverk-service: - url: https://testnav-kodeverk-service.intern.dev.nav.no/ \ No newline at end of file + url: https://testnav-kodeverk-service.intern.dev.nav.no/ + testnav-tenor-search-service: + url: https://testnav-tenor-search-service.intern.dev.nav.no \ No newline at end of file diff --git a/apps/dolly-frontend/src/main/resources/application.yml b/apps/dolly-frontend/src/main/resources/application.yml index 4c41c69d4a4..e92d3318b18 100644 --- a/apps/dolly-frontend/src/main/resources/application.yml +++ b/apps/dolly-frontend/src/main/resources/application.yml @@ -213,6 +213,11 @@ consumers: namespace: dolly url: http://testnav-kodeverk-service.dolly.svc.cluster.local cluster: dev-gcp + testnav-tenor-search-service: + cluster: dev-gcp + namespace: dolly + name: testnav-tenor-search-service + url: http://testnav-tenor-search-service.dolly.svc.cluster.local management: endpoints: diff --git a/apps/dollystatus/config.yml b/apps/dollystatus/config.yml index a6fceedea5e..33ce4421e6c 100644 --- a/apps/dollystatus/config.yml +++ b/apps/dollystatus/config.yml @@ -13,6 +13,7 @@ spec: rules: - application: dolly-backend - application: dolly-backend-dev + - application: testnav-budpro-service liveness: path: /internal/isAlive initialDelay: 4 diff --git a/apps/endringsmelding-frontend/config.yml b/apps/endringsmelding-frontend/config.yml index b478ef35fec..9ca54a81831 100644 --- a/apps/endringsmelding-frontend/config.yml +++ b/apps/endringsmelding-frontend/config.yml @@ -35,6 +35,7 @@ spec: rules: - application: testnav-endringsmelding-service - application: testnorge-profil-api + - application: testnorge-profil-api-dev resources: limits: memory: 2048Mi diff --git a/apps/faste-data-frontend/config.yml b/apps/faste-data-frontend/config.yml index 4823e90b564..eef9353df50 100644 --- a/apps/faste-data-frontend/config.yml +++ b/apps/faste-data-frontend/config.yml @@ -20,11 +20,13 @@ spec: accessPolicy: outbound: rules: - - application: testnorge-profil-api + - application: testnav-miljoer-service - application: testnav-organisasjon-faste-data-service - application: testnav-organisasjon-service - application: testnav-person-faste-data-service - application: testnav-person-service + - application: testnorge-profil-api + - application: testnorge-profil-api-dev liveness: path: /internal/isAlive periodSeconds: 30 diff --git a/apps/generer-synt-amelding-service/config.yml b/apps/generer-synt-amelding-service/config.yml index 0fca6cc3028..a08454b4396 100644 --- a/apps/generer-synt-amelding-service/config.yml +++ b/apps/generer-synt-amelding-service/config.yml @@ -12,19 +12,11 @@ spec: accessPolicy: inbound: rules: - - application: team-dolly-lokal-app - cluster: dev-gcp - application: dolly-frontend - cluster: dev-gcp - - application: dolly-idporten - cluster: dev-gcp - application: dolly-frontend-dev - cluster: dev-gcp + - application: dolly-idporten + - application: team-dolly-lokal-app - application: testnav-oversikt-frontend - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp outbound: rules: - application: synthdata-amelding diff --git a/apps/helsepersonell-service/config.yml b/apps/helsepersonell-service/config.yml index d028995f654..798d6fb02dd 100644 --- a/apps/helsepersonell-service/config.yml +++ b/apps/helsepersonell-service/config.yml @@ -19,18 +19,16 @@ spec: accessPolicy: inbound: rules: - - application: team-dolly-lokal-app - cluster: dev-gcp - application: dolly-frontend - cluster: dev-gcp - application: dolly-frontend-dev - cluster: dev-gcp + - application: dolly-frontend-dev-unstable - application: dolly-idporten - cluster: dev-gcp + - application: team-dolly-lokal-app - application: testnav-oversikt-frontend - cluster: dev-gcp - application: testnav-synt-sykemelding-api - cluster: dev-gcp + outbound: + rules: + - application: dolly-backend liveness: path: /internal/isAlive initialDelay: 4 diff --git a/apps/joark-dokument-service/config.yml b/apps/joark-dokument-service/config.yml index 0dd8a110d7f..5027b54be93 100644 --- a/apps/joark-dokument-service/config.yml +++ b/apps/joark-dokument-service/config.yml @@ -11,19 +11,12 @@ spec: accessPolicy: inbound: rules: - - application: team-dolly-lokal-app - cluster: dev-gcp - - application: testnav-oversikt-frontend - cluster: dev-gcp - application: dolly-frontend - cluster: dev-gcp - - application: dolly-idporten - cluster: dev-gcp - application: dolly-frontend-dev - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp + - application: dolly-frontend-dev-unstable + - application: dolly-idporten + - application: team-dolly-lokal-app + - application: testnav-oversikt-frontend outbound: external: - host: testnav-saf-proxy.dev-fss-pub.nais.io diff --git a/apps/kodeverk-service/config.yml b/apps/kodeverk-service/config.yml index ab25b1f8fbb..690c5389cc0 100644 --- a/apps/kodeverk-service/config.yml +++ b/apps/kodeverk-service/config.yml @@ -11,12 +11,11 @@ spec: accessPolicy: inbound: rules: - - application: app-1 - namespace: plattformsikkerhet - application: dolly-backend - application: dolly-backend-dev - application: dolly-frontend - application: dolly-frontend-dev + - application: dolly-frontend-dev-unstable - application: dolly-idporten - application: team-dolly-lokal-app - application: testnav-oversikt-frontend diff --git a/apps/kodeverk-service/src/main/java/no/nav/testnav/kodeverkservice/consumer/KodeverkConsumer.java b/apps/kodeverk-service/src/main/java/no/nav/testnav/kodeverkservice/consumer/KodeverkConsumer.java index 2f51b1d3560..d8ec625f15a 100644 --- a/apps/kodeverk-service/src/main/java/no/nav/testnav/kodeverkservice/consumer/KodeverkConsumer.java +++ b/apps/kodeverk-service/src/main/java/no/nav/testnav/kodeverkservice/consumer/KodeverkConsumer.java @@ -3,6 +3,7 @@ import no.nav.testnav.kodeverkservice.config.Consumers; import no.nav.testnav.kodeverkservice.consumer.command.KodeverkGetCommand; import no.nav.testnav.kodeverkservice.dto.KodeverkBetydningerResponse; +import no.nav.testnav.kodeverkservice.utility.FilterUtility; import no.nav.testnav.libs.reactivesecurity.exchange.TokenExchange; import no.nav.testnav.libs.securitycore.domain.ServerProperties; import org.springframework.stereotype.Service; @@ -39,6 +40,9 @@ public KodeverkConsumer( public Mono<KodeverkBetydningerResponse> getKodeverk(String kodeverk) { return tokenService.exchange(serverProperties) - .flatMap(token -> new KodeverkGetCommand(webClient, kodeverk, token.getTokenValue()).call()); + .flatMap(token -> new KodeverkGetCommand(webClient, + FilterUtility.hentKodeverk(kodeverk), + token.getTokenValue()).call()) + .map(response -> FilterUtility.filterKodeverk(kodeverk, response)); } } diff --git a/apps/kodeverk-service/src/main/java/no/nav/testnav/kodeverkservice/provider/KodeverkController.java b/apps/kodeverk-service/src/main/java/no/nav/testnav/kodeverkservice/provider/KodeverkController.java index d05f483d9a7..76a082aaca1 100644 --- a/apps/kodeverk-service/src/main/java/no/nav/testnav/kodeverkservice/provider/KodeverkController.java +++ b/apps/kodeverk-service/src/main/java/no/nav/testnav/kodeverkservice/provider/KodeverkController.java @@ -3,7 +3,6 @@ import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; import no.nav.testnav.kodeverkservice.service.KodeverkService; -import no.nav.testnav.kodeverkservice.utility.KommunerUtility; import no.nav.testnav.libs.dto.kodeverkservice.v1.KodeverkAdjustedDTO; import no.nav.testnav.libs.dto.kodeverkservice.v1.KodeverkDTO; import org.springframework.cache.annotation.Cacheable; @@ -17,8 +16,6 @@ import static no.nav.testnav.kodeverkservice.config.CacheConfig.CACHE_KODEVERK; import static no.nav.testnav.kodeverkservice.config.CacheConfig.CACHE_KODEVERK_2; -import static no.nav.testnav.kodeverkservice.utility.KommunerUtility.KOMMUNER; -import static no.nav.testnav.kodeverkservice.utility.KommunerUtility.KOMMUNER2024; @RestController @RequestMapping("/api/v1/kodeverk") @@ -33,12 +30,7 @@ public class KodeverkController { @Operation(description = "Hent kodeverk, returnerer map") public Mono<KodeverkDTO> fetchKodeverk(@RequestParam String kodeverk) { - return !KOMMUNER2024.equals(kodeverk) ? - - kodeverkService.getKodeverkMap(kodeverk) : - - kodeverkService.getKodeverkMap(KOMMUNER) - .map(KommunerUtility::filterKommuner2024); + return kodeverkService.getKodeverkMap(kodeverk); } @Cacheable(value = CACHE_KODEVERK_2, unless = "#result.koder?.size() == 0") @@ -46,11 +38,6 @@ public Mono<KodeverkDTO> fetchKodeverk(@RequestParam String kodeverk) { @Operation(description = "Hent kodeverk etter kodeverkNavn") public Mono<KodeverkAdjustedDTO> getKodeverkByName(@PathVariable("kodeverkNavn") String kodeverkNavn) { - return !KOMMUNER2024.equals(kodeverkNavn) ? - - kodeverkService.getKodeverkByName(kodeverkNavn) : - - kodeverkService.getKodeverkByName(KOMMUNER) - .map(KommunerUtility::filterKommuner2024); + return kodeverkService.getKodeverkByName(kodeverkNavn); } } \ No newline at end of file diff --git a/apps/kodeverk-service/src/main/java/no/nav/testnav/kodeverkservice/utility/FilterUtility.java b/apps/kodeverk-service/src/main/java/no/nav/testnav/kodeverkservice/utility/FilterUtility.java new file mode 100644 index 00000000000..8fdc0143486 --- /dev/null +++ b/apps/kodeverk-service/src/main/java/no/nav/testnav/kodeverkservice/utility/FilterUtility.java @@ -0,0 +1,29 @@ +package no.nav.testnav.kodeverkservice.utility; + +import lombok.experimental.UtilityClass; +import no.nav.testnav.kodeverkservice.dto.KodeverkBetydningerResponse; + +@UtilityClass +public class FilterUtility { + + private static final String KOMMUNER2024 = "Kommuner2024"; + private static final String KOMMUNER = "Kommuner"; + + public static String hentKodeverk(String kodeverk) { + + if (KOMMUNER2024.equals(kodeverk)) { + return KOMMUNER; + } else { + return kodeverk; + } + } + + public static KodeverkBetydningerResponse filterKodeverk(String kodeverk, KodeverkBetydningerResponse response) { + + if (KOMMUNER2024.equals(kodeverk)) { + return KommunerUtility.filterKommuner2024(response); + } else { + return response; + } + } +} diff --git a/apps/kodeverk-service/src/main/java/no/nav/testnav/kodeverkservice/utility/KommunerUtility.java b/apps/kodeverk-service/src/main/java/no/nav/testnav/kodeverkservice/utility/KommunerUtility.java index ed55cac7d0e..f8193a22f5d 100644 --- a/apps/kodeverk-service/src/main/java/no/nav/testnav/kodeverkservice/utility/KommunerUtility.java +++ b/apps/kodeverk-service/src/main/java/no/nav/testnav/kodeverkservice/utility/KommunerUtility.java @@ -2,8 +2,7 @@ import lombok.Getter; import lombok.experimental.UtilityClass; -import no.nav.testnav.libs.dto.kodeverkservice.v1.KodeverkAdjustedDTO; -import no.nav.testnav.libs.dto.kodeverkservice.v1.KodeverkDTO; +import no.nav.testnav.kodeverkservice.dto.KodeverkBetydningerResponse; import java.util.HashSet; import java.util.Map; @@ -13,9 +12,6 @@ @UtilityClass public class KommunerUtility { - public static final String KOMMUNER = "Kommuner"; - public static final String KOMMUNER2024 = "Kommuner2024"; - @Getter private static final Set<String> gamleKommunenummer = new HashSet<>(); @@ -126,26 +122,12 @@ public class KommunerUtility { gamleKommunenummer.add("3019"); // Vestby gamleKommunenummer.add("3825"); // Vinje } + public static KodeverkBetydningerResponse filterKommuner2024(KodeverkBetydningerResponse response) { - public static KodeverkAdjustedDTO filterKommuner2024(KodeverkAdjustedDTO response) { - - return KodeverkAdjustedDTO.builder() - .name(KOMMUNER2024) - .koder( - response.getKoder().stream() - .filter(kode -> !gamleKommunenummer.contains(kode.getValue())) - .toList()) - .build(); - } - - public static KodeverkDTO filterKommuner2024(KodeverkDTO response) { - - return KodeverkDTO.builder() - .kodeverknavn(KOMMUNER2024) - .kodeverk( - response.getKodeverk().entrySet().stream() - .filter(entry ->!gamleKommunenummer.contains(entry.getKey())) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))) + return KodeverkBetydningerResponse.builder() + .betydninger(response.getBetydninger().entrySet().stream() + .filter(entry -> !gamleKommunenummer.contains(entry.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))) .build(); } } \ No newline at end of file diff --git a/apps/miljoer-service/config.yml b/apps/miljoer-service/config.yml index ee72ab6a238..fe3fcd9ebc1 100644 --- a/apps/miljoer-service/config.yml +++ b/apps/miljoer-service/config.yml @@ -12,31 +12,18 @@ spec: accessPolicy: inbound: rules: - - application: team-dolly-lokal-app - cluster: dev-gcp - - application: testnav-oversikt-frontend - cluster: dev-gcp - application: dolly-backend - cluster: dev-gcp - application: dolly-backend-dev - cluster: dev-gcp - application: dolly-frontend - cluster: dev-gcp - - application: dolly-idporten - cluster: dev-gcp - application: dolly-frontend-dev - cluster: dev-gcp - - application: testnav-orgnummer-service - cluster: dev-gcp - - application: testnav-organisasjon-forvalter - cluster: dev-gcp + - application: dolly-frontend-dev-unstable + - application: dolly-idporten + - application: team-dolly-lokal-app - application: testnav-faste-data-frontend - cluster: dev-gcp + - application: testnav-organisasjon-forvalter + - application: testnav-orgnummer-service + - application: testnav-oversikt-frontend - application: testnav-tps-messaging-service - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp tokenx: enabled: true azure: diff --git a/apps/miljoer-service/src/main/java/no/nav/registre/testnorge/miljoerservice/config/DevConfig.java b/apps/miljoer-service/src/main/java/no/nav/registre/testnorge/miljoerservice/config/DevConfig.java index 69c2518b831..cffa79859bc 100644 --- a/apps/miljoer-service/src/main/java/no/nav/registre/testnorge/miljoerservice/config/DevConfig.java +++ b/apps/miljoer-service/src/main/java/no/nav/registre/testnorge/miljoerservice/config/DevConfig.java @@ -2,6 +2,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; +import org.springframework.lang.NonNull; import org.springframework.vault.annotation.VaultPropertySource; import org.springframework.vault.authentication.ClientAuthentication; import org.springframework.vault.authentication.TokenAuthentication; @@ -13,17 +14,18 @@ @Configuration @Profile("dev") @VaultPropertySource(value = "secret/dolly/lokal", ignoreSecretNotFound = false) -@VaultPropertySource(value = "secret/.common/tokenx/dev/app-1", ignoreSecretNotFound = false) public class DevConfig extends AbstractVaultConfiguration { private static final String VAULT_TOKEN = "spring.cloud.vault.token"; @Override + @NonNull public VaultEndpoint vaultEndpoint() { return VaultEndpoint.create("vault.adeo.no", 443); } @Override + @NonNull public ClientAuthentication clientAuthentication() { if (System.getenv().containsKey("VAULT_TOKEN")) { System.setProperty(VAULT_TOKEN, System.getenv("VAULT_TOKEN")); diff --git a/apps/oppsummeringsdokument-service/config.yml b/apps/oppsummeringsdokument-service/config.yml index 75a3784ba72..d9df9bc9bd5 100644 --- a/apps/oppsummeringsdokument-service/config.yml +++ b/apps/oppsummeringsdokument-service/config.yml @@ -13,25 +13,14 @@ spec: accessPolicy: inbound: rules: - - application: team-dolly-lokal-app - cluster: dev-gcp - - application: testnav-oversikt-frontend - cluster: dev-gcp - - application: testnav-generer-arbeidsforhold-populasjon-service - cluster: dev-gcp - - application: testnav-amelding-service - cluster: dev-gcp - application: dolly-frontend - cluster: dev-gcp - - application: dolly-idporten - cluster: dev-gcp - application: dolly-frontend-dev - cluster: dev-gcp - application: dolly-frontend-dev-unstable - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp + - application: dolly-idporten + - application: team-dolly-lokal-app + - application: testnav-amelding-service + - application: testnav-generer-arbeidsforhold-populasjon-service + - application: testnav-oversikt-frontend outbound: external: - host: aareg-synt-services-proxy.dev-fss-pub.nais.io diff --git a/apps/organisasjon-faste-data-service/config.yml b/apps/organisasjon-faste-data-service/config.yml index 05aa99e61b8..6a9d8c71079 100644 --- a/apps/organisasjon-faste-data-service/config.yml +++ b/apps/organisasjon-faste-data-service/config.yml @@ -22,25 +22,16 @@ spec: accessPolicy: inbound: rules: - - application: team-dolly-lokal-app - cluster: dev-gcp - - application: testnav-oversikt-frontend - cluster: dev-gcp - - application: testnorge-statisk-data-forvalter - cluster: dev-fss - - application: dolly-frontend-dev - cluster: dev-gcp - application: dolly-frontend - cluster: dev-gcp + - application: dolly-frontend-dev + - application: dolly-frontend-dev-unstable - application: dolly-idporten - cluster: dev-gcp + - application: team-dolly-lokal-app - application: testnav-faste-data-frontend - cluster: dev-gcp + - application: testnav-oversikt-frontend - application: testnav-synt-vedtakshistorikk-service - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp + - application: testnorge-statisk-data-forvalter + cluster: dev-fss outbound: rules: - application: organisasjon-bestilling-service diff --git a/apps/organisasjon-forvalter/config.yml b/apps/organisasjon-forvalter/config.yml index ba768822533..390a7622548 100644 --- a/apps/organisasjon-forvalter/config.yml +++ b/apps/organisasjon-forvalter/config.yml @@ -22,37 +22,27 @@ spec: accessPolicy: inbound: rules: - - application: testnav-oversikt-frontend - cluster: dev-gcp - application: dolly-backend - cluster: dev-gcp - application: dolly-backend-dev - cluster: dev-gcp - application: dolly-frontend - cluster: dev-gcp - - application: dolly-idporten - cluster: dev-gcp - application: dolly-frontend-dev - cluster: dev-gcp - - application: testnorge-statisk-data-forvalter - cluster: dev-fss + - application: dolly-frontend-dev-unstable + - application: dolly-idporten - application: team-dolly-lokal-app - cluster: dev-gcp + - application: testnav-oversikt-frontend - application: testnav-pdl-forvalter - cluster: dev-gcp - application: testnav-pdl-forvalter-dev - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp + - application: testnorge-statisk-data-forvalter + cluster: dev-fss outbound: rules: - - application: organisasjon-bestilling-service - application: generer-navn-service + - application: organisasjon-bestilling-service - application: testnav-adresse-service - - application: testnav-organisasjon-service - application: testnav-miljoer-service + - application: testnav-organisasjon-service - application: testnav-orgnummer-service + - application: testnav-tps-messaging-service gcp: sqlInstances: - type: POSTGRES_12 diff --git a/apps/organisasjon-service/config.yml b/apps/organisasjon-service/config.yml index ca9c17840a9..4afd4b4b80e 100644 --- a/apps/organisasjon-service/config.yml +++ b/apps/organisasjon-service/config.yml @@ -18,35 +18,21 @@ spec: accessPolicy: inbound: rules: - - application: team-dolly-lokal-app - cluster: dev-gcp - - application: testnorge-statisk-data-forvalter - cluster: dev-fss - - application: testnav-orgnummer-service - cluster: dev-gcp - - application: testnav-synt-sykemelding-api - cluster: dev-gcp - - application: testnav-organisasjon-forvalter - cluster: dev-gcp - - application: testnav-oversikt-frontend - cluster: dev-gcp - application: dolly-backend - cluster: dev-gcp - application: dolly-backend-dev - cluster: dev-gcp - application: dolly-frontend - cluster: dev-gcp - - application: dolly-idporten - cluster: dev-gcp - application: dolly-frontend-dev - cluster: dev-gcp + - application: dolly-frontend-dev-unstable + - application: dolly-idporten + - application: team-dolly-lokal-app - application: testnav-faste-data-frontend - cluster: dev-gcp - application: testnav-generer-arbeidsforhold-populasjon-service - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp + - application: testnav-organisasjon-forvalter + - application: testnav-orgnummer-service + - application: testnav-oversikt-frontend + - application: testnav-synt-sykemelding-api + - application: testnorge-statisk-data-forvalter + cluster: dev-fss outbound: external: - host: testnav-ereg-proxy.dev-fss-pub.nais.io diff --git a/apps/organisasjon-tilgang-service/config.yml b/apps/organisasjon-tilgang-service/config.yml index 9870915500e..f1a18b3f026 100644 --- a/apps/organisasjon-tilgang-service/config.yml +++ b/apps/organisasjon-tilgang-service/config.yml @@ -19,23 +19,13 @@ spec: accessPolicy: inbound: rules: - - application: dolly-frontend-dev - cluster: dev-gcp - - application: team-dolly-lokal-app - cluster: dev-gcp - - application: testnav-oversikt-frontend - cluster: dev-gcp - application: dolly-frontend - cluster: dev-gcp - application: dolly-frontend-dev - cluster: dev-gcp + - application: dolly-frontend-dev-unstable - application: dolly-idporten - cluster: dev-gcp + - application: team-dolly-lokal-app - application: testnav-organisasjon-tilgang-frontend - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp + - application: testnav-oversikt-frontend outbound: external: - host: altinn.no diff --git a/apps/oversikt-frontend/config.yml b/apps/oversikt-frontend/config.yml index ccca707cfe0..190e7b6cbb5 100644 --- a/apps/oversikt-frontend/config.yml +++ b/apps/oversikt-frontend/config.yml @@ -26,10 +26,63 @@ spec: accessPolicy: outbound: rules: - - application: testnorge-profil-api-dev + - application: dolly-backend + - application: dolly-backend-dev + - application: ereg-batch-status-service + - application: generer-navn-service + - application: organisasjon-bestilling-service + - application: synthdata-amelding + - application: synthdata-arena-aap + - application: synthdata-arena-dagpenger + - application: synthdata-arena-meldekort + - application: synthdata-arena-tilleggsstonad + - application: synthdata-arena-tiltak + - application: synthdata-arena-vedtakshistorikk + - application: synthdata-elsam-gcp + - application: testnav-adresse-service + - application: testnav-amelding-service - application: testnav-app-tilgang-analyse-service - - application: testnav-person-organisasjon-tilgang-service-dev + - application: testnav-arbeidsforhold-service + - application: testnav-arbeidsplassencv-proxy + - application: testnav-batch-bestilling-service + - application: testnav-bruker-service - application: testnav-bruker-service-dev + - application: testnav-endringsmelding-service + - application: testnav-generer-arbeidsforhold-populasjon-service + - application: testnav-generer-organisasjon-populasjon-service + - application: testnav-generer-synt-amelding-service + - application: testnav-helsepersonell-service + - application: testnav-ident-pool + - application: testnav-inntektsmelding-generator-service + - application: testnav-inntektsmelding-service + - application: testnav-jenkins-batch-status-service + - application: testnav-joark-dokument-service + - application: testnav-kodeverk-service + - application: testnav-miljoer-service + - application: testnav-oppsummeringsdokument-service + - application: testnav-organisasjon-faste-data-service + - application: testnav-organisasjon-forvalter + - application: testnav-organisasjon-mottak-service + - application: testnav-organisasjon-service + - application: testnav-organisasjon-tilgang-service + - application: testnav-orgnummer-service + - application: testnav-pdl-forvalter + - application: testnav-pdl-forvalter-dev + - application: testnav-person-faste-data-service + - application: testnav-person-organisasjon-tilgang-service-dev + - application: testnav-person-search-service + - application: testnav-person-service + - application: testnav-skattekort-service + - application: testnav-sykemelding-api + - application: testnav-synt-sykemelding-api + - application: testnav-synt-vedtakshistorikk-service + - application: testnav-tenor-search-service + - application: testnav-tps-messaging-service + - application: testnav-varslinger-service + - application: testnav-varslinger-service-dev + - application: testnorge-profil-api + - application: testnorge-profil-api-dev + - application: testnorge-tilbakemelding-api liveness: path: /internal/isAlive initialDelay: 4 diff --git a/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/config/DevConfig.java b/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/config/DevConfig.java index 0a1c47022a5..02e7974a2d0 100644 --- a/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/config/DevConfig.java +++ b/apps/oversikt-frontend/src/main/java/no/nav/testnav/apps/oversiktfrontend/config/DevConfig.java @@ -2,6 +2,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; +import org.springframework.lang.NonNull; import org.springframework.vault.annotation.VaultPropertySource; import org.springframework.vault.authentication.ClientAuthentication; import org.springframework.vault.authentication.TokenAuthentication; @@ -13,17 +14,18 @@ @Configuration @Profile("dev") @VaultPropertySource(value = "secret/dolly/lokal", ignoreSecretNotFound = false) -@VaultPropertySource(value = "secret/.common/tokenx/dev/app-1", ignoreSecretNotFound = false) public class DevConfig extends AbstractVaultConfiguration { private static final String VAULT_TOKEN = "spring.cloud.vault.token"; @Override + @NonNull public VaultEndpoint vaultEndpoint() { return VaultEndpoint.create("vault.adeo.no", 443); } @Override + @NonNull public ClientAuthentication clientAuthentication() { if (System.getenv().containsKey("VAULT_TOKEN")) { System.setProperty(VAULT_TOKEN, System.getenv("VAULT_TOKEN")); diff --git a/apps/pdl-forvalter/config.test.yml b/apps/pdl-forvalter/config.test.yml index 1bb0b95957b..789e1fe5155 100644 --- a/apps/pdl-forvalter/config.test.yml +++ b/apps/pdl-forvalter/config.test.yml @@ -49,19 +49,19 @@ spec: accessPolicy: inbound: rules: - - application: testnav-oversikt-frontend - - application: team-dolly-lokal-app - application: dolly-backend-dev - application: dolly-frontend-dev - - application: app-1 - namespace: plattformsikkerhet + - application: dolly-frontend-dev-unstable + - application: team-dolly-lokal-app + - application: testnav-oversikt-frontend outbound: rules: - application: generer-navn-service - application: testnav-adresse-service - - application: testnav-organisasjon-forvalter - - application: testnav-kodeverk-service - application: testnav-ident-pool + - application: testnav-kodeverk-service + - application: testnav-organisasjon-forvalter + - application: testnav-tps-messaging-service external: - host: testnav-pdl-proxy.dev-fss-pub.nais.io gcp: diff --git a/apps/pdl-forvalter/config.yml b/apps/pdl-forvalter/config.yml index 968bbb5b95c..7f07350e099 100644 --- a/apps/pdl-forvalter/config.yml +++ b/apps/pdl-forvalter/config.yml @@ -56,9 +56,10 @@ spec: rules: - application: generer-navn-service - application: testnav-adresse-service - - application: testnav-organisasjon-forvalter - - application: testnav-kodeverk-service - application: testnav-ident-pool + - application: testnav-kodeverk-service + - application: testnav-organisasjon-forvalter + - application: testnav-tps-messaging-service external: - host: testnav-pdl-proxy.dev-fss-pub.nais.io gcp: diff --git a/apps/person-faste-data-service/config.yml b/apps/person-faste-data-service/config.yml index 9d35ba92904..30f870b7643 100644 --- a/apps/person-faste-data-service/config.yml +++ b/apps/person-faste-data-service/config.yml @@ -18,23 +18,14 @@ spec: accessPolicy: inbound: rules: + - application: dolly-frontend + - application: dolly-frontend-dev + - application: dolly-idporten - application: team-dolly-lokal-app - cluster: dev-gcp + - application: testnav-faste-data-frontend - application: testnav-oversikt-frontend - cluster: dev-gcp - application: testnorge-statisk-data-forvalter cluster: dev-fss - - application: dolly-frontend-dev - cluster: dev-gcp - - application: dolly-frontend - cluster: dev-gcp - - application: dolly-idporten - cluster: dev-gcp - - application: testnav-faste-data-frontend - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp gcp: sqlInstances: - type: POSTGRES_12 diff --git a/apps/person-organisasjon-tilgang-service/config.test.yml b/apps/person-organisasjon-tilgang-service/config.test.yml index 54478aa5165..131cdfa1e5f 100644 --- a/apps/person-organisasjon-tilgang-service/config.test.yml +++ b/apps/person-organisasjon-tilgang-service/config.test.yml @@ -24,15 +24,13 @@ spec: inbound: rules: - application: dolly-frontend-dev - - application: dolly-idporten - application: dolly-frontend-dev-unstable + - application: dolly-idporten - application: team-dolly-lokal-app - - application: testnav-oversikt-frontend - application: testnav-bruker-service-dev + - application: testnav-oversikt-frontend - application: testnorge-profil-api-dev - application: testnorge-profil-api-dev - - application: app-1 - namespace: plattformsikkerhet outbound: external: - host: tt02.altinn.no diff --git a/apps/person-organisasjon-tilgang-service/config.yml b/apps/person-organisasjon-tilgang-service/config.yml index 9cf9e9e8286..b7dba1e3fa4 100644 --- a/apps/person-organisasjon-tilgang-service/config.yml +++ b/apps/person-organisasjon-tilgang-service/config.yml @@ -20,12 +20,10 @@ spec: rules: - application: dolly-frontend - application: dolly-idporten + - application: team-dolly-lokal-app - application: testnav-bruker-service - application: testnorge-profil-api - - application: team-dolly-lokal-app - application: testnorge-profil-api - - application: app-1 - namespace: plattformsikkerhet outbound: external: - host: altinn.no diff --git a/apps/person-search-service/config.yml b/apps/person-search-service/config.yml index 340eb328cf5..b93e343fb9f 100644 --- a/apps/person-search-service/config.yml +++ b/apps/person-search-service/config.yml @@ -19,21 +19,13 @@ spec: accessPolicy: inbound: rules: - - application: team-dolly-lokal-app - cluster: dev-gcp - - application: testnav-oversikt-frontend - cluster: dev-gcp - - application: dolly-frontend-dev - cluster: dev-gcp - application: dolly-frontend - cluster: dev-gcp + - application: dolly-frontend-dev + - application: dolly-frontend-dev-unstable - application: dolly-idporten - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp + - application: team-dolly-lokal-app + - application: testnav-oversikt-frontend - application: testnav-synt-vedtakshistorikk-service - cluster: dev-gcp outbound: external: - host: testnav-pdl-proxy.dev-fss-pub.nais.io diff --git a/apps/profil-api/config.test.yml b/apps/profil-api/config.test.yml index e686033e3fe..c15b11a9f30 100644 --- a/apps/profil-api/config.test.yml +++ b/apps/profil-api/config.test.yml @@ -25,25 +25,14 @@ spec: accessPolicy: inbound: rules: - - application: testnorge-tilbakemelding-api - cluster: dev-gcp - - application: endringsmelding-frontend - cluster: dev-gcp - - application: team-dolly-lokal-app - cluster: dev-gcp - application: dolly-backend-dev - cluster: dev-gcp - application: dolly-frontend-dev - cluster: dev-gcp - application: dolly-frontend-dev-unstable - cluster: dev-gcp - - application: testnav-oversikt-frontend - cluster: dev-gcp + - application: team-dolly-lokal-app + - application: testnav-endringsmelding-frontend - application: testnav-faste-data-frontend - cluster: dev-gcp - - application: app-1 - cluster: dev-gcp - namespace: plattformsikkerhet + - application: testnav-oversikt-frontend + - application: testnorge-tilbakemelding-api outbound: rules: - application: testnav-person-organisasjon-tilgang-service-dev diff --git a/apps/profil-api/config.yml b/apps/profil-api/config.yml index f871865023d..8d8aaf01f58 100644 --- a/apps/profil-api/config.yml +++ b/apps/profil-api/config.yml @@ -25,24 +25,14 @@ spec: accessPolicy: inbound: rules: - - application: team-dolly-lokal-app - cluster: dev-gcp - - application: testnav-endringsmelding-frontend - cluster: dev-gcp - application: dolly-backend - cluster: dev-gcp - - application: testnorge-tilbakemelding-api - cluster: dev-gcp - application: dolly-frontend - cluster: dev-gcp - application: dolly-idporten - cluster: dev-gcp + - application: team-dolly-lokal-app + - application: testnav-endringsmelding-frontend - application: testnav-faste-data-frontend - cluster: dev-gcp - - application: testnav-applikasjonsanalyse-frontend - cluster: dev-gcp - application: testnav-oversikt-frontend - cluster: dev-gcp + - application: testnorge-tilbakemelding-api outbound: rules: - application: testnav-person-organisasjon-tilgang-service diff --git a/apps/sykemelding-api/config.yml b/apps/sykemelding-api/config.yml index 32325fb4a8c..d4d39048add 100644 --- a/apps/sykemelding-api/config.yml +++ b/apps/sykemelding-api/config.yml @@ -47,25 +47,14 @@ spec: accessPolicy: inbound: rules: - - application: team-dolly-lokal-app - cluster: dev-gcp - - application: dolly-frontend - cluster: dev-gcp - - application: dolly-idporten - cluster: dev-gcp - - application: dolly-frontend-dev - cluster: dev-gcp - application: dolly-backend - cluster: dev-gcp - application: dolly-backend-dev - cluster: dev-gcp + - application: dolly-frontend + - application: dolly-frontend-dev + - application: dolly-idporten + - application: team-dolly-lokal-app - application: testnav-oversikt-frontend - cluster: dev-gcp - application: testnav-synt-sykemelding-api - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp outbound: external: - host: mqls04.preprod.local diff --git a/apps/synt-sykemelding-api/config.yml b/apps/synt-sykemelding-api/config.yml index ab3bbb2983b..b9b1e67dc14 100644 --- a/apps/synt-sykemelding-api/config.yml +++ b/apps/synt-sykemelding-api/config.yml @@ -46,17 +46,10 @@ spec: accessPolicy: inbound: rules: - - application: team-dolly-lokal-app - cluster: dev-gcp - - application: testnav-oversikt-frontend - cluster: dev-gcp - application: dolly-backend - cluster: dev-gcp - application: dolly-backend-dev - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp + - application: team-dolly-lokal-app + - application: testnav-oversikt-frontend outbound: rules: - application: synthdata-elsam-gcp diff --git a/apps/synt-vedtakshistorikk-service/config.yml b/apps/synt-vedtakshistorikk-service/config.yml index 17aabdb1d55..1befc19b827 100644 --- a/apps/synt-vedtakshistorikk-service/config.yml +++ b/apps/synt-vedtakshistorikk-service/config.yml @@ -41,9 +41,10 @@ spec: - application: testnav-oversikt-frontend outbound: rules: + - application: synthdata-arena-dagpenger - application: synthdata-arena-vedtakshistorikk - - application: testnav-person-search-service - application: testnav-organisasjon-faste-data-service + - application: testnav-person-search-service external: - host: testnav-pensjon-testdata-facade-proxy.dev-fss-pub.nais.io - host: testnav-arena-forvalteren-proxy.dev-fss-pub.nais.io diff --git a/apps/tenor-search-service/config.yml b/apps/tenor-search-service/config.yml index 3243a5c47b5..1b120728542 100644 --- a/apps/tenor-search-service/config.yml +++ b/apps/tenor-search-service/config.yml @@ -23,13 +23,12 @@ spec: accessPolicy: inbound: rules: - - application: testnav-oversikt-frontend - application: dolly-frontend - application: dolly-frontend-dev + - application: dolly-frontend-dev-unstable - application: dolly-idporten - application: team-dolly-lokal-app - - application: app-1 - namespace: plattformsikkerhet + - application: testnav-oversikt-frontend outbound: external: - host: testdata.api.skatteetaten.no diff --git a/apps/testnav-ident-pool/config.yml b/apps/testnav-ident-pool/config.yml index db7359ec9db..a548195be12 100644 --- a/apps/testnav-ident-pool/config.yml +++ b/apps/testnav-ident-pool/config.yml @@ -50,19 +50,11 @@ spec: accessPolicy: inbound: rules: - - application: testnav-pdl-forvalter - cluster: dev-gcp - - application: testnav-pdl-forvalter-dev - cluster: dev-gcp - application: team-dolly-lokal-app - cluster: dev-gcp - - application: testnav-oversikt-frontend - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp - application: testnav-endringsmelding-service - cluster: dev-gcp + - application: testnav-oversikt-frontend + - application: testnav-pdl-forvalter + - application: testnav-pdl-forvalter-dev outbound: rules: - application: testnav-tps-messaging-service diff --git a/apps/tilbakemelding-api/config.yml b/apps/tilbakemelding-api/config.yml index 2b5804db849..bf7a9c970bc 100644 --- a/apps/tilbakemelding-api/config.yml +++ b/apps/tilbakemelding-api/config.yml @@ -11,22 +11,16 @@ spec: accessPolicy: inbound: rules: - - application: dolly-frontend-dev - cluster: dev-gcp - application: dolly-frontend - cluster: dev-gcp + - application: dolly-frontend-dev + - application: dolly-frontend-dev-unstable - application: dolly-idporten - cluster: dev-gcp - - application: testnav-oversikt-frontend - cluster: dev-gcp - application: team-dolly-lokal-app - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp + - application: testnav-oversikt-frontend outbound: rules: - application: testnorge-profil-api + - application: testnorge-profil-api-dev external: - host: slack.com - host: login.microsoftonline.com diff --git a/apps/tps-messaging-service/config.yml b/apps/tps-messaging-service/config.yml index 2f0439c1dab..c33d2efc3c4 100644 --- a/apps/tps-messaging-service/config.yml +++ b/apps/tps-messaging-service/config.yml @@ -44,37 +44,23 @@ spec: accessPolicy: inbound: rules: - - application: testnav-endringsmelding-service - cluster: dev-gcp - - application: testnav-oversikt-frontend - cluster: dev-gcp + - application: dolly-backend + - application: dolly-backend-dev + - application: dolly-frontend + - application: dolly-frontend-dev + - application: dolly-frontend-dev-unstable + - application: dolly-idporten - application: team-dolly-lokal-app - cluster: dev-gcp + - application: testnav-endringsmelding-service + - application: testnav-ident-pool - application: testnav-organisasjon-forvalter - cluster: dev-gcp + - application: testnav-oversikt-frontend - application: testnav-pdl-forvalter - cluster: dev-gcp - application: testnav-pdl-forvalter-dev - cluster: dev-gcp - - application: tps-forvalteren-dev - cluster: dev-fss - application: tps-forvalteren cluster: dev-fss - - application: dolly-frontend-dev - cluster: dev-gcp - - application: dolly-frontend - cluster: dev-gcp - - application: dolly-idporten - cluster: dev-gcp - - application: dolly-backend-dev - cluster: dev-gcp - - application: dolly-backend - cluster: dev-gcp - - application: testnav-ident-pool - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp + - application: tps-forvalteren-dev + cluster: dev-fss outbound: rules: - application: testnav-miljoer-service diff --git a/apps/varslinger-service/config.test.yml b/apps/varslinger-service/config.test.yml index 24259bbed3a..fb7e3aa2584 100644 --- a/apps/varslinger-service/config.test.yml +++ b/apps/varslinger-service/config.test.yml @@ -13,16 +13,9 @@ spec: inbound: rules: - application: dolly-frontend-dev - cluster: dev-gcp - application: dolly-frontend-dev-unstable - cluster: dev-gcp - - application: testnav-oversikt-frontend - cluster: dev-gcp - application: team-dolly-lokal-app - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp + - application: testnav-oversikt-frontend tokenx: enabled: true azure: diff --git a/apps/varslinger-service/config.yml b/apps/varslinger-service/config.yml index 684cd750dfe..96701cd321d 100644 --- a/apps/varslinger-service/config.yml +++ b/apps/varslinger-service/config.yml @@ -12,19 +12,11 @@ spec: accessPolicy: inbound: rules: - - application: dolly-frontend-dev - cluster: dev-gcp - application: dolly-frontend - cluster: dev-gcp + - application: dolly-frontend-dev - application: dolly-idporten - cluster: dev-gcp - - application: testnav-oversikt-frontend - cluster: dev-gcp - application: team-dolly-lokal-app - cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp + - application: testnav-oversikt-frontend tokenx: enabled: true azure: diff --git a/proxies/aareg-proxy/config.yml b/proxies/aareg-proxy/config.yml index 0efc40334a8..c05676b3eab 100644 --- a/proxies/aareg-proxy/config.yml +++ b/proxies/aareg-proxy/config.yml @@ -50,9 +50,6 @@ spec: cluster: dev-gcp - application: testnorge-statisk-data-forvalter cluster: dev-fss - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp liveness: path: /internal/isAlive initialDelay: 4 diff --git a/proxies/arbeidsplassencv-proxy/config.yml b/proxies/arbeidsplassencv-proxy/config.yml index 44f4683531d..9617719d309 100644 --- a/proxies/arbeidsplassencv-proxy/config.yml +++ b/proxies/arbeidsplassencv-proxy/config.yml @@ -19,15 +19,14 @@ spec: accessPolicy: inbound: rules: - - application: team-dolly-lokal-app - - application: dolly-frontend - - application: dolly-idporten - - application: dolly-frontend-dev - application: dolly-backend - application: dolly-backend-dev + - application: dolly-frontend + - application: dolly-frontend-dev + - application: dolly-frontend-dev-unstable + - application: dolly-idporten + - application: team-dolly-lokal-app - application: testnav-oversikt-frontend - - application: app-1 - namespace: plattformsikkerhet outbound: rules: - application: pam-cv-api-gcp diff --git a/proxies/arena-forvalteren-proxy/config.yml b/proxies/arena-forvalteren-proxy/config.yml index 38ebaf76bf4..fc00f82d381 100644 --- a/proxies/arena-forvalteren-proxy/config.yml +++ b/proxies/arena-forvalteren-proxy/config.yml @@ -33,9 +33,6 @@ spec: cluster: dev-gcp - application: testnav-oversikt-frontend cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp - application: testnav-synt-vedtakshistorikk-service cluster: dev-gcp liveness: diff --git a/proxies/brregstub-proxy/config.yml b/proxies/brregstub-proxy/config.yml index 77dc4f303cb..6c69a772306 100644 --- a/proxies/brregstub-proxy/config.yml +++ b/proxies/brregstub-proxy/config.yml @@ -33,9 +33,6 @@ spec: cluster: dev-gcp - application: testnav-oversikt-frontend cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp liveness: path: /internal/isAlive initialDelay: 4 diff --git a/proxies/dokarkiv-proxy/config.yml b/proxies/dokarkiv-proxy/config.yml index 13d29e6c989..1b1129fabe2 100644 --- a/proxies/dokarkiv-proxy/config.yml +++ b/proxies/dokarkiv-proxy/config.yml @@ -51,9 +51,6 @@ spec: cluster: dev-gcp - application: dolly-frontend-dev cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp liveness: path: /internal/isAlive initialDelay: 4 diff --git a/proxies/histark-proxy/config.yml b/proxies/histark-proxy/config.yml index b097bf96213..d9fe6156942 100644 --- a/proxies/histark-proxy/config.yml +++ b/proxies/histark-proxy/config.yml @@ -34,9 +34,6 @@ spec: cluster: dev-gcp - application: testnav-oversikt-frontend cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp liveness: path: /internal/isAlive initialDelay: 4 diff --git a/proxies/inntektstub-proxy/config.yml b/proxies/inntektstub-proxy/config.yml index e29b313f2ee..b73c44a0df2 100644 --- a/proxies/inntektstub-proxy/config.yml +++ b/proxies/inntektstub-proxy/config.yml @@ -35,9 +35,6 @@ spec: cluster: dev-gcp - application: testnav-synt-vedtakshistorikk-service cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp liveness: path: /internal/isAlive initialDelay: 4 diff --git a/proxies/inst-proxy/config.yml b/proxies/inst-proxy/config.yml index fe854b4023b..cd42bdf3fc1 100644 --- a/proxies/inst-proxy/config.yml +++ b/proxies/inst-proxy/config.yml @@ -46,9 +46,6 @@ spec: cluster: dev-gcp - application: testnav-oversikt-frontend cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp outbound: rules: - application: opphold-testdata diff --git a/proxies/kontoregister-person-proxy/config.yml b/proxies/kontoregister-person-proxy/config.yml index f81254a9480..29b8c7deaf9 100644 --- a/proxies/kontoregister-person-proxy/config.yml +++ b/proxies/kontoregister-person-proxy/config.yml @@ -46,9 +46,6 @@ spec: cluster: dev-gcp - application: dolly-backend-dev cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp liveness: path: /internal/isAlive initialDelay: 4 diff --git a/proxies/krrstub-proxy/config.yml b/proxies/krrstub-proxy/config.yml index f729a19f778..8ee6e860d2e 100644 --- a/proxies/krrstub-proxy/config.yml +++ b/proxies/krrstub-proxy/config.yml @@ -46,9 +46,6 @@ spec: cluster: dev-gcp - application: dolly-backend-dev cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp liveness: path: /internal/isAlive initialDelay: 4 diff --git a/proxies/medl-proxy/config.yml b/proxies/medl-proxy/config.yml index 61d02c935b6..7388fcdad8b 100644 --- a/proxies/medl-proxy/config.yml +++ b/proxies/medl-proxy/config.yml @@ -46,9 +46,6 @@ spec: cluster: dev-gcp - application: dolly-backend-dev cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp outbound: external: - host: medlemskap-medl-testdata.intern.dev.nav.no diff --git a/proxies/modapp-ereg-proxy/config.yml b/proxies/modapp-ereg-proxy/config.yml index be0933c0b8c..6913f4b690a 100644 --- a/proxies/modapp-ereg-proxy/config.yml +++ b/proxies/modapp-ereg-proxy/config.yml @@ -38,9 +38,6 @@ spec: cluster: dev-gcp - application: ereg-batch-status-service cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp liveness: path: /internal/isAlive initialDelay: 4 diff --git a/proxies/norg2-proxy/config.yml b/proxies/norg2-proxy/config.yml index 0bf3e3ac3f7..8fb2c509d9a 100644 --- a/proxies/norg2-proxy/config.yml +++ b/proxies/norg2-proxy/config.yml @@ -33,9 +33,6 @@ spec: cluster: dev-gcp - application: testnav-oversikt-frontend cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp liveness: path: /internal/isAlive initialDelay: 4 diff --git a/proxies/pensjon-testdata-facade-proxy/config.yml b/proxies/pensjon-testdata-facade-proxy/config.yml index c48bfae6e4b..94b6b667264 100644 --- a/proxies/pensjon-testdata-facade-proxy/config.yml +++ b/proxies/pensjon-testdata-facade-proxy/config.yml @@ -46,9 +46,6 @@ spec: cluster: dev-gcp - application: dolly-backend-dev cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp - application: testnav-synt-vedtakshistorikk-service cluster: dev-gcp outbound: diff --git a/proxies/saf-proxy/config.yml b/proxies/saf-proxy/config.yml index 43bbe175fdc..c645cd98c36 100644 --- a/proxies/saf-proxy/config.yml +++ b/proxies/saf-proxy/config.yml @@ -44,9 +44,6 @@ spec: cluster: dev-gcp - application: testnav-joark-dokument-service cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp liveness: path: /internal/isAlive initialDelay: 4 diff --git a/proxies/sigrunstub-proxy/config.yml b/proxies/sigrunstub-proxy/config.yml index 82fe4e78e6c..248b14c889d 100644 --- a/proxies/sigrunstub-proxy/config.yml +++ b/proxies/sigrunstub-proxy/config.yml @@ -33,9 +33,6 @@ spec: cluster: dev-gcp - application: testnav-oversikt-frontend cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp liveness: path: /internal/isAlive initialDelay: 4 diff --git a/proxies/skjermingsregister-proxy/config.yml b/proxies/skjermingsregister-proxy/config.yml index 8120613f934..a2bbbe39808 100644 --- a/proxies/skjermingsregister-proxy/config.yml +++ b/proxies/skjermingsregister-proxy/config.yml @@ -46,9 +46,6 @@ spec: cluster: dev-gcp - application: testnav-oversikt-frontend cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp outbound: rules: - application: skjermede-personer diff --git a/proxies/udistub-proxy/config.yml b/proxies/udistub-proxy/config.yml index 7c353cb0220..2bc55bdc9b0 100644 --- a/proxies/udistub-proxy/config.yml +++ b/proxies/udistub-proxy/config.yml @@ -33,9 +33,6 @@ spec: cluster: dev-gcp - application: testnav-oversikt-frontend cluster: dev-gcp - - application: app-1 - namespace: plattformsikkerhet - cluster: dev-gcp liveness: path: /internal/isAlive initialDelay: 4