From c2df18387971e9706520083b26e9aac844b2f77b Mon Sep 17 00:00:00 2001 From: Stefan Puraner Date: Fri, 28 Mar 2014 14:24:20 +0000 Subject: [PATCH] =?UTF-8?q?Pr=C3=BCfungsverwaltung;=20Student=20kann=20sic?= =?UTF-8?q?h=20anmelden;=20Pr=C3=BCfer=20kann=20best=C3=A4tigen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/lehre/pruefung/pruefung.js | 527 ++++++++++- .../pruefung/pruefungsanmeldung.json.php | 866 ++++++++++++------ .../pruefungsanmeldungen_verwalten.php | 230 +++++ include/organisationseinheit.class.php | 5 + include/pruefungCis.class.php | 37 +- include/pruefungsanmeldung.class.php | 133 +++ include/pruefungstermin.class.php | 4 + 7 files changed, 1466 insertions(+), 336 deletions(-) create mode 100644 cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php diff --git a/cis/private/lehre/pruefung/pruefung.js b/cis/private/lehre/pruefung/pruefung.js index 7a5f9520b..46dfeed76 100644 --- a/cis/private/lehre/pruefung/pruefung.js +++ b/cis/private/lehre/pruefung/pruefung.js @@ -17,6 +17,12 @@ * Authors: Stefan Puraner */ +var progressBarCount = 0; + +/** + * Liest GET Variablen einer URL aus + * @returns {String|value|Element.value|document@arr;all.value} + */ function getUrlVars() { var vars = {}; var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { @@ -25,6 +31,11 @@ function getUrlVars() { return vars; } +/** + * Initialisiert den Datepicker + * @param {type} ele + * @returns {undefined} + */ function setDatePicker(ele) { var start = $("#pruefungsfenster option:selected").attr("start"); @@ -41,6 +52,11 @@ function setDatePicker(ele) $("#pruefungsfenster").attr("onchange", "setDatePicker()"); } +/** + * Fügt ein neunes Formularfeld für einen zusätzlichen Termin hinzu + * @param {type} inputTag + * @returns {undefined} + */ function terminHinzufuegen(inputTag) { inputTag = (inputTag===undefined ? "" : inputTag); @@ -49,6 +65,12 @@ function terminHinzufuegen(inputTag) setDatePicker(); } +/** + * Fügt ein neues Dropdownfeld zur Auswahl der Lehrveranstaltung hinzu + * @param {type} element + * @param {type} isChanged + * @returns {undefined} + */ function lehrveranstaltungDropdownhinzufuegen(element, isChanged) { if(!isChanged) @@ -75,6 +97,10 @@ function loadError(xhr, textStatus, errorThrown) alert('Fehler beim Laden der Daten. ErrorNr:'+xhr.status); } +/** + * Lädt die Prüfungstenster eines Studiensemesters + * @returns {undefined} + */ function loadPruefungsfenster() { var studiensemester_kurzbz = $("#studiensemester option:selected").val(); @@ -94,6 +120,11 @@ function loadPruefungsfenster() }); } +/** + * Schreibt die Daten des geladenen Prüfungsfensters + * @param {type} data + * @returns {undefined} + */ function writePruefungsfenster(data) { var prfFensterId = getUrlVars()["prfFensterId"]; @@ -128,22 +159,30 @@ function writePruefungsfenster(data) }); } -function writePrfFensterDetails(){ - var id = $("#pruefungsfenster option:selected").val(); - if(id !== null) - { - var start = $("#pruefungsfenster option:selected").attr("start"); - var ende = $("#pruefungsfenster option:selected").attr("ende"); - start = start.split('-'); - ende = ende.split('-'); - start = new Date(start[0], start[1]-1,start[2]); - ende = new Date(ende[0], ende[1]-1,ende[2]); - start = start.getDate()+"."+(start.getMonth()+1)+"."+start.getFullYear(); - ende = ende.getDate()+"."+(ende.getMonth()+1)+"."+ende.getFullYear(); - $("#prfFensterDetails").html("Beginn: "+start+"
Ende: "+ende); - } -} +/** + * + * @returns {undefined} + */ +//function writePrfFensterDetails(){ +// var id = $("#pruefungsfenster option:selected").val(); +// if(id !== null) +// { +// var start = $("#pruefungsfenster option:selected").attr("start"); +// var ende = $("#pruefungsfenster option:selected").attr("ende"); +// start = start.split('-'); +// ende = ende.split('-'); +// start = new Date(start[0], start[1]-1,start[2]); +// ende = new Date(ende[0], ende[1]-1,ende[2]); +// start = start.getDate()+"."+(start.getMonth()+1)+"."+start.getFullYear(); +// ende = ende.getDate()+"."+(ende.getMonth()+1)+"."+ende.getFullYear(); +// $("#prfFensterDetails").html("Beginn: "+start+"
Ende: "+ende); +// } +//} +/** + * Lädt alle Prüfungen eines Studenten zu deren LVs er angemeldet ist + * @returns {undefined} + */ function loadPruefungen() { $.ajax({ @@ -172,6 +211,10 @@ function loadPruefungen() }); } +/** + * Lädt alle Prüfungen eines Studienganges + * @returns {undefined} + */ function loadPruefungenOfStudiengang() { $.ajax({ @@ -199,6 +242,10 @@ function loadPruefungenOfStudiengang() }); } +/** + * Lädt alle Prüfungen + * @returns {undefined} + */ function loadPruefungenGesamt() { $.ajax({ @@ -220,6 +267,12 @@ function loadPruefungenGesamt() } +/** + * Schreibt die Daten der Prüfungen in eine Tabelle + * @param {type} e Daten der Prüfungen + * @param {type} data Daten der Anmeldungen + * @returns {String} + */ function writePruefungsTable(e, data) { var row = ""; @@ -266,6 +319,12 @@ function writePruefungsTable(e, data) return row; } +/** + * Lädt die Details zu einer Prüfung + * @param {type} prfId ID einer Prüfung + * @param {type} lvId ID einer Lehrveranstaltung + * @returns {undefined} + */ function showPruefungsDetails(prfId, lvId) { var prfId = prfId; @@ -318,6 +377,15 @@ function showPruefungsDetails(prfId, lvId) } } +/** + * Öffnet einen Dialog zur Anmeldung zu einer Prüfung + * @param {type} lehrveranstaltung_id ID einer Lehrveransaltung + * @param {type} termin_id ID des Prüfungstermines + * @param {type} lvBezeichnung Bezeichnung der Lehrveranstaltung + * @param {type} terminVon Beginn der Prüfung + * @param {type} terminBis Ende der Prüfung + * @returns {undefined} + */ function openDialog(lehrveranstaltung_id, termin_id, lvBezeichnung, terminVon, terminBis) { $("#lehrveranstaltungHidden").val(lehrveranstaltung_id); @@ -344,6 +412,12 @@ function openDialog(lehrveranstaltung_id, termin_id, lvBezeichnung, terminVon, t $("#saveDialog").dialog("open"); } +/** + * speichert eine Prüfungsanmeldung + * @param {type} lehrveranstaltung_id ID der Lehrveranstaltung + * @param {type} termin_id ID des Prüfungstermines + * @returns {undefined} + */ function saveAnmeldung(lehrveranstaltung_id, termin_id) { var lehrveranstaltung_id = $("#lehrveranstaltungHidden").val(); @@ -366,19 +440,21 @@ function saveAnmeldung(lehrveranstaltung_id, termin_id) }).success(function(data){ if(data.error === 'false') { - $("#message").html(data.result); - $("#message").effect("highlight", { - duration: 4000, - color: "green" - }); + messageBox("message", data.result, "green", "highlight", 4000); +// $("#message").html(data.result); +// $("#message").effect("highlight", { +// duration: 4000, +// color: "green" +// }); } else { - $("#message").html(data.errormsg); - $("#message").effect("highlight", { - duration: 4000, - color: "red" - }); + messageBox("message", data.errormsg, "red", "highlight", 4000); +// $("#message").html(data.errormsg); +// $("#message").effect("highlight", { +// duration: 4000, +// color: "red" +// }); } resetForm(); }).complete(function(event, xhr, settings){ @@ -387,6 +463,11 @@ function saveAnmeldung(lehrveranstaltung_id, termin_id) }); } +/** + * storniert eine Prüfungsanmeldung + * @param {type} pruefungsanmeldung_id ID einer Prüfungsanmeldung + * @returns {undefined} + */ function stornoAnmeldung(pruefungsanmeldung_id) { if(confirm("Anmeldung wirklich stornieren?")) @@ -403,19 +484,21 @@ function stornoAnmeldung(pruefungsanmeldung_id) }).success(function(data){ if(data.error === 'false') { - $("#message").html(data.result); - $("#message").effect("highlight", { - duration: 4000, - color: "green" - }); + messageBox("message", data.result, "green", "highlight", 4000); +// $("#message").html(data.result); +// $("#message").effect("highlight", { +// duration: 4000, +// color: "green" +// }); } else { - $("#message").html(data.errormsg); - $("#message").effect("highlight", { - duration: 4000, - color: "red" - }); + messageBox("message", data.errormsg, "red", "highlight", 4000); +// $("#message").html(data.errormsg); +// $("#message").effect("highlight", { +// duration: 4000, +// color: "red" +// }); } }).complete(function(event, xhr, settings){ refresh(); @@ -423,6 +506,10 @@ function stornoAnmeldung(pruefungsanmeldung_id) } } +/** + * Leer das DIV-Element der Prüfungsdetails + * @returns {undefined} + */ function clearPrfDetails() { $("#prfTyp").empty(); @@ -431,12 +518,21 @@ function clearPrfDetails() $("#prfEinzeln").empty(); } +/** + * Setzt ein Formular auf den Urzustand zurück + * @returns {undefined} + */ function resetForm() { $("form").find("input[type=text], textarea").val(""); clearPrfDetails(); } +/** + * Initialisiert den tablesorter für eine Tabelle + * @param {type} tableId ID eines "table"-Elements + * @returns {undefined} + */ function setTablesorter(tableId) { if($("#"+tableId)[0].hasInitialized !== true) @@ -454,6 +550,10 @@ function setTablesorter(tableId) } } +/** + * Leert die Daten eines table-bodys + * @returns {undefined} + */ function clearAccordion() { $("#accordion tbody").each(function(i, v){ @@ -461,10 +561,365 @@ function clearAccordion() }); } +/** + * Lädt die Seite der Prüfungsanmeldung neu + * @returns {undefined} + */ function refresh() { clearAccordion(); loadPruefungen(); loadPruefungenOfStudiengang(); loadPruefungenGesamt(); -} \ No newline at end of file +} + +/** + * Lädt alle Prüfungen eines Mitarbeiters + * @returns {undefined} + */ +function loadPruefungenMitarbeiter() +{ + $.ajax({ + dataType: 'json', + url: "./pruefungsanmeldung.json.php", + type: "POST", + data: { + method: "getPruefungMitarbeiter" + }, + error: loadError + }).success(function(data){ + if(data.error === 'false') + { + var liste = ""; + data.result.forEach(function(e){ + liste += "
  • "+e.bezeichnung+""; + }); + $("#pruefungenListe").append(liste); + } + else + { + $("#pruefungenListe").html(data.errormsg); + } + }); +} + +/** + * Konvertiert einen String im Fromat JJJJ-MM-TT hh:mm:ss zu DD.MM.JJJJ oder HH:MM + * @param {String} string Format: JJJJ-MM-TT hh:mm:ss + * @param {String} type spezifiziet die Ausgabe ("time"|"date") + * @returns {String} Format: date: DD.MM.JJJJ; time: HH:MM + */ +function convertDateTime(string, type) +{ + switch (type) + { + case 'date': + string = string.split(' '); + string = string[0].split('-'); + string = new Date(string[0], string[1]-1,string[2]); + string = string.getDate()+"."+(string.getMonth()+1)+"."+string.getFullYear(); + break; + case 'time': + string = string.split(' '); + string = string[1].split(':'); + string = string[0]+":"+string[1]; + break; + default: + string = string.split(' '); + string = string[0].split('-'); + string = new Date(string[0], string[1]-1,string[2]); + string = string.getDate()+"."+(string.getMonth()+1)+"."+string.getFullYear(); + break; + } + return string; +} + +/** + * Lädt die Anmeldungen zu einer Prüfung + * @param {type} pruefungstermin_id ID des Prüfungstermins + * @param {type} lehrveranstaltung_id ID der Lehrveranstaltung + * @returns {undefined} + */ +function showAnmeldungen(pruefungstermin_id, lehrveranstaltung_id) +{ + $.ajax({ + dataType: 'json', + url: "./pruefungsanmeldung.json.php", + type: "POST", + data: { + method: "getAnmeldungenTermin", + pruefungstermin_id: pruefungstermin_id, + lehrveranstaltung_id: lehrveranstaltung_id + }, + error: loadError + }).success(function(data){ + if(data.error === 'false') + { + var terminId = data.result[0].pruefungstermin_id; + var lehrveranstaltung_id = data.result[0].lehrveranstaltung_id; + var liste = "
      "; + var count = 0; + data.result.forEach(function(d){ + count++; + switch(d.status_kurzbz) + { + case 'angemeldet': + liste += "
    • "+d.student.vorname+" "+d.student.nachname+""; + liste += "
      "+count+"
      "; + if(d.wuensche !== null) + { + liste += "
      "; + } + liste += "
    • "; + break; + case 'bestaetigt': + liste += "
    • "+d.student.vorname+" "+d.student.nachname+""; + liste += "
      "+count+"
      bestätigt
      "; + if(d.wuensche !== null) + { + liste += "
      "; + } + + break; + default: + break; + } + + }); + liste += "
    "; + $("#reihungSpeichernButton").html(""); + $("#anmeldeDaten").html(liste); + $(document).tooltip({ + position: { + at: "right center", + my: "left+15 center" + } + }); + } + else + { +// $("#message").html(data.errormsg); + messageBox("message", data.errormsg, "red", "highlight", 4000); + } + }).complete(function(event, xhr, settings){ + $("#sortable").sortable(); + $("#sortable").disableSelection(); + }); +} + +/** + * speichert die Reihung der Studenten einer Prüfungsanmeldung + * @param {type} terminId ID des Prüfungstermines + * @param {type} lehrveranstaltung_id ID der Lehrveranstaltung + * @returns {undefined} + */ +function saveReihung(terminId, lehrveranstaltung_id) +{ + var reihung = []; + $("#anmeldeDaten ul").children().each(function(i, v){ + var anmeldung = new Object(); + anmeldung.terminId = terminId; + anmeldung.lehrveranstaltung_id = lehrveranstaltung_id; + anmeldung.reihung = (i+1); + anmeldung.uid = v.id; + reihung.push(anmeldung); + }); + $.ajax({ + dataType: 'json', + url: "./pruefungsanmeldung.json.php", + type: "POST", + data: { + method: "saveReihung", + reihung: reihung + }, + error: loadError + }).success(function(data){ + if(data.error === 'false' && data.result === true) + { + messageBox("message", "Reihung erfolgreich geändert.", "green", "highlight", 4000); + } + else + { + messageBox("message", data.errormsg, "red", "highlight", 4000); + } + }).complete(function(){ + showAnmeldungen(terminId, lehrveranstaltung_id); + }); +} + +/** + * Ändert den Status einer Anmeldung auf "bestätigt" + * @param {type} pruefungsanmeldung_id ID der Prüfungsanmeldung + * @param {type} termin_id ID des Prüfungstermines + * @param {type} lehrveranstaltung_id ID der Lehrveranstaltung + * @returns {undefined} + */ +function anmeldungBestaetigen(pruefungsanmeldung_id, termin_id, lehrveranstaltung_id) +{ + $.ajax({ + dataType: 'json', + url: "./pruefungsanmeldung.json.php", + type: "POST", + data: { + method: "anmeldungBestaetigen", + pruefungsanmeldung_id: pruefungsanmeldung_id + }, + error: loadError + }).success(function(data){ + if(data.error === 'false' && data.result === true) + { + if(termin_id !== 'undefined' && lehrveranstaltung_id !== 'undefined') + { + showAnmeldungen(termin_id, lehrveranstaltung_id); + } + } + else + { + messageBox("message", data.errormsg, "red", "highlight", 4000); + } + }); +} + +/** + * Anzeige eines DIVs zur Darstellung von Fehlermeldungen, etc. + * @param {type} divId ID des DIVs in dem die Meldung dargestellt werden soll + * @param {type} data Daten die angezeigt werden sollen + * @param {type} color Hintergrundfarbe des DIVs + * @param {type} effect Anzeigeeffekt (siehe jQuery UI) + * @param {type} duration Dauer des Effektes + * @returns {undefined} + */ +function messageBox(divId, data, color, effect, duration) +{ + $("#"+divId).html(data); + $("#"+divId).effect(effect, { + duration: duration, + color: color + }); + $("#"+divId).hide("blind",{ + duration: 4000, + queue: false + }); +} + +/** + * Lädt alle Studiengänge + * @returns {undefined} + */ +function loadStudiengaenge() +{ +// $("body").append("
    "); + $.ajax({ + dataType: 'json', + url: "./pruefungsanmeldung.json.php", + type: "POST", + data: { + method: "getStudiengaenge" + }, + error: loadError + }).success(function(data){ + $("#stgListe").empty(); + if(data.error === 'false') + { + var liste = ""; + data.result.forEach(function(e){ + progressBarCount++; + }); +// $("#progressbar").progressbar({ +// value: 0, +// max: progressBarCount +// }).bind('progressbarchange', function(event, ui) { +// var selector = "#" + this.id + " > div"; +// var value = this.getAttribute( "aria-valuenow" ); +// +// if (value < (progressBarCount / 6)){ +// $(selector).css({ 'background': 'Red' }); +// } else if (value < (progressBarCount / 3)){ +// $(selector).css({ 'background': 'Orange' }); +// } else if (value < (progressBarCount / 1.5)){ +// $(selector).css({ 'background': 'Yellow' }); +// } else{ +// $(selector).css({ 'background': 'LightGreen' }); +// } +// }); + + data.result.forEach(function(e){ + var kuerzel = e.typ+e.kurzbz + liste += "
  • "+e.bezeichnung+" ("+kuerzel.toUpperCase()+")
  • "; +// loadPruefungStudiengang(e.studiengang_kz); + }); + $("#stgListe").append(liste); + } + else + { + messageBox("message", data.errormsg, "red", "highlight", 4000); + } + }).complete(function(event, xhr, settings){ + + }); +} + +/** + * Lädt alle Prüfungen zu einem Studiengang + * @param {type} studiengang_kz Studiengangskennzahl + * @returns {undefined} + */ +function loadPruefungStudiengang(studiengang_kz) +{ + var progressBarStep = 100/progressBarCount; + $.ajax({ + dataType: 'json', + url: "./pruefungsanmeldung.json.php", + type: "POST", + data: { + method: "getPruefungenStudiengang", + studiengang_kz: studiengang_kz + }, + error: loadError + }).success(function(data){ + console.log(data); + if(data.error === 'false') + { + $("#pruefungenListe").empty(); + if(data.result.length > 0) + { + var liste = ""; + data.result.forEach(function(e){ + liste += ""; + }); +// $("#stg"+studiengang_kz).append(liste); + $("#pruefungenListe").append(liste); + } + else + { + $("#pruefungenListe").html("Keine Prüfungen vorhanden."); + } + } + else + { + messageBox("message", data.errormsg, "red", "highlight", 4000); + } + }).complete(function(event, xhr, settings){ +// var value = $("#progressbar").progressbar("option", "value"); +// $("#progressbar").progressbar({ +// value: (value += 1) +// }); +// if(value === progressBarCount) +// { +// $(".modalOverlay").remove(); +// $("#progressbar").hide(); +//// +//// var width = $("#prfWrapper").width(); +//// $("#prfWrapper").width(width+40); +//// $("#anmWrapper").css("left", width+80+"px"); +// } + }); +} diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php index 1d5a0f8e7..52bcfb5c9 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php @@ -17,6 +17,7 @@ require_once('../../../../include/konto.class.php'); require_once('../../../../include/student.class.php'); require_once('../../../../include/studiensemester.class.php'); require_once('../../../../include/lehreinheit.class.php'); +require_once('../../../../include/studiengang.class.php'); $uid = get_uid(); @@ -31,314 +32,593 @@ $method = isset($_REQUEST['method'])?$_REQUEST['method']:''; switch($method) { case 'getPruefungByLv': - $lehrveranstaltungen = new lehrveranstaltung(); - //TODO - $lehrveranstaltungen->load_lva_student($uid); - $lvIds = array(); - foreach($lehrveranstaltungen->lehrveranstaltungen as $lvs) - { - array_push($lvIds, $lvs->lehrveranstaltung_id); - } - $lehrveranstaltungen=$lvIds; - $pruefung = new pruefungCis(); - //TODO nur Prüfungen des aktuellen Studiensemesters - if($pruefung->getPruefungByLv($lehrveranstaltungen)) - { - $pruefungen = array(); - foreach($pruefung->lehrveranstaltungen as $lv) - { - $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); - $lehrveranstaltung = $lehrveranstaltung->cleanResult(); - $lehreinheit = new lehreinheit(); - $lehreinheit->load_lehreinheiten($lehrveranstaltung[0]->lehrveranstaltung_id, $aktStudiensemester); - $lehreinheiten = $lehreinheit->lehreinheiten; - $prf = new stdClass(); - $temp = new pruefungCis($lv->pruefung_id); - $temp->getTermineByPruefung($lv->pruefung_id); - for($i=0; $i < sizeof($temp->termine); $i++) - { - $termin = new pruefungstermin($temp->termine[$i]->pruefungstermin_id); - $temp->termine[$i]->teilnehmer = $termin->getNumberOfParticipants(); - } - $prf->pruefung = $temp; - $prf->lehrveranstaltung = $lehrveranstaltung; - $lveranstaltung = new lehrveranstaltung($lehreinheiten[0]->lehrfach_id); - $oe = new organisationseinheit($lveranstaltung->oe_kurzbz); - $prf->organisationseinheit = $oe->bezeichnung; - array_push($pruefungen, $prf); - } - $anmeldung = new pruefungsanmeldung(); - $anmeldungen = $anmeldung->getAnmeldungenByStudent($uid, $aktStudiensemester); - $anmeldungsIds = array(); - foreach($anmeldungen as $anm) - { - $a = new stdClass(); - $a->pruefungsanmeldung_id = $anm->pruefungsanmeldung_id; - $a->pruefungstermin_id = $anm->pruefungstermin_id; - $a->lehrveranstaltung_id = $anm->lehrveranstaltung_id; - array_push($anmeldungsIds, $a); - } - $return = new stdClass(); - $return->pruefungen = $pruefungen; - $return->anmeldungen = $anmeldungsIds; - $data['result']=$return; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } + $data = getPruefungByLv($aktStudiensemester, $uid); break; case 'getPruefungByLvFromStudiengang': - $lehrveranstaltungen = new lehrveranstaltung(); - $student = new student($uid); - $lehrveranstaltungen->load_lva($student->studiengang_kz); - $lvIds = array(); - foreach($lehrveranstaltungen->lehrveranstaltungen as $lvs) - { - array_push($lvIds, $lvs->lehrveranstaltung_id); - } - $lehrveranstaltungen=$lvIds; - $pruefung = new pruefungCis(); - //TODO nur Prüfungen des aktuellen Studiensemesters - if($pruefung->getPruefungByLv($lehrveranstaltungen)) - { - $pruefungen = array(); - foreach($pruefung->lehrveranstaltungen as $lv) - { - $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); - $lehrveranstaltung = $lehrveranstaltung->cleanResult(); - $lehreinheit = new lehreinheit(); - $lehreinheit->load_lehreinheiten($lehrveranstaltung[0]->lehrveranstaltung_id, $aktStudiensemester); - $lehreinheiten = $lehreinheit->lehreinheiten; - $prf = new stdClass(); - $temp = new pruefungCis($lv->pruefung_id); - $temp->getTermineByPruefung($lv->pruefung_id); - for($i=0; $i < sizeof($temp->termine); $i++) - { - $termin = new pruefungstermin($temp->termine[$i]->pruefungstermin_id); - $temp->termine[$i]->teilnehmer = $termin->getNumberOfParticipants(); - } - $prf->pruefung = $temp; - $prf->lehrveranstaltung = $lehrveranstaltung; - $lveranstaltung = new lehrveranstaltung($lehreinheiten[0]->lehrfach_id); - $oe = new organisationseinheit($lveranstaltung->oe_kurzbz); - $prf->organisationseinheit = $oe->bezeichnung; - array_push($pruefungen, $prf); - } - - $anmeldung = new pruefungsanmeldung(); - $anmeldungen = $anmeldung->getAnmeldungenByStudent($uid, $aktStudiensemester); - $anmeldungsIds = array(); - foreach($anmeldungen as $anm) - { - $a = new stdClass(); - $a->pruefungsanmeldung_id = $anm->pruefungsanmeldung_id; - $a->pruefungstermin_id = $anm->pruefungstermin_id; - $a->lehrveranstaltung_id = $anm->lehrveranstaltung_id; - array_push($anmeldungsIds, $a); - } - $return = new stdClass(); - $return->pruefungen = $pruefungen; - $return->anmeldungen = $anmeldungsIds; - $data['result']=$return; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } + $data = getPruefungByLvFromStudiengang($aktStudiensemester, $uid); break; case 'loadPruefung': - $pruefung_id=$_REQUEST["pruefung_id"]; - $pruefung = new pruefungCis(); - if($pruefung->load($pruefung_id)) - { - $temp = array(); - $pruefung->getLehrveranstaltungenByPruefung(); - foreach($pruefung->lehrveranstaltungen as $lv) - { - $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); - $lehrveranstaltung = $lehrveranstaltung->cleanResult(); - $prf = new stdClass(); - $prf->lehrveranstaltung = $lehrveranstaltung[0]; - $prf->pruefung = $pruefung; - array_push($temp, $prf); - } - - $data['result'] = array(); - $data['result'] = $temp; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - + $data = loadPruefung(); break; case 'loadTermine': - $pruefung_id=$_REQUEST["pruefung_id"]; - $pruefung = new pruefungCis($pruefung_id); - if($pruefung->getTermineByPruefung($pruefung_id)) - { - $data['result'] = $pruefung->termine; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - + $data = loadTermine(); break; case 'saveAnmeldung': - $termin = new pruefungstermin($_REQUEST["termin_id"]); - if($termin->teilnehmer_max > $termin->getNumberOfParticipants() || $termin->teilnehmer_max == NULL) - { - $pruefung = new pruefungCis(); - $reihung = $pruefung->getLastOfReihung($_REQUEST["termin_id"]); - $anmeldung = new pruefungsanmeldung(); - $anmeldung->lehrveranstaltung_id = $_REQUEST["lehrveranstaltung_id"]; - $anmeldung->pruefungstermin_id = $_REQUEST["termin_id"]; - $anmeldung->wuensche = $_REQUEST["bemerkung"]; - $anmeldung->uid = $uid; - $anmeldung->reihung = $reihung+1; - $anmeldung->status_kurzbz = "angemeldet"; - -// $studiensemester_kurbz = $_REQUEST['studiensemester_kurzbz']; - - $lehrveranstaltung = new lehrveranstaltung($_REQUEST["lehrveranstaltung_id"]); - - $konto = new konto(); - $creditpoints = $konto->getCreditPoints($uid, $aktStudiensemester); -// $creditpoints = 1.5; - if($creditpoints !== false) - { - if($creditpoints < $lehrveranstaltung->ects) - { - $data['error'] = 'true'; - $data['errormsg'] = 'Credit-Points-Guthaben ist zu gering.'; - break; - } - } - - //Kollisionsprüfung - $anmeldungen = $anmeldung->getAnmeldungenByStudent($uid, $aktStudiensemester); - foreach($anmeldungen as $temp) - { - $datum = new datum(); - if(($datum->between($termin->von, $termin->bis, $temp->von)) || ($datum->between($termin->von, $termin->bis, $temp->bis))) - { - $data['result'][$temp->pruefungstermin_id] = "true"; - $data['error'] = 'true'; - $data['errormsg'] = 'Kollision mit anderer Anmeldung.'; - } - } - if(isset($data['error']) && $data['error'] = 'true') - { - break; - } - } - else - { - $data['error']='true'; - $data['errormsg']='Keine freien Plätze vorhanden.'; - break; - } - - if($anmeldung->save(true)) -// if(true) - { - $data['result'] = "Anmeldung erfolgreich!"; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$anmeldung->errormsg; - } + $data = saveAnmeldung($aktStudiensemester, $uid); break; case 'getAllPruefungen': - $pruefung = new pruefungCis(); - //TODO Prüfungen des aktuellen Studiensemesters??? - if($pruefung->getAll()) - { - $pruefungen = array(); - foreach($pruefung->lehrveranstaltungen as $lv) - { - $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); - $lehrveranstaltung = $lehrveranstaltung->cleanResult(); - $lehreinheit = new lehreinheit(); - $lehreinheit->load_lehreinheiten($lehrveranstaltung[0]->lehrveranstaltung_id, $aktStudiensemester); - $lehreinheiten = $lehreinheit->lehreinheiten; - $prf = new stdClass(); - $temp = new pruefungCis($lv->pruefung_id); - $temp->getTermineByPruefung($lv->pruefung_id); - for($i=0; $i < sizeof($temp->termine); $i++) - { - $termin = new pruefungstermin($temp->termine[$i]->pruefungstermin_id); - $temp->termine[$i]->teilnehmer = $termin->getNumberOfParticipants(); - } - $prf->pruefung = $temp; - $prf->lehrveranstaltung = $lehrveranstaltung; - $lveranstaltung = new lehrveranstaltung($lehreinheiten[0]->lehrfach_id); - $oe = new organisationseinheit($lveranstaltung->oe_kurzbz); - $prf->organisationseinheit = $oe->bezeichnung; - array_push($pruefungen, $prf); - } - - $anmeldung = new pruefungsanmeldung(); - $anmeldungen = $anmeldung->getAnmeldungenByStudent($uid, $aktStudiensemester); - $anmeldungsIds = array(); - foreach($anmeldungen as $anm) - { - $a = new stdClass(); - $a->pruefungsanmeldung_id = $anm->pruefungsanmeldung_id; - $a->pruefungstermin_id = $anm->pruefungstermin_id; - $a->lehrveranstaltung_id = $anm->lehrveranstaltung_id; - array_push($anmeldungsIds, $a); - } - $return = new stdClass(); - $return->pruefungen = $pruefungen; - $return->anmeldungen = $anmeldungsIds; - $data['result']=$return; - -// $data['result']=$pruefungen; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } + $data = getAllPruefungen($aktStudiensemester, $uid); break; case 'stornoAnmeldung': - $pruefungsanmeldung_id=$_REQUEST['pruefungsanmeldung_id']; - $pruefungsanmeldung = new pruefungsanmeldung(); - if($pruefungsanmeldung->delete($pruefungsanmeldung_id, $uid)) - { - $data['result']='Anmeldung erfolgreich gelöscht.'; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } + $data = stornoAnmeldung($uid); + break; + case 'getPruefungMitarbeiter': + $data = getPruefungMitarbeiter($uid); + break; + case 'getAnmeldungenTermin': + $data = getAnmeldungenTermin(); + break; + case 'saveReihung': + $data = saveReihung(); + break; + case 'anmeldungBestaetigen': + $data = anmeldungBestaetigen(); + break; + case 'getStudiengaenge': + $data = getStudiengaenge(); + break; + case 'getPruefungenStudiengang': + $data = getPruefungenStudiengang(); break; default: - break; + break; } echo json_encode($data); + +//Funktionen + +/** + * Lädt alle Prüfungen eines Studenten zu deren LVs er angemeldet ist + * @param string $aktStudiensemester kurzbz des aktuellen Studiensemester (kann auch eine älteres sein) + * @param string $uid UID des Studenten + * @return Array + */ +function getPruefungByLv($aktStudiensemester = null, $uid = null) +{ + $lehrveranstaltungen = new lehrveranstaltung(); + //TODO + $lehrveranstaltungen->load_lva_student($uid); + $lvIds = array(); + foreach($lehrveranstaltungen->lehrveranstaltungen as $lvs) + { + array_push($lvIds, $lvs->lehrveranstaltung_id); + } + $lehrveranstaltungen=$lvIds; + $pruefung = new pruefungCis(); + //TODO nur Prüfungen des aktuellen Studiensemesters + if($pruefung->getPruefungByLv($lehrveranstaltungen)) + { + $pruefungen = array(); + foreach($pruefung->lehrveranstaltungen as $lv) + { + $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); + $lehrveranstaltung = $lehrveranstaltung->cleanResult(); + $lehreinheit = new lehreinheit(); + $lehreinheit->load_lehreinheiten($lehrveranstaltung[0]->lehrveranstaltung_id, $aktStudiensemester); + $lehreinheiten = $lehreinheit->lehreinheiten; + $prf = new stdClass(); + $temp = new pruefungCis($lv->pruefung_id); + $temp->getTermineByPruefung($lv->pruefung_id); + for($i=0; $i < sizeof($temp->termine); $i++) + { + $termin = new pruefungstermin($temp->termine[$i]->pruefungstermin_id); + $temp->termine[$i]->teilnehmer = $termin->getNumberOfParticipants(); + } + $prf->pruefung = $temp; + $prf->lehrveranstaltung = $lehrveranstaltung; + $lveranstaltung = new lehrveranstaltung($lehreinheiten[0]->lehrfach_id); + $oe = new organisationseinheit($lveranstaltung->oe_kurzbz); + $prf->organisationseinheit = $oe->bezeichnung; + array_push($pruefungen, $prf); + } + $anmeldung = new pruefungsanmeldung(); + $anmeldungen = $anmeldung->getAnmeldungenByStudent($uid, $aktStudiensemester); + $anmeldungsIds = array(); + foreach($anmeldungen as $anm) + { + $a = new stdClass(); + $a->pruefungsanmeldung_id = $anm->pruefungsanmeldung_id; + $a->pruefungstermin_id = $anm->pruefungstermin_id; + $a->lehrveranstaltung_id = $anm->lehrveranstaltung_id; + array_push($anmeldungsIds, $a); + } + $return = new stdClass(); + $return->pruefungen = $pruefungen; + $return->anmeldungen = $anmeldungsIds; + $data['result']=$return; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Lädt alle Prüfungen die im Studiengang eines Studenten angeboten werden + * @param string $aktStudiensemester kurzbz des aktuellen Studiensemester (kann auch eine älteres sein) + * @param string $uid UID des Studenten + * @return Array + */ +function getPruefungByLvFromStudiengang($aktStudiensemester = null, $uid = null) +{ + $lehrveranstaltungen = new lehrveranstaltung(); + $student = new student($uid); + $lehrveranstaltungen->load_lva($student->studiengang_kz); + $lvIds = array(); + foreach($lehrveranstaltungen->lehrveranstaltungen as $lvs) + { + array_push($lvIds, $lvs->lehrveranstaltung_id); + } + $lehrveranstaltungen=$lvIds; + $pruefung = new pruefungCis(); + //TODO nur Prüfungen des aktuellen Studiensemesters + if($pruefung->getPruefungByLv($lehrveranstaltungen)) + { + $pruefungen = array(); + foreach($pruefung->lehrveranstaltungen as $lv) + { + $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); + $lehrveranstaltung = $lehrveranstaltung->cleanResult(); + $lehreinheit = new lehreinheit(); + $lehreinheit->load_lehreinheiten($lehrveranstaltung[0]->lehrveranstaltung_id, $aktStudiensemester); + $lehreinheiten = $lehreinheit->lehreinheiten; + $prf = new stdClass(); + $temp = new pruefungCis($lv->pruefung_id); + $temp->getTermineByPruefung($lv->pruefung_id); + for($i=0; $i < sizeof($temp->termine); $i++) + { + $termin = new pruefungstermin($temp->termine[$i]->pruefungstermin_id); + $temp->termine[$i]->teilnehmer = $termin->getNumberOfParticipants(); + } + $prf->pruefung = $temp; + $prf->lehrveranstaltung = $lehrveranstaltung; + $lveranstaltung = new lehrveranstaltung($lehreinheiten[0]->lehrfach_id); + $oe = new organisationseinheit($lveranstaltung->oe_kurzbz); + $prf->organisationseinheit = $oe->bezeichnung; + array_push($pruefungen, $prf); + } + + $anmeldung = new pruefungsanmeldung(); + $anmeldungen = $anmeldung->getAnmeldungenByStudent($uid, $aktStudiensemester); + $anmeldungsIds = array(); + foreach($anmeldungen as $anm) + { + $a = new stdClass(); + $a->pruefungsanmeldung_id = $anm->pruefungsanmeldung_id; + $a->pruefungstermin_id = $anm->pruefungstermin_id; + $a->lehrveranstaltung_id = $anm->lehrveranstaltung_id; + array_push($anmeldungsIds, $a); + } + $return = new stdClass(); + $return->pruefungen = $pruefungen; + $return->anmeldungen = $anmeldungsIds; + $data['result']=$return; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Lädt die Daten zu einer einzelnen Prüfung + * @return Array + */ +function loadPruefung() +{ + $pruefung_id=$_REQUEST["pruefung_id"]; + $pruefung = new pruefungCis(); + if($pruefung->load($pruefung_id)) + { + $temp = array(); + $pruefung->getLehrveranstaltungenByPruefung(); + foreach($pruefung->lehrveranstaltungen as $lv) + { + $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); + $lehrveranstaltung = $lehrveranstaltung->cleanResult(); + $prf = new stdClass(); + $prf->lehrveranstaltung = $lehrveranstaltung[0]; + $prf->pruefung = $pruefung; + array_push($temp, $prf); + } + + $data['result'] = array(); + $data['result'] = $temp; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Lädt die Termine zu einer Prüfung + * @return Array + */ +function loadTermine() +{ + $pruefung_id=$_REQUEST["pruefung_id"]; + $pruefung = new pruefungCis($pruefung_id); + if($pruefung->getTermineByPruefung($pruefung_id)) + { + $data['result'] = $pruefung->termine; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * speichert eine Prüfungsanmeldung + * @param type $aktStudiensemester kurzbz des aktuellen Studiensemesters (wird für Berechnung auf ausreichend CreditPoints benötigt) + * @param type $uid UID des Studenten + * @return Array + */ +function saveAnmeldung($aktStudiensemester = null, $uid = null) +{ + $termin = new pruefungstermin($_REQUEST["termin_id"]); + if($termin->teilnehmer_max > $termin->getNumberOfParticipants() || $termin->teilnehmer_max == NULL) + { + $pruefung = new pruefungCis(); + $reihung = $pruefung->getLastOfReihung($_REQUEST["termin_id"]); + $anmeldung = new pruefungsanmeldung(); + $anmeldung->lehrveranstaltung_id = $_REQUEST["lehrveranstaltung_id"]; + $anmeldung->pruefungstermin_id = $_REQUEST["termin_id"]; + $anmeldung->wuensche = $_REQUEST["bemerkung"]; + $anmeldung->uid = $uid; + $anmeldung->reihung = $reihung+1; + $anmeldung->status_kurzbz = "angemeldet"; + +// $studiensemester_kurbz = $_REQUEST['studiensemester_kurzbz']; + + $lehrveranstaltung = new lehrveranstaltung($_REQUEST["lehrveranstaltung_id"]); + + $konto = new konto(); + $creditpoints = $konto->getCreditPoints($uid, $aktStudiensemester); +// $creditpoints = 1.5; + if($creditpoints !== false) + { + if($creditpoints < $lehrveranstaltung->ects) + { + $data['error'] = 'true'; + $data['errormsg'] = 'Credit-Points-Guthaben ist zu gering.'; + return $data; + } + } + + //Kollisionsprüfung + $anmeldungen = $anmeldung->getAnmeldungenByStudent($uid, $aktStudiensemester); + foreach($anmeldungen as $temp) + { + $datum = new datum(); + if(($datum->between($termin->von, $termin->bis, $temp->von)) || ($datum->between($termin->von, $termin->bis, $temp->bis))) + { + $data['result'][$temp->pruefungstermin_id] = "true"; + $data['error'] = 'true'; + $data['errormsg'] = 'Kollision mit anderer Anmeldung.'; + } + } + if(isset($data['error']) && $data['error'] = 'true') + { + return $data; + } + } + else + { + $data['error']='true'; + $data['errormsg']='Keine freien Plätze vorhanden.'; + return $data; + } + + if($anmeldung->save(true)) + { + $data['result'] = "Anmeldung erfolgreich!"; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$anmeldung->errormsg; + } + return $data; +} + +/** + * Lädt alle vorhandenen Prüfungen + * @param type $aktStudiensemester kurzbz des Studiensemesters (Filter nach Studiensemester) + * @param type $uid UID eines Studenten + * @return Array + */ +function getAllPruefungen($aktStudiensemester = null, $uid = null) +{ + $pruefung = new pruefungCis(); + //TODO Prüfungen des aktuellen Studiensemesters??? + if($pruefung->getAll()) + { + $pruefungen = array(); + foreach($pruefung->lehrveranstaltungen as $lv) + { + $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); + $lehrveranstaltung = $lehrveranstaltung->cleanResult(); + $lehreinheit = new lehreinheit(); + $lehreinheit->load_lehreinheiten($lehrveranstaltung[0]->lehrveranstaltung_id, $aktStudiensemester); + $lehreinheiten = $lehreinheit->lehreinheiten; + $prf = new stdClass(); + $temp = new pruefungCis($lv->pruefung_id); + $temp->getTermineByPruefung($lv->pruefung_id); + for($i=0; $i < sizeof($temp->termine); $i++) + { + $termin = new pruefungstermin($temp->termine[$i]->pruefungstermin_id); + $temp->termine[$i]->teilnehmer = $termin->getNumberOfParticipants(); + } + $prf->pruefung = $temp; + $prf->lehrveranstaltung = $lehrveranstaltung; + $lveranstaltung = new lehrveranstaltung($lehreinheiten[0]->lehrfach_id); + $oe = new organisationseinheit($lveranstaltung->oe_kurzbz); + $prf->organisationseinheit = $oe->bezeichnung; + array_push($pruefungen, $prf); + } + + $anmeldung = new pruefungsanmeldung(); + $anmeldungen = $anmeldung->getAnmeldungenByStudent($uid, $aktStudiensemester); + $anmeldungsIds = array(); + foreach($anmeldungen as $anm) + { + $a = new stdClass(); + $a->pruefungsanmeldung_id = $anm->pruefungsanmeldung_id; + $a->pruefungstermin_id = $anm->pruefungstermin_id; + $a->lehrveranstaltung_id = $anm->lehrveranstaltung_id; + array_push($anmeldungsIds, $a); + } + $return = new stdClass(); + $return->pruefungen = $pruefungen; + $return->anmeldungen = $anmeldungsIds; + $data['result']=$return; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Storniert eine Prüfungsanmeldung + * @param type $uid UID eines Studenten + * @return Array + */ +function stornoAnmeldung($uid = null) +{ + $pruefungsanmeldung_id=$_REQUEST['pruefungsanmeldung_id']; + $pruefungsanmeldung = new pruefungsanmeldung(); + if($pruefungsanmeldung->delete($pruefungsanmeldung_id, $uid)) + { + $data['result']='Anmeldung erfolgreich gelöscht.'; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Lädt alle Prüfungen eines Lektors/Mitarbeiters + * @param type $uid UID des Lektors/Mitarbeiters + * @return Array + */ +function getPruefungMitarbeiter($uid = null) +{ + $lehrveranstaltung = new lehrveranstaltung(); + if($uid !== null) + { + //TODO UID + $lehrveranstaltung->getLVByMitarbeiter($uid); +// $lehrveranstaltung->getLVByMitarbeiter("neubauer"); + $result = array(); + foreach($lehrveranstaltung->lehrveranstaltungen as $lv) + { + $pruefung = new pruefungCis(); + $pruefung->getPruefungByLv($lv->lehrveranstaltung_id); + if($pruefung->lehrveranstaltungen[0]->pruefung_id !== null) + { + $pruefung->load($pruefung->lehrveranstaltungen[0]->pruefung_id); + $pruefung->getTermineByPruefung(); + $lv->pruefung = $pruefung; + array_push($result, $lv); + } + } + } + + if(!empty($result)) + { + $data['result']=$result; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']="Keine Prüfungen vorhanden."; + } + return $data; +} + +/** + * Lädt alle Anmeldungen zu einem Prüfungstermin + * @return Array + */ +function getAnmeldungenTermin() +{ + $lehrveranstaltung_id = $_REQUEST["lehrveranstaltung_id"]; + $pruefungstermin_id = $_REQUEST["pruefungstermin_id"]; + $pruefungsanmeldung = new pruefungsanmeldung(); + $anmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($pruefungstermin_id, $lehrveranstaltung_id); + foreach($anmeldungen as $a) + { + $student = new student($a->uid); + $temp = new stdClass(); + $temp->vorname = $student->vorname; + $temp->nachname = $student->nachname; + $temp->uid = $student->uid; + $a->student = $temp; + } + if(!empty($anmeldungen)) + { + $data['result']=$anmeldungen; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + if($pruefungsanmeldung->errormsg !== null) + { + $data['errormsg']=$pruefungsanmeldung->errormsg; + } + else + { + $data['errormsg']= 'Keine Anmeldungen vorhanden'; + } + } + return $data; +} + +/** + * speichert die Reihung der Studenten eines Prüfungstermines + * @return Array + */ +function saveReihung() +{ + $anmeldung = new pruefungsanmeldung(); + $reihung = $_REQUEST["reihung"]; + if($anmeldung->saveReihung($reihung)) + { + $data['result']=true; + $data['error']='false'; + $data['errormsg']=$anmeldung->errormsg; + } + else + { + $data['error']='true'; + $data['errormsg']=$anmeldung->errormsg; + } + return $data; +} + +/** + * Ändert den Status einer Prüfungsanmeldung auf "bestaetigt" + * @return Array + */ +function anmeldungBestaetigen() +{ + $pruefungsanmeldung_id = $_REQUEST["pruefungsanmeldung_id"]; + $status = "bestaetigt"; + $anmeldung = new pruefungsanmeldung(); + if($anmeldung->changeState($pruefungsanmeldung_id, $status)) + { + $data['result']=true; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$anmeldung->errormsg; + } + return $data; +} + +/** + * Lädt alle Studiengänge + * @return Array + */ +function getStudiengaenge() +{ + $studiengang = new studiengang(); + if($studiengang->getAll("bezeichnung", true)) + { + $result = array(); + foreach($studiengang->result as $stg) + { + $studiengangTemp = new StdClass(); + $studiengangTemp->studiengang_kz = $stg->studiengang_kz; + $studiengangTemp->bezeichnung = $stg->bezeichnung; + $studiengangTemp->kurzbz = $stg->kurzbz; + $studiengangTemp->typ = $stg->typ; + array_push($result, $studiengangTemp); + } + $data['result']=$result; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$studiengang->errormsg; + } + return $data; +} + +/** + * Lädt alle Prüfungen eines Studienganges + * @return Array + */ +function getPruefungenStudiengang() +{ + $lehrveranstaltung = new lehrveranstaltung(); + $lehrveranstaltung->load_lva($_REQUEST["studiengang_kz"], null, null, true, true); + $result = array(); + foreach($lehrveranstaltung->lehrveranstaltungen as $lv) + { + $pruefung = new pruefungCis(); + $pruefung->getPruefungByLv($lv->lehrveranstaltung_id); + if($pruefung->lehrveranstaltungen[0]->pruefung_id !== null) + { + $pruefung->load($pruefung->lehrveranstaltungen[0]->pruefung_id); + $pruefung->getTermineByPruefung(); + $lv->pruefung = $pruefung; + array_push($result, $lv); + } + } + $data['result']=$result; + $data['error']='false'; + $data['errormsg']=''; + return $data; +} ?> \ No newline at end of file diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php new file mode 100644 index 000000000..25e3b726e --- /dev/null +++ b/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php @@ -0,0 +1,230 @@ + + + */ + +require_once('../../../../config/cis.config.inc.php'); +require_once('../../../../include/functions.inc.php'); +require_once('../../../../include/benutzerberechtigung.class.php'); + +$uid = get_uid(); +$db = new basis_db(); +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($uid); + +?> + + + + Prüfungsanmeldung Verwaltung + + + + + + + + + + + + + +

    Anmeldungen Verwalten

    +
    +
    +

    Studiengänge

    +
      + +
    +
    +
    +
    +
    +

    Prüfungen

    +
      + +
    +
    +
    +
    +
    +

    Anmeldungen

    +
    + +
    +
    + +
    +
    +
    + +
    +
    + + diff --git a/include/organisationseinheit.class.php b/include/organisationseinheit.class.php index 435a5597d..0f22e5aa6 100644 --- a/include/organisationseinheit.class.php +++ b/include/organisationseinheit.class.php @@ -517,6 +517,11 @@ class organisationseinheit extends basis_db return $data; } + /** + * Lädt Organisationseinheiten nach ihrem Typ + * @param type $oetyp_kurzbz + * @return boolean true, wenn ok; false, im Fehlerfall + */ public function getByTyp($oetyp_kurzbz) { $qry = 'SELECT * FROM public.tbl_organisationseinheit WHERE organisationseinheittyp_kurzbz='.$this->db_add_param($oetyp_kurzbz).';'; diff --git a/include/pruefungCis.class.php b/include/pruefungCis.class.php index ef2b6a31e..af6a9c493 100644 --- a/include/pruefungCis.class.php +++ b/include/pruefungCis.class.php @@ -571,20 +571,34 @@ class pruefungCis extends basis_db return true; } - public function getPruefungByLv($lehrveranstaltung_IDs = array()) + /** + * Lädt alle Prüfungen zur angebenen Lehrveranstaltung + * @param String|Array $lehrveranstaltung_IDs einzelne ID einer Lehrveranstaltung oder ein Array von IDs + * @return boolean true, wenn ok; false, im Fehlerfall + */ + public function getPruefungByLv($lehrveranstaltung_IDs) { if(empty($lehrveranstaltung_IDs)) { $this->errormsg = "Keine Lehrveranstaltungen übergeben.
    "; return false; } + + $in = ""; + if (is_array($lehrveranstaltung_IDs)) + { + foreach($lehrveranstaltung_IDs as $id) + { + $in.= $id.', '; + } + $in = substr($in, 0, -2); + } + else + { + $in = $lehrveranstaltung_IDs; + } + - $in = ""; - foreach($lehrveranstaltung_IDs as $id) - { - $in.= $id.', '; - } - $in = substr($in, 0, -2); $qry = 'SELECT * FROM campus.tbl_lehrveranstaltung_pruefung WHERE lehrveranstaltung_id IN ('.$in.');'; @@ -603,6 +617,10 @@ class pruefungCis extends basis_db return false; } + /** + * Lädt alle Prüfung-Lehrveranstaltung Kombinationen + * @return boolean true, wenn ok; false, im Fehlerfall + */ public function getAll() { $qry = 'SELECT * FROM campus.tbl_lehrveranstaltung_pruefung;'; @@ -622,6 +640,11 @@ class pruefungCis extends basis_db return false; } + /** + * Lädt den Wert des letzten Studenten in der Anmeldereihung + * @param type $pruefungstermin_id Id eines Prüfungstermines + * @return boolean|integer Wert des Letzten in der Reihung oder false, wenn ein Fehler auftritt + */ public function getLastOfReihung($pruefungstermin_id) { $qry = 'SELECT MAX(reihung) FROM campus.tbl_pruefungsanmeldung WHERE ' diff --git a/include/pruefungsanmeldung.class.php b/include/pruefungsanmeldung.class.php index b1bb5d933..fc80031b6 100644 --- a/include/pruefungsanmeldung.class.php +++ b/include/pruefungsanmeldung.class.php @@ -77,6 +77,11 @@ class pruefungsanmeldung extends basis_db { return $this->$name; } + /** + * speichert eine Prüfungsanmeldung + * @param type $new + * @return boolean true, wenn erfolgreich; false im Fehlerfall + */ public function save($new = null) { if ($new == null) @@ -109,6 +114,11 @@ class pruefungsanmeldung extends basis_db { } } + /** + * Lädt eine Prüfungsanmeldung + * @param type $pruefungsanmeldung_id + * @return boolean true, wenn erfolgreich; false im Fehlerfall + */ public function load($pruefungsanmeldung_id) { if(!is_numeric($pruefungsanmeldung_id)) @@ -141,6 +151,13 @@ class pruefungsanmeldung extends basis_db { } } + /** + * Lädt alle Prüfungsanmeldungen eines Studenten + * @param type $uid UID eines Studenten + * @param type $studiensemester_kurbz Filter nach Studiensemester (zB 'WS2013') + * @param type $status_kurzbz Filter nach Status (zB 'angemeldet') + * @return boolean|array false, bei Fehler; Array mit Anmeldungen + */ public function getAnmeldungenByStudent($uid, $studiensemester_kurbz=null, $status_kurzbz=null) { $qry = 'SELECT * FROM campus.tbl_pruefungsanmeldung pa ' @@ -167,12 +184,71 @@ class pruefungsanmeldung extends basis_db { $anmeldung->pruefung_id = $row->pruefung_id; $anmeldung->von = $row->von; $anmeldung->bis = $row->bis; + $anmeldung->reihung = $row->reihung; + $anmeldung->wuensche = $row->wuensche; + $anmeldung->kommentar = $row->kommentar; array_push($anmeldungen, $anmeldung); } return $anmeldungen; } } + /** + * Lädt alle Anmeldungen eines Prüfungstermins + * @param type $pruefungstermin_id ID des Prüfungstermins + * @param type $lehrveranstaltung_id Filter nach Lehrveranstaltung + * @param type $studiensemester_kurbz Filter nach Studiensemester (zB 'WS2013') + * @param type $status_kurzbz Filter nach Status (zB 'angemeldet') + * @return boolean|array false, bei Fehler; Array mit Anmeldungen + */ + public function getAnmeldungenByTermin($pruefungstermin_id, $lehrveranstaltung_id=null, $studiensemester_kurbz=null, $status_kurzbz=null) + { + $qry = 'SELECT * FROM campus.tbl_pruefungsanmeldung pa ' + . 'JOIN campus.tbl_pruefungstermin pt ON pa.pruefungstermin_id=pt.pruefungstermin_id ' + . 'JOIN campus.tbl_pruefung p ON p.pruefung_id=pt.pruefung_id ' + . 'WHERE pa.pruefungstermin_id='.$this->db_add_param($pruefungstermin_id); + + if($lehrveranstaltung_id !== null) + { + $qry .= ' AND lehrveranstaltung_id='.$this->db_add_param($lehrveranstaltung_id); + } + $qry .=' ORDER BY reihung'; + $qry .=';'; + + if(!$this->db_query($qry)) + { + $this->errormsg = "Anmeldungen konnten nicht geladen werden."; + return false; + } + else + { + $anmeldungen = array(); + while($row = $this->db_fetch_object()) + { + $anmeldung = new stdClass(); + $anmeldung->pruefungsanmeldung_id = $row->pruefungsanmeldung_id; + $anmeldung->uid = $row->uid; + $anmeldung->lehrveranstaltung_id = $row->lehrveranstaltung_id; + $anmeldung->status_kurzbz = $row->status_kurzbz; + $anmeldung->pruefungstermin_id = $row->pruefungstermin_id; + $anmeldung->pruefung_id = $row->pruefung_id; + $anmeldung->von = $row->von; + $anmeldung->bis = $row->bis; + $anmeldung->reihung = $row->reihung; + $anmeldung->wuensche = $row->wuensche; + $anmeldung->kommentar = $row->kommentar; + array_push($anmeldungen, $anmeldung); + } + return $anmeldungen; + } + } + + /** + * Löscht eine Prüfungsanmeldung + * @param type $pruefungsanmeldung_id ID der Prüfungsanmeldung + * @param type $uid UID eines Studenten + * @return boolean true, wenn ok; false im Fehlerfall + */ public function delete($pruefungsanmeldung_id, $uid=null) { $qry = 'DELETE FROM campus.tbl_pruefungsanmeldung WHERE pruefungsanmeldung_id='.$this->db_add_param($pruefungsanmeldung_id); @@ -195,4 +271,61 @@ class pruefungsanmeldung extends basis_db { } } + /** + * speichert die Reihung eines Anmeldungstermins + * WICHTIG: Auf den Aufbau des übergebenen arrays muss geachtet werden + * @param Array $reihung Ein Array mit Objekten (Attribute: lehrveranstaltung_id, reihung, terminId, uid) + * @return boolean true, wenn ok; false, im Fehlerfall + */ + public function saveReihung($reihung) + { + if(is_array($reihung)) + { + foreach($reihung as $key=>$anmeldung) + { + if($key === 0) + { + $qry = 'BEGIN; UPDATE campus.tbl_pruefungsanmeldung SET reihung='.$this->db_add_param($anmeldung["reihung"]).' WHERE ' + . 'uid='.$this->db_add_param($anmeldung["uid"]).' AND ' + . 'pruefungstermin_id='.$this->db_add_param($anmeldung["terminId"]).' AND ' + . 'lehrveranstaltung_id='.$this->db_add_param($anmeldung["lehrveranstaltung_id"]).';'; + } else { + $qry = 'UPDATE campus.tbl_pruefungsanmeldung SET reihung='.$this->db_add_param($anmeldung["reihung"]).' WHERE ' + . 'uid='.$this->db_add_param($anmeldung["uid"]).' AND ' + . 'pruefungstermin_id='.$this->db_add_param($anmeldung["terminId"]).' AND ' + . 'lehrveranstaltung_id='.$this->db_add_param($anmeldung["lehrveranstaltung_id"]).';'; + } + if((!$this->db_query($qry)) || ($this->db_affected_rows()===0)) + { + $this->db_query('ROLLBACK'); + $this->errormsg = "Reihung konnte nicht geändert werden."; + return false; + } + } + $this->db_query('COMMIT;'); + return true; + } + $this->errormsg = "No Array"; + return false; + } + + + /** + * Ändert den Status einer Prüfungsanmeldung + * @param type $pruefungsanmeldung_id ID der Prüfungsanmeldung + * @param type $status Status auf den geändert werden soll + * @return boolean true, wenn ok; false, im Fehlerfall + */ + public function changeState($pruefungsanmeldung_id, $status) + { + $qry = 'UPDATE campus.tbl_pruefungsanmeldung SET status_kurzbz='.$this->db_add_param($status).'' + . ' WHERE pruefungsanmeldung_id='.$this->db_add_param($pruefungsanmeldung_id).';'; + + if(!$this->db_query($qry)) + { + $this->errormsg = 'Status konnte nicht geändert werden.'; + return false; + } + return true; + } } diff --git a/include/pruefungstermin.class.php b/include/pruefungstermin.class.php index 951e06833..2c8a60a2b 100644 --- a/include/pruefungstermin.class.php +++ b/include/pruefungstermin.class.php @@ -126,6 +126,10 @@ class pruefungstermin extends basis_db{ } + /** + * Lädt die Anzahl der Anmeldungen zu eine Prüfung + * @return boolean|integer Anzahl der Teilnehmer; false, wenn Fehler + */ public function getNumberOfParticipants() { $qry = 'SELECT * FROM campus.tbl_pruefungsanmeldung WHERE pruefungstermin_id='.$this->db_add_param($this->pruefungstermin_id).';';