import { A12BerechnungNutzenergiebedarfHeizung } from "#lib/Berechnungen/BedarfsausweisWohnen/A12BerechnungNutzenergiebedarfHeizung.js";
import { BedarfsausweisWohnenClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
import { FixedLengthArray } from "./types.js";

export function A13BerechnungRechnerischeLaufzeitHeizung() {
	const result = A12BerechnungNutzenergiebedarfHeizung();
	const heizstunden = {
		Januar: result.heizstundenJanuar,
		Februar: result.heizstundenFebruar,
		Maerz: result.heizstundenMärz,
		April: result.heizstundenApril,
		Mai: result.heizstundenMai,
		Juni: result.heizstundenJuni,
		Juli: result.heizstundenJuli,
		August: result.heizstundenAugust,
		September: result.heizstundenSeptember,
		Oktober: result.heizstundenOktober,
		November: result.heizstundenNovember,
		Dezember: result.heizstundenDezember
	};



	const gebaeudetyp = "Einfamilienhaus";

	const faktorWochenendAbschaltung = 0.042;
	const zeitkonstanteRechnerischeLaufzeitEinfamilienhaus: FixedLengthArray<number, 12> = [17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17];
	const zeitkonstanteRechnerischeLaufzeitMehrfamilienhaus: FixedLengthArray<number, 12> = [19.86, 18.58, 18.69, 17.25, 17, 17, 17, 17, 17, 17.16, 18.88, 19.9];

	let rechnerischeLaufzeiten = new Array(12).fill(0) as unknown as FixedLengthArray<number, 12>

	if (gebaeudetyp === "Einfamilienhaus") {
		for (let i = 0; i < 12; i++) {
			rechnerischeLaufzeiten[i] = heizstunden[Object.keys(heizstunden)[i]] * faktorWochenendAbschaltung * zeitkonstanteRechnerischeLaufzeitEinfamilienhaus[i]
		}
	} else {
		for (let i = 0; i < 12; i++) {
			rechnerischeLaufzeiten[i] = heizstunden[Object.keys(heizstunden)[i]] * faktorWochenendAbschaltung * zeitkonstanteRechnerischeLaufzeitMehrfamilienhaus[i]
		}
	}

	const heizstundenGesamt = Object.values(heizstunden).reduce((acc, value) => acc + value, 0);

	return {
		rechnerischeLaufzeitGesamt: rechnerischeLaufzeiten.reduce((acc, curr) => acc + curr, 0),
		rechnerischeLaufzeiten,
		heizstunden,
		heizstundenGesamt
	}
}