"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_Allgemeines = exports.Allgemeines = void 0;
const GostFachbereich_1 = require("../../../../core/types/gost/GostFachbereich");
const GostAbiturFach_1 = require("../../../../core/types/gost/GostAbiturFach");
const GostHalbjahr_1 = require("../../../../core/types/gost/GostHalbjahr");
const GostSchriftlichkeit_1 = require("../../../../core/types/gost/GostSchriftlichkeit");
const GostBelegpruefung_1 = require("../../../../core/abschluss/gost/GostBelegpruefung");
const GostBelegungsfehler_1 = require("../../../../core/abschluss/gost/GostBelegungsfehler");
class Allgemeines extends GostBelegpruefung_1.GostBelegpruefung {
    /**
     * Erstellt eine neue allgemeine Belegprüfung.
     *
     * @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() {
    }
    pruefeEF1() {
        if (this.manager.zaehleBelegungInHalbjahren(this.manager.getFachbelegungen(GostFachbereich_1.GostFachbereich.RELIGION), GostHalbjahr_1.GostHalbjahr.EF1) > 1)
            this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.IGF_10);
        if (this.manager.hatDoppelteFachbelegungInHalbjahr(GostHalbjahr_1.GostHalbjahr.EF1))
            this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.IGF_10);
    }
    pruefeGesamt() {
        let alleFachbelegungen = this.manager.getFachbelegungen();
        for (let i = 0; i < alleFachbelegungen.size(); i++) {
            let fachbelegung = alleFachbelegungen.get(i);
            if (!this.manager.istBelegtSeitEF(fachbelegung))
                this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.E1BEL_10);
        }
        for (let i = 0; i < alleFachbelegungen.size(); i++) {
            let fachbelegung = alleFachbelegungen.get(i);
            let abiturFach = GostAbiturFach_1.GostAbiturFach.fromID(fachbelegung.abiturFach);
            if (abiturFach !== null)
                continue;
            if (this.manager.pruefeBelegungMitSchriftlichkeitEinzeln(fachbelegung, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.Q22)) {
                this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_16);
                break;
            }
        }
        for (let halbjahr of GostHalbjahr_1.GostHalbjahr.values()) {
            if (this.manager.zaehleBelegungInHalbjahren(this.manager.getFachbelegungen(GostFachbereich_1.GostFachbereich.RELIGION), halbjahr) > 1)
                this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.IGF_10);
        }
        if (this.manager.hatDoppelteFachbelegung(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.IGF_10);
    }
    isTranspiledInstanceOf(name) {
        return ['de.nrw.schule.svws.core.abschluss.gost.belegpruefung.Allgemeines', 'de.nrw.schule.svws.core.abschluss.gost.GostBelegpruefung'].includes(name);
    }
}
exports.Allgemeines = Allgemeines;
function cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_Allgemeines(obj) {
    return obj;
}
exports.cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_Allgemeines = cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_Allgemeines;
//# sourceMappingURL=Allgemeines.js.map