"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.cast_de_nrw_schule_svws_core_types_statkue_LehrerMinderleistungArt = exports.LehrerMinderleistungArt = void 0;
const JavaObject_1 = require("../../../java/lang/JavaObject");
const LehrerKatalogMinderleistungsartEintrag_1 = require("../../../core/data/lehrer/LehrerKatalogMinderleistungsartEintrag");
const HashMap_1 = require("../../../java/util/HashMap");
class LehrerMinderleistungArt extends JavaObject_1.JavaObject {
    /** the name of the enumeration value */
    __name;
    /** the ordinal value for the enumeration value */
    __ordinal;
    /** an array containing all values of this enumeration */
    static all_values_by_ordinal = [];
    /** an array containing all values of this enumeration indexed by their name*/
    static all_values_by_name = new Map();
    static ID_200 = new LehrerMinderleistungArt("ID_200", 0, [new LehrerKatalogMinderleistungsartEintrag_1.LehrerKatalogMinderleistungsartEintrag(37, "200", "Pflichtstundenermäßigung aus Altersgründen", null, null)]);
    static ID_210 = new LehrerMinderleistungArt("ID_210", 1, [new LehrerKatalogMinderleistungsartEintrag_1.LehrerKatalogMinderleistungsartEintrag(38, "210", "Pflichtstundenermäßigung wegen Schwerbehinderung (Regelanrechnung)", null, null)]);
    static ID_220 = new LehrerMinderleistungArt("ID_220", 2, [new LehrerKatalogMinderleistungsartEintrag_1.LehrerKatalogMinderleistungsartEintrag(39, "220", "Pflichtstundenermäßigung wegen Schwerbehinderung (Erhöhung auf Antrag)", null, null)]);
    static ID_230 = new LehrerMinderleistungArt("ID_230", 3, [new LehrerKatalogMinderleistungsartEintrag_1.LehrerKatalogMinderleistungsartEintrag(40, "230", "Beurlaubung, Rückkehr im Laufe des Schuljahres", null, null)]);
    static ID_240 = new LehrerMinderleistungArt("ID_240", 4, [new LehrerKatalogMinderleistungsartEintrag_1.LehrerKatalogMinderleistungsartEintrag(41, "240", "Langfristige Erkrankung", null, null)]);
    static ID_250 = new LehrerMinderleistungArt("ID_250", 5, [new LehrerKatalogMinderleistungsartEintrag_1.LehrerKatalogMinderleistungsartEintrag(42, "250", "Abwesend wegen Beschäftigungsverbot gem. § 3 MuSchG", null, null)]);
    static ID_255 = new LehrerMinderleistungArt("ID_255", 6, [new LehrerKatalogMinderleistungsartEintrag_1.LehrerKatalogMinderleistungsartEintrag(53, "255", "Abwesend wegen Teilbeschäftigungsverbot gem. § 3 MuSchG", null, null)]);
    static ID_260 = new LehrerMinderleistungArt("ID_260", 7, [new LehrerKatalogMinderleistungsartEintrag_1.LehrerKatalogMinderleistungsartEintrag(43, "260", "Wiedereingliederungsmaßnahme", null, null)]);
    static ID_270 = new LehrerMinderleistungArt("ID_270", 8, [new LehrerKatalogMinderleistungsartEintrag_1.LehrerKatalogMinderleistungsartEintrag(44, "270", "Rückgabe vorgeleisteter Stunden wegen Nichtinanspruchnahme von Altersteilzeit", null, null)]);
    static ID_275 = new LehrerMinderleistungArt("ID_275", 9, [new LehrerKatalogMinderleistungsartEintrag_1.LehrerKatalogMinderleistungsartEintrag(51, "275", "Rückgabe der Vorgriffsstunden", null, null)]);
    static ID_280 = new LehrerMinderleistungArt("ID_280", 10, [new LehrerKatalogMinderleistungsartEintrag_1.LehrerKatalogMinderleistungsartEintrag(45, "280", "Seiteneinsteigerentlastung", null, null)]);
    static ID_290 = new LehrerMinderleistungArt("ID_290", 11, [new LehrerKatalogMinderleistungsartEintrag_1.LehrerKatalogMinderleistungsartEintrag(46, "290", "Ermäßigungs-/Freistellungsphase \"Teilzeitbeschäftigung im Blockmodell\" (§ 65 LBG) (vormals Sabbatjahr)", null, null)]);
    static ID_300 = new LehrerMinderleistungArt("ID_300", 12, [new LehrerKatalogMinderleistungsartEintrag_1.LehrerKatalogMinderleistungsartEintrag(47, "300", "Sonstige Ermäßigungen aus besonderen persönlichen Gründen", null, null)]);
    static ID_350 = new LehrerMinderleistungArt("ID_350", 13, [new LehrerKatalogMinderleistungsartEintrag_1.LehrerKatalogMinderleistungsartEintrag(48, "350", "Abrundung der Pflichtstundenzahl wegen Aufrundung im vorhergehenden Schuljahr ", null, null)]);
    static ID_360 = new LehrerMinderleistungArt("ID_360", 14, [new LehrerKatalogMinderleistungsartEintrag_1.LehrerKatalogMinderleistungsartEintrag(49, "360", "Unterschreitung der Pflichtstundenzahl aus organisatorischen Gründen (z. B. Epochenunterricht)", null, null)]);
    static ID_365 = new LehrerMinderleistungArt("ID_365", 15, [new LehrerKatalogMinderleistungsartEintrag_1.LehrerKatalogMinderleistungsartEintrag(54, "365", "Unterschreitung der Pflichtstundenzahl wegen COVID-19", null, null)]);
    static ID_370 = new LehrerMinderleistungArt("ID_370", 16, [new LehrerKatalogMinderleistungsartEintrag_1.LehrerKatalogMinderleistungsartEintrag(50, "370", "Unterschreitung der Pflichtstundenzahl wegen Pflichstunden-Bandbreite", null, null)]);
    static ID_380 = new LehrerMinderleistungArt("ID_380", 17, [new LehrerKatalogMinderleistungsartEintrag_1.LehrerKatalogMinderleistungsartEintrag(52, "380", "Fortbildung: Nachträglicher Erwerb des sonderpädagogischen Lehramtes", null, null)]);
    static VERSION = 1;
    daten;
    historie;
    static _artenByID = new HashMap_1.HashMap();
    static _artenByKuerzel = new HashMap_1.HashMap();
    /**
     * Erzeugt eine neue Art von Minderleistung in der Aufzählung.
     *
     * @param historie   die Historie der Art von Minderleistung, welches ein Array von {@link LehrerKatalogMinderleistungsartEintrag} ist
     */
    constructor(name, ordinal, historie) {
        super();
        this.__name = name;
        this.__ordinal = ordinal;
        LehrerMinderleistungArt.all_values_by_ordinal.push(this);
        LehrerMinderleistungArt.all_values_by_name.set(name, this);
        this.historie = historie;
        this.daten = historie[historie.length - 1];
    }
    /**
     * Gibt eine Map von den IDs der Minderleistungsarten auf die zugehörigen Minderleistungsarten
     * zurück. Sollte diese noch nicht initialisiert sein, so wird sie initielisiert.
     *
     * @return die Map von den IDs der Minderleistungsarten auf die zugehörigen Minderleistungsarten
     */
    static getMapArtenByID() {
        if (LehrerMinderleistungArt._artenByID.size() === 0)
            for (let g of LehrerMinderleistungArt.values())
                LehrerMinderleistungArt._artenByID.put(g.daten.id, g);
        return LehrerMinderleistungArt._artenByID;
    }
    /**
     * Gibt eine Map von den Kürzeln der Minderleistungsarten auf die zugehörigen Minderleistungsarten
     * zurück. Sollte diese noch nicht initialisiert sein, so wird sie initielisiert.
     *
     * @return die Map von den Kürzeln der Minderleistungsarten auf die zugehörigen Minderleistungsarten
     */
    static getMapArtenByKuerzel() {
        if (LehrerMinderleistungArt._artenByKuerzel.size() === 0)
            for (let g of LehrerMinderleistungArt.values())
                LehrerMinderleistungArt._artenByKuerzel.put(g.daten.kuerzel, g);
        return LehrerMinderleistungArt._artenByKuerzel;
    }
    /**
     * Gibt die Art der Minderleistung anhand der angegebenen ID zurück.
     *
     * @param id   die ID der Art der Minderleistung
     *
     * @return die Art der Minderleistung oder null, falls die ID ungültig ist
     */
    static getByID(id) {
        return LehrerMinderleistungArt.getMapArtenByID().get(id);
    }
    /**
     * Gibt die Art der Minderleistung anhand des angegebenen Kürzels zurück.
     *
     * @param kuerzel   das Kürzel der Art der Minderleistung
     *
     * @return die Art der Minderleistung oder null, falls das Kürzel ungültig ist
     */
    static getByKuerzel(kuerzel) {
        return LehrerMinderleistungArt.getMapArtenByKuerzel().get(kuerzel);
    }
    /**
     * Returns the name of this enumeration value.
     *
     * @returns the name
     */
    name() {
        return this.__name;
    }
    /**
     * Returns the ordinal value of this enumeration value.
     *
     * @returns the ordinal value
     */
    ordinal() {
        return this.__ordinal;
    }
    /**
     * Returns the name of this enumeration value.
     *
     * @returns the name
     */
    toString() {
        return this.__name;
    }
    /**
     * Returns true if this and the other enumeration values are equal.
     *
     * @param other   the other enumeration value
     *
     * @returns true if they are equal and false otherwise
     */
    equals(other) {
        if (!(other instanceof LehrerMinderleistungArt))
            return false;
        return this === other;
    }
    /**
     * Returns the ordinal value as hashcode, since the ordinal value is unique.
     *
     * @returns the ordinal value as hashcode
     */
    hashCode() {
        return this.__ordinal;
    }
    /**
     * Compares this enumeration value with the other enumeration value by their ordinal value.
     *
     * @param other   the other enumeration value
     *
     * @returns a negative, zero or postive value as this enumeration value is less than, equal to
     *          or greater than the other enumeration value
     */
    compareTo(other) {
        return this.__ordinal - other.__ordinal;
    }
    /**
     * Returns an array with enumeration values.
     *
     * @returns the array with enumeration values
     */
    static values() {
        return [...this.all_values_by_ordinal];
    }
    /**
     * Returns the enumeration value with the specified name.
     *
     * @param name   the name of the enumeration value
     *
     * @returns the enumeration values or null
     */
    static valueOf(name) {
        let tmp = this.all_values_by_name.get(name);
        return (!tmp) ? null : tmp;
    }
    isTranspiledInstanceOf(name) {
        return ['de.nrw.schule.svws.core.types.statkue.LehrerMinderleistungArt'].includes(name);
    }
}
exports.LehrerMinderleistungArt = LehrerMinderleistungArt;
function cast_de_nrw_schule_svws_core_types_statkue_LehrerMinderleistungArt(obj) {
    return obj;
}
exports.cast_de_nrw_schule_svws_core_types_statkue_LehrerMinderleistungArt = cast_de_nrw_schule_svws_core_types_statkue_LehrerMinderleistungArt;
//# sourceMappingURL=LehrerMinderleistungArt.js.map