import { ObjektClient, VerbrauchsausweisWohnenClient, AufnahmeClient, VerbrauchsausweisGewerbeClient } 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 | VerbrauchsausweisGewerbeClient, objekt: ObjektClient, aufnahme: AufnahmeClient): Promise<boolean> {
    if (hidden.has(AuditType.END_ENERGIE)) {
        return false;
    }
    //sobald Fläche, Klimafaktoren und alle Verbrauchsjahre eingegeben wurden.
    if (aufnahme){
        if (aufnahme.flaeche && ausweis.verbrauch_1 && ausweis.verbrauch_2 && ausweis.verbrauch_3) {
            try {
                const response = await getKlimafaktoren(ausweis.startdatum, objekt.plz);
                // Alle Klimfaktoren konnten abgefragt werden.
                const eevva = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt);
                if (eevva){
                    if (eevva?.endEnergieVerbrauchGesamt <= 45 || eevva?.endEnergieVerbrauchGesamt >= 500) {
                        return true;
                    }
                }
            } catch (e) {
            }
        }
    }
    return false;
}