64 lines
1.6 KiB
TypeScript
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
|
|
};
|
|
} |