import { AufnahmeClient, BedarfsausweisWohnenClient, ObjektClient, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
import { Enums } from "#lib/client/prisma";
import moment from "moment";

export function getEmpfehlungen(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient): {
	title: string,
	description: string,
	anlagenteil: string,
	amortisationszeit: string,
	kosten: string
}[] {
	let Warmwasserrohre_gedaemmt       = aufnahme.warmwasser_rohre_gedaemmt;
	let Heizungsrohre_gedaemmt         = aufnahme.heizungsrohre_gedaemmt;
	let Waermepumpe                    = aufnahme.waermepumpe;
	let Kellerwand_gedaemmt            = aufnahme.keller_wand_gedaemmt;
	let Keller                         = aufnahme.keller;
	let Kellerdecke_Kalraeume_gedaemmt = aufnahme.keller_decke_gedaemmt;
	let Brennwertkessel                = aufnahme.brennwert_kessel;
	let baujahr_anlagesanlage          = aufnahme.baujahr_heizung && aufnahme.baujahr_heizung[0];
	let Zentralheizung                 = aufnahme.zentralheizung;
	let photovoltaik                   = aufnahme.photovoltaik;
	let Brennstoff                     = aufnahme.brennstoff_1;
	let Aussenwand_gedaemmt            = aufnahme.aussenwand_gedaemmt;
	let Dachgeschoss                   = aufnahme.dachgeschoss;
	let Dachgeschoss_gedaemmt          = aufnahme.dachgeschoss_gedaemmt;
	let Oberste_Geschossdecke_gedaemmt = aufnahme.oberste_geschossdecke_gedaemmt;
	let Einfachglas                    = aufnahme.einfach_verglasung;
	let Doppelfenster                  = aufnahme.doppel_verglasung;
	let Fenster_teilw_undicht          = aufnahme.fenster_teilweise_undicht;

	let empfehlungen = [];

	if (aufnahme.einfach_verglasung || (Doppelfenster && Fenster_teilw_undicht)) {
		empfehlungen.push({
			"title"       : "Erneuerung der Fenster",
			"description" : "Alte und undichte Fenster mit Wärmeschutzfenstern auswechseln.",
			"anlagenteil" : "Fenster",
			"amortisationszeit" : "15 Jahre",
			"kosten" : "3 €"
		});
	}

	if (aufnahme.dachgeschoss == Enums.Heizungsstatus.UNBEHEIZT && !Oberste_Geschossdecke_gedaemmt) {
		empfehlungen.push({
			"title"       : "Zusätzliche Dämmung des Fußbodens des kalten Dachraumes",
			"description" : "Beim Einbringen sollten mindestens 16cm Dämmstoff verarbeitet werden. Das Einsparpotenzial ist für jeden zusätzlichen cm Dämmung sehr hoch.",
			"anlagenteil" : "Dach",
			"amortisationszeit" : "5 Jahre",
			"kosten" : "1 €"
		});
	} else if (Dachgeschoss == Enums.Heizungsstatus.BEHEIZT && !Dachgeschoss_gedaemmt) {
		empfehlungen.push({
			"title"       : "Zusätzliche Dämmung des Daches bzw. Dachraumes",
			"description" : "Beim Einbringen sollten mindestens 16cm Dämmstoff, wenn möglich, verarbeitet werden. Das Einsparpotenzial ist für jeden zusätzlichen cm Dämmung sehr hoch.",
			"anlagenteil" : "Dach",
			"amortisationszeit" : "10 Jahre",
			"kosten" : "2 €"
		});
	}

	if (!Aussenwand_gedaemmt) {
		empfehlungen.push({
			"title"       : "Außenwand zusätzl. dämmen (z.B. Wärmedämmverbundsystem, Einblasdämmung, Dämmputz)",
			"description" : "Beim WDVS sollte man mit Dämmstärken ab 12cm planen. Bei zweischaligem Mauerwerk Luftschicht mit Einblasdämmung füllen. Bei historischen Fassaden kommt u.U. eine Innendämmung in Betracht",
			"anlagenteil" : "Außenwand gg. Außenluft",
			"amortisationszeit" : "30 Jahre",
			"kosten" : "6 €"
		});
	}

	let Relanlagenjahr = moment().year() - 35;

	if ((!Brennwertkessel && !Waermepumpe) && baujahr_anlagesanlage <= Relanlagenjahr && Brennstoff != 'Fernwärme' && Brennstoff != 'Strommix') {
		empfehlungen.push({
			"title"       : "Anlagentechnik",
			"description" : "Prüfen Sie, ob Sie bei einer Umrüstung auf einen regenerativen Anteil von 65% kommen. Bei energetisch sanierten Gebäuden z.B. Wärmepumpe. Bei unsanieten Gebäuden Fernwärmeanschluss.",
			"anlagenteil" : "Wärmeerzeuger",
			"amortisationszeit" : "10 Jahre",
			"kosten" : "2 €"
		});
	}

	if (!Kellerdecke_Kalraeume_gedaemmt && Keller == Enums.Heizungsstatus.UNBEHEIZT) {
		empfehlungen.push({
			"title"       : "Nachträgliche Dämmung der Kellerdecke",
			"description" : "Je nach Deckenhöhe, den vorhandenen Raum voll ausnutzen. Das Einsparpotenzial für jeden zusätzlichen cm Dämmung sehr hoch.",
			"anlagenteil" : "Kellerdecke",
			"amortisationszeit" : "5 Jahre",
			"kosten" : "1 €"
		});
	} else if (!Kellerwand_gedaemmt && Keller == Enums.Heizungsstatus.BEHEIZT) {
		empfehlungen.push({
			"title"       : "Nachträgliche Dämmung der Kellerwände",
			"description" : "Man sollte mit Dämmstärken ab 12cm planen. Das Einsparpotenzial für jeden zusätzlichen cm Dämmung sehr hoch.",
			"anlagenteil" : "Außenwand gg. Erdreich",
			"amortisationszeit" : "30 Jahre",
			"kosten" : "6 €"
		});
	}

	if (Zentralheizung) {
		if (!Warmwasserrohre_gedaemmt && !Heizungsrohre_gedaemmt) {
			empfehlungen.push({
				"title"       : "Anlagentechnik",
				"description" : "Heizungsrohre und Warmwasserrohre dämmen",
				"anlagenteil" : "Wärmeverteilung / -abgabe",
				"amortisationszeit" : "5 Jahre",
				"kosten" : "1 €"
			});
		} else if (Warmwasserrohre_gedaemmt && !Heizungsrohre_gedaemmt) {
			empfehlungen.push({
				"title"       : "Anlagentechnik",
				"description" : "Heizungsrohre dämmen",
				"anlagenteil" : "Wärmeverteilung / -abgabe",
				"amortisationszeit" : "5 Jahre",
				"kosten" : "1 €"
			});
		} else if (!Warmwasserrohre_gedaemmt && Heizungsrohre_gedaemmt) {
			empfehlungen.push({
				"title"       : "Anlagentechnik",
				"description" : "Warmwasserrohre dämmen",
				"anlagenteil" : "Wärmeverteilung / -abgabe",
				"amortisationszeit" : "5 Jahre",
				"kosten" : "1 €"
			});
		}
	}

	if ((baujahr_anlagesanlage <= (moment().year() - 30)) && (Brennstoff == "Heizöl" || Brennstoff == "Erdgas") && !Waermepumpe) {
		// Wärmepumpe
		empfehlungen.push({
			"title"       : "Wärmeerzeuger",
			"description" : "Prüfen Sie den zusätzlichen Einbau einer Luft-Wasser-Wärmepumpe. Mit einem Pufferspeicher und einer 75°C-Vorlauftemperatur-Wärmepumpe kann ein relevanter Anteil der Wärmeerzeugung abgedeckt werden.",
			"anlagenteil" : "Wärmeerzeuger",
			"amortisationszeit" : "10 Jahre",
			"kosten" : "2 €"
		});
	}

	if (!photovoltaik && Brennstoff == "Strommix") {
		// Wärmepumpe
		empfehlungen.push({
			"title"       : "Wärmeerzeuger",
			"description" : "PV-Anlage auf das Dach (für Energieunterstützung)",
			"anlagenteil" : "Wärmeerzeuger",
			"amortisationszeit" : "10 Jahre",
			"kosten" : "2 €"
		});
	}

	return empfehlungen;
}