import { AKTORTYPE_BYGGHERRE, AKTORTYPE_UTFOERENDE_ENTREPRENOER, AKTORTYPE_UTFOERENDE_ENTREPRENOER_VARSLING, AKTORTYPE_ANSVARSHAVENDE, AKTORTYPE_STEDSANSVARLIG, ledetekst, getEpostadresseAnsvarligVarsling, skalHaEpostadresseAnsvarligVarsling, } from '..'; import { Soknad } from '../domene/Soknad'; export function validerKontaktinformasjon(soknad: Soknad) { const forsendelsesversjon = soknad?.forsendelsesversjon ?? 0; const kontakter = soknad?.vegarbeid?.kontakter ?? []; const harByggherre = kontakter.filter((aktor) => aktor.aktortype === AKTORTYPE_BYGGHERRE) .length === 1; const harUtforendeEntreprenor = kontakter.filter( (aktor) => aktor.aktortype === AKTORTYPE_UTFOERENDE_ENTREPRENOER ).length === 1; function sjekkUtforendeEntreprenorVarslingEpostadresse(aktor) { if ( !skalHaEpostadresseAnsvarligVarsling( parseInt(forsendelsesversjon, 10) ) ) { return true; } return !!getEpostadresseAnsvarligVarsling(aktor); } const harUtforendeEntreprenorVarsling = kontakter.filter( (aktor) => aktor.aktortype === AKTORTYPE_UTFOERENDE_ENTREPRENOER_VARSLING && sjekkUtforendeEntreprenorVarslingEpostadresse(aktor) ).length === 1; const harAnsvarshavende = kontakter.filter( (aktor) => aktor.aktortype === AKTORTYPE_ANSVARSHAVENDE ).length === 1; const harStedsansvarlige = kontakter.filter( (aktor) => aktor.aktortype === AKTORTYPE_STEDSANSVARLIG ).length >= 1; const harBekreftetKompetanse = soknad?.vegarbeid?.erKompetanseBekreftet; if ( harByggherre && harUtforendeEntreprenor && harUtforendeEntreprenorVarsling && harAnsvarshavende && harStedsansvarlige && harBekreftetKompetanse ) { return ''; } return ledetekst.getTekst( 'arbeidsvarsling.soknad.Oppsummering.ufullstendig.kontaktinformasjon' ); }