-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'sif-common-types' of github.com:navikt/sif-brukerdialog…
… into sif-common-types
- Loading branch information
Showing
20 changed files
with
514 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
29 changes: 29 additions & 0 deletions
29
apps/sif-demo-app/api-mock/data/søker1/arbeidsgivere-mock.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
{ | ||
"organisasjoner": [ | ||
{ "navn": "SJOKKERENDE ELEKTRIKER", "organisasjonsnummer": "947064649", "ansattFom": "2002-04-20" } | ||
], | ||
"frilansoppdrag": [ | ||
{ | ||
"type": "type oppdrag", | ||
"organisasjonsnummer": "991012133", | ||
"navn": "Hurdal frilanssenter", | ||
"ansattFom": "2022-01-01", | ||
"ansattTom": "2022-01-15" | ||
}, | ||
{ | ||
"type": "type oppdrag", | ||
"organisasjonsnummer": "991012134", | ||
"navn": "Svandalen frilanssenter", | ||
"ansattFom": "2022-01-01", | ||
"ansattTom": "2022-01-15" | ||
} | ||
], | ||
"privatarbeidsgiver": [ | ||
{ | ||
"navn": "Jon Jonsen", | ||
"ansattFom": "2021-01-01", | ||
"ansattTom": "2021-12-31", | ||
"offentligIdent": "12345678910" | ||
} | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
{ | ||
"barn": [ | ||
{ | ||
"fornavn": "ALFABETISK", | ||
"etternavn": "FAGGOTT", | ||
"aktørId": "2811762539343", | ||
"fødselsdato": "2019-06-08", | ||
"fødselsnummer": "08861999573" | ||
}, | ||
{ | ||
"fornavn": "Barn", | ||
"mellomnavn": "Barne", | ||
"etternavn": "Barnesen", | ||
"fødselsdato": "2020-04-20", | ||
"aktørId": "123" | ||
}, | ||
{ "fødselsdato": "2015-01-02", "fornavn": "Mock", "etternavn": "Mocknes", "aktørId": "2", "mellomnavn": "" } | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
{ | ||
"aktørId": "2320509955297", | ||
"fødselsdato": "1995-06-02", | ||
"fødselsnummer": "02869599259", | ||
"fornavn": "PRESENTABEL", | ||
"mellomnavn": null, | ||
"etternavn": "HOFTE" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,188 @@ | ||
/* eslint-disable no-console */ | ||
const express = require('express'); | ||
const helmet = require('helmet'); | ||
const busboyCons = require('busboy'); | ||
const os = require('os'); | ||
const fs = require('fs'); | ||
const cors = require('cors'); | ||
|
||
const server = express(); | ||
|
||
server.use(express.json()); | ||
server.use( | ||
helmet({ | ||
contentSecurityPolicy: true, | ||
crossOriginEmbedderPolicy: false, | ||
crossOriginResourcePolicy: false, | ||
}), | ||
); | ||
|
||
server.use( | ||
cors({ | ||
origin: 'http://localhost:8080', | ||
methods: ['GET', 'POST', 'DELETE', 'PUT', 'OPTIONS'], | ||
allowedHeaders: ['content-type', 'X-Brukerdialog-Git-Sha', 'x_correlation_id'], | ||
credentials: true, | ||
}), | ||
); | ||
server.options('*', cors()); | ||
|
||
const MELLOMLAGRING_JSON = `${os.tmpdir()}/omsorgspengesoknad-mellomlagring.json`; | ||
|
||
const isJSON = (str) => { | ||
try { | ||
return JSON.parse(str) && !!str; | ||
} catch (e) { | ||
return false; | ||
} | ||
}; | ||
|
||
const writeFileAsync = async (path, text) => { | ||
return new Promise((resolve, reject) => { | ||
fs.writeFile(path, text, 'utf8', (err) => { | ||
if (err) reject(err); | ||
else resolve(); | ||
}); | ||
}); | ||
}; | ||
|
||
const readFileSync = (path) => { | ||
return fs.readFileSync(path, 'utf8'); | ||
}; | ||
|
||
const existsSync = (path) => fs.existsSync(path); | ||
|
||
const mockPath = `${__dirname}/data`; | ||
const soker = 'søker1'; | ||
|
||
const søkerFileName = `søker-mock.json`; | ||
const barnFileName = `barn-mock.json`; | ||
const arbeidsgivereFileName = `arbeidsgivere-mock.json`; | ||
const innvilgetVedtakFileName = `innvilget-vedtak-mock.json`; | ||
const ikkeInnvilgetVedtakFileName = `ikke-innvilget-vedtak-mock.json`; | ||
|
||
const readMockFile = (file, responseObject) => { | ||
const filePath = `${mockPath}/${soker}/${file}`; | ||
if (existsSync(filePath)) { | ||
const body = readFileSync(filePath); | ||
responseObject.send(JSON.parse(body)); | ||
} else { | ||
responseObject.send({}); | ||
} | ||
}; | ||
|
||
const startExpressServer = () => { | ||
const port = process.env.PORT || 8099; | ||
|
||
server.get('/oppslag/soker', (req, res) => { | ||
setTimeout(() => { | ||
readMockFile(søkerFileName, res); | ||
}, 250); | ||
}); | ||
|
||
server.get('/oppslag/barn', (req, res) => { | ||
setTimeout(() => { | ||
readMockFile(barnFileName, res); | ||
}, 250); | ||
}); | ||
|
||
server.get('/oppslag/arbeidsgiver', (req, res) => { | ||
setTimeout(() => { | ||
readMockFile(arbeidsgivereFileName, res); | ||
}, 250); | ||
}); | ||
|
||
/** --- Send søknad ---------- */ | ||
|
||
server.post('/omsorgspenger-utvidet-rett/innsending', (req, res) => { | ||
const body = req.body; | ||
console.log('[POST] body', body); | ||
setTimeout(() => { | ||
res.sendStatus(200); | ||
}, 2500); | ||
}); | ||
|
||
const errorResponse = { | ||
type: '/problem-details/invalid-request-parameters', | ||
title: 'invalid-request-parameters', | ||
status: 400, | ||
detail: 'Requesten inneholder ugyldige paramtere.', | ||
instance: 'about:blank', | ||
invalid_parameters: [ | ||
'høyereRisikoForFraværBeskrivelse matcher ikke tilatt møønster: ^[\\p{Punct}\\p{L}\\p{M}\\p{N}\\p{Sc}\\p{Space}«»–§�\\u2018\\u2019\\u201a\\u201b\\u201c\\u201d\\u201e\\u201f\\u00b4\\u2026]*$', | ||
], | ||
}; | ||
server.post('/omsorgspenger-utvidet-rett/innsending-error', (req, res) => { | ||
const body = req.body; | ||
console.log('[POST] body', body); | ||
setTimeout(() => { | ||
res.status(400).send(errorResponse); | ||
}, 100); | ||
}); | ||
|
||
/** --- Vedlegg ---------- */ | ||
|
||
server.post('/vedlegg', (req, res) => { | ||
res.set('Access-Control-Expose-Headers', 'Location'); | ||
res.set('Location', 'nav.no'); | ||
const busboy = busboyCons({ headers: req.headers }); | ||
busboy.on('finish', () => { | ||
res.writeHead(200, { | ||
Location: 'http://localhost:8089/vedlegg/eyJraWQiOiIxIiwidHlwIjoiSldUIiwiYWxnIjoibm9uZSJ9.eyJqdG', | ||
}); | ||
res.end(); | ||
}); | ||
req.pipe(busboy); | ||
}); | ||
|
||
server.delete('/vedlegg', (req, res) => { | ||
res.sendStatus(200); | ||
}); | ||
|
||
/** --- Mellomlagring ---------- */ | ||
|
||
server.get('/mellomlagring/OMSORGSPENGER_UTVIDET_RETT', (req, res) => { | ||
if (existsSync(MELLOMLAGRING_JSON)) { | ||
const body = readFileSync(MELLOMLAGRING_JSON); | ||
res.send(JSON.parse(body)); | ||
} else { | ||
res.send({}); | ||
} | ||
}); | ||
server.post('/mellomlagring/OMSORGSPENGER_UTVIDET_RETT', (req, res) => { | ||
const body = req.body; | ||
const jsBody = isJSON(body) ? JSON.parse(body) : body; | ||
writeFileAsync(MELLOMLAGRING_JSON, JSON.stringify(jsBody, null, 2)); | ||
res.sendStatus(200); | ||
}); | ||
server.put('/mellomlagring/OMSORGSPENGER_UTVIDET_RETT', (req, res) => { | ||
const body = req.body; | ||
const jsBody = isJSON(body) ? JSON.parse(body) : body; | ||
writeFileAsync(MELLOMLAGRING_JSON, JSON.stringify(jsBody, null, 2)); | ||
res.sendStatus(200); | ||
}); | ||
server.delete('/mellomlagring/OMSORGSPENGER_UTVIDET_RETT', (req, res) => { | ||
writeFileAsync(MELLOMLAGRING_JSON, JSON.stringify({}, null, 2)); | ||
res.sendStatus(200); | ||
}); | ||
|
||
server.listen(port, () => { | ||
console.log(`Express mock-api server listening on port: ${port}`); | ||
}); | ||
|
||
/** --- Sjekk tidligere innvilget vedtak ---------- */ | ||
|
||
server.post('/k9-sak-innsyn-api/k9sak/omsorgsdager-kronisk-sykt-barn/har-gyldig-vedtak', (req, res) => { | ||
const body = req.body; | ||
console.log('[POST] body', body); | ||
setTimeout(() => { | ||
if (body.pleietrengendeAktørId === '2') { | ||
readMockFile(innvilgetVedtakFileName, res); | ||
} else { | ||
readMockFile(ikkeInnvilgetVedtakFileName, res); | ||
} | ||
}, 2500); | ||
}); | ||
}; | ||
|
||
startExpressServer(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,52 @@ | ||
import { Box, Tabs } from '@navikt/ds-react'; | ||
import LoadingSpinner from '@navikt/sif-common-core-ds/src/atoms/loading-spinner/LoadingSpinner'; | ||
import Page from '@navikt/sif-common-core-ds/src/components/page/Page'; | ||
import SøkerInfo from './components/SøkerInfo'; | ||
import { useInitialData } from './hooks/useInitialData'; | ||
import '@navikt/ds-css'; | ||
import BarnInfo from './components/BarnInfo'; | ||
import ArbeidsgiverInfo from './components/ArbeidsgiverInfo'; | ||
|
||
const App = () => { | ||
return <p>Demo app</p>; | ||
const { initialData, isLoading } = useInitialData(); | ||
|
||
if (isLoading || !initialData) { | ||
return ( | ||
<Page title="Henter informasjon"> | ||
<center> | ||
<LoadingSpinner size="3xlarge" /> | ||
</center> | ||
</Page> | ||
); | ||
} | ||
|
||
const { søker, barn, arbeidsgivere } = initialData; | ||
return ( | ||
<Page title="Forside"> | ||
<Tabs defaultValue="arbeidsgivere"> | ||
<Tabs.List> | ||
<Tabs.Tab value="søker" label="Søker" /> | ||
<Tabs.Tab value="barn" label="Barn" /> | ||
<Tabs.Tab value="arbeidsgivere" label="Arbeidsgivere" /> | ||
</Tabs.List> | ||
<Tabs.Panel value="søker"> | ||
<Box paddingBlock="4"> | ||
<SøkerInfo søker={søker} /> | ||
</Box> | ||
</Tabs.Panel> | ||
<Tabs.Panel value="barn"> | ||
<Box paddingBlock="4"> | ||
<BarnInfo barn={barn} /> | ||
</Box> | ||
</Tabs.Panel> | ||
<Tabs.Panel value="arbeidsgivere"> | ||
<Box paddingBlock="4"> | ||
<ArbeidsgiverInfo arbeidsgivere={arbeidsgivere} /> | ||
</Box> | ||
</Tabs.Panel> | ||
</Tabs> | ||
</Page> | ||
); | ||
}; | ||
|
||
export default App; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
import { Heading, VStack } from '@navikt/ds-react'; | ||
import { Arbeidsgivere } from '@navikt/sif-common'; | ||
import ShadowBox from './ShadowBox'; | ||
|
||
interface Props { | ||
arbeidsgivere: Arbeidsgivere; | ||
} | ||
|
||
const Organisasjon = ({ organisasjon }: { organisasjon: Arbeidsgivere['organisasjoner'][0] }) => { | ||
return ( | ||
<ShadowBox> | ||
<VStack gap="2"> | ||
<Heading level="2" size="medium"> | ||
{organisasjon.navn} | ||
</Heading> | ||
</VStack> | ||
</ShadowBox> | ||
); | ||
}; | ||
|
||
const ArbeidsgiverInfo = ({ arbeidsgivere: { organisasjoner } }: Props) => { | ||
return ( | ||
<VStack gap="8"> | ||
{organisasjoner.length > 0 ? ( | ||
organisasjoner.map((o) => <Organisasjon key={o.organisasjonsnummer} organisasjon={o} />) | ||
) : ( | ||
<ShadowBox>Ingen arbeidsgiver registrert</ShadowBox> | ||
)} | ||
</VStack> | ||
); | ||
}; | ||
|
||
export default ArbeidsgiverInfo; |
Oops, something went wrong.