"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_AbiFaecher = exports.AbiFaecher = void 0; const GostAbiturFach_1 = require("../../../../core/types/gost/GostAbiturFach"); const HashMap_1 = require("../../../../java/util/HashMap"); const GostBelegpruefung_1 = require("../../../../core/abschluss/gost/GostBelegpruefung"); 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 GostBelegungsfehler_1 = require("../../../../core/abschluss/gost/GostBelegungsfehler"); const HashSet_1 = require("../../../../java/util/HashSet"); class AbiFaecher extends GostBelegpruefung_1.GostBelegpruefung { mapAbiturFachbelegungen = null; anzahlAbiFaecher = 0; anzahlDeutschMatheFremdsprache = 0; anzahlFremdsprachen = 0; anzahlSportReligion = 0; hatAufgabenfeldI = false; hatAufgabenfeldII = false; hatAufgabenfeldIII = false; /** * Erstellt eine neue Belegprüfung für die Projektkurse. * * @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.mapAbiturFachbelegungen = new HashMap_1.HashMap(); this.anzahlAbiFaecher = 0; this.anzahlDeutschMatheFremdsprache = 0; this.anzahlFremdsprachen = 0; this.anzahlSportReligion = 0; this.hatAufgabenfeldI = false; this.hatAufgabenfeldII = false; this.hatAufgabenfeldIII = false; let alleFachbelegungen = this.manager.getFachbelegungen(); 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; this.mapAbiturFachbelegungen.put(abiturFach, fachbelegung); this.anzahlAbiFaecher++; let fach = this.manager.getFach(fachbelegung); if (fach === null) continue; if (GostFachbereich_1.GostFachbereich.FREMDSPRACHE.hat(fach) || GostFachbereich_1.GostFachbereich.DEUTSCH.hat(fach)) this.hatAufgabenfeldI = true; if (GostFachbereich_1.GostFachbereich.GESELLSCHAFTSWISSENSCHAFTLICH_MIT_RELIGION.hat(fach)) this.hatAufgabenfeldII = true; if (GostFachbereich_1.GostFachbereich.MATHEMATISCH_NATURWISSENSCHAFTLICH.hat(fach)) this.hatAufgabenfeldIII = true; if (GostFachbereich_1.GostFachbereich.FREMDSPRACHE.hat(fach) || GostFachbereich_1.GostFachbereich.DEUTSCH.hat(fach) || GostFachbereich_1.GostFachbereich.MATHEMATIK.hat(fach)) this.anzahlDeutschMatheFremdsprache++; if (GostFachbereich_1.GostFachbereich.FREMDSPRACHE.hat(fach)) this.anzahlFremdsprachen++; if (GostFachbereich_1.GostFachbereich.SPORT.hat(fach) || GostFachbereich_1.GostFachbereich.RELIGION.hat(fach)) this.anzahlSportReligion++; } } pruefeEF1() { } pruefeGesamt() { this.pruefeLK1(); this.pruefeAnzahlUndAufgabenfelderAbiFaecher(); this.pruefeMehrfacheAbiturfaecher(); this.pruefeSchriftlichkeitAB3undAB4(); } /** * Gesamtprüfung Punkt 70: * Prüfe, ob der erste LK eine fortgeführte Fremdsprache, eine klassische Naturwissenschaft, Mathematik oder Deutsch ist */ pruefeLK1() { let lk1 = this.mapAbiturFachbelegungen === null ? null : this.mapAbiturFachbelegungen.get(GostAbiturFach_1.GostAbiturFach.LK1); let lk1fach = this.manager.getFach(lk1); if ((lk1 === null) || (lk1fach === null) || !((GostFachbereich_1.GostFachbereich.DEUTSCH.hat(lk1fach)) || (GostFachbereich_1.GostFachbereich.FREMDSPRACHE.hat(lk1fach) && !lk1.istFSNeu) || (GostFachbereich_1.GostFachbereich.MATHEMATIK.hat(lk1fach)) || (GostFachbereich_1.GostFachbereich.NATURWISSENSCHAFTLICH_KLASSISCH.hat(lk1fach)))) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.LK1_11); } /** * Gesamtprüfung Punkt 71-74: * Prüfe, ob die Zahl der Abiturfächer 4 ist und diese alle Aufgabenfelder abdecken * und ob mindestens 2 Fächer im Bereich Deutsch, Fremdsprache, Mathematik liegen * und ob maximale 1 Fach im Bereich Sport und Religion liegt * und ob Sport nicht als erstes oder drittes Abiturfach gewählt wurde */ pruefeAnzahlUndAufgabenfelderAbiFaecher() { if ((this.anzahlAbiFaecher !== 4) || (!this.hatAufgabenfeldI) || (!this.hatAufgabenfeldII) || (!this.hatAufgabenfeldIII)) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.LK1_13); if (this.anzahlDeutschMatheFremdsprache < 2) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_10); if ((this.anzahlDeutschMatheFremdsprache < 3) && (this.anzahlFremdsprachen > 1)) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_19); if (this.anzahlSportReligion > 1) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_11); let lk1 = this.mapAbiturFachbelegungen === null ? null : this.mapAbiturFachbelegungen.get(GostAbiturFach_1.GostAbiturFach.LK1); let lk1fach = this.manager.getFach(lk1); let ab3 = this.mapAbiturFachbelegungen === null ? null : this.mapAbiturFachbelegungen.get(GostAbiturFach_1.GostAbiturFach.AB3); let ab3fach = this.manager.getFach(ab3); if (((lk1fach !== null) && (GostFachbereich_1.GostFachbereich.SPORT.hat(lk1fach.kuerzel))) || ((ab3fach !== null) && (GostFachbereich_1.GostFachbereich.SPORT.hat(ab3fach.kuerzel)))) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_15); } /** * Gesamtprüfung: Prüfe, ob eines der Abiturfächer mehrfach belegt wurde. Es ist nicht zulässig * Abiturfächer mehrfach belegt zu haben. */ pruefeMehrfacheAbiturfaecher() { let abiFaecher = new HashSet_1.HashSet(); let alleFachbelegungen = this.manager.getFachbelegungen(); 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 (!abiFaecher.contains(abiturFach)) { abiFaecher.add(abiturFach); continue; } switch (abiturFach) { case GostAbiturFach_1.GostAbiturFach.LK1: this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_21); break; case GostAbiturFach_1.GostAbiturFach.LK2: this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_22); break; case GostAbiturFach_1.GostAbiturFach.AB3: this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_23); break; case GostAbiturFach_1.GostAbiturFach.AB4: this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_24); break; } } } /** * Gesamtprüfung Punkte 76 und 77: * Prüfe ob das 3. Abiturfach von Q1.1 bis Q2.2 schriftlich belegt wurde * und on das 4. Abiturfach von Q1.1 bis Q2.1 schritlich und in Q2.2 mündlich belegt wurde * */ pruefeSchriftlichkeitAB3undAB4() { let ab3 = this.mapAbiturFachbelegungen === null ? null : this.mapAbiturFachbelegungen.get(GostAbiturFach_1.GostAbiturFach.AB3); if (ab3 !== null) { if (!this.manager.pruefeBelegungMitSchriftlichkeit(ab3, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21)) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_17); if (!this.manager.pruefeBelegungMitSchriftlichkeitEinzeln(ab3, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.Q22)) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_12); } let ab4 = this.mapAbiturFachbelegungen === null ? null : this.mapAbiturFachbelegungen.get(GostAbiturFach_1.GostAbiturFach.AB4); if (ab4 !== null) { if (!this.manager.pruefeBelegungMitSchriftlichkeit(ab4, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21)) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_18); if (!this.manager.pruefeBelegungMitSchriftlichkeitEinzeln(ab4, GostSchriftlichkeit_1.GostSchriftlichkeit.MUENDLICH, GostHalbjahr_1.GostHalbjahr.Q22)) this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_13); } } /** * Liefert die zugehörige Abitur-Fachbelegung zurück. * * @param abifach die Art des Abifachs (1., 2., 3. oder 4. Fach) * * @return die Abitur-Fachbelegung oder null, falls es (noch) nicht festgelegt wurde */ getAbiturfach(abifach) { return this.mapAbiturFachbelegungen === null ? null : this.mapAbiturFachbelegungen.get(abifach); } isTranspiledInstanceOf(name) { return ['de.nrw.schule.svws.core.abschluss.gost.belegpruefung.AbiFaecher', 'de.nrw.schule.svws.core.abschluss.gost.GostBelegpruefung'].includes(name); } } exports.AbiFaecher = AbiFaecher; function cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_AbiFaecher(obj) { return obj; } exports.cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_AbiFaecher = cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_AbiFaecher; //# sourceMappingURL=AbiFaecher.js.map