"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.cast_de_nrw_schule_svws_core_abschluss_gost_GostFachManager = exports.GostFachManager = void 0;
const JavaObject_1 = require("../../../java/lang/JavaObject");
const GostFachbereich_1 = require("../../../core/types/gost/GostFachbereich");
const GostHalbjahr_1 = require("../../../core/types/gost/GostHalbjahr");
const JavaString_1 = require("../../../java/lang/JavaString");
class GostFachManager extends JavaObject_1.JavaObject {
    constructor() {
        super();
    }
    /**
     * Gibt an, ob es sich bei dem Fach um ein Projektkursfach handelt.
     *
     * @param fach   das Fach der gymnasialen Oberstufe
     *
     * @return true, falls es sich um ein Projektkursfach handelt
     */
    static istProjektkurs(fach) {
        return JavaObject_1.JavaObject.equalsTranspiler("PX", (fach.kuerzel));
    }
    /**
     * Gibt an, ob es sich bei dem Fach um ein Vertiefungskursfach handelt.
     *
     * @param fach   das Fach der gymnasialen Oberstufe
     *
     * @return true, falls es sich um ein Vertiefungskursfach handelt
     */
    static istVertiefungskurs(fach) {
        return JavaObject_1.JavaObject.equalsTranspiler("VX", (fach.kuerzel));
    }
    /**
     * Gibt an, ob das Fach durchgehend von EF.1 bis Q2.2 belegbar ist;
     *
     * @param fach   das Fach der gymnasialen Oberstufe
     *
     * @return true, falls es so belegbar ist, sonst false
     */
    static istDurchgehendBelegbarBisQ22(fach) {
        if (fach === null)
            return false;
        return fach.istMoeglichEF1 && fach.istMoeglichEF2 && fach.istMoeglichQ11 && fach.istMoeglichQ12 && fach.istMoeglichQ21 && fach.istMoeglichQ22;
    }
    /**
     * Gibt an, ob das Fach durchgehend von EF.1 bis EF.2 belegbar ist;
     *
     * @param fach   das Fach der gymnasialen Oberstufe
     *
     * @return true, falls es so belegbar ist, sonst false
     */
    static istBelegbarBisEF2(fach) {
        return fach.istMoeglichEF1 && fach.istMoeglichEF2;
    }
    /**
     * Prüft, ob das Fach zu der angegebenen Sprache gehört
     *
     * @param fach   das Fach der gymnasialen Oberstufe
     * @param sprache   das Kürzel der Sprache (1. Zeichen ohne Jahrgang!)
     *
     * @return true, falls das Fach zu der angegebenen Sprache passt, sonst false
     */
    static istFremdsprachenfach(fach, sprache) {
        if ((fach === null) || (fach.kuerzel === null) || (JavaObject_1.JavaObject.equalsTranspiler("", (fach.kuerzel))) || !GostFachbereich_1.GostFachbereich.FREMDSPRACHE.hat(fach) || (sprache === null))
            return false;
        return (JavaString_1.JavaString.compareToIgnoreCase(sprache, fach.kuerzel.substring(0, 1)) === 0);
    }
    /**
     * Liefert das Kürzel der Sprache (ohne Jahrgang) zurück, falls es sich um eine Sprache handelt.
     *
     * @param fach   das Fach der gymnasialen Oberstufe
     *
     * @return das Kürzel der Sprache oder null
     */
    static getFremdsprache(fach) {
        if ((fach.kuerzel === null) || (JavaObject_1.JavaObject.equalsTranspiler("", (fach.kuerzel))) || !GostFachbereich_1.GostFachbereich.FREMDSPRACHE.hat(fach))
            return null;
        return fach.kuerzel.substring(0, 1).toUpperCase();
    }
    /**
     * Prüft, ob das Fach bilingual unterrichtet wird oder nicht.
     *
     * @param fach   das Fach der gymnasialen Oberstufe
     *
     * @return true, falls das Fach bilingual unterrichtet wird.
     */
    static istBilingual(fach) {
        return ((fach.biliSprache !== null) && (!JavaObject_1.JavaObject.equalsTranspiler("", (fach.biliSprache))) && (!JavaObject_1.JavaObject.equalsTranspiler("D", (fach.biliSprache))));
    }
    /**
     * Gibt zurück, ob das Fach in dem angegebenen Halbjahr wählbar ist oder nicht.
     *
     * @param fach   das Fach der gymnasialen Oberstufe
     * @param halbjahr   das zu prüfende Halbjahr
     *
     * @return true, falls das Fach in dem Halbjahr wählbar ist, sonst false
     */
    static istWaehlbar(fach, halbjahr) {
        if (fach === null)
            return false;
        if (halbjahr === GostHalbjahr_1.GostHalbjahr.EF1)
            return fach.istMoeglichEF1;
        if (halbjahr === GostHalbjahr_1.GostHalbjahr.EF2)
            return fach.istMoeglichEF2;
        if (halbjahr === GostHalbjahr_1.GostHalbjahr.Q11)
            return fach.istMoeglichQ11;
        if (halbjahr === GostHalbjahr_1.GostHalbjahr.Q12)
            return fach.istMoeglichQ12;
        if (halbjahr === GostHalbjahr_1.GostHalbjahr.Q21)
            return fach.istMoeglichQ21;
        if (halbjahr === GostHalbjahr_1.GostHalbjahr.Q22)
            return fach.istMoeglichQ22;
        return false;
    }
    isTranspiledInstanceOf(name) {
        return ['de.nrw.schule.svws.core.abschluss.gost.GostFachManager'].includes(name);
    }
}
exports.GostFachManager = GostFachManager;
function cast_de_nrw_schule_svws_core_abschluss_gost_GostFachManager(obj) {
    return obj;
}
exports.cast_de_nrw_schule_svws_core_abschluss_gost_GostFachManager = cast_de_nrw_schule_svws_core_abschluss_gost_GostFachManager;
//# sourceMappingURL=GostFachManager.js.map