import { GebaeudeClient, VerbrauchsausweisWohnenClient, GebaeudeAufnahmeClient } from "#components/Ausweis/types.js";
import { AuditType, hidden } from "./hidden.js";
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016.js";
import { getKlimafaktoren } from "#lib/Klimafaktoren.js";

export async function auditEndEnergie(ausweis: VerbrauchsausweisWohnenClient, gebaeude: GebaeudeClient, gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient): Promise<boolean> {
    if (hidden.has(AuditType.END_ENERGIE)) {
        return false;
    }
    //sobald Fläche, Klimafaktoren und alle Verbrauchsjahre eingegeben wurden.
    if (gebaeude_aufnahme_allgemein){
        if (gebaeude_aufnahme_allgemein.flaeche && ausweis.verbrauch_1 && ausweis.verbrauch_2 && ausweis.verbrauch_3) {
            try {
                const response = await getKlimafaktoren(ausweis.startdatum, gebaeude.plz);
                // Alle Klimfaktoren konnten abgefragt werden.
                const eevva = await endEnergieVerbrauchVerbrauchsausweis_2016({...ausweis, gebaeude_aufnahme_allgemein: {...gebaeude_aufnahme_allgemein, gebaeude_stammdaten: gebaeude}});
                if (eevva){
                    if (eevva?.endEnergieVerbrauchGesamt <= 45 || eevva?.endEnergieVerbrauchGesamt >= 500) {
                        return true;
                    }
                }
            } catch (e) {
            }
        }
    }
    return false;
}