AbiFaecher.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_AbiFaecher = exports.AbiFaecher = void 0;
  4. const GostAbiturFach_1 = require("../../../../core/types/gost/GostAbiturFach");
  5. const HashMap_1 = require("../../../../java/util/HashMap");
  6. const GostBelegpruefung_1 = require("../../../../core/abschluss/gost/GostBelegpruefung");
  7. const GostFachbereich_1 = require("../../../../core/types/gost/GostFachbereich");
  8. const GostSchriftlichkeit_1 = require("../../../../core/types/gost/GostSchriftlichkeit");
  9. const GostHalbjahr_1 = require("../../../../core/types/gost/GostHalbjahr");
  10. const GostBelegungsfehler_1 = require("../../../../core/abschluss/gost/GostBelegungsfehler");
  11. const HashSet_1 = require("../../../../java/util/HashSet");
  12. class AbiFaecher extends GostBelegpruefung_1.GostBelegpruefung {
  13. mapAbiturFachbelegungen = null;
  14. anzahlAbiFaecher = 0;
  15. anzahlDeutschMatheFremdsprache = 0;
  16. anzahlFremdsprachen = 0;
  17. anzahlSportReligion = 0;
  18. hatAufgabenfeldI = false;
  19. hatAufgabenfeldII = false;
  20. hatAufgabenfeldIII = false;
  21. /**
  22. * Erstellt eine neue Belegprüfung für die Projektkurse.
  23. *
  24. * @param manager der Daten-Manager für die Abiturdaten
  25. * @param pruefungs_art die Art der durchzuführenden Prüfung (z.B. EF.1 oder GESAMT)
  26. */
  27. constructor(manager, pruefungs_art) {
  28. super(manager, pruefungs_art);
  29. }
  30. init() {
  31. this.mapAbiturFachbelegungen = new HashMap_1.HashMap();
  32. this.anzahlAbiFaecher = 0;
  33. this.anzahlDeutschMatheFremdsprache = 0;
  34. this.anzahlFremdsprachen = 0;
  35. this.anzahlSportReligion = 0;
  36. this.hatAufgabenfeldI = false;
  37. this.hatAufgabenfeldII = false;
  38. this.hatAufgabenfeldIII = false;
  39. let alleFachbelegungen = this.manager.getFachbelegungen();
  40. for (let i = 0; i < alleFachbelegungen.size(); i++) {
  41. let fachbelegung = alleFachbelegungen.get(i);
  42. let abiturFach = GostAbiturFach_1.GostAbiturFach.fromID(fachbelegung.abiturFach);
  43. if (abiturFach === null)
  44. continue;
  45. this.mapAbiturFachbelegungen.put(abiturFach, fachbelegung);
  46. this.anzahlAbiFaecher++;
  47. let fach = this.manager.getFach(fachbelegung);
  48. if (fach === null)
  49. continue;
  50. if (GostFachbereich_1.GostFachbereich.FREMDSPRACHE.hat(fach) || GostFachbereich_1.GostFachbereich.DEUTSCH.hat(fach))
  51. this.hatAufgabenfeldI = true;
  52. if (GostFachbereich_1.GostFachbereich.GESELLSCHAFTSWISSENSCHAFTLICH_MIT_RELIGION.hat(fach))
  53. this.hatAufgabenfeldII = true;
  54. if (GostFachbereich_1.GostFachbereich.MATHEMATISCH_NATURWISSENSCHAFTLICH.hat(fach))
  55. this.hatAufgabenfeldIII = true;
  56. if (GostFachbereich_1.GostFachbereich.FREMDSPRACHE.hat(fach) || GostFachbereich_1.GostFachbereich.DEUTSCH.hat(fach) || GostFachbereich_1.GostFachbereich.MATHEMATIK.hat(fach))
  57. this.anzahlDeutschMatheFremdsprache++;
  58. if (GostFachbereich_1.GostFachbereich.FREMDSPRACHE.hat(fach))
  59. this.anzahlFremdsprachen++;
  60. if (GostFachbereich_1.GostFachbereich.SPORT.hat(fach) || GostFachbereich_1.GostFachbereich.RELIGION.hat(fach))
  61. this.anzahlSportReligion++;
  62. }
  63. }
  64. pruefeEF1() {
  65. }
  66. pruefeGesamt() {
  67. this.pruefeLK1();
  68. this.pruefeAnzahlUndAufgabenfelderAbiFaecher();
  69. this.pruefeMehrfacheAbiturfaecher();
  70. this.pruefeSchriftlichkeitAB3undAB4();
  71. }
  72. /**
  73. * Gesamtprüfung Punkt 70:
  74. * Prüfe, ob der erste LK eine fortgeführte Fremdsprache, eine klassische Naturwissenschaft, Mathematik oder Deutsch ist
  75. */
  76. pruefeLK1() {
  77. let lk1 = this.mapAbiturFachbelegungen === null ? null : this.mapAbiturFachbelegungen.get(GostAbiturFach_1.GostAbiturFach.LK1);
  78. let lk1fach = this.manager.getFach(lk1);
  79. if ((lk1 === null) || (lk1fach === null) || !((GostFachbereich_1.GostFachbereich.DEUTSCH.hat(lk1fach)) || (GostFachbereich_1.GostFachbereich.FREMDSPRACHE.hat(lk1fach) && !lk1.istFSNeu) || (GostFachbereich_1.GostFachbereich.MATHEMATIK.hat(lk1fach)) || (GostFachbereich_1.GostFachbereich.NATURWISSENSCHAFTLICH_KLASSISCH.hat(lk1fach))))
  80. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.LK1_11);
  81. }
  82. /**
  83. * Gesamtprüfung Punkt 71-74:
  84. * Prüfe, ob die Zahl der Abiturfächer 4 ist und diese alle Aufgabenfelder abdecken
  85. * und ob mindestens 2 Fächer im Bereich Deutsch, Fremdsprache, Mathematik liegen
  86. * und ob maximale 1 Fach im Bereich Sport und Religion liegt
  87. * und ob Sport nicht als erstes oder drittes Abiturfach gewählt wurde
  88. */
  89. pruefeAnzahlUndAufgabenfelderAbiFaecher() {
  90. if ((this.anzahlAbiFaecher !== 4) || (!this.hatAufgabenfeldI) || (!this.hatAufgabenfeldII) || (!this.hatAufgabenfeldIII))
  91. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.LK1_13);
  92. if (this.anzahlDeutschMatheFremdsprache < 2)
  93. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_10);
  94. if ((this.anzahlDeutschMatheFremdsprache < 3) && (this.anzahlFremdsprachen > 1))
  95. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_19);
  96. if (this.anzahlSportReligion > 1)
  97. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_11);
  98. let lk1 = this.mapAbiturFachbelegungen === null ? null : this.mapAbiturFachbelegungen.get(GostAbiturFach_1.GostAbiturFach.LK1);
  99. let lk1fach = this.manager.getFach(lk1);
  100. let ab3 = this.mapAbiturFachbelegungen === null ? null : this.mapAbiturFachbelegungen.get(GostAbiturFach_1.GostAbiturFach.AB3);
  101. let ab3fach = this.manager.getFach(ab3);
  102. if (((lk1fach !== null) && (GostFachbereich_1.GostFachbereich.SPORT.hat(lk1fach.kuerzel))) || ((ab3fach !== null) && (GostFachbereich_1.GostFachbereich.SPORT.hat(ab3fach.kuerzel))))
  103. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_15);
  104. }
  105. /**
  106. * Gesamtprüfung: Prüfe, ob eines der Abiturfächer mehrfach belegt wurde. Es ist nicht zulässig
  107. * Abiturfächer mehrfach belegt zu haben.
  108. */
  109. pruefeMehrfacheAbiturfaecher() {
  110. let abiFaecher = new HashSet_1.HashSet();
  111. let alleFachbelegungen = this.manager.getFachbelegungen();
  112. for (let i = 0; i < alleFachbelegungen.size(); i++) {
  113. let fachbelegung = alleFachbelegungen.get(i);
  114. let abiturFach = GostAbiturFach_1.GostAbiturFach.fromID(fachbelegung.abiturFach);
  115. if (abiturFach === null)
  116. continue;
  117. if (!abiFaecher.contains(abiturFach)) {
  118. abiFaecher.add(abiturFach);
  119. continue;
  120. }
  121. switch (abiturFach) {
  122. case GostAbiturFach_1.GostAbiturFach.LK1:
  123. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_21);
  124. break;
  125. case GostAbiturFach_1.GostAbiturFach.LK2:
  126. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_22);
  127. break;
  128. case GostAbiturFach_1.GostAbiturFach.AB3:
  129. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_23);
  130. break;
  131. case GostAbiturFach_1.GostAbiturFach.AB4:
  132. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_24);
  133. break;
  134. }
  135. }
  136. }
  137. /**
  138. * Gesamtprüfung Punkte 76 und 77:
  139. * Prüfe ob das 3. Abiturfach von Q1.1 bis Q2.2 schriftlich belegt wurde
  140. * und on das 4. Abiturfach von Q1.1 bis Q2.1 schritlich und in Q2.2 mündlich belegt wurde
  141. *
  142. */
  143. pruefeSchriftlichkeitAB3undAB4() {
  144. let ab3 = this.mapAbiturFachbelegungen === null ? null : this.mapAbiturFachbelegungen.get(GostAbiturFach_1.GostAbiturFach.AB3);
  145. if (ab3 !== null) {
  146. if (!this.manager.pruefeBelegungMitSchriftlichkeit(ab3, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21))
  147. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_17);
  148. if (!this.manager.pruefeBelegungMitSchriftlichkeitEinzeln(ab3, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.Q22))
  149. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_12);
  150. }
  151. let ab4 = this.mapAbiturFachbelegungen === null ? null : this.mapAbiturFachbelegungen.get(GostAbiturFach_1.GostAbiturFach.AB4);
  152. if (ab4 !== null) {
  153. if (!this.manager.pruefeBelegungMitSchriftlichkeit(ab4, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21))
  154. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_18);
  155. if (!this.manager.pruefeBelegungMitSchriftlichkeitEinzeln(ab4, GostSchriftlichkeit_1.GostSchriftlichkeit.MUENDLICH, GostHalbjahr_1.GostHalbjahr.Q22))
  156. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ABI_13);
  157. }
  158. }
  159. /**
  160. * Liefert die zugehörige Abitur-Fachbelegung zurück.
  161. *
  162. * @param abifach die Art des Abifachs (1., 2., 3. oder 4. Fach)
  163. *
  164. * @return die Abitur-Fachbelegung oder null, falls es (noch) nicht festgelegt wurde
  165. */
  166. getAbiturfach(abifach) {
  167. return this.mapAbiturFachbelegungen === null ? null : this.mapAbiturFachbelegungen.get(abifach);
  168. }
  169. isTranspiledInstanceOf(name) {
  170. return ['de.nrw.schule.svws.core.abschluss.gost.belegpruefung.AbiFaecher', 'de.nrw.schule.svws.core.abschluss.gost.GostBelegpruefung'].includes(name);
  171. }
  172. }
  173. exports.AbiFaecher = AbiFaecher;
  174. function cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_AbiFaecher(obj) {
  175. return obj;
  176. }
  177. exports.cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_AbiFaecher = cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_AbiFaecher;
  178. //# sourceMappingURL=AbiFaecher.js.map