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.aufnahme.storniert) {
		// Der Ausweis wurde storniert, also ist der Fortschritt 0%
		return {
			progress: 0,
			errors: []
		};
	}

	if (ausweis.aufnahme.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-wohngebaeude?uid=${ausweis.uid}`
		});
	
	}

	if (ausweis.aufnahme.adresse) {
		progress += 5;
	}

	if (ausweis.aufnahme.ort) {
		progress += 5;
	}

	if (ausweis.verbrauch_1 && ausweis.verbrauch_2 && ausweis.verbrauch_3) {
		progress += 5;
	}


	return {
		progress,
		errors
	};
}