Skip to content

Commit

Permalink
syfo som del av userinfo
Browse files Browse the repository at this point in the history
  • Loading branch information
kenglxn committed Oct 10, 2023
1 parent 6302a6e commit ed72aea
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 43 deletions.
69 changes: 69 additions & 0 deletions server/mock/userInfoMock.js
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,75 @@ export const mock = (app) => {
).filter((orgnr) => organisasjonerMedRettigheter.includes(orgnr)),
})),
],
digisyfoError: casual.boolean,
digisyfoOrganisasjoner: [
{
organisasjon: {
OrganizationNumber: '999999999',
Name: 'Saltrød og Høneby',
Type: 'Business',
ParentOrganizationNumber: '121488424',
OrganizationForm: 'BEDR',
Status: 'Active',
},
antallSykmeldte: 0,
},
{
organisasjon: {
OrganizationNumber: '121488424',
Name: 'BIRTAVARRE OG VÆRLANDET FORELDER',
Type: 'Enterprise',
ParentOrganizationNumber: null,
OrganizationForm: 'AS',
Status: 'Active',
},
antallSykmeldte: 0,
},
{
organisasjon: {
Name: 'BALLSTAD OG HAMARØY',
OrganizationForm: 'AAFY',
OrganizationNumber: '182345674',
ParentOrganizationNumber: '118345674',
Status: 'Active',
Type: 'Business',
},
antallSykmeldte: 4,
},
{
organisasjon: {
Name: 'BALLSTAD OG HORTEN',
Type: 'Enterprise',
ParentOrganizationNumber: null,
OrganizationNumber: '118345674',
OrganizationForm: 'FLI',
Status: 'Active',
},
antallSykmeldte: 0,
},
{
organisasjon: {
Name: 'BareSyfo Virksomhet',
OrganizationForm: 'AAFY',
OrganizationNumber: '121212121',
ParentOrganizationNumber: '111111111',
Status: 'Active',
Type: 'Business',
},
antallSykmeldte: 4,
},
{
organisasjon: {
Name: 'BareSyfo Juridisk',
Type: 'Enterprise',
ParentOrganizationNumber: null,
OrganizationNumber: '111111111',
OrganizationForm: 'FLI',
Status: 'Active',
},
antallSykmeldte: 4,
},
],
});
}
});
Expand Down
35 changes: 13 additions & 22 deletions src/App/OrganisasjonerOgTilgangerProvider.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
import React, { FunctionComponent, useContext, useEffect, useMemo, useState } from 'react';
import {
DigiSyfoOrganisasjon,
hentRefusjonstatus,
hentSyfoVirksomheter,
RefusjonStatus,
} from '../api/dnaApi';
import { hentRefusjonstatus, RefusjonStatus } from '../api/dnaApi';
import * as Record from '../utils/Record';
import { AltinnTilgangssøknad, hentAltinnTilgangssøknader } from '../altinn/tilganger';
import { altinntjeneste, AltinntjenesteId } from '../altinn/tjenester';
Expand All @@ -16,7 +11,7 @@ import * as Sentry from '@sentry/browser';
import { byggOrganisasjonstre } from './ByggOrganisasjonstre';
import { useEffectfulAsyncFunction } from './hooks/useValueFromEffect';
import { Map, Set } from 'immutable';
import { useUserInfo } from './useUserInfo';
import { DigiSyfoOrganisasjon, useUserInfo } from './useUserInfo';

type orgnr = string;

