import { erSann, garanterListe, getGenerellPlantype, ledetekst, PLANTYPE_GENERELL, PLANTYPE_SPESIELL, } from '..'; import { Soknad } from '../domene/Soknad'; const MINIMUM_ANTALL_VEGPOSISJONER = 2; function validerSpesiellPlan(arbeidssted: any = {}, vegarbeidssted: any = {}) { const arbeidsruter = garanterListe(arbeidssted.arbeidsruter).filter(erSann); const vegarbeidsposisjoner = garanterListe( vegarbeidssted.vegarbeidsposisjoner ); if ( arbeidsruter.length === 0 || arbeidsruter.some( (vegrute) => garanterListe(vegrute.vegposisjoner).length < MINIMUM_ANTALL_VEGPOSISJONER || garanterListe(vegrute.vegstrekninger).length === 0 ) || vegarbeidsposisjoner.length === 0 ) { return ledetekst.getTekst( 'arbeidsvarsling.soknad.Oppsummering.ufullstendig.spesiellPlan' ); } return ''; } // TODO Type opp vegarbeidssted function validerGenerellPlan(vegarbeidssted: any = {}) { const generellPlan = vegarbeidssted.omraadeGenerellPlan || {}; const harMinstEnVeitype = generellPlan.vegtyper && generellPlan.vegtyper.length > 0; const harStedfestetGenerellPlan = !!getGenerellPlantype(generellPlan); if ((harMinstEnVeitype && harStedfestetGenerellPlan) || generellPlan.kontraktsomraade !== undefined) { return ''; } return ledetekst.getTekst( 'arbeidsvarsling.soknad.Oppsummering.ufullstendig.generellPlan' ); } export function validerSted(soknad: Soknad) { const vegarbeidssted = soknad?.vegarbeid?.vegarbeidssted; const plantype = soknad?.vegarbeid?.plantype; const arbeidssted = soknad?.vegarbeid?.arbeidssted; if (plantype === PLANTYPE_GENERELL) { return validerGenerellPlan(vegarbeidssted); } if (plantype === PLANTYPE_SPESIELL) { return validerSpesiellPlan(arbeidssted, vegarbeidssted); } return ledetekst.getTekst( 'arbeidsvarsling.soknad.Oppsummering.ufullstendig.plantype' ); }