Skip to content

Commit

Permalink
Feature/levende arbeidsforhold (#3580)
Browse files Browse the repository at this point in the history
* Forandret navn til v2 i appene vi prater med  #deploy-frontend #deploy-kodeverk-service #deploy-organisasjon-faste-data-service #deploy-oversikt-frontend #deploy-proxy #deploy-pdl-proxy

* Forandret navn til v2 i appene vi prater med  #deploy-frontend #deploy-levende-arbeidsforhold-ansettelse

* prøver med schema.sql og data.sql #deploy-levende-arbeidsforhold-ansettelse

* prøver med schema.sql og data.sql #deploy-levende-arbeidsforhold-ansettelse

* prøver med schema.sql og data.sql #deploy-levende-arbeidsforhold-ansettelse

* Legger til validering om intervallet er positivt heltall + legger til const variabler for default intervall og for parameter-navnet til intervall

* Fått hjelp av emil til å grante access to table #deploy-levende-arbeidsforhold-ansettelse

* Fått hjelp av emil til å grante access to table #deploy-levende-arbeidsforhold-ansettelse

* Fått hjelp av emil til å grante access to table

* Foraandret sikkerheten tilbake ti insecure #deploy-levende-arbeidsforhold-ansettelse

* Tester tilgang til databasen #deploy-levende-arbeidsforhold-ansettelse

* Kjører ansettelse-service og starter scheduler på nytt ved spørring til GET /kjor endepunkt

* skiftet request #deploy-frontend

* Merget inn frontend branchen

* Fjernet endepunkt spesifikke respons-headers for gyldig CORS

* Endret på property aksessering og henting av options

* Henter parameter-data fra backend og displayer i react component

* skiftet request #deploy-frontend

* Tester tilkobling til levende-arbeidsforhold-api #deploy-frontend

* Gydlig tidsrom funksjon for å sjekke om nåværende tidspunkt er innenfor et gyldig tidsrom

* Legger til "/" i url-en til levende-arbeidsforhold #deploy-frontend

* Forandret entitetene #deploy-testnav-levende-arbeidsforhold-service

* Forandret entitetene #deploy-levende-arbeidsforhold-service

* Forandret entitetene #deploy-levende-arbeidsforhold-ansettelse

* Legger til test for gyldig tidsrom funksjon

* Legger til doxygen for gyldigTidsrom-funksjonen

* repository fungerer

* La til et par tester for gyldig tidsrom funksjonen.

* Legger til funksjon for sjekk av nåværende tidspunkt er i gyldig tidsrom

* Legger til kall på ansettelseservice funksjon i scheduler-jobben

* La til doxygen for sjekk gyldig tidsrom funksjon

* Fikser feil i link for lokal kjøring

* Sjekke om å hente verdier fungerer på swagger #deploy-levende-arbeidsforhold-ansettelse

* Fjerner unødvendige logger i JobbScheduler

* Sjekke om å hente verdier fungerer på swagger #deploy-levende-arbeidsforhold-ansettelse

* Fjerner ubrukt kode

* Sjekke om å hente verdier fungerer på swagger #deploy-levende-arbeidsforhold-ansettelse

* Legger til beregning av fødselsår

* sjekker hvordan dette fungerer på swagger #deploy-levende-arbeidsforhold-ansettelse

* sjekker hvordan dette fungerer på swagger #deploy-levende-arbeidsforhold-ansettelse

* sjekker hvordan dette fungerer på swagger #deploy-levende-arbeidsforhold-ansettelse

* Fjernet kommentarer og funksjoner som ikke blir brukt.

* fikset putmappping i JobbController til å faktisk oppdatere verdi #deploy-levende-arbeidsforhold-ansettelse

* Se om put fungerer nå #deploy-levende-arbeidsforhold-ansettelse

* Se om put fungerer nå, endret entitet og spliter stringen som kommer inn. #deploy-levende-arbeidsforhold-ansettelse

* Se om put fungerer nå, endret entitet og spliter stringen som kommer inn. #deploy-levende-arbeidsforhold-ansettelse

* Fetcher riktig fra databasen. Omstrukturerer EditParameter, men er nå hardcoda for kun organisasjoner

* Nå skal putmapping fungere som forventet #deploy-levende-arbeidsforhold-ansettelse

* Endret AnsettelseService.java slik at den henter parametere fra db

* Funker nå å endre parametere fra frontend

* Fjerner logging i konsollen

* #deploy-frontend

* Sletter og rydder masse

* Ny scheduler app

* Ny scheduler app gradle prosjekt

* Legger til doxygen for commander funksjoner + wrapper API spørring i try-catch

* importerer commander klasse for kall fra ansettelse-jobb scheduler

* Fjerner ubrukte metoder #deploy-levende-arbeidsforhold-ansettelse

* Legger til workflow fil for scheduler appen
#deploy-levende-arbeidsforhold-scheduler

* Legger til dockerfil og config.yml i scheduler appen med security group regler

* Legger til inbound og outbound security group regler i ansettelse appen

* Legger til ny scheduler app
#deploy-levende-arbeidsforhold-scheduler

* Endre til riktig port å expose i Dockerfile
#deploy-levende-arbeidsforhold-scheduler

* Endre til riktig port å expose i Dockerfile
#deploy-levende-arbeidsforhold-scheduler

* Endre til riktig port å expose i config.yml
#deploy-levende-arbeidsforhold-scheduler

* Startet å lage graphql spørring

* Implementerer inputvalidering i frontend

* Legger til levende arbeidsforhold scheduler app i oversikt for å hente ut accesstoken lokalt
#deploy-oversikt-frontend

* Legger til nytt filter i grapghql-criterion

* Prøver å hente tags

* lagt til HentTagsCommand

* Legger til regex og fikser logikkfeil i pdlservice

* Fjerner ett mellomrom

* Konverterer postnummer til formatet x??? for å brukes i wildcard

* lagt til HentTagsCommand

* Legger til hent kalender util funksjon

* Legger til klasse for JSON respons body for /status endepunkt

* Legger til funksjon for å hente tidspunkt for neste kjøring fra scheduler

* importert HenTagsConsumer

* Doxygen for hentTidspunktNesteKjoring funksjonen

* GET /status request handler funksjon i scheduler appen
#deploy-levende-arbeidsforhold-scheduler

* refactor scheduler m initielt delay og fiksert intervall og ikke klokketime intervall

* refactor reschedule request handler funksjon og refactor sifferTilHeltall til å bruke "optional"

* Fjerner cron expression funksjon siden ikke i bruk etter refactor

* Kaller på ansettelses command
#deploy-levende-arbeidsforhold-scheduler

* Forandret sikkerhetetn til oath igjen

* Inkluderer måned og dag i alderssjekk for graphql-spørringene

* Deploy ansettelse appen med inbound og outbound rules for scheduler appen
#deploy-levende-arbeidsforhold-ansettelse

* Implementert alias metden

* Setter opp kobling til scheduler-appen i frontend og fetcher status

* Kaller på ansettelses command med exception logging
#deploy-levende-arbeidsforhold-scheduler

* implementert consumer

* Begynt på å implementere alias metodne

* Begynt på å implementere alias metodne #deploy-levende-arbeidsforhold-scheduler

* Forandret til requestparam i JobbController.java #deploy-levende-arbeidsforhold-scheduler

* lagt til logger #deploy-levende-arbeidsforhold-scheduler

* forandret porten #deploy-levende-arbeidsforhold-scheduler

* Lager en komponent som viser jobb-status på appstyring-siden

* Kaller på ansettelses command med exception logging
#deploy-levende-arbeidsforhold-scheduler

* Lagt til intervall llisten

* Småfiks

* Endret port til riktig port
#deploy-levende-arbeidsforhold-scheduler

* mer logging #deploy-levende-arbeidsforhold-scheduler

* mer logging #deploy-levende-arbeidsforhold-scheduler

* Endret outbound rules
#deploy-levende-arbeidsforhold-scheduler

* Byttet bibliotek for token exchange
#deploy-levende-arbeidsforhold-scheduler

* Fjerner unødvendige imports

* La til riktig klasse
#deploy-levende-arbeidsforhold-scheduler

* Riktig URL
#deploy-levende-arbeidsforhold-scheduler

* Deploy ansettelse appen med inbound og outbound rules for scheduler appen
#deploy-levende-arbeidsforhold-ansettelse
#deploy-levende-arbeidsforhold-scheduler

* Prøve med bare insecure sikkerhet #deploy-levende-arbeidsforhold-scheduler

* Prøve med bare insecure sikkerhet #deploy-levende-arbeidsforhold-asnettelse

* Refactor consumer og command for spørring til ansettelse app
#deploy-levende-arbeidsforhold-scheduler

* Implementert logikk for å benytte alias-metoden

* Legger til secure OAuth i ApplicationConfig
#deploy-levende-arbeidsforhold-scheduler

* Endrer security for lokal kjøring

* Endre til riktig domene for spørring om token fra ansettelse app
#deploy-levende-arbeidsforhold-scheduler

* Setter domene til dolly.svc.cluster.local
#deploy-levende-arbeidsforhold-ansettelse

* Endre app og domene navn
#deploy-levende-arbeidsforhold-scheduler

* Fungerer å kjøre men bruker lang tid

* Fungerer å kjøre men bruker lang tid #deploy-levende-arbeidsforhold-scheduler

* Fungerer å kjøre men bruker lang tid #deploy-levende-arbeidsforhold-scheduler

* Forandret tilbake lang tid #deploy-levende-arbeidsforhold-scheduler

* Fjerner v2 fra app-navnet

* Fjerner v2 fra app-navnet #deploy-proxy #deploy-pdl-proxy #deploy-frontend #deploy-levende-arbeidsforhold-ansettelse #deploy-levende-arbeidsforhold-scheduler #deploy-organisasjon-faste-data-service #deploy-oversikt-frontend

* Fjerner v2 fra app-navnet #deploy-frontend

* Fjerner v2 fra app-navnet #deploy-levende-arbeidsforhold-scheduler

* #deploy-levende-arbeidsforhold-ansettelse

* Endrer noe logikk-feil

* Implementerer henting av org fra tenor. Byttet til insecure security

* Lagt til entitet for ansettelse_logg db

* Fik feilmelding fra pdl

* Forandret url i application-dev.yml

* Lagrer de ansatte i AnsettelseLogg.java

* Prøvet å få med stillingsprosent

* Endrer noe logikk i kanAnsettes-metoden

* Lagt til stillingsprosent

* Legger til GET /stopp endepunkt for å stoppe nåværende jobb

* Endrer feil i defaultState til statusData #deploy-frontend

* Prøver å  hent bolk tags

* #deploy-frontend

* Legger til knapper for aktivering og deaktivering av jobb i frontend app
#deploy-levende-arbeidsforhold-scheduler

* Endret til èn knapp etter forslag fra Emil
#deploy-levende-arbeidsforhold-scheduler

* Legger til deaktivering og aktivering med loading og delay for henting av status

* Holder på å implementere bolk tags i AnsettelseService.java

* #deploy-frontend

* Håndterer potensielle feil ved spørring til scheduler grunnet intervall kan mangle

* Implementerer bruk av tenor for henting av organisasjoner

* Legger til JSON response fra GET /stopp

* #deploy-levende-arbeidsforhold-scheduler

* Implementerer bruk av tenor i AnsettelseService

* Lagt til at den ikke skal bruke personer som er i bruk og lagt til stillingsprosent i JobbParameterNavn.java

* Legger til content-type JSON for respons fra GET /stopp i scheduler appen

* Legger til sjekk for om deaktivering av scheduler jobben var vellykket

* Fikset logge databasen

* Bytter Box med Alert og legger til litt spacing

* Flyttet det å hente tags til PdlService.java slik at man bare får tilbake personer som har riktig tags

* Gjort slik at JobbController.java kaller på ansettelsesService.java. #deploy-levende-arbeidsforhold-ansettelse

* Hadde en feil i testklassen. #deploy-levende-arbeidsforhold-ansettelse

* Kommenterer, rydder og endrer loggikkfeil i AlderspennList

* Fikser postnummer-formatering

* Fikset bug-en i GraphQl #deploy-levende-arbeidsforhold-ansettelse

* Måtte legge inbound rule i kodeverk service for appen våres, og får se om den ansetter folk #deploy-kodeverk-service #deploy-levende-arbeidsforhold-ansettelse

* Legger til avro schema for sommeroppg1-appen som hadde forsvunnet

* Byttet sikkerhet til insecure siden fikk feilmelding at den ikke finner jwt #deploy-levende-arbeidsforhold-ansettelse

* Prøver å deploye igjen for å se om det fungerer #deploy-testnav-levende-arbeidsforhold-ansettelse

* Prøver å deploye igjen for å se om det fungerer #deploy-levende-arbeidsforhold-ansettelse

* Prøver å deploye igjen for å se om det fungerer #deploy-levende-arbeidsforhold-ansettelse

* Legger til doxygen-kommentering

* Legger til sjekk om brregKildedata til organisasjon er null

* Legger til sjekk om postnr er null og bytter organisasjon med ny dersom det stemmer

* Legger til kommentarer og sletter bruk av organisasjon-faste-data

* Fjerner bruk av ereg

* Fjerner ubrukte imports

* Endrer lambda-statements

* Legger til hjelpe-funksjoner for beregner tidspunkt for neste kjøring av jobb + endre på funksjonsnavn

* Legger til tester for funksjon med logikk for beregning av forsinkelse for kjøring av neste jobb

* Gjør endepunkt for aktivering av scheduler tilgjengelig på /start i tillegg

* Omstrukturering av spørring til GET /stopp endepunktet i scheduler appen + endre GET /scheduler endepunktet til å returnere en 500 status kode dersom aktivering av scheduler feiler

* #deploy-frontend
#deploy-levende-arbeidsforhold-scheduler

* Sletter en test-klasse

* Har skrevet noen kommentarer, og slettet noen ubrukte kommentarer.

* Fjernet unødvendige filer #deploy-levende-arbeidsforhold-ansettelse

* Skrevet i redme.md filen

* Fikset slik at ansatte personer ble logget. Hadde blitt fjernet. #deploy-levende-arbeidsforhold-ansettelse

* Fjernet eventlistener i AnsettelseService.java og forandret linkene i application.yml og fjernet unødvendige bibliotek i settings.gradle. #deploy-levende-arbeidsforhold-ansettelse

* Fjernet eventlistener i AnsettelseService.java og forandret linkene i application.yml og fjernet unødvendige bibliotek i settings.gradle. #deploy-levende-arbeidsforhold-ansettelse

* Fjernet eventlistener i AnsettelseService.java og forandret linkene i application.yml og fjernet unødvendige bibliotek i settings.gradle. #deploy-levende-arbeidsforhold-ansettelse

* Tok det tilbake.. #deploy-levende-arbeidsforhold-ansettelse

* Prøvde å fjerne unødvendige ting fra build.gradle og la til oath2-server  #deploy-levende-arbeidsforhold-ansettelse

* Prøvde å fjerne unødvendige ting fra build.gradle og la til oath2-server  #deploy-levende-arbeidsforhold-ansettelse

* Forandret sikkerheten til insecure for å se  #deploy-levende-arbeidsforhold-ansettelse

* Legger til tenor på outbound-rules #deploy-levende-arbeidsforhold-ansettelse

* Fjerner at ansatte personer blir lagt til to ganger #deploy-levende-arbeidsforhold-ansettelse

* Forhindre potensiell nullpointer exception

* Refactor i controller i ansettelse app

* Refactor i controller i ansettelse app

* Fjernet ubrukt import og funksjoner  #deploy-levende-arbeidsforhold-ansettelse

* Endret slik at det ble mer ryddig AlderspennList.java

* Fjernet eventlistener i AnsettelseService.java

* Skrevet litt i README filen

* Deployer front-end #deploy-frontend

* Lagt til forklaring på jobb-parameter endepunktet i JobbController.java

* Endre threadpool til å ha corresponderende antall tråder som er tilgengelig på systemet for å unngå oversubsription

* Legger til beskrivelse av GET /ansettelse-jobb

* Legger til swagger dokumentasjon for API i scheduler appen + fjerner ekstra JSON parsing siden det skjer automagically

* Endrer accessPolicy til kun nødvendige apper
#deploy-levende-arbeidsforhold-scheduler

* Spesifisere tomcat package versjon i håp om å fikse security vuln
#deploy-levende-arbeidsforhold-scheduler

* Fjernet dependencies som ikke trengs lenger.

* Spesifisere versjon for utdatert package for å fikse security vuln fra nais console
#deploy-levende-arbeidsforhold-scheduler

* Spesifisere versjon for "nimbus-jose-jwt" for å fikse security vuln fra nais console
#deploy-levende-arbeidsforhold-scheduler

* Legger til versjon for dependencies for å unngå sikkerhets-sårbarheter etter analyse fra nais console

* Legger til versjon for dependencies for å unngå sikkerhets-sårbarheter etter analyse fra nais console
#deploy-levende-arbeidsforhold-ansettelse

* Remove obsolete files and dependencies

Deleted unused Java classes and test config files to streamline the codebase and improve project organization. This cleanup helps maintain a leaner structure and eliminates redundant components.

* Remove obsolete files and dependencies

Deleted unused Java classes and test config files to streamline the codebase and improve project organization. This cleanup helps maintain a leaner structure and eliminates redundant components.

---------

Co-authored-by: Andrea Devold Fjeld <[email protected]>
Co-authored-by: ulrikHesmyr <[email protected]>
Co-authored-by: Martineem <[email protected]>
  • Loading branch information
4 people authored Aug 15, 2024
1 parent 4dc9fad commit 478e2ab
Show file tree
Hide file tree
Showing 189 changed files with 7,779 additions and 331 deletions.
26 changes: 26 additions & 0 deletions .github/workflows/app.levende-arbeidsforhold-ansettelse.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: levende-arbeidsforhold-ansettelse

on:
push:
paths:
- libs/commands/**
- libs/data-transfer-objects/**
- libs/security-core/**
- libs/servlet-core/**
- libs/servlet-security/**
- libs/servlet-insecure-security/**
- apps/levende-arbeidsforhold-ansettelse/**
- .github/workflows/app.levende-arbeidsforhold-ansettelse.yml


jobs:
workflow:
uses: ./.github/workflows/common.workflow.backend.yml
with:
working-directory: "apps/levende-arbeidsforhold-ansettelse"
deploy-tag: "#deploy-levende-arbeidsforhold-ansettelse"
sonar-enabled: false
permissions:
contents: read
id-token: write
secrets: inherit
25 changes: 25 additions & 0 deletions .github/workflows/app.levende-arbeidsforhold-scheduler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: levende-arbeidsforhold-scheduler

on:
push:
paths:
- libs/commands/**
- libs/data-transfer-objects/**
- libs/security-core/**
- libs/servlet-core/**
- libs/servlet-security/**
- apps/levende-arbeidsforhold-scheduler/**
- .github/workflows/app.levende-arbeidsforhold-scheduler.yml


jobs:
workflow:
uses: ./.github/workflows/common.workflow.backend.yml
with:
working-directory: "apps/levende-arbeidsforhold-scheduler"
deploy-tag: "#deploy-levende-arbeidsforhold-scheduler"
sonar-enabled: false
permissions:
contents: read
id-token: write
secrets: inherit
3 changes: 3 additions & 0 deletions apps/dolly-frontend/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@ spec:
- application: testnav-varslinger-service
- application: testnorge-profil-api
- application: testnorge-tilbakemelding-api
- application: testnav-levende-arbeidsforhold-ansettelse
- application: testnav-levende-arbeidsforhold-scheduler

external:
- host: testnav-pensjon-testdata-facade-proxy.dev-fss-pub.nais.io
- host: testnav-sigrunstub-proxy.dev-fss-pub.nais.io
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,8 @@ public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
.route(createRoute(consumers.getGenererNavnService()))
.route(createRoute(consumers.getTestnavKodeverkService()))
.route(createRoute(consumers.getTestnavTenorSearchService()))
.route(createRoute(consumers.getTestnavLevendeArbeidsforholdAnsettelse(), "testnav-levende-arbeidsforhold-ansettelse"))
.route(createRoute(consumers.getTestnavLevendeArbeidsforholdScheduler(), "testnav-levende-arbeidsforhold-scheduler"))
.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,7 @@ public class Consumers {
private ServerProperties testnorgeProfilApi;
private ServerProperties testnorgeTilbakemeldingApi;
private ServerProperties testnavTenorSearchService;
private ServerProperties testnavLevendeArbeidsforholdAnsettelse;
private ServerProperties testnavLevendeArbeidsforholdScheduler;

}
10 changes: 10 additions & 0 deletions apps/dolly-frontend/src/main/js/proxy-routes.json
Original file line number Diff line number Diff line change
Expand Up @@ -228,5 +228,15 @@
"target": "http://localhost:8020",
"changeOrigin": true,
"secure": false
},
"/testnav-levende-arbeidsforhold-ansettelse/api": {
"target": "http://localhost:8020",
"changeOrigin": true,
"secure": false
},
"/testnav-levende-arbeidsforhold-scheduler/scheduler": {
"target": "http://localhost:8020",
"changeOrigin": true,
"secure": false
}
}
Original file line number Diff line number Diff line change
@@ -1,34 +1,115 @@
import { AdminAccessDenied } from '@/pages/adminPages/AdminAccessDenied'
import { Alert } from '@navikt/ds-react'
import { AppstyringTable } from '@/pages/adminPages/Appstyring/AppstyringTable'
import { erDollyAdmin } from '@/utils/DollyAdmin'
import {AdminAccessDenied} from '@/pages/adminPages/AdminAccessDenied'
import {Alert, Button} from '@navikt/ds-react'
import {AppstyringTable} from '@/pages/adminPages/Appstyring/AppstyringTable'
import {erDollyAdmin} from '@/utils/DollyAdmin'
import React, {useEffect, useState} from "react";
import {FetchData, Jobbstatus} from "@/pages/adminPages/Appstyring/util/Typer";
import {StatusBox} from "@/pages/adminPages/Appstyring/StatusBox";

export default () => {
if (!erDollyAdmin()) {
return <AdminAccessDenied />
return <AdminAccessDenied/>
}

//TODO: Implementer henting av data fra backend
const dataMock = [
{ parameter: 'Parameter 1', verdi: 'verdi1' },
{ parameter: 'Parameter 2', verdi: 'verdi2' },
{ parameter: 'Parameter 3', verdi: 'verdi3' },
{ parameter: 'Parameter 4', verdi: 'verdi4' },
{ parameter: 'Parameter 5', verdi: 'verdi5' },
{ parameter: 'Parameter 6', verdi: 'verdi6' },
{ parameter: 'Parameter 7', verdi: 'verdi7' },
{ parameter: 'Parameter 8', verdi: 'verdi8' },
{ parameter: 'Parameter 9', verdi: 'verdi9' },
{ parameter: 'Parameter 10', verdi: 'verdi10' },
]
const [apiData , setApiData] = useState<Array<FetchData>>([]);
const [statusData , setStatusData] = useState<Jobbstatus>({nesteKjoring: "", status: false});
const [henterStatus, setHenterStatus] = useState(false);

let optionsData: FetchData[] = [];

const SCHEDULER_DOMENE : string = "/testnav-levende-arbeidsforhold-scheduler";
const ANSETTELSE_DOMENE : string = "/testnav-levende-arbeidsforhold-ansettelse";

/**
* Callback-funksjon som behandler feil ved API-spørringer. Dersom en feilmelding ikke er spesifisert, så betyr det
* at feilen ved spørringen skjedde på klienten sin side og kjører med default parameter verdi
*/
function feilHandtering(feilMelding : string = "Spørring feilet, sjekk internettforbindelsen og prøv igjen!"){
alert(feilMelding);
}

/**
* Funksjon som aktiverer jobb-scheduler
*/
async function aktiverScheduler(){

let intervall = apiData.find(d => d.navn == "intervall");

if (intervall){
await sendSporringScheduler(`${SCHEDULER_DOMENE}/scheduler?intervall=${intervall.verdi}`);
} else {
feilHandtering("Intervall er ikke spesifisert")
}
}

/**
* Funksjon som deaktiverer jobb-scheduler
*/
async function deaktiverScheduler(){
if (window.confirm("Vil du deaktivere jobben? Du kan aktivere ny jobb igjen når som helst.")){
await sendSporringScheduler(`${SCHEDULER_DOMENE}/scheduler/stopp`);
}
}

/**
* Funksjon som kan brukes til å sende spørring til scheduler appen sitt API for å enten aktiver eller deaktivere
* scheduler basert på url parameteren
* @param url URL til endepunktet i scheduler APIet som spørring skal sendes til
*/
async function sendSporringScheduler(url : string){
setHenterStatus(true);
await fetch(url).then(async res => {

setTimeout(()=>{
if (!res.ok) {
feilHandtering(`${res.body}`);
}

fetchStatusScheduler();
setHenterStatus(false);
}, 200)
}).catch(feilHandtering);
}
/**
* Funksjon som sender spørring til scheduler appen sitt API for å hente ut status på om scheduleren er aktiv
* eller ikke
*/
async function fetchStatusScheduler() {
const data = await fetch(`${SCHEDULER_DOMENE}/scheduler/status`)
.then(res => res.json())
.catch(feilHandtering);
setStatusData(data);
}

/**
* Funksjon som henter ut dataen for parameterne som brukes i jobben (aka ansettelses-jobben) som kjøres av
* scheduleren for det gitte intervallet
*/
async function hentParametere() {
await fetch(`${ANSETTELSE_DOMENE}/api`)
.then(res => res.json())
.then(res => {
res.map((r: FetchData) => optionsData.push(r))

}).catch(err => console.error(err));
setApiData(optionsData);
}

useEffect(() => {
hentParametere();
fetchStatusScheduler();
}, []);


return (
<>
<h1>App-styring</h1>
<Alert variant={'info'} style={{ marginBottom: '15px' }}>
<Alert variant={'info'} style={{marginBottom: '15px'}}>
Denne siden er under utvikling.
</Alert>
<AppstyringTable data={dataMock} />
<StatusBox nesteKjoring={statusData.nesteKjoring} status={statusData.status}/>
{!statusData.status ? <Button loading={henterStatus} onClick={aktiverScheduler} style={{marginBottom: '8px'}}>Aktiver</Button> : <Button loading={henterStatus} onClick={deaktiverScheduler} variant={"danger"}>Deaktiver</Button> }
<AppstyringTable data={apiData} setData={setApiData}/>
</>
)
}
}
Original file line number Diff line number Diff line change
@@ -1,24 +1,10 @@
import { Box, Table } from '@navikt/ds-react'
import {Box, Table} from '@navikt/ds-react'
import React from 'react'
import { ErrorBoundary } from '@/components/ui/appError/ErrorBoundary'
import { EditParameter } from '@/pages/adminPages/Appstyring/EditParameter'
import {ErrorBoundary} from '@/components/ui/appError/ErrorBoundary'
import {EditParameter} from '@/pages/adminPages/Appstyring/EditParameter'
import {FetchData} from "@/pages/adminPages/Appstyring/util/Typer";

