GesellschaftswissenschaftenUndReligion.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_GesellschaftswissenschaftenUndReligion = exports.GesellschaftswissenschaftenUndReligion = void 0;
  4. const GostBelegpruefung_1 = require("../../../../core/abschluss/gost/GostBelegpruefung");
  5. const GostFachManager_1 = require("../../../../core/abschluss/gost/GostFachManager");
  6. const GostKursart_1 = require("../../../../core/types/gost/GostKursart");
  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 Vector_1 = require("../../../../java/util/Vector");
  11. const GostBelegungsfehler_1 = require("../../../../core/abschluss/gost/GostBelegungsfehler");
  12. class GesellschaftswissenschaftenUndReligion extends GostBelegpruefung_1.GostBelegpruefung {
  13. gesellschaftswissenschaften = null;
  14. geschichte = null;
  15. sozialwissenschaften = null;
  16. philosophie = null;
  17. sonstige_gesellschaftswissenschaften = null;
  18. religion = null;
  19. zusatzkursFachbelegungen = null;
  20. /**
  21. * Erstellt eine neue Belegprüfung für den Bereich der Gesellschaftswissenschaften und Religion.
  22. *
  23. * @param manager der Daten-Manager für die Abiturdaten
  24. * @param pruefungs_art die Art der durchzuführenden Prüfung (z.B. EF.1 oder GESAMT)
  25. */
  26. constructor(manager, pruefungs_art) {
  27. super(manager, pruefungs_art);
  28. }
  29. init() {
  30. this.gesellschaftswissenschaften = this.manager.getFachbelegungen(GostFachbereich_1.GostFachbereich.GESELLSCHAFTSWISSENSCHAFTLICH);
  31. this.geschichte = this.manager.getFachbelegungen(GostFachbereich_1.GostFachbereich.GESCHICHTE);
  32. this.sozialwissenschaften = this.manager.getFachbelegungen(GostFachbereich_1.GostFachbereich.SOZIALWISSENSCHAFTEN);
  33. this.philosophie = this.manager.getFachbelegung(GostFachbereich_1.GostFachbereich.PHILOSOPHIE);
  34. this.sonstige_gesellschaftswissenschaften = this.manager.getFachbelegungen(GostFachbereich_1.GostFachbereich.GESELLSCHAFTSWISSENSCHAFTLICH_SONSTIGE);
  35. this.religion = this.manager.getFachbelegungen(GostFachbereich_1.GostFachbereich.RELIGION);
  36. this.zusatzkursFachbelegungen = new Vector_1.Vector();
  37. }
  38. pruefeEF1() {
  39. this.pruefeGesellschaftswissenschaftenEF1();
  40. this.pruefeReligionEF1();
  41. }
  42. /**
  43. * EF1-Prüfung Punkte 8-10:
  44. * Prüfe, ob eine Gesellschaftswissenschaft in EF.1 schriftlich belegt wurde und durchgängig belegbar ist
  45. * und ob Geschichte belegt wurde
  46. * und ob Sozialwissenschaften belegt wurde
  47. */
  48. pruefeGesellschaftswissenschaftenEF1() {
  49. if (!this.manager.pruefeBelegungDurchgehendBelegbarExistiert(this.gesellschaftswissenschaften, GostSchriftlichkeit_1.GostSchriftlichkeit.BELIEBIG, GostHalbjahr_1.GostHalbjahr.EF1))
  50. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.GW_10);
  51. if (!this.manager.pruefeBelegungExistiertMitSchriftlichkeitEinzeln(this.gesellschaftswissenschaften, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1))
  52. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.GW_11);
  53. if (this.manager.zaehleBelegungInHalbjahren(this.geschichte, GostHalbjahr_1.GostHalbjahr.EF1) <= 0)
  54. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.GE_1_INFO);
  55. if (this.manager.zaehleBelegungInHalbjahren(this.sozialwissenschaften, GostHalbjahr_1.GostHalbjahr.EF1) <= 0)
  56. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.SW_1_INFO);
  57. }
  58. /**
  59. * EF1-Prüfung Punkt 11:
  60. * Prüfe, ob Religion in EF.1 belegt wurde oder ob Philosophie und eine weitere durchgehend belegbare Gesellschaftswissenschaft belegt wurde.
  61. * Falls Philosophie als Ersatz für Religion gewählt wurde, zählt es nicht als durchgehend belegte Gesellschaftswissenschaft.
  62. */
  63. pruefeReligionEF1() {
  64. if (this.manager.pruefeBelegungExistiert(this.religion, GostHalbjahr_1.GostHalbjahr.EF1))
  65. return;
  66. if (!this.manager.pruefeBelegung(this.philosophie, GostHalbjahr_1.GostHalbjahr.EF1)) {
  67. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.RE_10);
  68. }
  69. else if ((!this.manager.pruefeBelegungDurchgehendBelegbarExistiert(this.geschichte, GostSchriftlichkeit_1.GostSchriftlichkeit.BELIEBIG, GostHalbjahr_1.GostHalbjahr.EF1)) && (!this.manager.pruefeBelegungDurchgehendBelegbarExistiert(this.sozialwissenschaften, GostSchriftlichkeit_1.GostSchriftlichkeit.BELIEBIG, GostHalbjahr_1.GostHalbjahr.EF1)) && (!this.manager.pruefeBelegungDurchgehendBelegbarExistiert(this.sonstige_gesellschaftswissenschaften, GostSchriftlichkeit_1.GostSchriftlichkeit.BELIEBIG, GostHalbjahr_1.GostHalbjahr.EF1))) {
  70. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.RE_10);
  71. }
  72. }
  73. pruefeGesamt() {
  74. this.pruefeSchriftlichkeitEF();
  75. this.pruefeDurchgaengigeBelegung();
  76. this.pruefeDurchgaengigeBelegungUndSchriftlich();
  77. this.pruefeZusatzkurs(this.geschichte);
  78. this.pruefeBelegungGeschichte();
  79. this.pruefeZusatzkurs(this.sozialwissenschaften);
  80. this.pruefeBelegungSozialwissenschaften();
  81. this.pruefeReligionEF();
  82. this.pruefeReligionQ1();
  83. this.pruefeReligionKontinuitaet();
  84. }
  85. /**
  86. * Gesamtprüfung Punkt 39:
  87. * Prüfe, on in EF.1 und EF.2 jeweils ein Fach der Gesellschaftswissenschaften schriftlich belegt wurde
  88. */
  89. pruefeSchriftlichkeitEF() {
  90. if ((!this.manager.pruefeBelegungExistiertMitSchriftlichkeitEinzeln(this.gesellschaftswissenschaften, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF1)) || (!this.manager.pruefeBelegungExistiertMitSchriftlichkeitEinzeln(this.gesellschaftswissenschaften, GostSchriftlichkeit_1.GostSchriftlichkeit.SCHRIFTLICH, GostHalbjahr_1.GostHalbjahr.EF2)))
  91. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.GW_11);
  92. }
  93. /**
  94. * Gesamtprüfung Punkt 38:
  95. * Prüfe, ob ein Fach der Gesellschaftswissenschaften von EF.1 bis Q2.2 durchgängig belegt wurde
  96. * - Zusatzkurse zählen hier nicht als Belegung
  97. */
  98. pruefeDurchgaengigeBelegung() {
  99. if (!this.manager.pruefeBelegungExistiert(this.gesellschaftswissenschaften, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21, GostHalbjahr_1.GostHalbjahr.Q22))
  100. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.GW_10);
  101. }
  102. /**
  103. * Gesamtprüfung Punkt 40:
  104. * Prüfe, ob ein Fach der Gesellschaftswissenschaften oder Religionslehre von EF.1 bis Q2.2 belegt
  105. * und von Q1.1 bis Q2.1 schriftlich belegt wurde, damit es als potentielles Abiturfach zur Verfügung steht.
  106. * - Zusatzkurse zählen hier nicht als Belegung
  107. */
  108. pruefeDurchgaengigeBelegungUndSchriftlich() {
  109. if (this.manager.pruefeBelegungExistiertDurchgehendSchriftlich(this.gesellschaftswissenschaften))
  110. return;
  111. if (this.manager.pruefeBelegungExistiertDurchgehendSchriftlich(this.religion))
  112. return;
  113. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.GW_12);
  114. }
  115. /**
  116. * Gesamtprüfung Punkte 27, 29 und 30:
  117. * Prüft, ob der Zusatzkurs genau zwei mal belegt wurde
  118. * und ob ein Zusatzkurs belegt wurde, obwohl im Halbjahr zuvor ein Geschichtskurs belegt wurde.
  119. *
  120. * @param fachbelegungen die Fachbelegung für Geschichte oder Sozialwissehschaften
  121. */
  122. pruefeZusatzkurs(fachbelegungen) {
  123. if ((fachbelegungen === null) || (fachbelegungen.size() === 0))
  124. return;
  125. fachbelegungen = this.manager.filterBelegungKursartExistiert(fachbelegungen, GostKursart_1.GostKursart.ZK);
  126. if (fachbelegungen.size() === 0)
  127. return;
  128. if (fachbelegungen.size() > 1)
  129. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ZK_13);
  130. for (let fachbelegung of fachbelegungen) {
  131. let fach = this.manager.getFach(fachbelegung);
  132. if ((fach === null) || (GostFachManager_1.GostFachManager.istBilingual(fach)))
  133. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ZK_13);
  134. let halbjahre = this.manager.getHalbjahreKursart(fachbelegung, GostKursart_1.GostKursart.ZK);
  135. if (halbjahre.size() === 2) {
  136. if (((this.manager.pruefeBelegungMitKursart(fachbelegung, GostKursart_1.GostKursart.ZK, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12)) || (this.manager.pruefeBelegungMitKursart(fachbelegung, GostKursart_1.GostKursart.ZK, GostHalbjahr_1.GostHalbjahr.Q12, GostHalbjahr_1.GostHalbjahr.Q21)) || (this.manager.pruefeBelegungMitKursart(fachbelegung, GostKursart_1.GostKursart.ZK, GostHalbjahr_1.GostHalbjahr.Q21, GostHalbjahr_1.GostHalbjahr.Q22)))) {
  137. if (this.zusatzkursFachbelegungen !== null)
  138. this.zusatzkursFachbelegungen.add(fachbelegung);
  139. }
  140. }
  141. else if (halbjahre.size() > 1) {
  142. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ZK_12);
  143. }
  144. if (halbjahre.size() > 0) {
  145. let prevHalbjahr = halbjahre.get(0).previous();
  146. if ((prevHalbjahr !== null) && (this.manager.pruefeBelegung(fachbelegung, prevHalbjahr)))
  147. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.ZK_10);
  148. }
  149. }
  150. }
  151. /**
  152. * Gesamtprüfung Punkt 41:
  153. * Prüft, ob Geschichte korrekt belegt wurde (mind. von EF.1 bis Q1.2 oder als Zusatzkurs)
  154. */
  155. pruefeBelegungGeschichte() {
  156. if ((this.geschichte === null) || (this.geschichte.size() <= 0)) {
  157. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.GE_10);
  158. return;
  159. }
  160. if (this.manager.pruefeBelegungExistiert(this.geschichte, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12))
  161. return;
  162. if (this.zusatzkursFachbelegungen !== null)
  163. for (let zkBelegung of this.zusatzkursFachbelegungen)
  164. if (this.geschichte.contains(zkBelegung))
  165. return;
  166. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.GE_10);
  167. }
  168. /**
  169. * Gesamtprüfung Punkt 42:
  170. * Prüft, ob Sozialwissenschaften korrekt belegt wurde (mind. von EF.1 bis Q1.2 oder als Zusatzkurs)
  171. */
  172. pruefeBelegungSozialwissenschaften() {
  173. if ((this.sozialwissenschaften === null) || (this.sozialwissenschaften.size() <= 0)) {
  174. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.SW_10);
  175. return;
  176. }
  177. if (this.manager.pruefeBelegungExistiert(this.sozialwissenschaften, GostHalbjahr_1.GostHalbjahr.EF1, GostHalbjahr_1.GostHalbjahr.EF2, GostHalbjahr_1.GostHalbjahr.Q11, GostHalbjahr_1.GostHalbjahr.Q12))
  178. return;
  179. if (this.zusatzkursFachbelegungen !== null)
  180. for (let zkBelegung of this.zusatzkursFachbelegungen)
  181. if (this.sozialwissenschaften.contains(zkBelegung))
  182. return;
  183. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.SW_10);
  184. }
  185. /**
  186. * Gesamtprüfung Punkte 43:
  187. * Prüft die Belegung von Religion und Philosophie in der EF. Wird Philosophie als Ersatz belegt, so wird auch geprüft,
  188. * ob eine weitere Gesellschaftswissenschaft belegt wurde.
  189. */
  190. pruefeReligionEF() {
  191. for (let halbjahr of GostHalbjahr_1.GostHalbjahr.getEinfuehrungsphase()) {
  192. if (this.manager.pruefeBelegungExistiertEinzeln(this.religion, halbjahr))
  193. continue;
  194. if ((!this.manager.pruefeBelegung(this.philosophie, halbjahr)) || (this.manager.pruefeDurchgaengigkeit(this.philosophie) && (this.manager.zaehleBelegungInHalbjahren(this.gesellschaftswissenschaften, halbjahr) <= 1))) {
  195. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.RE_10);
  196. break;
  197. }
  198. }
  199. }
  200. /**
  201. * Gesamtprüfung Punkt 44:
  202. * Prüft die Belegung von Religion und Philosophie. Wird Philosophie als Ersatz belegt, so wird auch geprüft, ob eine weitere
  203. * Gesellschaftswissenschaft belegt wurde.
  204. */
  205. pruefeReligionQ1() {
  206. for (let halbjahr of GostHalbjahr_1.GostHalbjahr.getHalbjahreFromJahrgang("Q1")) {
  207. if (this.manager.pruefeBelegungExistiertEinzeln(this.religion, halbjahr))
  208. continue;
  209. if (!this.manager.pruefeBelegung(this.philosophie, halbjahr)) {
  210. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.RE_10);
  211. return;
  212. }
  213. if (this.manager.pruefeDurchgaengigkeit(this.philosophie) && (this.manager.zaehleDurchgaengigeBelegungen(this.gesellschaftswissenschaften) > 1))
  214. continue;
  215. if (!this.manager.pruefeDurchgaengigkeit(this.philosophie) && (this.manager.zaehleDurchgaengigeBelegungen(this.gesellschaftswissenschaften) > 0))
  216. continue;
  217. if (this.manager.zaehleBelegungInHalbjahren(this.sonstige_gesellschaftswissenschaften, halbjahr) > 0)
  218. continue;
  219. if ((halbjahr === GostHalbjahr_1.GostHalbjahr.Q11) && (this.manager.pruefeBelegungExistiertEinzeln(this.geschichte, GostHalbjahr_1.GostHalbjahr.Q11) || this.manager.pruefeBelegungExistiertEinzeln(this.sozialwissenschaften, GostHalbjahr_1.GostHalbjahr.Q11)))
  220. continue;
  221. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.RE_10);
  222. break;
  223. }
  224. }
  225. /**
  226. * Gesamtprüfung Punkt 55:
  227. * Prüft, ob Fehler bei der Kontinuität bei Philosophie und Religion nur durch die Ersatzfachregelung bei Religion
  228. * zustandekommen und damit zulässig sind.
  229. */
  230. pruefeReligionKontinuitaet() {
  231. if (this.philosophie === null)
  232. return;
  233. for (let belegung of this.philosophie.belegungen) {
  234. if (belegung === null)
  235. continue;
  236. let halbjahr = GostHalbjahr_1.GostHalbjahr.fromKuerzel(belegung.halbjahrKuerzel);
  237. if (halbjahr === null)
  238. continue;
  239. let prevHalbjahr = halbjahr.previous();
  240. if (prevHalbjahr === null)
  241. continue;
  242. if (this.manager.pruefeBelegung(this.philosophie, prevHalbjahr))
  243. continue;
  244. if (this.manager.pruefeBelegungExistiertEinzeln(this.religion, halbjahr))
  245. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.E1BEL_10);
  246. if (!this.manager.pruefeBelegungExistiertEinzeln(this.religion, prevHalbjahr))
  247. this.addFehler(GostBelegungsfehler_1.GostBelegungsfehler.E1BEL_10);
  248. }
  249. }
  250. isTranspiledInstanceOf(name) {
  251. return ['de.nrw.schule.svws.core.abschluss.gost.belegpruefung.GesellschaftswissenschaftenUndReligion', 'de.nrw.schule.svws.core.abschluss.gost.GostBelegpruefung'].includes(name);
  252. }
  253. }
  254. exports.GesellschaftswissenschaftenUndReligion = GesellschaftswissenschaftenUndReligion;
  255. function cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_GesellschaftswissenschaftenUndReligion(obj) {
  256. return obj;
  257. }
  258. exports.cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_GesellschaftswissenschaftenUndReligion = cast_de_nrw_schule_svws_core_abschluss_gost_belegpruefung_GesellschaftswissenschaftenUndReligion;
  259. //# sourceMappingURL=GesellschaftswissenschaftenUndReligion.js.map