Files
online-energieausweis/src/lib/VerbrauchsausweisWohnen/calculateFormProgress.ts
2024-02-27 12:52:45 +07:00

64 lines
1.6 KiB
TypeScript

import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
type AusweisError = {
title: string,
description: string,
severity: "error" | "warning",
resolvehref?: string
}
/**
* Berechnet den Fortschritt im Formular anhand bestimmter Faktoren
* Gibt den Fortschritt in Prozent zurück.
* @param ausweis Der Verbrauchsausweis
* @returns Der Fortschritt in Prozent sowie ein Array mit gefundenen Fehlern
*/
export function verbrauchsausweisWohnenCalculateFormProgress(ausweis: VerbrauchsausweisWohnenClient): {
progress: number;
errors: AusweisError[];
} {
let progress = 0;
const errors: AusweisError[] = [];
if (ausweis.erledigt) {
// Der Ausweis wurde ausgestellt, also ist der Fortschritt 100%
return {
progress: 100,
errors: []
};
} else if (ausweis.gebaeude_aufnahme_allgemein.storniert) {
// Der Ausweis wurde storniert, also ist der Fortschritt 0%
return {
progress: 0,
errors: []
};
}
if (ausweis.gebaeude_aufnahme_allgemein.baujahr_gebaeude.length === 0) {
errors.push({
title: "Fehlendes Baujahr",
description: "Eines ihrer Gebäude hat noch kein Baujahr angegeben. Beheben sie dies indem sie auf den untenstehenden Link klicken.",
severity: "warning",
resolvehref: `/energieausweis-erstellen/verbrauchsausweis-wohnen?uid=${ausweis.uid}`
});
}
if (ausweis.gebaeude_aufnahme_allgemein.adresse) {
progress += 5;
}
if (ausweis.gebaeude_aufnahme_allgemein.ort) {
progress += 5;
}
if (ausweis.verbrauch_1 && ausweis.verbrauch_2 && ausweis.verbrauch_3) {
progress += 5;
}
return {
progress,
errors
};
}