import { Alternativer, Tiltak } from '../../domene/Soknad'; import { finnesElementIListe } from '../utils'; import _ from 'lodash'; export function erTiltakEndret( tiltakForSammenligning: Record, alternativ: Alternativer, key: string ) { const harTiltakForSammenligning = tiltakForSammenligning && Object.keys(tiltakForSammenligning).length > 0; if (!harTiltakForSammenligning) { return false; } const alternativerForSammenligning = tiltakForSammenligning[key]?.alternativer; if (!alternativerForSammenligning) { return true; } const harFeltForEkstraSpoersmaalValgt = alternativerForSammenligning?.some( (alt) => alt.ekstraSpoersmaalValgt === true || alt.ekstraSpoersmaalValgt === false ); if (!harFeltForEkstraSpoersmaalValgt) { // Feltet ekstraSpoersmaalValgt finnes kun for nyere versjoner av tiltak. // Ignorerer dette feltet med mindre det er satt til true i siste søknad versjon. return ( alternativ.ekstraSpoersmaalValgt == true || !finnesElementIListe( _.omit(alternativ, ['ekstraSpoersmaalValgt']), alternativerForSammenligning.map((alt) => _.omit(alt, ['ekstraSpoersmaalValgt']) ) ) ); } return !finnesElementIListe(alternativ, alternativerForSammenligning); } export function erTiltakSlettet( tiltakForSammenligning: Record, tiltak: Record ) { const tiltakErLike = Object.entries(tiltakForSammenligning).every( ([kategoriNavn, kategori]) => { if (tiltak[kategoriNavn]) { const alternativerForSammenligning = kategori.alternativer.filter( (alternativForSammenligning) => alternativForSammenligning.valgt ); const alternativer = tiltak[kategoriNavn].alternativer.filter( (alternativ) => alternativ.valgt ); return alternativerForSammenligning.every( (alternativForSammenligning) => alternativer.some( (alternativ) => alternativ.felt === alternativForSammenligning.felt ) ); } else { return false; } } ); return !tiltakErLike; }