"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.cast_de_nrw_schule_svws_core_abschluss_ge_ServicePrognose = exports.ServicePrognose = void 0; const JavaObject_1 = require("../../../java/lang/JavaObject"); const ServiceAbschlussHA10_1 = require("../../../core/abschluss/ge/ServiceAbschlussHA10"); const Service_1 = require("../../../core/Service"); const ServiceBerechtigungMSAQ_1 = require("../../../core/abschluss/ge/ServiceBerechtigungMSAQ"); const LogLevel_1 = require("../../../logger/LogLevel"); const ServiceAbschlussMSA_1 = require("../../../core/abschluss/ge/ServiceAbschlussMSA"); const Abschluss_1 = require("../../../core/types/Abschluss"); const AbschlussManager_1 = require("../../../core/abschluss/AbschlussManager"); const ServiceAbschlussHA9_1 = require("../../../core/abschluss/ge/ServiceAbschlussHA9"); class ServicePrognose extends Service_1.Service { constructor() { super(); } /** * Prüft, ob Lernbereichsnoten bei den Sbchlussfächern zur Verfügung stehen oder nicht. * * @param faecher die Abschlussfächer * * @return true, falls die Lernbereichsnoten vorhanden sind, ansonsten false */ static hatLernbereichsnoten(faecher) { let hatLBNW = false; let hatLBAL = false; if (faecher.faecher === null) return false; let tmp = faecher.faecher; for (let fach of tmp) { if (fach === null) continue; hatLBNW = hatLBNW || JavaObject_1.JavaObject.equalsTranspiler("LBNW", (fach.kuerzel)); hatLBAL = hatLBAL || JavaObject_1.JavaObject.equalsTranspiler("LBAL", (fach.kuerzel)); } return hatLBNW && hatLBAL; } /** * Führt die Prognoseberechnung anhand der übergebenen Abschlussfächer durch * und gibt das Berechnungsergebnis zurück. * * @param input die Abschlussfächer * * @return das Ergebnis der Prognoseberechnung */ handle(input) { if (!AbschlussManager_1.AbschlussManager.pruefeHat4LeistungsdifferenzierteFaecher(input)) { this.logger.logLn(LogLevel_1.LogLevel.DEBUG, "Fehler: Es wurden nicht genügend leistungsdiffernzierte Fächer gefunden."); let prognose = AbschlussManager_1.AbschlussManager.getErgebnis(null, false); prognose.log = this.log.getStrings(); return prognose; } if (!AbschlussManager_1.AbschlussManager.pruefeKuerzelDuplikate(input)) { this.logger.logLn(LogLevel_1.LogLevel.DEBUG, "Fehler: Es wurden Fächer mit dem gleichen Kürzel zur Abschlussprüfung übergeben. Dies ist nicht zulässig."); let prognose = AbschlussManager_1.AbschlussManager.getErgebnis(null, false); prognose.log = this.log.getStrings(); return prognose; } let abschluss = Abschluss_1.Abschluss.OHNE_ABSCHLUSS; let np_faecher = null; if (!JavaObject_1.JavaObject.equalsTranspiler("10", (input.jahrgang))) { let ha9 = new ServiceAbschlussHA9_1.ServiceAbschlussHA9(); let ha9output = ha9.handle(input); np_faecher = ha9output.npFaecher; if (ha9output.erworben) abschluss = Abschluss_1.Abschluss.HA9; this.log.append(ha9.getLog()); this.logger.logLn(LogLevel_1.LogLevel.INFO, ""); } else if (JavaObject_1.JavaObject.equalsTranspiler("10", (input.jahrgang))) { abschluss = Abschluss_1.Abschluss.HA9; } let ha10 = new ServiceAbschlussHA10_1.ServiceAbschlussHA10(); let ha10output = ha10.handle(input); if (ha10output.erworben) abschluss = Abschluss_1.Abschluss.HA10; else if (JavaObject_1.JavaObject.equalsTranspiler("10", (input.jahrgang)) || (JavaObject_1.JavaObject.equalsTranspiler(Abschluss_1.Abschluss.HA9, (abschluss)))) np_faecher = ha10output.npFaecher; this.log.append(ha10.getLog()); if ((!JavaObject_1.JavaObject.equalsTranspiler(Abschluss_1.Abschluss.OHNE_ABSCHLUSS, (abschluss))) || (!ServicePrognose.hatLernbereichsnoten(input))) { let msa = new ServiceAbschlussMSA_1.ServiceAbschlussMSA(); let msaOutput = msa.handle(input); this.logger.logLn(LogLevel_1.LogLevel.INFO, ""); this.log.append(msa.getLog()); if (msaOutput.erworben) { abschluss = Abschluss_1.Abschluss.MSA; let msaq = new ServiceBerechtigungMSAQ_1.ServiceBerechtigungMSAQ(); let msaqOutput = msaq.handle(input); if (msaqOutput.erworben) { abschluss = Abschluss_1.Abschluss.MSA_Q; } else { np_faecher = msaqOutput.npFaecher; } this.logger.logLn(LogLevel_1.LogLevel.INFO, ""); this.log.append(msaq.getLog()); } else { np_faecher = msaOutput.npFaecher; } } let prognose = AbschlussManager_1.AbschlussManager.getErgebnisNachpruefung(abschluss, np_faecher); prognose.erworben = (!JavaObject_1.JavaObject.equalsTranspiler(Abschluss_1.Abschluss.OHNE_ABSCHLUSS, (abschluss))); prognose.log = this.log.getStrings(); return prognose; } isTranspiledInstanceOf(name) { return ['de.nrw.schule.svws.core.Service', 'de.nrw.schule.svws.core.abschluss.ge.ServicePrognose'].includes(name); } } exports.ServicePrognose = ServicePrognose; function cast_de_nrw_schule_svws_core_abschluss_ge_ServicePrognose(obj) { return obj; } exports.cast_de_nrw_schule_svws_core_abschluss_ge_ServicePrognose = cast_de_nrw_schule_svws_core_abschluss_ge_ServicePrognose; //# sourceMappingURL=ServicePrognose.js.map