import { AufnahmeClient, ObjektClient, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
import { AuditType, hidden } from "./hidden.js";

export function auditVerbrauchAbweichung(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient, aufnahme: AufnahmeClient): number[] {
	if (aufnahme.leerstand && (aufnahme.leerstand > 0)) {
		return [];
	}

	if (hidden.has(AuditType.VERBRAUCH_ABWEICHUNG)) {
		return [];
	}

	if (getAbweichung(ausweis.verbrauch_1 || 0, ausweis.verbrauch_2 || 0) > 0.30) {
		return [1, 2];
	}

	if (getAbweichung(ausweis.verbrauch_2 || 0, ausweis.verbrauch_3 || 0) > 0.30) {
		return [2, 3];
	}

	if (getAbweichung(ausweis.verbrauch_4 || 0, ausweis.verbrauch_5 || 0) > 0.30) {
		return [4, 5];
	}

	if (getAbweichung(ausweis.verbrauch_5 || 0, ausweis.verbrauch_6 || 0) > 0.30) {
		return [5, 6];
	}

	return [];
}

function getAbweichung(x: number, y: number): number {
	return Math.abs((x - y) / ((x + y) / 2));
}