export const AppstyringTable = ({ data }: any) => {
//TODO: Implementer henting av options pr parameter fra backend
const getOptions = (parameter: string) => {
return [
{ value: 'verdi1', label: 'Verdi 1' },
{ value: 'verdi2', label: 'Verdi 2' },
{ value: 'verdi3', label: 'Verdi 3' },
{ value: 'verdi4', label: 'Verdi 4' },
{ value: 'verdi5', label: 'Verdi 5' },
{ value: 'verdi6', label: 'Verdi 6' },
{ value: 'verdi7', label: 'Verdi 7' },
{ value: 'verdi8', label: 'Verdi 8' },
{ value: 'verdi9', label: 'Verdi 9' },
{ value: 'verdi10', label: 'Verdi 10' },
]
}
export const AppstyringTable = ({data, setData}: { data: Array<FetchData>, setData: (data: Array<FetchData>) => void }) => {

return (
<Box background="surface-default" padding="4">
Expand All @@ -30,16 +16,19 @@ export const AppstyringTable = ({ data }: any) => {
<Table.HeaderCell>Rediger</Table.HeaderCell>
</Table.Header>
<Table.Body>
{data.map((row: any, idx: number) => {
{data.map((row: FetchData, idx: number) => {
return (
<Table.Row key={row.parameter + idx}>
<Table.DataCell width={'50%'}>{row.parameter}</Table.DataCell>
<Table.Row key={row.navn + idx}>
<Table.DataCell width={'50%'}>{row.tekst}</Table.DataCell>
<Table.DataCell width={'40%'}>{row.verdi}</Table.DataCell>
<Table.DataCell width={'10%'}>
<EditParameter
name={row.parameter}
name={row.navn}
label={row.tekst}
initialValue={row.verdi}
getOptions={getOptions}
options={row.verdier}
data={data}
setData={setData}
/>
</Table.DataCell>
</Table.Row>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,55 @@
import { PencilWritingIcon } from '@navikt/aksel-icons'
import { Button } from '@navikt/ds-react'
import {PencilWritingIcon} from '@navikt/aksel-icons'
import {Button, Select} from '@navikt/ds-react'
import React from 'react'
import useBoolean from '@/utils/hooks/useBoolean'
import DollyModal from '@/components/ui/modal/DollyModal'
import ModalActionKnapper from '@/components/ui/modal/ModalActionKnapper'
import { FormSelect } from '@/components/ui/form/inputs/select/Select'
import { ErrorBoundary } from '@/components/ui/appError/ErrorBoundary'
import { FormProvider, useForm } from 'react-hook-form'
import {ErrorBoundary} from '@/components/ui/appError/ErrorBoundary'
import {useForm} from 'react-hook-form'
import {FetchData} from "@/pages/adminPages/Appstyring/util/Typer";

export const EditParameter = ({ name, initialValue, getOptions }: any) => {
interface Props {
name: string,
label: string
initialValue: string,
options: Array<string>
data: Array<FetchData>
setData: (data: Array<FetchData>) => void
}

export const EditParameter = ({name, label, initialValue, options, data, setData }: Props) => {
const [modalIsOpen, openModal, closeModal] = useBoolean(false)
const formMethods = useForm({ defaultValues: { [name]: initialValue } })
//const formMethods = useForm({ defaultValues: { [name]: initialValue } })

//TODO: Implementer lagring av verdi paa parameter
const onSubmit = (data: any) => {
console.log('Lagrer... ', data) //TODO - SLETT MEG
closeModal()
const { register, handleSubmit, formState: { errors} } = useForm<{value: string}>(
{ defaultValues: {value: initialValue}})


async function oppdaterParameterverdi(value: string) {
await fetch(`/testnav-levende-arbeidsforhold-ansettelse/api/oppdatereVerdier/${name}`,
{method: "PUT", body: JSON.stringify(value)}).then(res => res.status === 200 ? onSubmit(value) : console.error('Feil feil feil'));
}

const options = getOptions(name)
const validerParameter = (value: string | undefined): string | undefined => {
if (name === "antallOrganisasjoner") {
const antallPersoner = data.find(obj => obj.navn === "antallPersoner")?.verdi
if (!value) return 'Må settes'
else if (Number.parseInt(value!) > Number.parseInt(antallPersoner!)) return `Kan ikke være flere organisasjoner enn antall personer`
}
else if (name === "antallPersoner") {
const antallOrganisasjoner = data.find(obj => obj.navn === "antallOrganisasjoner")?.verdi
if (!value) return 'Må settes'
else if (Number.parseInt(value!) < Number.parseInt(antallOrganisasjoner!)) return `Kan ikke være færre personer enn antall organisasjoner`
}
return undefined
}

const onSubmit = (value: string) => {
const kopi = [...data]
const nyttObjektIndex = kopi.findIndex(obj => obj.navn === name)
kopi[nyttObjektIndex] = {...kopi[nyttObjektIndex], verdi: value}
setData(kopi)
closeModal()
}

return (
<>
Expand All @@ -29,21 +60,24 @@ export const EditParameter = ({ name, initialValue, getOptions }: any) => {
size={'small'}
/>
<ErrorBoundary>
<FormProvider {...formMethods}>
<DollyModal isOpen={modalIsOpen} closeModal={closeModal} width={'40%'} overflow={'auto'}>
<form onSubmit={handleSubmit(({ value}) => {
oppdaterParameterverdi(value)
})}>
<div className="modal">
<h1>Rediger parameter</h1>
<br />
<FormSelect name={name} label={name} options={options} size="grow" />
<ModalActionKnapper
submitknapp="Lagre"
onSubmit={formMethods.handleSubmit(onSubmit)}
onAvbryt={closeModal}
center
/>
<Select {...register("value", {
validate: validerParameter
})} label={label} error={errors.value?.message} style={{marginBottom: '10px'}}>
{options.map((option, index) => (
<option key={index} value={option}>{option}</option>
))}
</Select>
<Button>Lagre</Button>
</div>
</form>
</DollyModal>
</FormProvider>
</ErrorBoundary>
</>
)
Expand Down
Loading

0 comments on commit 478e2ab

Please sign in to comment.