import React from 'react';
import {
	garanterObjekt,
	GyldighetsRegistrerer,
	ledetekst,
	OppsummeringBlokk,
	PLANTYPE_GENERELL,
	useOppsummering,
} from '..';
import { validerArbeidsbeskrivelse } from '../validering/ArbeidsbeskrivelseValidering';
import ArbeidIBevegelseOppsummering from './arbeidsbeskrivelse/ArbeidIBevegelseOppsummering';
import Arbeidstypeoppsummering from './arbeidsbeskrivelse/Arbeidstypeoppsummering';
import BeredskapOppsummering from './arbeidsbeskrivelse/BeredskapOppsummering';
import Tiltaksoppsummering from './arbeidsbeskrivelse/Tiltaksoppsummering';
import { TrafikantgrupperOppsummering } from './arbeidsbeskrivelse/TrafikantgrupperOppsummering';
import { TilbakemeldingForSteg } from './tilbakemelding/TilbakemeldingForSteg';

function ArbeidsbeskrivelseOppsummering() {
	const {
		vegarbeid,
		id: soknadId,
		kunLesbar,
		gyldighet,
		plantype,
		soknad,
		forrigeSoknad,
	} = useOppsummering();
	const vegarbeidsbeskrivelse = vegarbeid.vegarbeidsbeskrivelse || {};
	const arbeidstype = getArbeidstypeEtterPlantype(
		vegarbeidsbeskrivelse,
		plantype
	);
	const { beredskapsplan, arbeidIBevegelse, trafikantgrupper } =
		vegarbeidsbeskrivelse;

	const tiltak =
		plantype === PLANTYPE_GENERELL
			? vegarbeidsbeskrivelse.generelleTiltak
			: vegarbeidsbeskrivelse.spesielleTiltak;
	const redigeringsLenke = !kunLesbar && `#/${soknadId}/vegarbeidbeskrivelse`;
	const valideringsfeil = !kunLesbar && validerArbeidsbeskrivelse(soknad);

	return (
		<>
			<TilbakemeldingForSteg steg="vegarbeidbeskrivelse" />
			<OppsummeringBlokk
				tittel={ledetekst.getTekst(
					'arbeidsvarsling.soknad.Soknadskomponent.kulepunkter.Vegarbeidbeskrivelse'
				)}
				redigeringsLenke={redigeringsLenke}
				valideringsfeil={valideringsfeil}
				ikon="ikon-tekst"
				ingenBakgrunn={true}
			>
				{!!plantype && (
					<>
						<Arbeidstypeoppsummering
							arbeidstype={arbeidstype}
							forrigeSoknad={forrigeSoknad}
						/>

						<BeredskapOppsummering
							beredskapsplan={beredskapsplan}
							forrigeSoknad={forrigeSoknad}
						/>

						<ArbeidIBevegelseOppsummering
							arbeidIBevegelse={arbeidIBevegelse}
							forrigeSoknad={forrigeSoknad}
						/>

						<TrafikantgrupperOppsummering
							trafikantgrupper={trafikantgrupper}
							forrigeSoknad={forrigeSoknad}
						/>

						<Tiltaksoppsummering
							tiltak={tiltak}
							forrigeSoknad={forrigeSoknad}
						/>
					</>
				)}
			</OppsummeringBlokk>
			<GyldighetsRegistrerer
				gyldighet={gyldighet.obligatorisk()}
				erGyldig={!valideringsfeil}
			/>
		</>
	);
}

export function getArbeidstypeEtterPlantype(vegarbeidsbeskrivelse, plantype) {
	return garanterObjekt(
		garanterObjekt(vegarbeidsbeskrivelse?.arbeidstype)[
			plantype === PLANTYPE_GENERELL ? 'generellPlan' : 'spesiellPlan'
		]
	);
}

export { ArbeidsbeskrivelseOppsummering };
