"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_Fremdsprachen = exports.Fremdsprachen = void 0; const JavaObject_1 = require("../../../../java/lang/JavaObject"); const SprachendatenManager_1 = require("../../../../core/SprachendatenManager"); const GostAbiturFach_1 = require("../../../../core/types/gost/GostAbiturFach"); const GostBelegpruefung_1 = require("../../../../core/abschluss/gost/GostBelegpruefung"); const GostFachManager_1 = require("../../../../core/abschluss/gost/GostFachManager"); const GostKursart_1 = require("../../../../core/types/gost/GostKursart"); const GostFachbereich_1 = require("../../../../core/types/gost/GostFachbereich"); const GostHalbjahr_1 = require("../../../../core/types/gost/GostHalbjahr"); const GostSchriftlichkeit_1 = require("../../../../core/types/gost/GostSchriftlichkeit"); const Vector_1 = require("../../../../java/util/Vector"); const GostBelegungsfehler_1 = require("../../../../core/abschluss/gost/GostBelegungsfehler"); class Fremdsprachen extends GostBelegpruefung_1.GostBelegpruefung { fremdsprachen = new Vector_1.Vector(); fremdsprachen_neu = new Vector_1.Vector(); fremdsprachen_fortgefuehrt = new Vector_1.Vector(); biliSachfaecher = new Vector_1.Vector(); anzahl_schriftlich_durchgehend = 0; /** * Erstellt eine neue Belegprüfung für dir Fremdsprachen. * * @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.fremdsprachen = this.manager.getFachbelegungen(GostFachbereich_1.GostFachbereich.FREMDSPRACHE); this.fremdsprachen_neu = this.manager.filterFremdspracheNeuEinsetzend(this.fremdsprachen); this.fremdsprachen_fortgefuehrt = this.manager.filterFremdspracheFortgefuehrt(this.fremdsprachen); this.biliSachfaecher = this.manager.getFachbelegungenBilingual(); this.anzahl_schriftlich_durchgehend = 0; } pruefeEF1() { this.pruefeEF1Sprachenfolge(); this.pruefeEF1Fremdsprache1(); this.pruefeEF1FremdsprachenfolgeZweiteFremdsprache(); this.pruefeEF1Schriftlichkeit(); this.pruefeEF1AnzahlDurchgehenedeSprachen(); this.pruefeEF1BilingualeSachfaecher(); this.pruefeEF1BilingualenBildungsgang(); } /** * EF.1: Prüft bei der Sprachenfolge, ob eine gemäß Sprachenfolge fortgeführte * Fremdsprache fehlerhafterweise als neu einsetzende Fremdsprache belegt wurde. */ pruefeEF1Sprachenfolge() { if (this.manager.hatFortgefuehrteFremdspracheInSprachendaten(this.fremdsprachen_neu)) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_20); if (this.manager.hatNeuEinsetzendeFremdspracheInSprachendaten(this.fremdsprachen_fortgefuehrt)) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_21); if (!SprachendatenManager_1.SprachendatenManager.hatSprachbelegung(this.manager.getSprachendaten(), "E")) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_22_INFO); } /** * Prüft, ob eine gültige Fremdsprachenbelegung mit den EF.1-Wahlen möglich ist. */ pruefeEF1Fremdsprache1() { let gefundenFremdsprachenbelegung = false; let gefundenFortgefuehrteFremdsprachenbelegungOhneSprachenfolge = false; let gefundenFortgefuehrteFremdspracheAlsNeueinsetzende = false; let anzahlFortgefuehrteFremdsprachen = 0; let anzahlFortgefuehrteFremdsprachenEFBelegbar = 0; let anzahlFortgefuehrteFremdsprachenEFBelegbarFehlerMuendlich = 0; let anzahlFortgefuehrteFremdsprachenDurchgehendBelegbar = 0; let anzahlFortgefuehrteFremdsprachenDurchgehendBelegbarFehlerMuendlich = 0; let anzahlFortfuehrbareFremdsprachen = 0; anzahlFortfuehrbareFremdsprachen = SprachendatenManager_1.SprachendatenManager.getFortfuehrbareSprachenInGOSt(this.manager.getSprachendaten()).size(); for (let abiFachbelegung of this.fremdsprachen_fortgefuehrt) { if (!this.manager.pruefeBelegung(abiFachbelegung, GostHalbjahr_1.GostHalbjahr.EF1)) { continue; } gefundenFremdsprachenbelegung = true; let gostFach = this.manager.getFach(abiFachbelegung); if (gostFach !== null && !JavaObject_1.JavaObject.equalsTranspiler(gostFach.kuerzel, (""))) { if (SprachendatenManager_1.SprachendatenManager.istFortfuehrbareSpracheInGOSt(this.manager.getSprachendaten(), gostFach.kuerzel.substring(0, 1))) { anzahlFortgefuehrteFremdsprachen += 1; if (this.manager.pruefeBelegungDurchgehendBelegbar(abiFachbelegung, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1)) { anzahlFortgefuehrteFremdsprachenDurchgehendBelegbar += 1; } else if (this.manager.pruefeBelegungDurchgehendBelegbar(abiFachbelegung, GostSchriftlichkeit_1.GostSchriftlichkeit.MUENDLICH, GostHalbjahr_1.GostHalbjahr.EF1)) { anzahlFortgefuehrteFremdsprachenDurchgehendBelegbar += 1; anzahlFortgefuehrteFremdsprachenDurchgehendBelegbarFehlerMuendlich += 1; } else if ((gostFach.istMoeglichEF1) && (gostFach.istMoeglichEF2)) { anzahlFortgefuehrteFremdsprachenEFBelegbar += 1; if (this.manager.pruefeBelegungMitSchriftlichkeit(abiFachbelegung, GostSchriftlichkeit_1.GostSchriftlichkeit.MUENDLICH, GostHalbjahr_1.GostHalbjahr.EF1)) { anzahlFortgefuehrteFremdsprachenEFBelegbarFehlerMuendlich += 1; } } } else { gefundenFortgefuehrteFremdsprachenbelegungOhneSprachenfolge = true; this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_23); } } } if ((anzahlFortgefuehrteFremdsprachenDurchgehendBelegbarFehlerMuendlich + anzahlFortgefuehrteFremdsprachenEFBelegbarFehlerMuendlich) > 0) { this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_12); } if ((anzahlFortgefuehrteFremdsprachen > 0) && (anzahlFortgefuehrteFremdsprachen === (anzahlFortgefuehrteFremdsprachenDurchgehendBelegbarFehlerMuendlich + anzahlFortgefuehrteFremdsprachenEFBelegbarFehlerMuendlich))) { this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_18); } if (anzahlFortgefuehrteFremdsprachenDurchgehendBelegbar > 0) { return; } let anzahlNeueinsetzendeFremdsprachenDurchgehendBelegbar = 0; let anzahlNeueinsetzendeFremdsprachenDurchgehendBelegbarFehlerMuendlich = 0; for (let abiFachbelegung of this.fremdsprachen_neu) { if (!this.manager.pruefeBelegung(abiFachbelegung, GostHalbjahr_1.GostHalbjahr.EF1)) { continue; } gefundenFremdsprachenbelegung = true; let gostFach = this.manager.getFach(abiFachbelegung); if (gostFach !== null && !JavaObject_1.JavaObject.equalsTranspiler(gostFach.kuerzel, (""))) { if (!SprachendatenManager_1.SprachendatenManager.istFortfuehrbareSpracheInGOSt(this.manager.getSprachendaten(), gostFach.kuerzel.substring(0, 1))) { if (this.manager.pruefeBelegungDurchgehendBelegbar(abiFachbelegung, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1)) { anzahlNeueinsetzendeFremdsprachenDurchgehendBelegbar += 1; } else if (this.manager.pruefeBelegungDurchgehendBelegbar(abiFachbelegung, GostSchriftlichkeit_1.GostSchriftlichkeit.MUENDLICH, GostHalbjahr_1.GostHalbjahr.EF1)) { anzahlNeueinsetzendeFremdsprachenDurchgehendBelegbar += 1; anzahlNeueinsetzendeFremdsprachenDurchgehendBelegbarFehlerMuendlich += 1; } } else { this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_20); gefundenFortgefuehrteFremdspracheAlsNeueinsetzende = true; } } } if (anzahlNeueinsetzendeFremdsprachenDurchgehendBelegbarFehlerMuendlich > 0) { this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_12); } if ((gefundenFremdsprachenbelegung && !(gefundenFortgefuehrteFremdsprachenbelegungOhneSprachenfolge || gefundenFortgefuehrteFremdspracheAlsNeueinsetzende)) && (anzahlFortgefuehrteFremdsprachenDurchgehendBelegbar + anzahlNeueinsetzendeFremdsprachenDurchgehendBelegbar === 0)) { this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_11); } if (anzahlFortgefuehrteFremdsprachenEFBelegbar > 0) { if (anzahlNeueinsetzendeFremdsprachenDurchgehendBelegbar === 0) { this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_10); } return; } if (anzahlNeueinsetzendeFremdsprachenDurchgehendBelegbar === 0) { this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_18); return; } if ((anzahlFortgefuehrteFremdsprachenDurchgehendBelegbar + anzahlFortgefuehrteFremdsprachenEFBelegbar) === 0 && anzahlNeueinsetzendeFremdsprachenDurchgehendBelegbar > 0) { if (anzahlNeueinsetzendeFremdsprachenDurchgehendBelegbarFehlerMuendlich > 0) { this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_18); } if (this.manager.hatMuttersprachenPruefungEndeEF()) { this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_19_INFO); } else { if (anzahlFortfuehrbareFremdsprachen === 0) { this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_25); } else { this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_18); if (!SprachendatenManager_1.SprachendatenManager.hatZweiSprachenMitMin4JahrenDauerEndeSekI(this.manager.getSprachendaten())) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_24); } } } } /** * Prüft, ob eine zweite Fremdsprache in der Sek I vorhanden ist und prüft sonst auf eine neu * einsetzende Fremdsprache. */ pruefeEF1FremdsprachenfolgeZweiteFremdsprache() { if (SprachendatenManager_1.SprachendatenManager.hatZweiSprachenMitMin4JahrenDauerEndeSekI(this.manager.getSprachendaten())) return; if (SprachendatenManager_1.SprachendatenManager.hatEineSpracheMitMin4JahrenDauerEndeSekI(this.manager.getSprachendaten())) { if (this.manager.pruefeBelegungExistiertMitSchriftlichkeitEinzeln(this.fremdsprachen_neu, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1)) return; if (SprachendatenManager_1.SprachendatenManager.hatSpracheMit2JahrenDauerEndeSekI(this.manager.getSprachendaten())) { let zweiteFremdsprache = this.manager.getSprachbelegung(SprachendatenManager_1.SprachendatenManager.getSpracheMit2JahrenDauerEndeSekI(this.manager.getSprachendaten())); if (!this.manager.pruefeBelegungMitSchriftlichkeitEinzeln(zweiteFremdsprache, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1)) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_13); return; } } if (!this.manager.pruefeBelegungExistiertMitSchriftlichkeitEinzeln(this.fremdsprachen_neu, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1)) { this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_14); } } /** * Prüft, ob alle Fremdsprachen in der EF.1 schriftlich belegt wurden. */ pruefeEF1Schriftlichkeit() { if (this.fremdsprachen === null) return; for (let fachbelegung of this.fremdsprachen) if (this.manager.pruefeBelegungMitSchriftlichkeitEinzeln(fachbelegung, GostSchriftlichkeit_1.GostSchriftlichkeit.BELIEBIG, GostHalbjahr_1.GostHalbjahr.EF1) && !this.manager.pruefeBelegungMitSchriftlichkeitEinzeln(fachbelegung, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1)) { this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_12); break; } } /** * Zähle alle Fremdsprachen, die durchgehend schriftlich belegt wurden. * Hierzu zählt auch die Unterrichtssprache eines bilingualen Sachfachs als zweite durchgehende * Fremdsprache, sofern dieses durchgehende und schriftlich belegt werden kann. */ pruefeEF1AnzahlDurchgehenedeSprachen() { let fremdsprachenDurchgehend = this.manager.filterBelegungenMitSchriftlichkeit(this.manager.filterDurchgehendBelegbar(this.fremdsprachen), GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1); this.anzahl_schriftlich_durchgehend = fremdsprachenDurchgehend.size(); if (this.anzahl_schriftlich_durchgehend !== 1) return; let fsDurchgehend = this.manager.getFach(fremdsprachenDurchgehend.get(0)); if (fsDurchgehend === null) return; let fremdspracheDurchgehend = GostFachManager_1.GostFachManager.getFremdsprache(fsDurchgehend); if (fremdspracheDurchgehend === null) return; let biliSachfaecherDurchgehendSchriftlich = this.manager.filterBelegungenMitSchriftlichkeit(this.manager.filterDurchgehendBelegbar(this.biliSachfaecher), GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1); for (let biliSachfach of biliSachfaecherDurchgehendSchriftlich) { let fach = this.manager.getFach(biliSachfach); if ((fach === null) || (JavaObject_1.JavaObject.equalsTranspiler(fremdspracheDurchgehend, (fach.biliSprache)))) continue; this.anzahl_schriftlich_durchgehend++; return; } } /** * Prüft, ob die Bedingungen für die Wahl eines bilingualen Sachfaches erfüllt sind, sofern eines * in der EF.1 belegt wurde. */ pruefeEF1BilingualeSachfaecher() { if (this.biliSachfaecher === null) return; for (let biliSachfach of this.biliSachfaecher) { let fach = this.manager.getFach(biliSachfach); if (fach === null) continue; let biliSprache = fach.biliSprache; if (!SprachendatenManager_1.SprachendatenManager.hatSprachbelegungInSekIMitDauer(this.manager.getSprachendaten(), biliSprache, 2)) { this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.BIL_14); continue; } let fremdsprache = this.manager.getSprachbelegung(biliSprache); if (this.manager.pruefeBelegungMitSchriftlichkeitEinzeln(fremdsprache, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1) || this.manager.pruefeBelegungMitSchriftlichkeitEinzeln(biliSachfach, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1)) continue; this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.BIL_4_INFO); } } /** * Prüfe, ob die Bedingungen für den bilingualen Bildungsgang erfüllt sind, sofern ein solcher vom Schüler gewählt wurde. */ pruefeEF1BilingualenBildungsgang() { let biligualeSprache = this.manager.getBiligualenBildungsgang(); if (biligualeSprache === null) return; let biliSprache = this.manager.getSprachbelegung(biligualeSprache); if (!this.manager.pruefeBelegungDurchgehendBelegbar(biliSprache, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1)) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.BIL_10); if ((this.biliSachfaecher === null) || (this.biliSachfaecher.size() < 1)) { this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.BIL_15); return; } if (this.biliSachfaecher.size() < 2) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.BIL_11_INFO); } pruefeGesamt() { this.pruefeGesamtSprachenfolge(); this.pruefeGesamtFremdsprache1(); this.pruefeGesamtFremdsprachenfolgeZweiteFremdsprache(); this.pruefeGesamtSchriftlichkeit(); this.pruefeGesamtAnzahlDurchgehenedeSprachen(); this.pruefeGesamtBilingualeSachfaecher(); this.pruefeGesamtBilingualenBildungsgang(); } /** * Gesamt: Prüft bei der Sprachenfolge, ob eine laut Sprachenfolge fortgeführte * Fremdpsrache fehlerhafterweise als neu einsetzende Fremdsprache belegt wurde. */ pruefeGesamtSprachenfolge() { if (this.manager.hatFortgefuehrteFremdspracheInSprachendaten(this.fremdsprachen_neu)) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_20); if (this.manager.hatNeuEinsetzendeFremdspracheInSprachendaten(this.fremdsprachen_fortgefuehrt)) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_21); if (!SprachendatenManager_1.SprachendatenManager.hatSprachbelegung(this.manager.getSprachendaten(), "E")) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_22_INFO); } /** * Prüft, ob eine gültige Fremdsprachenbelegung in Bezug auf eine durchgehende Belegung möglich ist. */ pruefeGesamtFremdsprache1() { if (this.manager.pruefeBelegungExistiert(this.fremdsprachen_fortgefuehrt, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21, GostHalbjahr_1.GostHalbjahr.Q22)) return; if (this.manager.hatMuttersprachenPruefungEndeEF()) { if (this.manager.pruefeBelegungExistiert(this.fremdsprachen_neu, 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.FS_19_INFO); else this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_18); return; } if (!this.manager.pruefeBelegungExistiert(this.fremdsprachen_fortgefuehrt, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2)) { this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_10); return; } if (!this.manager.pruefeBelegungExistiert(this.fremdsprachen_neu, 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.FS_10); } /** * Prüft, ob eine zweite Fremdsprache in der Sek I vorhanden ist und prüft sonst auf eine neu * einsetzende Fremdsprache. */ pruefeGesamtFremdsprachenfolgeZweiteFremdsprache() { if (this.manager.istSekIZweiteFremdspracheManuellGeprueft()) return; if (SprachendatenManager_1.SprachendatenManager.hatZweiSprachenMitMin4JahrenDauerEndeSekI(this.manager.getSprachendaten())) return; if (SprachendatenManager_1.SprachendatenManager.hatEineSpracheMitMin4JahrenDauerEndeSekI(this.manager.getSprachendaten())) { if (this.manager.pruefeBelegungExistiert(this.fremdsprachen_neu, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21, GostHalbjahr_1.GostHalbjahr.Q22)) return; if (SprachendatenManager_1.SprachendatenManager.hatSprachfeststellungspruefungAufEFNiveau(this.manager.getSprachendaten()) || this.manager.hatMuttersprachenPruefungEndeEF()) { return; } if (SprachendatenManager_1.SprachendatenManager.hatSpracheMit2JahrenDauerEndeSekI(this.manager.getSprachendaten())) { let zweiteFremdsprache = this.manager.getSprachbelegung(SprachendatenManager_1.SprachendatenManager.getSpracheMit2JahrenDauerEndeSekI(this.manager.getSprachendaten())); if (!this.manager.pruefeBelegungMitSchriftlichkeit(zweiteFremdsprache, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2)) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_13); return; } } if (SprachendatenManager_1.SprachendatenManager.hatSpracheMit2JahrenDauerEndeSekI(this.manager.getSprachendaten())) { let zweiteFremdsprache = this.manager.getSprachbelegung(SprachendatenManager_1.SprachendatenManager.getSpracheMit2JahrenDauerEndeSekI(this.manager.getSprachendaten())); if (!this.manager.pruefeBelegungMitSchriftlichkeit(zweiteFremdsprache, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2)) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_13); if (this.manager.pruefeBelegungExistiert(this.fremdsprachen_neu, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21, GostHalbjahr_1.GostHalbjahr.Q22)) return; if (SprachendatenManager_1.SprachendatenManager.hatSprachfeststellungspruefungAufEFNiveau(this.manager.getSprachendaten()) || this.manager.hatMuttersprachenPruefungEndeEF()) { return; } } if (this.manager.pruefeBelegungExistiert(this.fremdsprachen_neu, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21, GostHalbjahr_1.GostHalbjahr.Q22)) { if (SprachendatenManager_1.SprachendatenManager.hatSprachfeststellungspruefungAufEFNiveau(this.manager.getSprachendaten()) || this.manager.hatMuttersprachenPruefungEndeEF()) { return; } return; } this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_14); } /** * Prüft, ob eine gültige Fremdsprachenbelegung in Bezug auf die Schriftlichkeit und LK-Wahl vohanden ist. */ pruefeGesamtSchriftlichkeit() { if (this.manager.pruefeBelegungExistiertHatMindestensEinmalSchriftlichkeit(this.fremdsprachen_neu, GostSchriftlichkeit_1.GostSchriftlichkeit.MUENDLICH, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21)) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_15); if (this.manager.pruefeBelegungExistiertHatMindestensEinmalKursart(this.fremdsprachen_neu, GostKursart_1.GostKursart.LK, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21, GostHalbjahr_1.GostHalbjahr.Q22)) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_17); if (this.manager.pruefeBelegungExistiertErfuelltNichtFallsBelegt(this.fremdsprachen_fortgefuehrt, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2)) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_12); if (this.manager.pruefeBelegungDurchgehendBelegtExistiert(this.fremdsprachen_fortgefuehrt, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21)) return; if (!this.manager.pruefeBelegungDurchgehendBelegtExistiert(this.fremdsprachen_neu, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21)) { this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_11); return; } if (this.manager.hatMuttersprachenPruefungEndeEF() && this.manager.pruefeBelegungExistiertMitSchriftlichkeit(this.fremdsprachen_fortgefuehrt, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2)) return; if (this.manager.hatMuttersprachenPruefungEndeEF() && this.manager.pruefeBelegungDurchgehendBelegtExistiert(this.fremdsprachen_neu, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21)) return; if (!this.manager.pruefeBelegungExistiertMitSchriftlichkeit(this.fremdsprachen_fortgefuehrt, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2)) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.FS_16); } /** * Zähle alle Fremdsprachen, die durchgehend schriftlich belegt wurden. * Hierzu zählt auch die Unterrichtssprache eines bilingualen Sachfachs als zweite durchgehende * Fremdsprache, sofern dieses durchgehend und schriftlich belegt wurde. */ pruefeGesamtAnzahlDurchgehenedeSprachen() { let fremdsprachenDurchgehend = this.manager.filterBelegungen(this.fremdsprachen, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21, GostHalbjahr_1.GostHalbjahr.Q22); let fremdsprachenDurchgehendSchriftlich = this.manager.filterBelegungenMitSchriftlichkeit(fremdsprachenDurchgehend, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21); this.anzahl_schriftlich_durchgehend = fremdsprachenDurchgehendSchriftlich.size(); if (this.anzahl_schriftlich_durchgehend !== 1) return; let fsDurchgehend = this.manager.getFach(fremdsprachenDurchgehendSchriftlich.get(0)); if (fsDurchgehend === null) return; let fremdspracheDurchgehend = GostFachManager_1.GostFachManager.getFremdsprache(fsDurchgehend); if (fremdspracheDurchgehend === null) return; let biliSachfaecherDurchgehend = this.manager.filterBelegungen(this.biliSachfaecher, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21, GostHalbjahr_1.GostHalbjahr.Q22); let biliSachfaecherDurchgehendSchriftlich = this.manager.filterBelegungenMitSchriftlichkeit(biliSachfaecherDurchgehend, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21); for (let biliSachfach of biliSachfaecherDurchgehendSchriftlich) { let fach = this.manager.getFach(biliSachfach); if ((fach === null) || (JavaObject_1.JavaObject.equalsTranspiler(fremdspracheDurchgehend, (fach.biliSprache)))) continue; this.anzahl_schriftlich_durchgehend++; return; } } /** * Prüft, ob die Bedingungen für die Wahl eines bilingualen Sachfaches erfüllt sind, sofern eines * belegt wurde. */ pruefeGesamtBilingualeSachfaecher() { if (this.biliSachfaecher === null) return; for (let biliSachfach of this.biliSachfaecher) { let biliFach = this.manager.getFach(biliSachfach); if ((biliFach === null) || (!SprachendatenManager_1.SprachendatenManager.hatSprachbelegungInSekIMitDauer(this.manager.getSprachendaten(), biliFach.biliSprache, 2))) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.BIL_14); } } /** * Prüfe, ob die Bedingungen für ein bilinguales Abitur erfüllt sind, sofern ein solches vom * Schüler gewählt wurde. */ pruefeGesamtBilingualenBildungsgang() { let biligualeSprache = this.manager.getBiligualenBildungsgang(); if (biligualeSprache === null) return; let biliSprache = this.manager.getSprachbelegung(biligualeSprache); if ((!this.manager.pruefeBelegungMitSchriftlichkeit(biliSprache, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2) || (!this.manager.pruefeBelegungMitKursart(biliSprache, GostKursart_1.GostKursart.LK, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21, GostHalbjahr_1.GostHalbjahr.Q22)))) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.BIL_10); let biliSachfaecherEF = this.manager.filterBelegungen(this.biliSachfaecher, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2); if (biliSachfaecherEF.size() < 1) { this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.BIL_15); return; } if (biliSachfaecherEF.size() < 2) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.BIL_11_INFO); let hatBiliSachfaecherDurchgehendSchriftlich = false; if (this.biliSachfaecher !== null) { for (let fach of this.biliSachfaecher) { if (this.manager.pruefeDurchgaengigkeitSchriftlich(fach)) { hatBiliSachfaecherDurchgehendSchriftlich = true; break; } } } if (!hatBiliSachfaecherDurchgehendSchriftlich) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.BIL_12); if (!this.manager.pruefeExistiertAbiFach(this.biliSachfaecher, GostAbiturFach_1.GostAbiturFach.AB3, GostAbiturFach_1.GostAbiturFach.AB4)) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.BIL_13); } /** * Gibt die Anzahl der durchgehend schriftlich belegten bzw. belegbaren Fremdsprachen zurück. * Durchgehend schriftlich bedeutet, dass das Fach mind. von EF.1 bis Q2.1 schriftlich belegt wurde. * Hierfür kommen Fremdsprachen und ggf. ein bilinguales Sachfach in Frage, dessen Unterrichtssprache * nicht durchgehend schriftlich belegt. * * @return die Anzahl der durchgehend schriftlich belegten bzw. belegbaren Fremdsprachen zurück. */ getAnzahlDurchgehendSchritflichBelegt() { return this.anzahl_schriftlich_durchgehend; } isTranspiledInstanceOf(name) { return ['de.nrw.schule.svws.core.abschluss.gost.belegpruefung.Fremdsprachen', 'de.nrw.schule.svws.core.abschluss.gost.GostBelegpruefung'].includes(name); } } exports.Fremdsprachen = Fremdsprachen; function cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_Fremdsprachen(obj) { return obj; } exports.cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_Fremdsprachen = cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_Fremdsprachen; //# sourceMappingURL=Fremdsprachen.js.map