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;