"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_Naturwissenschaften = exports.Naturwissenschaften = void 0;
const GostFachbereich_1 = require("../../../../core/types/gost/GostFachbereich");
const GostSchriftlichkeit_1 = require("../../../../core/types/gost/GostSchriftlichkeit");
const GostHalbjahr_1 = require("../../../../core/types/gost/GostHalbjahr");
const GostBelegpruefung_1 = require("../../../../core/abschluss/gost/GostBelegpruefung");
const GostBelegungsfehler_1 = require("../../../../core/abschluss/gost/GostBelegungsfehler");
class Naturwissenschaften extends GostBelegpruefung_1.GostBelegpruefung {
    naturwissenschaften = null;
    naturwissenschaften_klassisch = null;
    anzahl_durchgehend = 0;
    anzahl_schriftlich_durchgehend = 0;
    /**
     * Erstellt eine neue Belegprüfung für das Fach Mathematik.
     *
     * @param manager         der Daten-Manager für die Abiturdaten
     * @param pruefungs_art   die Art der durchzuführenden Prüfung (z.B. EF.1 oder GESAMT)
     */
    constructor(manager, pruefungs_art) {
        super(manager, pruefungs_art);
    }
    init() {
        this.naturwissenschaften = this.manager.getFachbelegungen(GostFachbereich_1.GostFachbereich.NATURWISSENSCHAFTLICH);
        this.naturwissenschaften_klassisch = this.manager.getFachbelegungen(GostFachbereich_1.GostFachbereich.NATURWISSENSCHAFTLICH_KLASSISCH);
        this.anzahl_durchgehend = 0;
        this.anzahl_schriftlich_durchgehend = 0;
    }
    pruefeEF1() {
        if (!this.manager.pruefeBelegungDurchgehendBelegbarExistiert(this.naturwissenschaften_klassisch, GostSchriftlichkeit_1.GostSchriftlichkeit.BELIEBIG, GostHalbjahr_1.GostHalbjahr.EF1))
            this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.NW_10);
        if (!this.manager.pruefeBelegungExistiertMitSchriftlichkeitEinzeln(this.naturwissenschaften_klassisch, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1))
            this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.NW_11);
        let fachbelegungen = this.manager.filterDurchgehendBelegbar(this.naturwissenschaften);
        fachbelegungen = this.manager.filterBelegungen(fachbelegungen, GostHalbjahr_1.GostHalbjahr.EF1);
        this.anzahl_durchgehend = fachbelegungen === null ? 0 : fachbelegungen.size();
        fachbelegungen = this.manager.filterBelegungenMitSchriftlichkeit(fachbelegungen, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1);
        this.anzahl_schriftlich_durchgehend = fachbelegungen === null ? 0 : fachbelegungen.size();
    }
    pruefeGesamt() {
        if (!this.manager.pruefeBelegungExistiert(this.naturwissenschaften_klassisch, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21, GostHalbjahr_1.GostHalbjahr.Q22))
            this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.NW_10);
        if ((!this.manager.pruefeBelegungExistiertMitSchriftlichkeitEinzeln(this.naturwissenschaften_klassisch, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1)) || (!this.manager.pruefeBelegungExistiertMitSchriftlichkeitEinzeln(this.naturwissenschaften_klassisch, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF2)))
            this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.NW_11);
        this.anzahl_durchgehend = this.manager.zaehleBelegungenDurchgaengig(this.naturwissenschaften);
        this.anzahl_schriftlich_durchgehend = this.manager.zaehleBelegungenDurchgaengigSchriftlichInQPhase(this.naturwissenschaften);
    }
    /**
     * Gibt die Anzahl der durchgehend belegten bzw. belegbaren Naturwissenschaften zurück.
     *
     * @return die Anzahl der durchgehend belegten bzw. belegbaren Naturwissenschaften zurück.
     */
    getAnzahlDurchgehendBelegt() {
        return this.anzahl_durchgehend;
    }
    /**
     * Gibt die Anzahl der durchgehend schriftlich belegten bzw. belegbaren Naturwissenschaften zurück.
     * Durchgehend schriftlich bedeutet, dass das Fach mind. von Q1.1 bus Q2.1 schriftlich belegt wurde.
     *
     * @return die Anzahl der durchgehend schriftlich belegten bzw. belegbaren Naturwissenschaften zurück.
     */
    getAnzahlDurchgehendSchritflichBelegt() {
        return this.anzahl_schriftlich_durchgehend;
    }
    isTranspiledInstanceOf(name) {
        return ['de.nrw.schule.svws.core.abschluss.gost.GostBelegpruefung', 'de.nrw.schule.svws.core.abschluss.gost.belegpruefung.Naturwissenschaften'].includes(name);
    }
}
exports.Naturwissenschaften = Naturwissenschaften;
function cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_Naturwissenschaften(obj) {
    return obj;
}
exports.cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_Naturwissenschaften = cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_Naturwissenschaften;
//# sourceMappingURL=Naturwissenschaften.js.map