"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.cast_de_nrw_schule_svws_core_types_gost_GostKursart = exports.GostKursart = void 0;
const JavaObject_1 = require("../../../java/lang/JavaObject");
const HashMap_1 = require("../../../java/util/HashMap");
class GostKursart extends JavaObject_1.JavaObject {
    static map = new HashMap_1.HashMap();
    static LK = new GostKursart(1, "LK", "Leistungskurs");
    static GK = new GostKursart(2, "GK", "Grundkurs");
    static ZK = new GostKursart(3, "ZK", "Zusatzkurs");
    static PJK = new GostKursart(4, "PJK", "Projektkurs");
    static VTF = new GostKursart(5, "VTF", "Vertiefungskurs");
    id;
    kuerzel;
    beschreibung;
    /**
     * Erzeugt eine neue Kursart für die Aufzählung.
     *
     * @param id             die eindeutige ID der Kursart der Gymnasialen Oberstufe
     * @param kuerzel        das Kürzel der Kursart der Gymnasialen Oberstufe
     * @param beschreibung   die textuelle Beschreibung der allgemeinen Kursart der Gymnasialen Oberstufe
     */
    constructor(id, kuerzel, beschreibung) {
        super();
        this.id = id;
        this.kuerzel = kuerzel;
        this.beschreibung = beschreibung;
        GostKursart.map.put(kuerzel, this);
    }
    /**
     * Prüft die Anzahl der Wochenstunden zu der Kursart.
     *
     * @param anzahl   Anzahl der Wochenstunden
     *
     * @return         Anzahl der Wochenstunden der Kursart korrekt, true oder false
     */
    pruefeWochenstunden(anzahl) {
        switch (this.kuerzel) {
            case "GK":
                return (anzahl === 3) || (anzahl === 4);
            case "LK":
                return (anzahl === 5);
            case "PJK":
                return (anzahl === 2) || (anzahl === 3);
            case "VTF":
                return (anzahl === 2);
            case "ZK":
                return (anzahl === 3);
        }
        return false;
    }
    /**
     * Gibt alle Kursarten der gymnasialen Oberstufe zurück.
     *
     * @return eine {@link Collection} mit den Kursarten.
     */
    static values() {
        return GostKursart.map.values();
    }
    /**
     * Gibt die Kursart aus dem Kürzel der Kursart zurück.
     *
     * @param kuerzel    das Kürzel der Kursart
     *
     * @return die Kursart oder null, falls das Kürzel ungültig ist
     */
    static fromKuerzel(kuerzel) {
        return GostKursart.map.get(kuerzel);
    }
    toString() {
        return this.kuerzel;
    }
    isTranspiledInstanceOf(name) {
        return ['de.nrw.schule.svws.core.types.gost.GostKursart'].includes(name);
    }
}
exports.GostKursart = GostKursart;
function cast_de_nrw_schule_svws_core_types_gost_GostKursart(obj) {
    return obj;
}
exports.cast_de_nrw_schule_svws_core_types_gost_GostKursart = cast_de_nrw_schule_svws_core_types_gost_GostKursart;
//# sourceMappingURL=GostKursart.js.map