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 62e2b9aa958..e21266c588f 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 @@ -148,4 +148,4 @@ private Function> createRoute(String segment, St .filters(filter, removeCookiesFilter, addUserJwtHeaderFilter()) ).uri(host); } -} +} \ No newline at end of file diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/brregstub/form/partials/organisasjonTextSelect.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/brregstub/form/partials/organisasjonTextSelect.tsx index a4e0c29b981..05b57d7bc1a 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/brregstub/form/partials/organisasjonTextSelect.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/brregstub/form/partials/organisasjonTextSelect.tsx @@ -1,89 +1,87 @@ -import React, { useState } from 'react' -import { OrganisasjonMedMiljoeSelect } from '@/components/organisasjonSelect/OrganisasjonMedMiljoeSelect' -import { useBoolean } from 'react-use' -import { OrgserviceApi } from '@/service/Api' -import { OrgInfoAdresse } from '@/service/services/organisasjonservice/types' -import * as _ from 'lodash-es' +import React, { useEffect, useState } from 'react' +import { OrganisasjonForvalterSelect } from '@/components/organisasjonSelect/OrganisasjonForvalterSelect' import { useFormContext } from 'react-hook-form' +import { useOrganisasjonForvalter } from '@/utils/hooks/useDollyOrganisasjoner' +import { AdresseOrgForvalter } from '@/service/services/organisasjonforvalter/types' -interface OrgnanisasjonTextSelectProps { +interface OrganisasjonTextSelectProps { path: string - aktiveMiljoer: string[] setEnhetsinfo: (org: any, path: string) => {} - clearEnhetsinfo: () => void } -const mapAdresse = (adresse: OrgInfoAdresse) => { +const mapAdresse = (adresse: AdresseOrgForvalter) => { if (!adresse) { return null } return { - adresselinje1: adresse.adresselinje1, - kommunenr: adresse.kommunenummer, + adresselinje1: adresse.adresselinjer?.[0], + kommunenr: adresse.kommunenr, landkode: adresse.landkode, - postnr: adresse.postnummer, + postnr: adresse.postnr, poststed: adresse.poststed, } } -export const OrganisasjonTextSelect = ({ - path, - aktiveMiljoer, - setEnhetsinfo, -}: OrgnanisasjonTextSelectProps) => { +export const OrganisasjonTextSelect = ({ path, setEnhetsinfo }: OrganisasjonTextSelectProps) => { const formMethods = useFormContext() - const [success, setSuccess] = useBoolean(false) - const [loading, setLoading] = useBoolean(false) - const [orgnummer, setOrgnummer] = useState(formMethods.watch(path) || null) + const [org, setOrg] = useState(formMethods.watch(path)) + const { organisasjoner, loading, error } = useOrganisasjonForvalter([org]) + const forvalterOrg = organisasjoner?.[0]?.q1 || organisasjoner?.[0]?.q2 + + useEffect(() => { + if (!forvalterOrg) { + if (!loading) { + formMethods.setError(`manual.${path}`, { message: 'Fant ikke organisasjonen' }) + } + return + } + const forretningsAdresse = forvalterOrg?.adresser?.filter( + (adresse) => adresse.adressetype === 'FADR', + )?.[0] + const postAdresse = forvalterOrg?.adresser?.filter( + (adresse) => adresse.adressetype === 'PADR', + )?.[0] + const orgInfo = { + value: forvalterOrg?.organisasjonsnummer, + orgnr: forvalterOrg?.organisasjonsnummer, + navn: forvalterOrg?.organisasjonsnavn, + forretningsAdresse: mapAdresse(forretningsAdresse), + postAdresse: mapAdresse(postAdresse), + } + setEnhetsinfo(orgInfo, parentPath) + }, [forvalterOrg, loading]) + + useEffect(() => { + if (error && !formMethods.getFieldState(`manual.${path}`)?.error?.message) { + formMethods.setError(`manual.${path}`, { message: 'Fant ikke organisasjonen' }) + } else { + formMethods.clearErrors(`manual.${path}`) + } + }, [error]) const parentPath = path.substring(0, path.lastIndexOf('.')) - const handleChange = (org: string, miljoe: string) => { - if (!org || !miljoe) { - formMethods.setError(`manual.${path}`, { message: !org ? 'Skriv inn org' : 'Velg miljø' }) + const handleChange = (org: string) => { + formMethods.setValue(path, null) + if (!org) { + formMethods.setError(`manual.${path}`, { message: 'Skriv inn org' }) return } + setOrg(org) formMethods.clearErrors(`manual.${path}`) formMethods.clearErrors(path) - setLoading(true) - setSuccess(false) - formMethods.setValue(`${parentPath}.organisasjonMiljoe`, miljoe) - OrgserviceApi.getOrganisasjonInfo(org, miljoe) - .then((response) => { - const orgInfo = { - value: response.data.orgnummer, - orgnr: response.data.orgnummer, - navn: response.data.navn, - forretningsAdresse: mapAdresse(response.data.forretningsadresser), - postAdresse: mapAdresse(response.data.postadresse), - } - setEnhetsinfo(orgInfo, parentPath) - setLoading(false) - setSuccess(true) - }) - .catch(() => { - setLoading(false) - formMethods.setError(`manual.${path}`, { message: 'Fant ikke organisasjonen i ' + miljoe }) - }) } return ( - 0 && !loading && !error} loading={loading} onTextBlur={(event) => { - if (!_.isEmpty(event?.target?.value)) { - setOrgnummer(event.target.value) - handleChange(event.target.value, formMethods.watch(`${parentPath}.organisasjonMiljoe`)) - } - }} - onMiljoeChange={(event) => { - handleChange(orgnummer, event.value) + handleChange(event.target.value) }} - formMethods={formMethods} /> ) } diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/brregstub/form/partials/orgnrToggle.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/brregstub/form/partials/orgnrToggle.tsx index 3677e952f5e..1a150feccf8 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/brregstub/form/partials/orgnrToggle.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/brregstub/form/partials/orgnrToggle.tsx @@ -2,7 +2,6 @@ import React, { useEffect, useState } from 'react' import { OrganisasjonTextSelect } from '@/components/fagsystem/brregstub/form/partials/organisasjonTextSelect' import { OrganisasjonToggleGruppe } from '@/components/organisasjonSelect/OrganisasjonToggleGruppe' import { EgneOrganisasjoner, getEgneOrganisasjoner } from '@/utils/EgneOrganisasjoner' -import { useDollyEnvironments } from '@/utils/hooks/useEnvironments' import { OrganisasjonLoader } from '@/components/organisasjonSelect/OrganisasjonLoader' import { UseFormReturn } from 'react-hook-form/dist/types' import { useCurrentBruker } from '@/utils/hooks/useBruker' @@ -45,9 +44,8 @@ export const OrgnrToggle = ({ setInputType(getOrgType(orgnr, fasteOrganisasjoner, egneOrganisasjoner)) }, [fasteOrganisasjoner, brukerOrganisasjoner, formMethods.watch('brregstub.enheter')?.length]) - const { dollyEnvironments: aktiveMiljoer } = useDollyEnvironments() - const handleToggleChange = (value: string) => { + formMethods.clearErrors([`${path}.orgNr`, `manual.${path}.orgNr`]) setInputType(value) clearEnhetsinfo() } @@ -95,12 +93,7 @@ export const OrgnrToggle = ({ /> )} {inputType === ArbeidsgiverTyper.fritekst && ( - + )} ) diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/inntektstub/form/partials/virksomhetToggle.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/inntektstub/form/partials/virksomhetToggle.tsx index a0890a612b5..9a8cce760d3 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/inntektstub/form/partials/virksomhetToggle.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/inntektstub/form/partials/virksomhetToggle.tsx @@ -11,12 +11,10 @@ import { useCurrentBruker } from '@/utils/hooks/useBruker' import { useDollyFasteDataOrganisasjoner, useDollyOrganisasjoner, - useFasteDataOrganisasjon, + useOrganisasjonForvalter, } from '@/utils/hooks/useDollyOrganisasjoner' -import { OrganisasjonMedMiljoeSelect } from '@/components/organisasjonSelect/OrganisasjonMedMiljoeSelect' -import { useBoolean } from 'react-use' -import { useDollyEnvironments } from '@/utils/hooks/useEnvironments' import { arbeidsgiverToggleValues, getOrgType, handleManualOrgChange } from '@/utils/OrgUtils' +import { OrganisasjonForvalterSelect } from '@/components/organisasjonSelect/OrganisasjonForvalterSelect' const ToggleArbeidsgiver = styled(ToggleGroup)` display: grid; @@ -62,16 +60,34 @@ export const VirksomhetToggle = ({ path }: ArbeidsforholdToggleProps) => { formMethods.watch('inntektstub.inntektsinformasjon')?.length, ]) - const { dollyEnvironments: aktiveMiljoer } = useDollyEnvironments() - const [success, setSuccess] = useBoolean(false) - const [loading, setLoading] = useBoolean(false) const [orgnummer, setOrgnummer] = useState(formMethods.watch(virksomhetPath) || null) - const { organisasjon } = useFasteDataOrganisasjon(orgnummer) + const { organisasjoner, loading, error } = useOrganisasjonForvalter([orgnummer]) + const organisasjon = organisasjoner?.[0]?.q1 || organisasjoner?.[0]?.q2 + + useEffect(() => { + if (!organisasjon) { + if (!loading) { + formMethods.setError(`manual.${opplysningspliktigPath}`, { + message: 'Fant ikke organisasjonen', + }) + } + return + } + formMethods.clearErrors([`manual.${opplysningspliktigPath}`, `manual.${virksomhetPath}`]) + handleManualOrgChange( + orgnummer, + formMethods, + virksomhetPath, + opplysningspliktigPath, + organisasjon, + ) + }, [organisasjon, loading]) const handleToggleChange = (value: ArbeidsgiverTyper) => { setTypeArbeidsgiver(value) - formMethods.setValue(virksomhetPath, '') - formMethods.setValue(opplysningspliktigPath, '') + setOrgnummer(null) + formMethods.setValue(virksomhetPath, null) + formMethods.setValue(opplysningspliktigPath, null) formMethods.clearErrors(`manual.${path}`) formMethods.clearErrors(path) } @@ -106,53 +122,30 @@ export const VirksomhetToggle = ({ path }: ArbeidsforholdToggleProps) => { {typeArbeidsgiver === ArbeidsgiverTyper.felles && ( )} {typeArbeidsgiver === ArbeidsgiverTyper.egen && ( )} {typeArbeidsgiver === ArbeidsgiverTyper.fritekst && ( - { - const org = event.target.value - setOrgnummer(org) - handleManualOrgChange( - org, - formMethods.watch(`${path}.organisasjonMiljoe`), - formMethods, - virksomhetPath, - setLoading, - setSuccess, - organisasjon, - opplysningspliktigPath, - ) - }} - onMiljoeChange={(event) => { - formMethods.setValue(`${path}.organisasjonMiljoe`, event.value) - handleManualOrgChange( - orgnummer, - event.value, - formMethods, - virksomhetPath, - setLoading, - setSuccess, - organisasjon, - opplysningspliktigPath, - ) + formMethods.setValue(virksomhetPath, null) + formMethods.setValue(opplysningspliktigPath, null) + setOrgnummer(event.target.value) }} - formMethods={formMethods} /> )} {typeArbeidsgiver === ArbeidsgiverTyper.privat && ( diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/skattekort/form/ArbeidsgiverToggle.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/skattekort/form/ArbeidsgiverToggle.tsx index 420130a78e9..0c56aff8962 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/skattekort/form/ArbeidsgiverToggle.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/skattekort/form/ArbeidsgiverToggle.tsx @@ -7,15 +7,13 @@ import { useCurrentBruker } from '@/utils/hooks/useBruker' import { useDollyFasteDataOrganisasjoner, useDollyOrganisasjoner, - useFasteDataOrganisasjon, + useOrganisasjonForvalter, } from '@/utils/hooks/useDollyOrganisasjoner' import { EgneOrganisasjoner, getEgneOrganisasjoner } from '@/utils/EgneOrganisasjoner' import { ArbeidsgiverTyper } from '@/components/fagsystem/aareg/AaregTypes' -import { useDollyEnvironments } from '@/utils/hooks/useEnvironments' -import { useBoolean } from 'react-use' import Loading from '@/components/ui/loading/Loading' import { OrganisasjonMedArbeidsforholdSelect } from '@/components/organisasjonSelect' -import { OrganisasjonMedMiljoeSelect } from '@/components/organisasjonSelect/OrganisasjonMedMiljoeSelect' +import { OrganisasjonForvalterSelect } from '@/components/organisasjonSelect/OrganisasjonForvalterSelect' import styled from 'styled-components' import { arbeidsgiverToggleValues, handleManualOrgChange } from '@/utils/OrgUtils' @@ -75,11 +73,22 @@ export const ArbeidsgiverToggle = ({ formMethods, path }: ArbeidsgiverToggleProp formMethods.watch('skattekort.arbeidsgiverSkatt')?.length, ]) - const { dollyEnvironments: aktiveMiljoer } = useDollyEnvironments() - const [success, setSuccess] = useBoolean(false) - const [loading, setLoading] = useBoolean(false) const [orgnummer, setOrgnummer] = useState(formMethods.watch(organisasjonPath) || null) - const { organisasjon } = useFasteDataOrganisasjon(orgnummer) + const { organisasjoner, loading, error } = useOrganisasjonForvalter([orgnummer]) + const organisasjon = organisasjoner?.[0]?.q1 || organisasjoner?.[0]?.q2 + + useEffect(() => { + if (!organisasjon) { + if (!loading) { + formMethods.setError(`manual.${organisasjonPath}`, { + message: 'Fant ikke organisasjonen', + }) + } + return + } + formMethods.clearErrors(`manual.${organisasjonPath}`) + handleManualOrgChange(orgnummer, formMethods, organisasjonPath, null, organisasjon) + }, [organisasjon, loading]) const handleToggleChange = (value: ArbeidsgiverTyper) => { setTypeArbeidsgiver(value) @@ -89,6 +98,7 @@ export const ArbeidsgiverToggle = ({ formMethods, path }: ArbeidsgiverToggleProp formMethods.setValue(personPath, '') formMethods.setValue(organisasjonPath, undefined) } else { + setOrgnummer(null) formMethods.setValue(organisasjonPath, '') formMethods.setValue(personPath, undefined) } @@ -137,40 +147,17 @@ export const ArbeidsgiverToggle = ({ formMethods, path }: ArbeidsgiverToggleProp /> )} {typeArbeidsgiver === ArbeidsgiverTyper.fritekst && ( - 0 && !error} + error={error} loading={loading} onTextBlur={(event) => { - const org = event.target.value - setOrgnummer(org) - handleManualOrgChange( - org, - formMethods.watch(`${path}.organisasjonMiljoe`), - formMethods, - organisasjonPath, - setLoading, - setSuccess, - organisasjon, - null, - ) - }} - onMiljoeChange={(event) => { - formMethods.setValue(`${path}.organisasjonMiljoe`, event.value) - handleManualOrgChange( - orgnummer, - event.value, - formMethods, - organisasjonPath, - setLoading, - setSuccess, - organisasjon, - null, - ) + formMethods.setValue(organisasjonPath, null) + setOrgnummer(event.target.value) }} - formMethods={formMethods} /> )} {typeArbeidsgiver === ArbeidsgiverTyper.privat && ( diff --git a/apps/dolly-frontend/src/main/js/src/components/organisasjonSelect/OrganisasjonForvalterSelect.tsx b/apps/dolly-frontend/src/main/js/src/components/organisasjonSelect/OrganisasjonForvalterSelect.tsx new file mode 100644 index 00000000000..c7100bb1c1a --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/organisasjonSelect/OrganisasjonForvalterSelect.tsx @@ -0,0 +1,62 @@ +import { DollyTextInput } from '@/components/ui/form/inputs/textInput/TextInput' +import Icon from '@/components/ui/icon/Icon' +import Loading from '@/components/ui/loading/Loading' +import React from 'react' +import { useFormContext } from 'react-hook-form' + +interface OrgProps { + path: string + value?: any + parentPath: string + success: boolean + loading?: boolean + error?: Error + onTextBlur: (event: React.ChangeEvent) => void +} + +export const OrganisasjonForvalterSelect = ({ + path, + parentPath, + success, + value, + loading = false, + error, + onTextBlur, +}: OrgProps) => { + const { getFieldState } = useFormContext() + const errorMessage = + error?.message || + getFieldState(path)?.error?.message || + getFieldState(parentPath)?.error?.message || + getFieldState(`manual.${path}`)?.error?.message || + getFieldState(`manual.${parentPath}`)?.error?.message + return ( +
+ + {loading && ( +
+ +
+ )} + {success && !loading && ( +
+ Organisasjon funnet +
+ )} + {errorMessage && ( +

+ {errorMessage} +

+ )} +
+ ) +} diff --git a/apps/dolly-frontend/src/main/js/src/components/organisasjonSelect/OrganisasjonMedMiljoeSelect.tsx b/apps/dolly-frontend/src/main/js/src/components/organisasjonSelect/OrganisasjonMedMiljoeSelect.tsx deleted file mode 100644 index be5c5126f33..00000000000 --- a/apps/dolly-frontend/src/main/js/src/components/organisasjonSelect/OrganisasjonMedMiljoeSelect.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import { DollyTextInput } from '@/components/ui/form/inputs/textInput/TextInput' -import { DollySelect } from '@/components/ui/form/inputs/select/Select' -import Icon from '@/components/ui/icon/Icon' -import Loading from '@/components/ui/loading/Loading' -import React from 'react' - -interface OrgProps { - path: string - parentPath: string - miljoeOptions: string[] - success: boolean - loading?: boolean - onTextBlur: (event: React.ChangeEvent) => void - onMiljoeChange: (event: any) => void - formMethods: any -} - -export const OrganisasjonMedMiljoeSelect = ({ - path, - parentPath, - miljoeOptions, - success, - loading = false, - onTextBlur, - onMiljoeChange, - formMethods, -}: OrgProps) => { - const options = - miljoeOptions && - miljoeOptions?.Q?.map((value: { id: string; label: string }) => ({ - value: value?.id, - label: value?.label, - })) - - return ( -
- - - {loading && ( -
- -
- )} - {success && !loading && ( -
- Organisasjon funnet -
- )} -
- ) -} diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/textInput/TextInput.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/textInput/TextInput.tsx index 5a95547a68c..67d94347309 100644 --- a/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/textInput/TextInput.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/textInput/TextInput.tsx @@ -87,7 +87,7 @@ export const TextInput = ({ getFieldState, } = useFormContext() const errorContext: ShowErrorContextType = useContext(ShowErrorContext) - const { onChange, onBlur } = register(name) + const { onChange, onBlur } = name ? register(name) : {} const input = props.input || props.value const [fieldValue, setFieldValue] = useState(props.input || watch(name) || '') const isTouched = _.has(touchedFields, name) || _.has(touchedFields, fieldName) diff --git a/apps/dolly-frontend/src/main/js/src/service/services/organisasjonforvalter/types.tsx b/apps/dolly-frontend/src/main/js/src/service/services/organisasjonforvalter/types.tsx index 05d730b03d4..2db8ba8307a 100644 --- a/apps/dolly-frontend/src/main/js/src/service/services/organisasjonforvalter/types.tsx +++ b/apps/dolly-frontend/src/main/js/src/service/services/organisasjonforvalter/types.tsx @@ -48,9 +48,21 @@ export type OrganisasjonForvalterData = { q2: OrganisasjonForvalterMiljoeData } +export type AdresseOrgForvalter = { + id: number + adressetype: string + adresselinjer: string[] + postnr: string + poststed: string + kommunenr: string + landkode: string + vegadresseId: string +} + export type OrganisasjonForvalterMiljoeData = { id: number organisasjonsnummer: string + juridiskEnhet: string enhetstype: string naeringskode: string sektorkode: string @@ -61,16 +73,7 @@ export type OrganisasjonForvalterMiljoeData = { epost: string nettside: string maalform: string - adresser: Array<{ - id: number - adressetype: string - adresselinjer: string[] - postnr: string - poststed: string - kommunenr: string - landkode: string - vegadresseId: string - }> + adresser: AdresseOrgForvalter[] underenheter: any[] } diff --git a/apps/dolly-frontend/src/main/js/src/service/services/organisasjonservice/OrganisasjonService.tsx b/apps/dolly-frontend/src/main/js/src/service/services/organisasjonservice/OrganisasjonService.tsx index 1aca72f26ad..4040b35befb 100644 --- a/apps/dolly-frontend/src/main/js/src/service/services/organisasjonservice/OrganisasjonService.tsx +++ b/apps/dolly-frontend/src/main/js/src/service/services/organisasjonservice/OrganisasjonService.tsx @@ -1,7 +1,7 @@ import Request from '@/service/services/Request' import { OrgInfoResponse } from '@/service/services/organisasjonservice/types' -const orgServiceUrl = '/testnav-organisasjon-service/api/v1/organisasjoner' +const orgServiceUrl = '/testnav-organisasjon-forvalter/api/v1/organisasjoner' export default { getOrganisasjonInfo(orgnummer: string, miljoe: string): Promise { @@ -10,7 +10,7 @@ export default { if (response != null) { return response } - } + }, ) }, } diff --git a/apps/dolly-frontend/src/main/js/src/utils/OrgUtils.tsx b/apps/dolly-frontend/src/main/js/src/utils/OrgUtils.tsx index 52f2574ec2c..bcc16bb232b 100644 --- a/apps/dolly-frontend/src/main/js/src/utils/OrgUtils.tsx +++ b/apps/dolly-frontend/src/main/js/src/utils/OrgUtils.tsx @@ -1,5 +1,4 @@ import { ArbeidsgiverTyper } from '@/components/fagsystem/aareg/AaregTypes' -import { OrgserviceApi } from '@/service/Api' export const arbeidsgiverToggleValues = [ { @@ -42,51 +41,44 @@ export const getOrgType = (orgnr: string, fasteOrganisasjoner: any, egneOrganisa export const handleManualOrgChange = ( org: string, - miljo: string, formMethods, path, - setLoading, - setSuccess, - organisasjon, opplysningspliktigPath, + organisasjon, ) => { const validEnhetstyper = ['BEDR', 'AAFY'] - if (!org || !miljo) { - formMethods.setError(`manual.${path}`, { message: !org ? 'Skriv inn org' : 'Velg miljø' }) + + if (!org) { + formMethods.setError(`manual.${path}`, { message: 'Skriv inn org' }) + return + } + if (!organisasjon) { + formMethods.setError(`manual.${path}`, { message: 'Fant ikke organisasjonen' }) return } + + if (!validEnhetstyper.includes(organisasjon?.enhetstype)) { + formMethods.setError(`manual.${path}`, { + message: 'Organisasjonen må være av type BEDR eller AAFY', + }) + return + } + if (!organisasjon?.juridiskEnhet) { + if (organisasjon?.overenhet) { + opplysningspliktigPath && + formMethods.setValue(`${opplysningspliktigPath}`, organisasjon.overenhet) + } else { + formMethods.setError(`manual.${path}`, { + message: 'Organisasjonen mangler juridisk enhet', + }) + return + } + } + opplysningspliktigPath && + organisasjon?.juridiskEnhet && + formMethods.setValue(opplysningspliktigPath, organisasjon?.juridiskEnhet) + formMethods.setValue(path, organisasjon?.organisasjonsnummer) + formMethods.clearErrors(`manual.${path}`) formMethods.clearErrors(path) - setLoading(true) - setSuccess(false) - OrgserviceApi.getOrganisasjonInfo(org, miljo) - .then((response: { data: { enhetType: string; juridiskEnhet: any; orgnummer: any } }) => { - setLoading(false) - if (!validEnhetstyper.includes(response.data.enhetType)) { - formMethods.setError(`manual.${path}`, { - message: 'Organisasjonen må være av type BEDR eller AAFY', - }) - return - } - if (!response.data.juridiskEnhet) { - if (organisasjon?.overenhet) { - opplysningspliktigPath && - formMethods.setValue(`${opplysningspliktigPath}`, organisasjon.overenhet) - } else { - formMethods.setError(`manual.${path}`, { - message: 'Organisasjonen mangler juridisk enhet', - }) - return - } - } - setSuccess(true) - opplysningspliktigPath && - response.data.juridiskEnhet && - formMethods.setValue(`${opplysningspliktigPath}`, response.data.juridiskEnhet) - formMethods.setValue(`${path}`, response.data.orgnummer) - }) - .catch(() => { - setLoading(false) - formMethods.setError(`manual.${path}`, { message: 'Fant ikke organisasjonen i ' + miljo }) - }) } diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/useDollyOrganisasjoner.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/useDollyOrganisasjoner.tsx index d8f5576668a..ab379cf4dd5 100644 --- a/apps/dolly-frontend/src/main/js/src/utils/hooks/useDollyOrganisasjoner.tsx +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/useDollyOrganisasjoner.tsx @@ -8,6 +8,7 @@ import { import { Bestillingsinformasjon } from '@/components/bestilling/sammendrag/miljoeStatus/MiljoeStatus' import { Arbeidsforhold } from '@/components/fagsystem/inntektsmelding/InntektsmeldingTypes' import { useDollyEnvironments } from '@/utils/hooks/useEnvironments' +import * as _ from 'lodash' type MiljoDataListe = { miljo: string @@ -154,39 +155,34 @@ export const useFasteDataOrganisasjon = (orgnummer: string) => { } } -export const useOrganisasjonForvalter = (orgnummere: (string | undefined)[]) => { - const filteredOrgnummere = orgnummere.filter((orgnummer) => orgnummer !== undefined) - if (!filteredOrgnummere || filteredOrgnummere.length === 0) { - return { - organisasjoner: [], - loading: false, - error: new Error('Organisasjonsnummer mangler!'), - } - } - - const urls = filteredOrgnummere.map((orgnummer) => getOrganisasjonForvalterUrl(orgnummer)) +const fetchAllOrganisasjoner = async (urls: (string | null)[]) => { + const validUrls = urls.filter((url) => url !== null) as string[] - const fetchAllOrganisasjoner = async (urls: (string | null)[]) => { - const validUrls = urls.filter((url) => url !== null) as string[] + if (validUrls.length === 0) { + return [] + } - if (validUrls.length === 0) return [] + return await Promise.all( + validUrls.map((url) => + fetcher(url, { 'Content-Type': 'application/json' }).catch((error) => { + throw error + }), + ), + ) +} - return await Promise.all( - validUrls.map((url) => - fetcher(url, { 'Content-Type': 'application/json' }).catch((error) => { - throw error - }), - ), - ) - } +export const useOrganisasjonForvalter = (orgnummere: (string | undefined)[]) => { + const filteredOrgnummere = orgnummere.filter((orgnummer) => orgnummer !== undefined) + const urls = filteredOrgnummere.map((orgnummer) => getOrganisasjonForvalterUrl(orgnummer)) const { data, isLoading, error } = useSWR( urls.length > 0 ? urls : null, fetchAllOrganisasjoner, ) + const dataFiltered = data?.filter((org) => org !== null && !_.isEmpty(org)) return { - organisasjoner: data || [], + organisasjoner: dataFiltered || [], loading: isLoading, error: error, } diff --git a/apps/organisasjon-forvalter/src/main/java/no/nav/organisasjonforvalter/OrganisasjonForvalterApplicationStarter.java b/apps/organisasjon-forvalter/src/main/java/no/nav/organisasjonforvalter/OrganisasjonForvalterApplicationStarter.java index b2c93b87d11..2dbefd9f988 100644 --- a/apps/organisasjon-forvalter/src/main/java/no/nav/organisasjonforvalter/OrganisasjonForvalterApplicationStarter.java +++ b/apps/organisasjon-forvalter/src/main/java/no/nav/organisasjonforvalter/OrganisasjonForvalterApplicationStarter.java @@ -11,4 +11,4 @@ public static void main(String[] args) { .initializers(new NaisEnvironmentApplicationContextInitializer()) .run(args); } -} \ No newline at end of file +} diff --git a/apps/organisasjon-forvalter/src/main/java/no/nav/organisasjonforvalter/dto/responses/RsOrganisasjon.java b/apps/organisasjon-forvalter/src/main/java/no/nav/organisasjonforvalter/dto/responses/RsOrganisasjon.java index 19ec985e0c3..6939dfb250b 100644 --- a/apps/organisasjon-forvalter/src/main/java/no/nav/organisasjonforvalter/dto/responses/RsOrganisasjon.java +++ b/apps/organisasjon-forvalter/src/main/java/no/nav/organisasjonforvalter/dto/responses/RsOrganisasjon.java @@ -21,6 +21,7 @@ public class RsOrganisasjon { private Long id; private String organisasjonsnummer; + private String juridiskEnhet; private String enhetstype; private String naeringskode; private String sektorkode;