"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.cast_de_nrw_schule_svws_core_abschluss_bk_a_BKAnlageA01Abschluss = exports.BKAnlageA01Abschluss = void 0;
const AbschlussManagerBerufsbildend_1 = require("../../../../core/abschluss/AbschlussManagerBerufsbildend");
const Service_1 = require("../../../../core/Service");
const Abschluss_1 = require("../../../../core/types/Abschluss");
const Sprachreferenzniveau_1 = require("../../../../core/types/Sprachreferenzniveau");
const LogLevel_1 = require("../../../../logger/LogLevel");
class BKAnlageA01Abschluss extends Service_1.Service {
    constructor() {
        super();
    }
    handle(input) {
        this.logger.log(LogLevel_1.LogLevel.INFO, "Prüfe BSA:");
        if (AbschlussManagerBerufsbildend_1.AbschlussManagerBerufsbildend.getAnzahlUngenuegend(input) > 0) {
            this.logger.logLn(LogLevel_1.LogLevel.INFO, " nicht erreicht (kein ungenügend erlaubt, insgesamt " + AbschlussManagerBerufsbildend_1.AbschlussManagerBerufsbildend.getAnzahlUngenuegend(input) + ").");
            return AbschlussManagerBerufsbildend_1.AbschlussManagerBerufsbildend.getErgebnis(false, AbschlussManagerBerufsbildend_1.AbschlussManagerBerufsbildend.getDurchschnitt(input), false, Abschluss_1.Abschluss.OHNE_ABSCHLUSS);
        }
        else if (AbschlussManagerBerufsbildend_1.AbschlussManagerBerufsbildend.getAnzahlDefizite(input) > 1) {
            this.logger.logLn(LogLevel_1.LogLevel.INFO, " nicht erreicht (mehr als 1 Defizit, insgesamt " + AbschlussManagerBerufsbildend_1.AbschlussManagerBerufsbildend.getAnzahlDefizite(input) + ").");
            return AbschlussManagerBerufsbildend_1.AbschlussManagerBerufsbildend.getErgebnis(false, AbschlussManagerBerufsbildend_1.AbschlussManagerBerufsbildend.getDurchschnitt(input), false, Abschluss_1.Abschluss.OHNE_ABSCHLUSS);
        }
        this.logger.logLn(LogLevel_1.LogLevel.INFO, " erreicht.");
        if ((input.englischGeR === null) || (Sprachreferenzniveau_1.Sprachreferenzniveau.B1.compareTo(input.englischGeR) < 0)) {
            if (input.englischGeR === null) {
                this.logger.logLn(LogLevel_1.LogLevel.INFO, "Das Sprachreferenzniveau in Englisch wurde nicht angegeben. Eine Prüfung auf MSA ist daher nicht möglich.");
            }
            else {
                this.logger.logLn(LogLevel_1.LogLevel.INFO, "Das Sprachreferenzniveau in Englisch ist für den MSA nicht ausreichend.");
            }
            this.logger.logLn(LogLevel_1.LogLevel.INFO, "HSA10 wurde erreicht.");
            return AbschlussManagerBerufsbildend_1.AbschlussManagerBerufsbildend.getErgebnis(true, AbschlussManagerBerufsbildend_1.AbschlussManagerBerufsbildend.getDurchschnitt(input), input.hatBestandenBerufsAbschlussPruefung, Abschluss_1.Abschluss.HA10);
        }
        if (AbschlussManagerBerufsbildend_1.AbschlussManagerBerufsbildend.getDurchschnitt(input) <= 2.5) {
            this.logger.logLn(LogLevel_1.LogLevel.INFO, "Die Durschnittsnote ist besser als oder gleich 2,5.");
            this.logger.logLn(LogLevel_1.LogLevel.INFO, "MSA-Q wurde erreicht.");
            return AbschlussManagerBerufsbildend_1.AbschlussManagerBerufsbildend.getErgebnis(false, AbschlussManagerBerufsbildend_1.AbschlussManagerBerufsbildend.getDurchschnitt(input), input.hatBestandenBerufsAbschlussPruefung, Abschluss_1.Abschluss.MSA_Q);
        }
        else if (AbschlussManagerBerufsbildend_1.AbschlussManagerBerufsbildend.getDurchschnitt(input) <= 3.5) {
            this.logger.logLn(LogLevel_1.LogLevel.INFO, "Die Durschnittsnote ist besser als oder gleich 3,5, aber schlechter als 2,5.");
            this.logger.logLn(LogLevel_1.LogLevel.INFO, "MSA wurde erreicht.");
            return AbschlussManagerBerufsbildend_1.AbschlussManagerBerufsbildend.getErgebnis(false, AbschlussManagerBerufsbildend_1.AbschlussManagerBerufsbildend.getDurchschnitt(input), input.hatBestandenBerufsAbschlussPruefung, Abschluss_1.Abschluss.MSA);
        }
        this.logger.logLn(LogLevel_1.LogLevel.INFO, "Die Durschnittsnote ist schlechter als 3,5.");
        this.logger.logLn(LogLevel_1.LogLevel.INFO, "HSA10 wurde erreicht.");
        return AbschlussManagerBerufsbildend_1.AbschlussManagerBerufsbildend.getErgebnis(false, AbschlussManagerBerufsbildend_1.AbschlussManagerBerufsbildend.getDurchschnitt(input), input.hatBestandenBerufsAbschlussPruefung, Abschluss_1.Abschluss.HA10);
    }
    isTranspiledInstanceOf(name) {
        return ['de.nrw.schule.svws.core.Service', 'de.nrw.schule.svws.core.abschluss.bk.a.BKAnlageA01Abschluss'].includes(name);
    }
}
exports.BKAnlageA01Abschluss = BKAnlageA01Abschluss;
function cast_de_nrw_schule_svws_core_abschluss_bk_a_BKAnlageA01Abschluss(obj) {
    return obj;
}
exports.cast_de_nrw_schule_svws_core_abschluss_bk_a_BKAnlageA01Abschluss = cast_de_nrw_schule_svws_core_abschluss_bk_a_BKAnlageA01Abschluss;
//# sourceMappingURL=BKAnlageA01Abschluss.js.map