"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.cast_de_nrw_schule_svws_core_abschluss_AbschlussManagerBerufsbildend = exports.AbschlussManagerBerufsbildend = void 0;
const JavaObject_1 = require("../../java/lang/JavaObject");
const AbschlussErgebnisBerufsbildend_1 = require("../../core/data/abschluss/AbschlussErgebnisBerufsbildend");
class AbschlussManagerBerufsbildend extends JavaObject_1.JavaObject {
    constructor() {
        super();
    }
    /**
     * Erzeugt ein Ergebnis der Abschlussberechnung unter Angabe, ob dieser erworben
     * wurde. Die Liste der Nachprüfungsfächer ist leer und ein Log ist nicht zugeordnet.
     *
     * @param hatBSA                      ist der Berufsschulabschluss erreicht
     * @param note                        Note des Abschlusses
     * @param hatBA                       ist der Berufsabschluss erreicht
     * @param abschlussAllgemeinbildend   der allgemeinbildende Abschluss
     *
     * @return das Ergebnis der Abschlussberechnung
     */
    static getErgebnis(hatBSA, note, hatBA, abschlussAllgemeinbildend) {
        let ergebnis = new AbschlussErgebnisBerufsbildend_1.AbschlussErgebnisBerufsbildend();
        ergebnis.hatBSA = hatBSA;
        ergebnis.note = note;
        ergebnis.hatBA = hatBA;
        ergebnis.abschlussAllgemeinbildend = (abschlussAllgemeinbildend === null) ? null : abschlussAllgemeinbildend.toString();
        ergebnis.log = null;
        return ergebnis;
    }
    /**
     * Berechnet den Notendurchschnitt aller Fächer
     *
     * @param abschluss_faecher   die Fächer für die Abschlussberechnung
     *
     * @return der Notendurchschnitt oder NaN im Fehlerfall
     */
    static getDurchschnitt(abschluss_faecher) {
        if ((abschluss_faecher.faecher === null) || (abschluss_faecher.faecher.size() === 0))
            return NaN;
        let sum = 0;
        for (let fach of abschluss_faecher.faecher) {
            sum += fach.note;
        }
        return sum / abschluss_faecher.faecher.size();
    }
    /**
     * Berechnet die Anzahl der Defizite
     *
     * @param abschluss_faecher   die Fächer für die Abschlussberechnung
     *
     * @return die Anzahl der Defizite oder -1 im Fehlerfall
     */
    static getAnzahlDefizite(abschluss_faecher) {
        if ((abschluss_faecher.faecher === null) || (abschluss_faecher.faecher.size() === 0))
            return -1;
        let sum = 0;
        for (let fach of abschluss_faecher.faecher) {
            if (fach.note >= 5)
                sum++;
        }
        return sum;
    }
    /**
     * Berechnet die Anzahl der Note Ungenügend
     *
     * @param abschluss_faecher   die Fächer für die Abschlussberechnung
     *
     * @return die Anzahl der Note Ungenügend oder -1 im Fehlerfall
     */
    static getAnzahlUngenuegend(abschluss_faecher) {
        if ((abschluss_faecher.faecher === null) || (abschluss_faecher.faecher.size() === 0))
            return -1;
        let sum = 0;
        for (let fach of abschluss_faecher.faecher) {
            if (fach.note >= 6)
                sum++;
        }
        return sum;
    }
    isTranspiledInstanceOf(name) {
        return ['de.nrw.schule.svws.core.abschluss.AbschlussManagerBerufsbildend'].includes(name);
    }
}
exports.AbschlussManagerBerufsbildend = AbschlussManagerBerufsbildend;
function cast_de_nrw_schule_svws_core_abschluss_AbschlussManagerBerufsbildend(obj) {
    return obj;
}
exports.cast_de_nrw_schule_svws_core_abschluss_AbschlussManagerBerufsbildend = cast_de_nrw_schule_svws_core_abschluss_AbschlussManagerBerufsbildend;
//# sourceMappingURL=AbschlussManagerBerufsbildend.js.map