import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
import { faker } from "@faker-js/faker";
import { Enums } from "#lib/client/prisma";
import moment from "moment";

export async function importVerbrauchsausweisWohnenAltesSystem(count: number = 5) {
	const response = await fetch("https://online-energieausweis.org/user/ausweis-import.php", {
		method: "POST",
		body: JSON.stringify({
			i: count,
			offset: 0,
			q: {}
		})
	})

	const data = await response.json();

	return data
}

export function verbrauchsausweisWohnenImportTranslate(ausweis: Record<string, any>) {
	const ausweisTranslated: VerbrauchsausweisWohnenClient = {
		aufnahme: {
			rechnungen: null,
			baujahr_gebaeude: [ausweis.baujahr_gebaeude],
			baujahr_heizung: [ausweis.baujahr_anlage],
			baujahr_klima: [ausweis.baujahr_klimaanlage],
			adresse: ausweis.objekt_strasse,
			plz: ausweis.objekt_plz,
			ort: ausweis.objekt_ort,
			nutzflaeche: ausweis.nutzflaeche,
			einheiten: ausweis.anzahl_einheiten,
			saniert: ausweis.objekt_saniert,
			keller: ausweis.keller_beheizt == "Beheizt" ? Enums.Heizungsstatus.BEHEIZT : ausweis.keller_beheizt == "Unbeheizt" ? Enums.Heizungsstatus.UNBEHEIZT : Enums.Heizungsstatus.NICHT_VORHANDEN,
			dachgeschoss: ausweis.dachgeschoss == "Beheizt" ? Enums.Heizungsstatus.BEHEIZT : ausweis.dachgeschoss == "Unbeheizt" ? Enums.Heizungsstatus.UNBEHEIZT : Enums.Heizungsstatus.NICHT_VORHANDEN,
			flaeche: ausweis.wohnflaeche,
			gebaeudetyp: ausweis.objekt_typ,
			gebaeudeteil: ausweis.objekt_gebaeudeteil,
			lueftung: ausweis.lueftungskonzept,
			kuehlung: ausweis.wird_gekuehlt,
			objekt: {
				adresse: ausweis.objekt_strasse,
				plz: ausweis.objekt_plz,
				ort: ausweis.objekt_ort,
				uid: faker.string.uuid(),
				bilder: [],
				latitude: null,
				longitude: null,
			},
			brennstoff_1: ausweis.energietraeger_1,
			brennstoff_2: ausweis.energietraeger_2,
			alternative_heizung: ausweis.alheizung,
			alternative_kuehlung: ausweis.alkuehlung,
			alternative_lueftung: ausweis.allueftung,
			alternative_warmwasser: ausweis.alwarmwasser,
			ausweisart: Enums.Ausweisart.VerbrauchsausweisWohnen,
			energieeffizienzklasse: "",
			aussenwand_gedaemmt: ausweis.aussenwand_gedaemmt,
			aussenwand_min_12cm_gedaemmt: ausweis.aussenwand_min_12cm_gedaemmt,
			bestellt: ausweis.bestellt,
			boxpruefung: ausweis.boxpruefung,
			brennwert_kessel: ausweis.brennwert_kessel,
			dachgeschoss_gedaemmt: ausweis.dachgeschoss_gedaemmt,
			dachgeschoss_min_12cm_gedaemmt: ausweis.dachgeschoss_min_12cm_gedaemmt,
			doppel_verglasung: ausweis.doppel_verglasung,
			dreifach_verglasung: ausweis.dreifach_verglasung,
			durchlauf_erhitzer: ausweis.durchlauf_erhitzer,
			einfach_verglasung: ausweis.einfach_verglasung,
			einzelofen: ausweis.einzelofen,
			erledigt: ausweis.erledigt,
			erstellungsdatum: ausweis.erstellungsdatum,
			fenster_dicht: ausweis.fenster_dicht,
			fenster_teilweise_undicht: ausweis.fenster_teilweise_undicht,
			heizungsrohre_gedaemmt: ausweis.heizungsrohre_gedaemmt,
			isolier_verglasung: ausweis.isolier_verglasung,
			keller_decke_gedaemmt: ausweis.keller_decke_gedaemmt,
			keller_wand_gedaemmt: ausweis.keller_wand_gedaemmt,
			niedertemperatur_kessel: ausweis.niedertemperatur_kessel,
			oberste_geschossdecke_gedaemmt: ausweis.oberste_geschossdecke_gedaemmt,
			oberste_geschossdecke_min_12cm_gedaemmt: ausweis.oberste_geschossdecke_min_12cm_gedaemmt,
			raum_temperatur_regler: ausweis.raum_temperatur_regler,
			rolllaeden_kaesten_gedaemmt: ausweis.rolllaeden_kaesten_gedaemmt,
			solarsystem_warmwasser: ausweis.solarsystem_warmwasser,
			standard_kessel: ausweis.standard_kessel,
			waermepumpe: ausweis.waermepumpe,
			warmwasser_rohre_gedaemmt: ausweis.warmwasser_rohre_gedaemmt,
			zentralheizung: ausweis.zentralheizung,
			zirkulation: ausweis.zirkulation,
			photovoltaik: ausweis.photovoltaik,
			leerstand: ausweis.leerstand,
			prueftext: ausweis["check-texts"],
			
			storniert: false,
			tueren_dicht: ausweis.tueren_dicht,
			tueren_undicht: ausweis.tueren_undicht,
			zurueckgestellt: ausweis.zurueckGestellt,
			uid: faker.string.uuid(),
			events: []
		},
		verbrauch_1: parseInt(ausweis.energieverbrauch_1_heizquelle_1),
		verbrauch_2: parseInt(ausweis.energieverbrauch_2_heizquelle_1),
		verbrauch_3: parseInt(ausweis.energieverbrauch_3_heizquelle_1),
		verbrauch_4: parseInt(ausweis.energieverbrauch_1_heizquelle_2),
		verbrauch_5: parseInt(ausweis.energieverbrauch_2_heizquelle_2),
		verbrauch_6: parseInt(ausweis.energieverbrauch_3_heizquelle_2),
		einheit_1: ausweis.energietraeger_einheit_heizquelle_1,
		einheit_2: ausweis.energietraeger_einheit_heizquelle_2,
		warmwasser_enthalten: ausweis.warmwasser_enthalten,
		uid: faker.string.uuid(),
		alternative_heizung: ausweis.alheizung,
		alternative_kuehlung: ausweis.alkuehlung,
		alternative_lueftung: ausweis.allueftung,
		alternative_warmwasser: ausweis.alwarmwasser,
		anteil_warmwasser_1: ausweis.anteil_warmwasser_1,
		anteil_warmwasser_2: ausweis.anteil_warmwasser_2,
		ausstellgrund: ausweis.ausstellgrund,
		ausstellungsdatum: moment(ausweis.bestelldatum).toDate(),
		
		erledigt: ausweis.erledigt,
		erstellungsdatum: moment(ausweis.erstellungsdatum).toDate(),
		keller_beheizt: ausweis.keller_beheizt,
		registriernummer: ausweis.regnummer,
		// Der Monat im alten System ist 1-basiert, in der neuen Datenbank 0-basiert
		// Also müssen wir hier 1 abziehen
		startdatum: moment(`${ausweis.energieverbrauch_zeitraum_jahr}-${ausweis.energieverbrauch_zeitraum_monat}-01`).toDate(),
		
		warmwasser_anteil_bekannt: ausweis.warmwasser_anteil_bekannt,
		wird_gekuehlt: ausweis.wird_gekuehlt,
		zusaetzliche_heizquelle: ausweis.zusaetzliche_heizquelle,
	}

	return ausweisTranslated
}