Skip to content

Commit

Permalink
Basic innsyn
Browse files Browse the repository at this point in the history
  • Loading branch information
frodehansen2 committed Dec 19, 2024
1 parent 6860552 commit b26bde0
Show file tree
Hide file tree
Showing 24 changed files with 463 additions and 27 deletions.
2 changes: 1 addition & 1 deletion apps/ungdomsytelse-deltaker/mock/msw/browser.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { setupWorker } from 'msw/browser';
import { handlers } from './handlers';
import { handlers } from './handlers/handlers';

export const worker = setupWorker(...handlers);
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { delay, http, HttpResponse } from 'msw';
import { søker1Mock } from '../mocks/soker1';
import { hentAlleResponse } from '../mocks/soker1/hentAlle';
import { deltakelserIkkeSøkt } from '../mocks/soker1/deltakelser/ikkeSøkt';
import { deltakelserHarSøkt } from '../mocks/soker1/deltakelser/harSøkt';

const MellomlagringStorageKey = 'mellomlagring-ungdomsytelse-deltaker-soknad';

Expand All @@ -20,7 +21,11 @@ export const handlers = [
return HttpResponse.json({});
}),
http.get('**/deltakelse/register/hent/alle', () => {
return HttpResponse.json(hentAlleResponse);
const harSøkt = false;
return HttpResponse.json(harSøkt ? deltakelserHarSøkt : deltakelserIkkeSøkt);
}),
http.get('**/person/personopplysninger-api/personalia', () => {
return HttpResponse.json(søker1Mock.personalia);
}),
http.get(`**/mellomlagring/UNGDOMSYTELSE_DELTAKER_SOKNAD`, async () => {
const data = localStorage.getItem(MellomlagringStorageKey);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
export const deltakelserHarSøkt = [
{
id: '123',
programperiodeFraOgMed: '2024-07-01',
programperiodeTilOgMed: '2025-06-30',
harSøkt: true,
rapporteringsPerioder: [
{
fraOgMed: '2024-07-01',
tilOgMed: '2024-07-31',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2024-08-01',
tilOgMed: '2024-08-31',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2024-09-01',
tilOgMed: '2024-09-30',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2024-10-01',
tilOgMed: '2024-10-31',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2024-11-01',
tilOgMed: '2024-11-30',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2024-12-01',
tilOgMed: '2024-12-31',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2025-01-01',
tilOgMed: '2025-01-31',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2025-02-01',
tilOgMed: '2025-02-28',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2025-03-01',
tilOgMed: '2025-03-31',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2025-04-01',
tilOgMed: '2025-04-30',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2025-05-01',
tilOgMed: '2025-05-31',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2025-06-01',
tilOgMed: '2025-06-30',
harRapportert: false,
inntekt: null,
},
],
},
];
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
export const deltakelserIkkeSøkt = [
{
id: '123',
programperiodeFraOgMed: '2024-07-01',
programperiodeTilOgMed: '2025-06-30',
harSøkt: false,
rapporteringsPerioder: [
{
fraOgMed: '2024-07-01',
tilOgMed: '2024-07-31',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2024-08-01',
tilOgMed: '2024-08-31',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2024-09-01',
tilOgMed: '2024-09-30',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2024-10-01',
tilOgMed: '2024-10-31',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2024-11-01',
tilOgMed: '2024-11-30',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2024-12-01',
tilOgMed: '2024-12-31',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2025-01-01',
tilOgMed: '2025-01-31',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2025-02-01',
tilOgMed: '2025-02-28',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2025-03-01',
tilOgMed: '2025-03-31',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2025-04-01',
tilOgMed: '2025-04-30',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2025-05-01',
tilOgMed: '2025-05-31',
harRapportert: false,
inntekt: null,
},
{
fraOgMed: '2025-06-01',
tilOgMed: '2025-06-30',
harRapportert: false,
inntekt: null,
},
],
},
];
2 changes: 2 additions & 0 deletions apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import { arbeidsgiverMock } from './arbeidsgiverMock';
import { barnMock } from './barnMock';
import { personaliaMock } from './personaliaMock';
import { søkerMock } from './søkerMock';

export const søker1Mock = {
barn: barnMock,
søker: søkerMock,
arbeidsgiver: arbeidsgiverMock,
personalia: personaliaMock,
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { PersonaliaApiData } from '../../../../src/api/types';

export const personaliaMock: PersonaliaApiData = {
personalia: {
kontoregisterStatus: 'FAILURE',
kontonr: '97105351740',
utenlandskbank: null,
},
};
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
export const søkerMock = {
aktørId: '2320509955297',
fødselsdato: '1995-06-02',
fødselsdato: '2005-06-02',
fødselsnummer: '02869599258',
fornavn: 'Test',
mellomnavn: null,
Expand Down
11 changes: 11 additions & 0 deletions apps/ungdomsytelse-deltaker/src/api/schemas/personaliaSchema.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { z } from 'zod';

export const kontonummerSchema = z.object({
kontoregisterStatus: z.enum(['SUCCESS', 'FAILURE']),
kontonr: z.string().nullable(),
utenlandskbank: z.boolean().nullable(),
});

export const personaliaApiDataSchema = z.object({
personalia: kontonummerSchema,
});
18 changes: 18 additions & 0 deletions apps/ungdomsytelse-deltaker/src/api/services/personaliaService.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { personaliaApiDataSchema } from '../schemas/personaliaSchema';
import { PersonaliaApiData } from '../types';

export const personaliaService = {
fetch: async (): Promise<PersonaliaApiData | undefined> => {
try {
const response = await fetch(`person/personopplysninger-api/personalia`);
if (!response.ok) {
throw new Error(`Failed to fetch personalia: ${response.status}`);
}
const json = await response.json();
return await personaliaApiDataSchema.parse(json);
} catch (e) {
console.log(e);
return undefined;
}
},
};
3 changes: 3 additions & 0 deletions apps/ungdomsytelse-deltaker/src/api/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@ import { z } from 'zod';
import { deltakelserSchema } from '../schemas/deltakelserSchema';
import { deltakelseSchema, rapporteringsperiodeSchema } from '../schemas/deltakelseSchema';
import { periodeMedInntektSchema } from '../schemas/periodeMedInntektSchema';
import { kontonummerSchema, personaliaApiDataSchema } from '../schemas/personaliaSchema';
import { søknadApiDataSchema } from '../schemas/søknadApiDataSchema';

export type Deltakelse = z.infer<typeof deltakelseSchema>;
export type Deltakelser = z.infer<typeof deltakelserSchema>;
export type PeriodeMedInntekt = z.infer<typeof periodeMedInntektSchema>;
export type Rapporteringsperiode = z.infer<typeof rapporteringsperiodeSchema>;
export type SøknadApiData = z.infer<typeof søknadApiDataSchema>;
export type PersonaliaApiData = z.infer<typeof personaliaApiDataSchema>;
export type KontonummerInfo = z.infer<typeof kontonummerSchema>;
3 changes: 2 additions & 1 deletion apps/ungdomsytelse-deltaker/src/context/DeltakerContext.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { createContext, ReactNode, useContext, useState } from 'react';
import { RegistrertBarn, Søker } from '@navikt/sif-common-api';
import { Deltakelse } from '@api/types';
import { Deltakelse, KontonummerInfo } from '@api/types';
import { deltakelseErÅpenForRapportering } from '@utils/deltakelserUtils';

interface DeltakerContextType {
Expand All @@ -11,6 +11,7 @@ interface DeltakerContextType {
export interface DeltakerContextData {
søker: Søker;
barn: RegistrertBarn[];
kontonummerInfo?: KontonummerInfo;
alleDeltakelser: Deltakelse[];
deltakelserSøktFor: Deltakelse[];
deltakelserIkkeSøktFor: Deltakelse[];
Expand Down
3 changes: 3 additions & 0 deletions apps/ungdomsytelse-deltaker/src/hooks/useInitialData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { DeltakerContextData } from '@context/DeltakerContext';
import { fetchBarn, fetchSøker } from '@navikt/sif-common-api';
import { useEffectOnce } from '@navikt/sif-common-hooks';
import { deltakelseErÅpenForRapportering } from '@utils/deltakelserUtils';
import { personaliaService } from '../api/services/personaliaService';

export type InitialData = DeltakerContextData;

Expand All @@ -18,6 +19,7 @@ export const useInitialData = () => {
const søker = await fetchSøker();
const alleDeltakelser = await deltakerService.getDeltakelser();
const barn = await fetchBarn();
const personalia = await personaliaService.fetch();

const deltakelserSøktFor = alleDeltakelser.filter((d) => d.harSøkt);
const deltakelserIkkeSøktFor = alleDeltakelser.filter((d) => !d.harSøkt);
Expand All @@ -27,6 +29,7 @@ export const useInitialData = () => {
setInitialData({
barn,
søker,
kontonummerInfo: personalia?.personalia,
alleDeltakelser,
deltakelserSøktFor,
deltakelserIkkeSøktFor,
Expand Down
30 changes: 30 additions & 0 deletions apps/ungdomsytelse-deltaker/src/sites/innsyn/Innsyn.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import { setBreadcrumbs } from '@navikt/nav-dekoratoren-moduler';
import { EnvKey } from '@navikt/sif-common-env';
import { useEffectOnce } from '@navikt/sif-common-hooks';
import { useDeltakerContext } from '../../context/DeltakerContext';
import { appEnv } from '../../utils/appEnv';
import { InnsynContextProvider } from './context/InnsynContext';
import InnsynForside from './pages/InnsynForside';

const Innsyn = () => {
const {
data: { søker, deltakelserSøktFor, kontonummerInfo },
} = useDeltakerContext();

const deltakelse = deltakelserSøktFor[0];

useEffectOnce(() => {
setBreadcrumbs([
{ title: 'Min side', url: '/dittnav/' },
{ title: 'Ungdomsprogrammet', url: appEnv[EnvKey.PUBLIC_PATH] },
]);
});

return (
<InnsynContextProvider initialData={{ deltakelse, kontonummerInfo, søker }}>
<InnsynForside />
</InnsynContextProvider>
);
};

export default Innsyn;
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import { Route, Routes } from 'react-router-dom';
import Innsyn from './Innsyn';

const InnsynRouter = () => {
return (
<Routes>
<Route index element={<>sdf</>} />
<Route index element={<Innsyn />} />
</Routes>
);
};
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { Heading, VStack } from '@navikt/ds-react';
import { Deltakelse, KontonummerInfo } from '../../../api/types';
import { Søker } from '@navikt/sif-common-api';
import { List } from '@navikt/ds-react/List';
import { dateFormatter } from '@navikt/sif-common-utils';
import KontonummerStatusTekst from './KontonummerStatusTekst';

interface Props {
deltakelse: Deltakelse;
søker: Søker;
kontonummerInfo?: KontonummerInfo;
}
const DeltakelseInfo = ({ deltakelse, kontonummerInfo }: Props) => {
const { programPeriode } = deltakelse;
return (
<VStack>
<Heading level="2" size="medium" spacing={true}>
Om deg og ungdomsprogrammet
</Heading>
<List>
<List.Item title="Deltakerperiode">
Fra: {dateFormatter.dateShortMonthYear(programPeriode.from)}
{programPeriode.to ? ` til ${dateFormatter.dateShortMonthYear(programPeriode.to)}` : ''}
</List.Item>
<List.Item title="Dager brukt">[TODO]</List.Item>
<List.Item title="Kontonummer">
<KontonummerStatusTekst kontonummerInfo={kontonummerInfo} />
</List.Item>
</List>
</VStack>
);
};

export default DeltakelseInfo;
Loading

0 comments on commit b26bde0

Please sign in to comment.