Prüfungsverwaltung; Student kann sich anmelden; Prüfer kann bestätigen

This commit is contained in:
Stefan Puraner
2014-03-28 14:24:20 +00:00
parent 42285ca49d
commit c2df183879
7 changed files with 1466 additions and 336 deletions
+491 -36
View File
@@ -17,6 +17,12 @@
* Authors: Stefan Puraner <puraner@technikum-wien.at>
*/
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+"</br>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+"</br>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();
}
}
/**
* 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 += "<li>"+e.bezeichnung+"<ul>";
e.pruefung.termine.forEach(function(d){
liste += "<li> <a onclick='showAnmeldungen(\""+d.pruefungstermin_id+"\", \""+e.lehrveranstaltung_id+"\");'>"+convertDateTime(d.von)+"</a></li>";
})
liste += "</li></ul>";
});
$("#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 = "<ul id='sortable'>";
var count = 0;
data.result.forEach(function(d){
count++;
switch(d.status_kurzbz)
{
case 'angemeldet':
liste += "<li class='ui-state-default' id='"+d.student.uid+"'><span class='ui-icon ui-icon-arrowthick-2-n-s'></span><a>"+d.student.vorname+" "+d.student.nachname+"</a>";
liste += "<div style='width: 5%; text-align: right;'>"+count+"</div><div style='text-align: center; width: 20%;'><input type='button' value='Bestätigen' onclick='anmeldungBestaetigen(\""+d.pruefungsanmeldung_id+"\", \""+terminId+"\", \""+lehrveranstaltung_id+"\");'></div>";
if(d.wuensche !== null)
{
liste += "<div class='anmerkungInfo'><a href='#' title='Anmerkung des Studenten:</br>"+d.wuensche+"'><img style='width: 20px;' src='../../../../skin/images/button_lvinfo.png'></a></div>";
}
liste += "</li>";
break;
case 'bestaetigt':
liste += "<li class='ui-state-default' id='"+d.student.uid+"'><span class='ui-icon ui-icon-arrowthick-2-n-s'></span><a>"+d.student.vorname+" "+d.student.nachname+"</a>";
liste += "<div style='width: 5%; text-align: right;'>"+count+"</div><div style='text-align: center; width: 20%;'>bestätigt</div>";
if(d.wuensche !== null)
{
liste += "<div class='anmerkungInfo'><a href='#' title='Anmerkung des Studenten:</br>"+d.wuensche+"'><img style='width: 20px;' src='../../../../skin/images/button_lvinfo.png'></a></div>";
}
break;
default:
break;
}
});
liste += "</ul>";
$("#reihungSpeichernButton").html("<input type='button' value='Reihung speichern' onclick='saveReihung(\""+terminId+"\", \""+lehrveranstaltung_id+"\");'>");
$("#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("<div class='modalOverlay'></div>");
$.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 += "<li id='stg"+e.studiengang_kz+"'><span class='studiengang'><a href='#' onclick='loadPruefungStudiengang(\""+e.studiengang_kz+"\");'>"+e.bezeichnung+" ("+kuerzel.toUpperCase()+")</a></span></li>";
// 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 += "<ul><li>"+e.bezeichnung+"<ul>";
e.pruefung.termine.forEach(function(d){
liste += "<li> <a onclick='showAnmeldungen(\""+d.pruefungstermin_id+"\", \""+e.lehrveranstaltung_id+"\");'>"+convertDateTime(d.von)+" "+convertDateTime(d.von, "time")+" - "+convertDateTime(d.bis, "time")+"</a></li>";
})
liste += "</li></ul></ul>";
});
// $("#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");
// }
});
}
@@ -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;
}
?>
@@ -0,0 +1,230 @@
<!DOCTYPE html>
<?php
/*
* Copyright 2014 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*
*
* Authors: Stefan Puraner <puraner@technikum-wien.at>
*/
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);
?>
<html>
<head>
<meta charset="UTF-8">
<title>Prüfungsanmeldung Verwaltung</title>
<script src="../../../../include/js/datecheck.js"></script>
<script src="../../../../include/js/jquery1.9.min.js"></script>
<script src="../../../../include/js/jquery.tablesorter.min.js"></script>
<script src="./pruefung.js"></script>
<link rel="stylesheet" href="../../../../skin/jquery-ui-1.9.2.custom.min.css">
<link rel="stylesheet" href="../../../../skin/fhcomplete.css">
<link rel="stylesheet" href="../../../../skin/style.css.php">
<link rel="stylesheet" href="../../../../skin/tablesort.css">
<link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<style type="text/css">
#stgWrapper {
position: absolute;
height: 80%;
width: 450px;
padding: 1.8em 1.5em 1.8em 1em;
border-radius: 25px;
/*border: 1px solid black;*/
box-shadow: 0em 0em 2em 0.5em #888888 inset;
}
#studiengaenge {
/*border: 1px solid black;*/
width: 94%;
position: relative;
float: left;
padding: 0 1em 0em 1em;
height: 100%;
overflow: auto;
overflow-x: hidden;
}
#prfWrapper {
position: absolute;
height: 80%;
width: 300px;
left: 500px;
padding: 1.8em 1.5em 1.8em 1em;
border-radius: 25px;
/*border: 1px solid black;*/
box-shadow: 0em 0em 2em 0.5em #888888 inset;
}
#pruefungen {
/*border: 1px solid black;*/
width: 94%;
position: relative;
float: left;
padding: 0 1em 0em 1em;
height: 100%;
overflow: auto;
overflow-x: hidden;
}
#anmWrapper {
position: fixed;
top: 45px;
left: 850px;
width: 500px;
height: 80%;
padding: 1.8em 1.5em 1.8em 1em;
border-radius: 25px;
/*border: 1px solid black;*/
box-shadow: 0em 0em 2em 0.5em #888888 inset;
}
#anmeldungen {
height: 100%;
overflow: auto;
overflow-x: hidden;
}
#anmeldungen > div, h2 {
padding: 0.5em;
}
#message {
position: fixed;
bottom: 0px;
width: 100%;
height: 2em;
font-size: 1.5em;
font-weight: bold;
}
#sortable {
list-style-type: none;
margin: 0;
padding: 0;
width: 100%;
}
#sortable li {
margin: 0 3px 3px 3px;
padding: 0.4em;
padding-left: 1.5em;
font-size: 1.4em;
height: 18px;
list-style-image: none;
display: block;
}
#sortable li span {
/*position: absolute;*/
margin-left: -1.3em;
float:left;
}
.resultOK {
color: green;
}
.resultNotOK {
color: red;
}
#sortable li a {
float: left;
}
#sortable li div {
float: right;
margin-left: 5px;
}
.anmerkungInfo {
text-align: right;
width: 5%;
}
#progressbar {
position: fixed;
width: 300px;
top: 30%;
left: 50%;
margin-left: -150px;
z-index: 100;
background: '#9CFF29';
}
.modalOverlay {
position: fixed;
width: 100%;
height: 100%;
top: 0px;
left: 0px;
background-color: rgba(0,0,0,0.3); /* black semi-transparent */
}
.studiengang {
font-size: 1em;
font-weight: bold;
}
</style>
</head>
<body>
<script>
$(document).ready(function(){
loadStudiengaenge();
// loadPruefungenMitarbeiter();
});
</script>
<h1>Anmeldungen Verwalten</h1>
<div id='stgWrapper'>
<div id='studiengaenge'>
<h2>Studiengänge</h2>
<ul id='stgListe'>
</ul>
</div>
</div>
<div id='prfWrapper'>
<div id='pruefungen'>
<h2>Prüfungen</h2>
<ul id="pruefungenListe">
</ul>
</div>
</div>
<div id='anmWrapper'>
<div id="anmeldungen">
<h2>Anmeldungen</h2>
<div id="anmeldeDaten">
</div>
<div id="reihungSpeichernButton">
</div>
</div>
</div>
<div id="message"></div>
<div id="progressbar"></div>
</body>
</html>
+5
View File
@@ -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).';';
+30 -7
View File
@@ -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.</br>";
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 '
+133
View File
@@ -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;
}
}
+4
View File
@@ -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).';';