import React from 'react'; import { ARBEIDSTIDER_INTRODUSERT_VERSJON, garanterListe, GyldighetsRegistrerer, ledetekst, minstEtTiltakErHuketAv, OppsummeringFeilmelding, OppsummeringPunkt, PLANTYPE_GENERELL, PLANTYPE_SPESIELL, sjekkGyldighetForTiltaksalternativer, useOppsummering, VerdiEllerInfoMangler, } from '../..'; import { Soknad, Tiltak } from '../../domene/Soknad'; import { SlettetInformasjonsboks } from '../SlettetInformasjonsboks'; import { erTiltakEndret, erTiltakSlettet } from './tiltaksoppsummeringUtils'; function AlternativerMangler({ tittel }) { return (
{tittel}
{`${ledetekst.getTekst( 'arbeidsvarsling.soknad.Vegarbeidbeskrivelse.tiltak.ikkeUtfylt' )} ${tittel.toLowerCase()}`}
); } function Punkter({ tiltak = {}, plantype, forrigeTiltak = {} }) { const { tiltakGenerellPlanSorterer, tiltakSpesiellPlanSorterer, forsendelsesversjon, } = useOppsummering(); const sorterer = plantype === PLANTYPE_GENERELL ? tiltakGenerellPlanSorterer : tiltakSpesiellPlanSorterer; const skalHaArbeidstiderIVisning = forsendelsesversjon >= ARBEIDSTIDER_INTRODUSERT_VERSJON; return Object.keys(tiltak) .sort(sorterer) .filter((key) => { const { valgt = false } = tiltak[key]; return valgt; }) .map((key) => { const { alternativer = [] } = tiltak[key]; const tiltakstittel = ledetekst.getTekst( `arbeidsvarsling.soknad.Vegarbeidbeskrivelse.tiltak.${plantype}.${key}` ); const ingenAlternativerValgt = alternativer.length === 0 || alternativer.every(({ valgt }) => !valgt); if (ingenAlternativerValgt) { return ; } return alternativer .sort((a, b) => sorterer(a.felt, b.felt)) .filter((alternativ) => alternativ?.valgt) .map((alternativ, index) => { const alternativtittel = ledetekst.getTekst( `arbeidsvarsling.soknad.Vegarbeidbeskrivelse.tiltak.${plantype}.${key}.${alternativ.felt}` ); const arbeidstider = garanterListe(alternativ.arbeidstider); const arbeidstidstekst = arbeidstider.length > 0 && arbeidstider.length === 2 ? 'HELE_ARBEIDSPERIODEN' : arbeidstider[0]; const markerEndretTiltak = erTiltakEndret( forrigeTiltak, alternativ, key ); return (
{tiltakstittel} - {alternativtittel}{' '}
								{alternativ.tekst}
							
{skalHaArbeidstiderIVisning && (!!arbeidstidstekst ? (

{ledetekst.getTekst( `arbeidsvarsling.frontendkomponenter.Arbeidstid.${arbeidstidstekst}` )}

) : ( {ledetekst.getTekst( 'arbeidsvarsling.soknad.Vegarbeidbeskrivelse.tiltak.arbeidstider.ikkeUtfylt' )} ))}
); }); }); } function EkstraSpoersmaalSvar({ alternativ }) { if (!alternativ.harEkstraSpoersmaal) { return null; } if (alternativ.ekstraSpoersmaalValgt === undefined) { return ; } return ( -{' '} {ledetekst.getTekst( `arbeidsvarsling.frontendkomponenter.tiltak.vegoppmerking.ekstraSpoersmaal.${alternativ.felt}.${alternativ.ekstraSpoersmaalValgt}` )} ); } function Tiltaksoppsummering({ tiltak, forrigeSoknad }) { const { plantype, gyldighet, soknad } = useOppsummering(); const forsendelsesversjon = parseInt(soknad.forsendelsesversjon, 10); const minstEtTiltakErValgt = minstEtTiltakErHuketAv(tiltak); const erGyldig = sjekkGyldighetForTiltaksalternativer( tiltak, forsendelsesversjon ); const forrigeSoknadKopi: Soknad = structuredClone(forrigeSoknad); const tiltakKopi: Record = structuredClone(tiltak); const skalViseFeilmelding = !erGyldig && !minstEtTiltakErValgt; //brukes som data for sammenligning av søknadsversjoner for å ikke markere en forskjell hvis innholdet er likt, men plantypen er ulik const tiltakForSammenligning = plantype === PLANTYPE_GENERELL ? forrigeSoknadKopi?.vegarbeid?.vegarbeidsbeskrivelse ?.generelleTiltak : forrigeSoknadKopi?.vegarbeid?.vegarbeidsbeskrivelse ?.spesielleTiltak; const fjernSkisserFraAlleTiltak = ( tiltakListe?: Record ) => { if (!tiltakListe) { return; } Object.values(tiltakListe).forEach((tiltak) => { tiltak?.alternativer?.forEach((alternativ) => { alternativ.vedlagteSkisserIder = []; }); }); }; fjernSkisserFraAlleTiltak(tiltakKopi); fjernSkisserFraAlleTiltak(tiltakForSammenligning); const harSlettetTiltak = !!tiltakForSammenligning && erTiltakSlettet(tiltakForSammenligning, tiltak); if (plantype === PLANTYPE_GENERELL) { return ( {/* @ts-ignore */} ); } else if (plantype === PLANTYPE_SPESIELL) { return ( {/* @ts-ignore */} ); } console.info( `Finnes ikke tiltaksoppsummering for tiltak som ikke er i plantype generell eller spesiell` ); return null; } export default Tiltaksoppsummering;