import FensterImage from "#components/Ausweis/FensterImage.svelte";
import { funktionSolareBestrahlungsEnergieT17 } from "#lib/Berechnungen/BedarfsausweisWohnen/funktionSolareBestrahlungsEnergieT17.js";

export function A7A2BerechnungWaermequellenSolareEinstrahlung() {
       
    const ErgebnisseJanuar: number[][] = [];
    const ErgebnisseMonatsWerteJanuar: number[][] = [];
    const ErgebnisseFebruar: number[][] = [];
    const ErgebnisseMonatsWerteFebruar: number[][] = [];
    const ErgebnisseMaerz: number[][] = [];
    const ErgebnisseMonatsWerteMaerz: number[][] = [];
    const ErgebnisseApril: number[][] = [];
    const ErgebnisseMonatsWerteApril: number[][] = [];
    const ErgebnisseMai: number[][] = [];
    const ErgebnisseMonatsWerteMai: number[][] = [];
    const ErgebnisseJuni: number[][] = [];
    const ErgebnisseMonatsWerteJuni: number[][] = [];
    const ErgebnisseJuli: number[][] = [];
    const ErgebnisseMonatsWerteJuli: number[][] = [];
    const ErgebnisseAugust: number[][] = [];
    const ErgebnisseMonatsWerteAugust: number[][] = [];
    const ErgebnisseSeptember: number[][] = [];
    const ErgebnisseMonatsWerteSeptember: number[][] = [];
    const ErgebnisseOktober: number[][] = [];
    const ErgebnisseMonatsWerteOktober: number[][] = [];
    const ErgebnisseNovember: number[][] = [];
    const ErgebnisseMonatsWerteNovember: number[][] = [];
    const ErgebnisseDezember: number[][] = [];
    const ErgebnisseMonatsWerteDezember: number[][] = [];
    const ErgebnisseWirksamerGesamtEnergieDurchlassGrad: number[][] = [];

    // Aus Planung. Hier könnten auch die Werte für den Wintergarten stehen

    const PlanungswerteBauteil = [
        {
            Art: "Fenster",
            Flaeche: 18.91,
            WaermeDurchgangsKoeffizient: 0.95,
            Neigung: 90,
            GesamtEnergieDurchlassGrad: 0.6,
            RahmenAnteil: 0.7,
            StrahlungsEinfluss: 0.9,
            Verschattung: 0.9,
            TemperaturKorrekturFaktor: 1,
            Orientierung: "West"
        },
        {
            Art: "Fenster",
            Flaeche: 19.62,
            WaermeDurchgangsKoeffizient: 0.95,
            Neigung: 90,
            GesamtEnergieDurchlassGrad: 0.6,
            RahmenAnteil: 0.7,
            StrahlungsEinfluss: 0.9,
            Verschattung: 0.9,
            TemperaturKorrekturFaktor: 1,
            Orientierung: "Süd"
        },
        {
            Art: "Fenster",
            Flaeche: 2.97,
            WaermeDurchgangsKoeffizient: 0.95,
            Neigung: 90,
            GesamtEnergieDurchlassGrad: 0.6,
            RahmenAnteil: 0.7,
            StrahlungsEinfluss: 0.9,
            Verschattung: 0.9,
            TemperaturKorrekturFaktor: 1,
            Orientierung: "Nord"
        },
        {
            Art: "Fenster",
            Flaeche: 4.3,
            WaermeDurchgangsKoeffizient: 0.95,
            Neigung: 90,
            GesamtEnergieDurchlassGrad: 0.6,
            RahmenAnteil: 0.7,
            StrahlungsEinfluss: 0.9,
            Verschattung: 0.9,
            TemperaturKorrekturFaktor: 1,
            Orientierung: "Ost"
        }
    ];

    // Berechnung der solaren Wärmequellen pro Fenster und Monat

    PlanungswerteBauteil.forEach(item => {
        const MonatsWerte = funktionSolareBestrahlungsEnergieT17(item.Neigung, item.Orientierung);
        if (MonatsWerte) {
            const SolareWaermequelleJanuar = MonatsWerte.jan * item.Flaeche * item.RahmenAnteil * item.GesamtEnergieDurchlassGrad * item.StrahlungsEinfluss * item.Verschattung;
            const MonatsWerteJanuar = MonatsWerte.jan;
            const SolareWaermequelleFebruar = MonatsWerte.feb * item.Flaeche * item.RahmenAnteil * item.GesamtEnergieDurchlassGrad * item.StrahlungsEinfluss * item.Verschattung;
            const MonatsWerteFebruar = MonatsWerte.feb;
            const SolareWaermequelleMaerz = MonatsWerte.mrz * item.Flaeche * item.RahmenAnteil * item.GesamtEnergieDurchlassGrad * item.StrahlungsEinfluss * item.Verschattung;
            const MonatsWerteMaerz = MonatsWerte.mrz;
            const SolareWaermequelleApril = MonatsWerte.apr * item.Flaeche * item.RahmenAnteil * item.GesamtEnergieDurchlassGrad * item.StrahlungsEinfluss * item.Verschattung;
            const MonatsWerteApril = MonatsWerte.apr;
            const SolareWaermequelleMai = MonatsWerte.mai * item.Flaeche * item.RahmenAnteil * item.GesamtEnergieDurchlassGrad * item.StrahlungsEinfluss * item.Verschattung;
            const MonatsWerteMai = MonatsWerte.mai;
            const SolareWaermequelleJuni = MonatsWerte.jun * item.Flaeche * item.RahmenAnteil * item.GesamtEnergieDurchlassGrad * item.StrahlungsEinfluss * item.Verschattung;
            const MonatsWerteJuni = MonatsWerte.jun;
            const SolareWaermequelleJuli = MonatsWerte.jul * item.Flaeche * item.RahmenAnteil * item.GesamtEnergieDurchlassGrad * item.StrahlungsEinfluss * item.Verschattung;
            const MonatsWerteJuli = MonatsWerte.jul;
            const SolareWaermequelleAugust = MonatsWerte.aug * item.Flaeche * item.RahmenAnteil * item.GesamtEnergieDurchlassGrad * item.StrahlungsEinfluss * item.Verschattung;
            const MonatsWerteAugust = MonatsWerte.aug;
            const SolareWaermequelleSeptember = MonatsWerte.sep * item.Flaeche * item.RahmenAnteil * item.GesamtEnergieDurchlassGrad * item.StrahlungsEinfluss * item.Verschattung;
            const MonatsWerteSeptember = MonatsWerte.sep;
            const SolareWaermequelleOktober = MonatsWerte.okt * item.Flaeche * item.RahmenAnteil * item.GesamtEnergieDurchlassGrad * item.StrahlungsEinfluss * item.Verschattung;
            const MonatsWerteOktober = MonatsWerte.okt;
            const SolareWaermequelleNovember = MonatsWerte.nov * item.Flaeche * item.RahmenAnteil * item.GesamtEnergieDurchlassGrad * item.StrahlungsEinfluss * item.Verschattung;
            const MonatsWerteNovember = MonatsWerte.nov;
            const SolareWaermequelleDezember = MonatsWerte.dez * item.Flaeche * item.RahmenAnteil * item.GesamtEnergieDurchlassGrad * item.StrahlungsEinfluss * item.Verschattung;
            const MonatsWerteDezember = MonatsWerte.dez;

            ErgebnisseJanuar.push(SolareWaermequelleJanuar);
            ErgebnisseMonatsWerteJanuar.push(MonatsWerteJanuar);
            ErgebnisseFebruar.push(SolareWaermequelleFebruar);
            ErgebnisseMonatsWerteFebruar.push(MonatsWerteFebruar);
            ErgebnisseMaerz.push(SolareWaermequelleMaerz);
            ErgebnisseMonatsWerteMaerz.push(MonatsWerteMaerz);
            ErgebnisseApril.push(SolareWaermequelleApril);
            ErgebnisseMonatsWerteApril.push(MonatsWerteApril);
            ErgebnisseMai.push(SolareWaermequelleMai);
            ErgebnisseMonatsWerteMai.push(MonatsWerteMai);
            ErgebnisseJuni.push(SolareWaermequelleJuni);
            ErgebnisseMonatsWerteJuni.push(MonatsWerteJuni);
            ErgebnisseJuli.push(SolareWaermequelleJuli);
            ErgebnisseMonatsWerteJuli.push(MonatsWerteJuli);
            ErgebnisseAugust.push(SolareWaermequelleAugust);
            ErgebnisseMonatsWerteAugust.push(MonatsWerteAugust);
            ErgebnisseSeptember.push(SolareWaermequelleSeptember);
            ErgebnisseMonatsWerteSeptember.push(MonatsWerteSeptember);
            ErgebnisseOktober.push(SolareWaermequelleOktober);
            ErgebnisseMonatsWerteOktober.push(MonatsWerteOktober);
            ErgebnisseNovember.push(SolareWaermequelleNovember);
            ErgebnisseMonatsWerteNovember.push(MonatsWerteNovember);
            ErgebnisseDezember.push(SolareWaermequelleDezember);
            ErgebnisseMonatsWerteDezember.push(MonatsWerteDezember);

           

        }
        const WirksamerGesamtEnergieDurchlassGrad = item.GesamtEnergieDurchlassGrad * item.StrahlungsEinfluss * item.Verschattung;
        ErgebnisseWirksamerGesamtEnergieDurchlassGrad.push(WirksamerGesamtEnergieDurchlassGrad);


    });
    

    const summeErgebnisseJanuar = ErgebnisseJanuar.reduce((acc, val) => acc + val, 0);
    const summeErgebnisseFebruar = ErgebnisseFebruar.reduce((acc, val) => acc + val, 0);
    const summeErgebnisseMaerz = ErgebnisseMaerz.reduce((acc, val) => acc + val, 0);
    const summeErgebnisseApril = ErgebnisseApril.reduce((acc, val) => acc + val, 0);
    const summeErgebnisseMai = ErgebnisseMai.reduce((acc, val) => acc + val, 0);
    const summeErgebnisseJuni = ErgebnisseJuni.reduce((acc, val) => acc + val, 0);
    const summeErgebnisseJuli = ErgebnisseJuli.reduce((acc, val) => acc + val, 0);
    const summeErgebnisseAugust = ErgebnisseAugust.reduce((acc, val) => acc + val, 0);
    const summeErgebnisseSeptember = ErgebnisseSeptember.reduce((acc, val) => acc + val, 0);
    const summeErgebnisseOktober = ErgebnisseOktober.reduce((acc, val) => acc + val, 0);
    const summeErgebnisseNovember = ErgebnisseNovember.reduce((acc, val) => acc + val, 0);
    const summeErgebnisseDezember = ErgebnisseDezember.reduce((acc, val) => acc + val, 0);

    const summeErgebnisseJahr = summeErgebnisseJanuar + summeErgebnisseFebruar + summeErgebnisseMaerz + 
    summeErgebnisseApril + summeErgebnisseMai + summeErgebnisseJuni + summeErgebnisseJuli + 
    summeErgebnisseAugust + summeErgebnisseSeptember + summeErgebnisseOktober + summeErgebnisseNovember + 
    summeErgebnisseDezember;

    const summeFlaeche = PlanungswerteBauteil.reduce((acc, val) => acc + val.Flaeche, 0);
    
    return {
        PlanungswerteBauteil,
        ErgebnisseJanuar,
        ErgebnisseMonatsWerteJanuar,
        ErgebnisseFebruar,
        ErgebnisseMonatsWerteFebruar,
        ErgebnisseMaerz,
        ErgebnisseMonatsWerteMaerz,
        ErgebnisseApril,
        ErgebnisseMonatsWerteApril,
        ErgebnisseMai,
        ErgebnisseMonatsWerteMai,
        ErgebnisseJuni,
        ErgebnisseMonatsWerteJuni,
        ErgebnisseJuli,
        ErgebnisseMonatsWerteJuli,
        ErgebnisseAugust,
        ErgebnisseMonatsWerteAugust,
        ErgebnisseSeptember,
        ErgebnisseMonatsWerteSeptember,
        ErgebnisseOktober,
        ErgebnisseMonatsWerteOktober,
        ErgebnisseNovember,
        ErgebnisseMonatsWerteNovember,
        ErgebnisseDezember,
        ErgebnisseMonatsWerteDezember,
        summeErgebnisseJanuar,
        summeErgebnisseFebruar,
        summeErgebnisseMaerz,
        summeErgebnisseApril,
        summeErgebnisseMai,
        summeErgebnisseJuni,
        summeErgebnisseJuli,
        summeErgebnisseAugust,
        summeErgebnisseSeptember,
        summeErgebnisseOktober,
        summeErgebnisseNovember,
        summeErgebnisseDezember,
        summeErgebnisseJahr,
        ErgebnisseWirksamerGesamtEnergieDurchlassGrad,
        summeFlaeche,
    }
}