Expand Down Expand Up @@ -173,21 +168,6 @@ export const OrganisasjonerOgTilgangerProvider: FunctionComponent = (props) => {
Sentry.captureException(error);
setAltinnTilgangssøknader([]);
}),
hentSyfoVirksomheter()
.then((virksomheter) => {
setSyfoVirksomheter(virksomheter);
setTilgangTilSyfo(
virksomheter.length > 0 ? SyfoTilgang.TILGANG : SyfoTilgang.IKKE_TILGANG
);
amplitude.setUserProperties({ syfotilgang: virksomheter.length > 0 });
})
.catch((error) => {
Sentry.captureException(error);
setSyfoVirksomheter([]);
setVisSyfoFeilmelding(true);
setTilgangTilSyfo(SyfoTilgang.IKKE_TILGANG);
addAlert('TilgangerDigiSyfo');
}),
hentRefusjonstatus()
.then((refusjonstatus) => {
setAlleRefusjonsstatus(refusjonstatus);
Expand All @@ -211,8 +191,19 @@ export const OrganisasjonerOgTilgangerProvider: FunctionComponent = (props) => {
addAlert('TilgangerAltinn');
setVisFeilmelding(true);
}
if (userInfo.digisyfoError) {
addAlert('TilgangerDigiSyfo');
setVisSyfoFeilmelding(true);
}
setAltinnorganisasjoner(userInfo.organisasjoner);
setAltinntilganger(userInfo.tilganger);
setSyfoVirksomheter(userInfo.digisyfoOrganisasjoner);
setTilgangTilSyfo(
userInfo.digisyfoOrganisasjoner.length > 0
? SyfoTilgang.TILGANG
: SyfoTilgang.IKKE_TILGANG
);
amplitude.setUserProperties({ syfotilgang: userInfo.digisyfoOrganisasjoner.length > 0 });
}, [JSON.stringify(userInfo)]);

const beregnOrganisasjonerArgs = [
Expand Down
14 changes: 14 additions & 0 deletions src/App/useUserInfo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,14 @@ import * as Record from '../utils/Record';
import { Set } from 'immutable';
import { useState } from 'react';

const DigiSyfoOrganisasjon = z.object({
organisasjon: Organisasjon,
antallSykmeldte: z.number(),
});
export type DigiSyfoOrganisasjon = z.infer<typeof DigiSyfoOrganisasjon>;
const UserInfoRespons = z.object({
altinnError: z.boolean(),
digisyfoError: z.boolean(),
organisasjoner: z.array(Organisasjon),
tilganger: z
.array(
Expand All @@ -22,6 +28,12 @@ const UserInfoRespons = z.object({
.transform((tilganger) =>
Record.fromEntries(tilganger.map((it) => [it.id, Set(it.organisasjoner)]))
),
digisyfoOrganisasjoner: z.array(
z.object({
organisasjon: Organisasjon,
antallSykmeldte: z.number(),
})
),
});
type UserInfoDto = z.infer<typeof UserInfoRespons>;
type UserInfo = UserInfoDto & {
Expand Down Expand Up @@ -51,8 +63,10 @@ export const useUserInfo = (): UserInfo => {
},
fallbackData: {
organisasjoner: [],
digisyfoOrganisasjoner: [],
tilganger: Record.map(altinntjeneste, () => Set<string>()),
altinnError: false,
digisyfoError: false,
},
}
);
Expand Down
21 changes: 0 additions & 21 deletions src/api/dnaApi.ts
Original file line number Diff line number Diff line change
@@ -1,26 +1,5 @@
import { Organisasjon } from '../altinn/organisasjon';
import { z } from 'zod';
import * as Sentry from '@sentry/browser';
import { AltinntjenesteId } from '../altinn/tjenester';

const digiSyfoVirksomheterURL = '/min-side-arbeidsgiver/api/narmesteleder/virksomheter-v3';
const DigiSyfoOrganisasjon = z.object({
organisasjon: Organisasjon,
antallSykmeldte: z.number(),
});
const DigiSyfoOrganisasjonResponse = z.array(DigiSyfoOrganisasjon);
export type DigiSyfoOrganisasjon = z.infer<typeof DigiSyfoOrganisasjon>;
export type DigiSyfoOrganisasjonResponse = z.infer<typeof DigiSyfoOrganisasjonResponse>;

export async function hentSyfoVirksomheter(): Promise<DigiSyfoOrganisasjonResponse> {
const respons = await fetch(digiSyfoVirksomheterURL);
if (respons.ok) {
return DigiSyfoOrganisasjonResponse.parse(await respons.json());
}
throw new Error(
`Kall til ${digiSyfoVirksomheterURL} feilet med ${respons.status}:${respons.statusText}`
);
}

const RefusjonStatus = z.object({
virksomhetsnummer: z.string(),
Expand Down

0 comments on commit ed72aea

Please sign in to comment.