From 4a47a85d2058d718495e6b276b55065620701c83 Mon Sep 17 00:00:00 2001 From: Stefan Puraner Date: Wed, 9 Apr 2014 12:14:20 +0000 Subject: [PATCH] =?UTF-8?q?Umbau=20Pr=C3=BCfungsverwaltung=20zu=20AJAX;=20?= =?UTF-8?q?M=C3=B6glichkeit=20Pr=C3=BCfungen=20f=C3=BCr=20alle=20Lektoren?= =?UTF-8?q?=20anzulegen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lehre/pruefung/lektor_autocomplete.php | 50 ++ cis/private/lehre/pruefung/pruefung.js | 826 +++++++++++++++++- .../pruefung/pruefungsanmeldung.json.php | 86 +- .../lehre/pruefung/pruefungstermin.json.php | 513 +++++++++++ .../pruefung/pruefungstermin_festlegen.php | 826 +++--------------- 5 files changed, 1505 insertions(+), 796 deletions(-) create mode 100644 cis/private/lehre/pruefung/lektor_autocomplete.php create mode 100644 cis/private/lehre/pruefung/pruefungstermin.json.php diff --git a/cis/private/lehre/pruefung/lektor_autocomplete.php b/cis/private/lehre/pruefung/lektor_autocomplete.php new file mode 100644 index 000000000..f2e8fae03 --- /dev/null +++ b/cis/private/lehre/pruefung/lektor_autocomplete.php @@ -0,0 +1,50 @@ +, + * Stefan Puraner + */ + +require_once('../../../../config/cis.config.inc.php'); +require_once('../../../../include/basis_db.class.php'); +require_once('../../../../include/mitarbeiter.class.php'); + +if (!$db = new basis_db()) + die('Es konnte keine Verbindung zum Server aufgebaut werden.'); + +if(isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete']=='lektor') +{ + $search=trim((isset($_REQUEST['term']) ? $_REQUEST['term']:'')); + if (is_null($search) ||$search=='') + exit(); + $mitarbeiter = new mitarbeiter(); + $searchItems = explode(' ',$search); + if($mitarbeiter->search($search)) + { + $result_obj = array(); + foreach($mitarbeiter->result as $row) + { + $item['vorname']=html_entity_decode($row->vorname); + $item['nachname']=html_entity_decode($row->nachname); + $item['uid']=html_entity_decode($row->uid); + $result_obj[]=$item; + } + echo json_encode($result_obj); + } + exit; +} +?> \ No newline at end of file diff --git a/cis/private/lehre/pruefung/pruefung.js b/cis/private/lehre/pruefung/pruefung.js index ad26faf07..8ba871e32 100644 --- a/cis/private/lehre/pruefung/pruefung.js +++ b/cis/private/lehre/pruefung/pruefung.js @@ -52,15 +52,25 @@ function setDatePicker(ele) /** * Fügt ein neunes Formularfeld für einen zusätzlichen Termin hinzu - * @param {type} inputTag + * @param {type} htmlTag * @returns {undefined} */ -function terminHinzufuegen(inputTag) +function terminHinzufuegen(htmlTag) { - inputTag = (inputTag===undefined ? "" : inputTag); - var count = $("#prfTermin tr").length+1; - $("#prfTermin").append(''); - setDatePicker(); + htmlTag = (htmlTag===undefined ? "input" : htmlTag); + switch(htmlTag) + { + case 'input': + var count = $("#prfTermin tr").length+1; + $("#prfTermin").append(''); + setDatePicker(); + break; + case 'span': + var count = $("#prfTermin tr").length+1; + $("#prfTermin").append(''); + break; + } + } /** @@ -104,17 +114,26 @@ function loadPruefungsfenster() var studiensemester_kurzbz = $("#studiensemester option:selected").val(); $.ajax({ dataType: 'json', - url: "../../../../soap/fhcomplete.php", + url: "./pruefungstermin.json.php", + type: "POST", data: { - typ: "json", - class: "pruefungsfenster", - method: "getByStudiensemester", - parameter_0: studiensemester_kurzbz + method: "getPruefungsfensterByStudiensemester", + studiensemester_kurzbz: studiensemester_kurzbz }, error: loadError }).success(function(data){ - writePruefungsfenster(data); - setDatePicker(); + if(data.result.length === 0) + { + messageBox("message", "Keine Prüfungsfenster vorhanden", "red", "highlight", 1000); + $("#pruefungsfenster").html(""); + } + else + { + writePruefungsfenster(data); + setDatePicker(); + } + }).complete(function(){ + }); } @@ -251,7 +270,6 @@ function loadPruefungenGesamt() }).complete(function(event, xhr, settings){ setTablesorter("table3"); }); - } /** @@ -541,35 +559,37 @@ function refresh() * 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); - } - }); -} +//function loadPruefungenMitarbeiter() +//{ +// var uid = $("#mitarbeiter_uid").val(); +// $.ajax({ +// dataType: 'json', +// url: "./pruefungsanmeldung.json.php", +// type: "POST", +// data: { +// method: "getPruefungMitarbeiter", +// uid: uid +// }, +// 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 @@ -871,3 +891,723 @@ function saveKommentar(pruefungsanmeldung_id, termin_id, lehrveranstaltung_id) showAnmeldungen(termin_id, lehrveranstaltung_id); }); } + +function loadPruefungstypen(abschluss) +{ + $.ajax({ + dataType: 'json', + url: "./pruefungstermin.json.php", + type: "POST", + data: { + method: "loadPruefungstypen", + abschluss: abschluss + }, + error: loadError + }).success(function(data){ + var selectData = ""; + data.result.forEach(function(d){ + if(d.beschreibung === null) + d.beschreibung = ""; + selectData += ""; + }); + $('#pruefungsTyp').html(selectData); + }); +} + +function loadStudiensemester() +{ + $.ajax({ + dataType: 'json', + url: "./pruefungstermin.json.php", + type: "POST", + data: { + method: "loadStudiensemester" + }, + error: loadError + }).success(function(data){ + var selectData = ""; + data.result.forEach(function(d){ + selectData += ""; + }); + $('#studiensemester').html(selectData); + }).complete(function(){ + loadPruefungsfenster(); + loadLehrveranstaltungen(); + }); +} + +function is_null(variable) +{ + if(variable === null) + { + return true; + } + return false; +} + +function is_undefined(variable) +{ + if(variable === undefined) + { + return true; + } + return false; +} + +function is_empty_String(string) +{ + if(string.length === 0) + { + return true; + } + return false; +} + +function savePruefungstermin() +{ + unmarkMissingFormEntry(); + var studiensemester_kurzbz = $("#studiensemester").val(); + var pruefungsfenster_id = $("#pruefungsfenster").val(); + var pruefungstyp_kurzbz = $("#pruefungsTyp").val(); + var titel = $("#titel").val(); + var beschreibung = $("#beschreibung").val(); + var methode = $("#methode").val(); + var einzeln = $("#einzeln").prop("checked"); + var termine = []; + var lehrveranstaltungen = []; + var error = false; + $("#prfTermin tr").each(function(i,v){ + var termin = {}; + $(v).find("input").each(function(j, w){ + switch (j) { + case 0: + termin.datum = $(w).val(); + break; + case 1: + termin.beginn = $(w).val(); + break; + case 2: + termin.ende = $(w).val(); + break; + case 3: + termin.min = $(w).val(); + break; + case 4: + termin.max = $(w).val(); + break; + } + }); + if(!checkTermin(termin)) + { + error = true; + markMissingFormEntry($(v).attr("id")); + } + termine.push(termin); + }); + + + $("#lvDropdowns select").each(function(i,v){ + if($(v).val() !== "null") + lehrveranstaltungen.push($(v).val()); + }); + + if(is_null(studiensemester_kurzbz) || is_undefined(studiensemester_kurzbz) || is_empty_String(studiensemester_kurzbz)) + { + error = true; + markMissingFormEntry("studiensemester"); + } + if(is_null(pruefungsfenster_id) || is_undefined(pruefungsfenster_id) || is_empty_String(pruefungsfenster_id) || (pruefungsfenster_id === "null")) + { + error = true; + markMissingFormEntry("pruefungsfenster"); + } + if(is_null(pruefungstyp_kurzbz) || is_undefined(pruefungstyp_kurzbz) || is_empty_String(pruefungstyp_kurzbz) || (pruefungstyp_kurzbz === "undefiniert")) + { + error = true; + markMissingFormEntry("pruefungsTyp"); + } + if(is_null(titel) || is_undefined(titel) || is_empty_String(titel)) + { + error = true; + markMissingFormEntry("titel"); + } + if(is_null(beschreibung) || is_undefined(beschreibung) || is_empty_String(beschreibung)) + { + error = true; + markMissingFormEntry("beschreibung"); + } + if(is_null(methode) || is_undefined(methode) || is_empty_String(methode)) + { + error = true; + markMissingFormEntry("methode"); + } + //TODO Kommentar entfernen +// if(lehrveranstaltungen.length === 0) +// { +// error = true; +// markMissingFormEntry("lvDropdowns"); +// } + + + if(error) + { + messageBox("message", "Formulardaten sind nicht korrekt.", "red", "highlight", 3000); + } + else + { + $.ajax({ + dataType: 'json', + url: "./pruefungstermin.json.php", + type: "POST", + data: { + method: "savePruefungstermin", + studiensemester_kurzbz: studiensemester_kurzbz, + pruefungsfenster_id: pruefungsfenster_id, + pruefungstyp_kurzbz: pruefungstyp_kurzbz, + titel: titel, + beschreibung: beschreibung, + methode: methode, + einzeln: einzeln, + termine: termine, + lehrveranstaltungen: lehrveranstaltungen + }, + error: loadError + }).success(function(data){ + unmarkMissingFormEntry(); + if(data.error === "false") + { + messageBox("message", "Prüfung erfolgreich gespeichert.", "green", "highlight", 1000); + resetPruefungsverwaltung(); + } + else + { + messageBox("message", data.errormsg, "red", "highlight", 1000); + } + }); + } +} + +function markMissingFormEntry(eleId) +{ + $("#"+eleId).addClass("missingFormData"); + $(".modalOverlay").each(function(i,v){ + $(v).removeClass("modalOverlay"); + }); +} + +function unmarkMissingFormEntry() +{ + $(".missingFormData").each(function(i, v){ + $(v).removeClass("missingFormData"); + }); +} + +function loadLehrveranstaltungen() +{ + var studiensemester_kurzbz = $("#studiensemester").val(); + var mitarbeiter_uid = $("#mitarbeiter_uid").val(); + $.ajax({ + dataType: 'json', + url: "./pruefungstermin.json.php", + type: "POST", + data: { + method: "getLehrveranstaltungenByMitarbeiter", + mitarbeiter_uid: mitarbeiter_uid, + studiensemester_kurzbz: studiensemester_kurzbz + }, + error: loadError + }).success(function(data){ + var selectData = ''; + data.result.forEach(function(d){ + selectData += ''; + }); + $("#lvDropdown1").html(selectData); + }).complete(function(){ + + }); +} + +function loadPruefungsDetails(prfId) +{ + unmarkMissingFormEntry(); + $("#modalOverlay").addClass("modalOverlay"); + resetLehrveranstaltungen(); + var row = $("#row1").clone(); + resetTermine(); + $("#prfTermine").append(row); + $.ajax({ + dataType: 'json', + url: "./pruefungstermin.json.php", + type: "POST", + data: { + method: "loadStudiensemester" + }, + error: loadError + }).success(function(data){ + var selectData = ""; + data.result.forEach(function(d){ + selectData += ""; + }); + $('#studiensemester').html(selectData); + }).complete(function(){ + var studiensemester_kurzbz = $("#studiensemester option:selected").val(); + $.ajax({ + dataType: 'json', + url: "./pruefungstermin.json.php", + type: "POST", + data: { + method: "getPruefungsfensterByStudiensemester", + studiensemester_kurzbz: studiensemester_kurzbz + }, + error: loadError + }).success(function(data){ + if(data.result.length === 0) + { + messageBox("message", "Keine Prüfungsfenster vorhanden", "red", "highlight", 1000); + $("#pruefungsfenster").html(""); + } + else + { + writePruefungsfenster(data); + setDatePicker(); + } + }).complete(function(){ + var studiensemester_kurzbz = $("#studiensemester").val(); + var mitarbeiter_uid = $("#mitarbeiter_uid").val(); + $.ajax({ + dataType: 'json', + url: "./pruefungstermin.json.php", + type: "POST", + data: { + method: "getLehrveranstaltungenByMitarbeiter", + mitarbeiter_uid: mitarbeiter_uid, + studiensemester_kurzbz: studiensemester_kurzbz + }, + error: loadError + }).success(function(data){ + var selectData = ''; + data.result.forEach(function(d){ + selectData += ''; + }); + $("#lvDropdown1").html(selectData); + }).complete(function(){ + $.ajax({ + dataType: 'json', + url: "./pruefungsanmeldung.json.php", + type: "POST", + data: { + method: "loadPruefung", + pruefung_id: prfId + }, + error: loadError + }).success(function(data){ + var copy = $("#lvDropdown1").clone(); + $("#lvDropdowns").empty(); + $("#lvDropdowns").html(copy); + var result = data.result[0]; + $("#titel").val(result.pruefung.titel); + $("#beschreibung").val(result.pruefung.beschreibung); + $("#studiensemester").val(result.pruefung.studiensemester_kurzbz); + $("#pruefungsfenster").val(result.pruefung.pruefungsfenster_id); + $("#pruefungsTyp").val(result.pruefung.pruefungstyp_kurzbz); + $("#methode").val(result.pruefung.methode); + var i = 0; + $("#termin1").closest("tr").remove(); + terminHinzufuegen("span"); + data.result.forEach(function(d){ + i++; + var lv = ""+d.lehrveranstaltung.studiengang.kurzbzlang+" | "+d.lehrveranstaltung.bezeichnung+" ("+d.lehrveranstaltung.lehrform_kurzbz+") löschen
    "; + $("#lvDropdowns").children().first().before(lv); + var j = 0; + d.pruefung.termine.forEach(function(t){ + j++; + if(i===1) + { + var date = convertDateTime(t.von, "date"); + var von = convertDateTime(t.von, "time"); + var bis = convertDateTime(t.bis, "time"); + var min = (t.min === null) ? "" : t.min; + var max = (t.max === null) ? "" : t.max; + $("#termin"+j+"Id").text(t.pruefungstermin_id); + $("#termin"+j).text(date); + $("#termin"+j+"Beginn").text(von); + $("#termin"+j+"Ende").text(bis); + $("#termin"+j+"min").text(min); + $("#termin"+j+"max").text(max); + $("#termin"+j+"Id").closest("tr").append("löschen"); + terminHinzufuegen("span"); + } + }); + }); + var ele = document.getElementById("lvDropdowns"); +// lehrveranstaltungDropdownhinzufuegen(ele, false); + $("#prfTermin tr").last().remove(); + if(result.pruefung.einzeln) + { + $("#einzeln").prop("checked", "checked"); + } + else + { + $("#einzeln").removeAttr("checked"); + } + }).complete(function(){ + $("#buttonSave").attr("onclick", "updatePruefung(\""+prfId+"\");"); + if($("#buttonStorno").length === 0) + { + $("#buttonSave").after(""); + } + else + { + $("#buttonStorno").attr("onclick", "stornoPruefung(\""+prfId+"\");"); + } + $("#modalOverlay").removeClass("modalOverlay"); + }); + }); + }); + }); +} + +function resetLehrveranstaltungen() +{ + $("#lvDropdowns").children().each(function(i,v){ + $("#lvDropdown"+(i+2)).next().remove(); + $("#lvDropdown"+(i+2)).remove(); + }); +} + +function resetTermine() +{ + $("#prfTermin tr").each(function(i,v){ +// if(i !== 0) +// { + $(v).remove(); +// } + }); +} + +function updatePruefung(prfId) +{ + $("#modalOverlay").addClass("modalOverlay"); + //TODO Terminkollisionen überprüfen + unmarkMissingFormEntry(); + var studiensemester_kurzbz = $("#studiensemester").val(); + var pruefungsfenster_id = $("#pruefungsfenster").val(); + var pruefungstyp_kurzbz = $("#pruefungsTyp").val(); + var titel = $("#titel").val(); + var beschreibung = $("#beschreibung").val(); + var methode = $("#methode").val(); + var einzeln = $("#einzeln").val(); + var termine = []; + var termineNeu = []; + var lehrveranstaltungen = []; + + $('#prfTermin tr').has("span").each(function(i,v){ + var termin = {}; + $(v).find("span").each(function(j, w){ + switch (j) { + case 0: + termin.pruefungstermin_id = $(w).text(); + break; + case 1: + termin.datum = $(w).text(); + break; + case 2: + termin.beginn = $(w).text(); + break; + case 3: + termin.ende = $(w).text(); + break; + case 4: + termin.min = $(w).text(); + break; + case 5: + termin.max = $(w).text(); + break; + } + }); + if(!checkTermin(termin)) + { + error = true; + markMissingFormEntry($(v).attr("id")); + } + termine.push(termin); + }); + + $('#prfTermin tr').has("input").each(function(i,v){ + var termin = {}; + $(v).find("input").each(function(j, w){ + switch (j) { + case 0: + termin.datum = $(w).val(); + break; + case 1: + termin.beginn = $(w).val(); + break; + case 2: + termin.ende = $(w).val(); + break; + case 3: + termin.min = $(w).val(); + break; + case 4: + termin.max = $(w).val(); + break; + } + }); + termineNeu.push(termin); + }); + var error = false; + $("#lvDropdowns select").each(function(i,v){ + if($(v).val() !== "null") + lehrveranstaltungen.push($(v).val()); + }); + + if(is_null(studiensemester_kurzbz) || is_undefined(studiensemester_kurzbz) || is_empty_String(studiensemester_kurzbz)) + { + error = true; + markMissingFormEntry("studiensemester"); + } + if(is_null(pruefungsfenster_id) || is_undefined(pruefungsfenster_id) || is_empty_String(pruefungsfenster_id) || (pruefungsfenster_id === "null")) + { + error = true; + markMissingFormEntry("pruefungsfenster"); + } + if(is_null(pruefungstyp_kurzbz) || is_undefined(pruefungstyp_kurzbz) || is_empty_String(pruefungstyp_kurzbz) || (pruefungstyp_kurzbz === "undefiniert")) + { + error = true; + markMissingFormEntry("pruefungsTyp"); + } + if(is_null(titel) || is_undefined(titel) || is_empty_String(titel)) + { + error = true; + markMissingFormEntry("titel"); + } + if(is_null(beschreibung) || is_undefined(beschreibung) || is_empty_String(beschreibung)) + { + error = true; + markMissingFormEntry("beschreibung"); + } + if(is_null(methode) || is_undefined(methode) || is_empty_String(methode)) + { + error = true; + markMissingFormEntry("methode"); + } + if(lehrveranstaltungen[0] === "null") + { + error = true; + markMissingFormEntry("lvDropdowns"); + } + + if(error) + { + messageBox("message", "Formulardaten sind nicht korrekt.", "red", "highlight", 3000); + } + else + { + $.ajax({ + dataType: 'json', + url: "./pruefungstermin.json.php", + type: "POST", + data: { + method: "updatePruefungstermin", + pruefung_id: prfId, + studiensemester_kurzbz: studiensemester_kurzbz, + pruefungsfenster_id: pruefungsfenster_id, + pruefungstyp_kurzbz: pruefungstyp_kurzbz, + titel: titel, + beschreibung: beschreibung, + methode: methode, + einzeln: einzeln, + termine: termine, + termineNeu: termineNeu, + lehrveranstaltungen: lehrveranstaltungen + }, + error: loadError + }).success(function(data){ + unmarkMissingFormEntry(); + if(data.error === "false") + { + messageBox("message", "Prüfung erfolgreich gespeichert.", "green", "highlight", 1000); + resetPruefungsverwaltung(); + } + else + { + messageBox("message", data.errormsg, "red", "highlight", 1000); + } + }).complete(function(){ + loadAllPruefungen(); + $("#modalOverlay").removeClass("modalOverlay"); + }); + } +} + +function deleteLehrveranstaltungFromPruefung(lvId, pruefung_id) +{ + $.ajax({ + dataType: 'json', + url: "./pruefungstermin.json.php", + type: "POST", + data: { + method: "deleteLehrveranstaltungFromPruefung", + pruefung_id: pruefung_id, + lehrveranstaltung_id: lvId + }, + error: loadError + }).success(function(data){ + if(data.error === "false") + { + messageBox("message", "Lehrveranstaltung erfolgreich entfernt", "green", "highlight", 1000); + } + }).complete(function(){ + loadPruefungsDetails(pruefung_id); + loadAllPruefungen(); + }); +} + +function stornoPruefung(pruefung_id) +{ + $("#modalOverlay").addClass("modalOverlay"); + $.ajax({ + dataType: 'json', + url: "./pruefungstermin.json.php", + type: "POST", + data: { + method: "stornoPruefung", + pruefung_id: pruefung_id + }, + error: loadError + }).success(function(data){ + if(data.error === "false") + { + messageBox("message", "Prüfung storniert", "green", "highlight", 1000); + } + }).complete(function(){ + loadAllPruefungen(); + resetPruefungsverwaltung(); + }); +} + +function terminLoeschen(pruefung_id, pruefungstermin_id) +{ + $.ajax({ + dataType: 'json', + url: "./pruefungstermin.json.php", + type: "POST", + data: { + method: "deleteTermin", + pruefung_id: pruefung_id, + pruefungstermin_id: pruefungstermin_id + }, + error: loadError + }).success(function(data){ + if(data.error === "false") + { + messageBox("message", "Termin gelöscht", "green", "highlight", 1000); + } + else + { + messageBox("message", data.errormsg, "red", "highlight", 1000); + } + }).complete(function(){ + loadPruefungsDetails(pruefung_id); + loadAllPruefungen(); + }); +} + +function loadAllPruefungen() +{ + var uid = $("#mitarbeiter_uid").val(); + $.ajax({ + dataType: 'json', + url: "./pruefungstermin.json.php", + type: "POST", + data: { + method: "getAllPruefungen", + uid: uid + }, + error: loadError + }).success(function(data){ + $("#prfTable tbody").first().html(""); + var tableRow = ""; + data.result.forEach(function(e){ + if(e.storniert === false) + { + tableRow = ""+e.titel+""; + tableRow += ""+e.studiensemester_kurzbz+""; + tableRow += ""; + e.lehrveranstaltungen.forEach(function(f){ + tableRow += f.bezeichnung+"
    "; + }); + tableRow+=""; + tableRow+=""; + e.termine.forEach(function(f){ + tableRow += convertDateTime(f.von, "date")+" von "+convertDateTime(f.von, "time")+" bis "+convertDateTime(f.bis, "time")+"
    "; + }); + tableRow+=""; + tableRow += ""+e.methode+""; + tableRow += ""+e.pruefungstyp_kurzbz+""; + tableRow += ""+e.einzeln+""; + tableRow += ""+e.mitarbeiter_uid+""; + tableRow += ""+e.storniert+""; + tableRow += ""; + $("#prfTable tbody").first().append(tableRow); + } + + }); + }).complete(function(event, xhr, settings){ +// $("#prfTable").tablesorter({ +// widgets: ["zebra"] +// }); + if($("#prfTable")[0].hasInitialized !== true) + { + $("#prfTable").tablesorter({ + widgets: ["zebra"], + sortList: [[1,0]] + }); + } + else + { + $("#prfTable").trigger("updateAll"); + var sorting = [[1,0],[0,0]]; + $("#prfTable").trigger("sorton",[sorting]); + } + }); +} + +function checkTermin(termin) +{ + var aktTime = new Date(); + var vonTime = stringToDate(termin.datum, termin.beginn); + var bisTime = stringToDate(termin.datum, termin.ende); + + if(!(aktTime < vonTime)) + { + return false; + } + else if(!(vonTime < bisTime)) + { + return false; + } + return true; +} + +function stringToDate(datum, time) +{ + datum = datum.split("."); + time = time.split(":"); + time = new Date(datum[2], (datum[1]-1), datum[0], time[0], time[1]); + return time; +} + +function resetPruefungsverwaltung() +{ + loadAllPruefungen(); + $("#titel").val(""); + $("#beschreibung").val(""); + loadPruefungstypen("false"); + loadStudiensemester(); + $("#methode").val(""); + resetLehrveranstaltungen(); + resetTermine(); + $("#modalOverlay").removeClass("modalOverlay"); +} \ No newline at end of file diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php index 1910330ad..349e11624 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php @@ -52,9 +52,9 @@ switch($method) case 'stornoAnmeldung': $data = stornoAnmeldung($uid); break; - case 'getPruefungMitarbeiter': - $data = getPruefungMitarbeiter($uid); - break; +// case 'getPruefungMitarbeiter': +// $data = getPruefungMitarbeiter($uid); +// break; case 'getAnmeldungenTermin': $data = getAnmeldungenTermin(); break; @@ -90,7 +90,6 @@ echo json_encode($data); function getPruefungByLv($aktStudiensemester = null, $uid = null) { $lehrveranstaltungen = new lehrveranstaltung(); - //TODO $lehrveranstaltungen->load_lva_student($uid); $lvIds = array(); foreach($lehrveranstaltungen->lehrveranstaltungen as $lvs) @@ -234,10 +233,18 @@ function loadPruefung() { $temp = array(); $pruefung->getLehrveranstaltungenByPruefung(); + $pruefung->getTermineByPruefung(); + $studiengang = new studiengang(); foreach($pruefung->lehrveranstaltungen as $lv) { $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); $lehrveranstaltung = $lehrveranstaltung->cleanResult(); + $studiengang->load($lehrveranstaltung[0]->studiengang_kz); + $stg = new stdClass(); + $stg->bezeichnung = $studiengang->bezeichnung; + $stg->studiengang_kz = $studiengang->studiengang_kz; + $stg->kurzbzlang = $studiengang->kurzbzlang; + $lehrveranstaltung[0]->studiengang = $stg; $prf = new stdClass(); $prf->lehrveranstaltung = $lehrveranstaltung[0]; $prf->pruefung = $pruefung; @@ -445,42 +452,41 @@ function stornoAnmeldung($uid = null) * @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; -} +//function getPruefungMitarbeiter($uid = null) +//{ +// $lehrveranstaltung = new lehrveranstaltung(); +// if($uid !== null) +// { +// $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 diff --git a/cis/private/lehre/pruefung/pruefungstermin.json.php b/cis/private/lehre/pruefung/pruefungstermin.json.php new file mode 100644 index 000000000..567ac098e --- /dev/null +++ b/cis/private/lehre/pruefung/pruefungstermin.json.php @@ -0,0 +1,513 @@ +getBerechtigungen($uid); + +$method = isset($_REQUEST['method'])?$_REQUEST['method']:''; + +switch($method) +{ + case 'loadPruefungstypen': + $data = loadPruefungstypen("false"); + break; + case 'loadStudiensemester': + $studiensemester = new studiensemester(); + $aktStudiensemester = $studiensemester->getakt(); + $data = loadStudiensemester($aktStudiensemester); + break; + case 'getPruefungsfensterByStudiensemester': + $studiensemester = new studiensemester(); + $aktStudiensemester = $studiensemester->getakt(); + $studiensemester_kurzbz = isset($_REQUEST["studiensemester_kurzbz"]) ? $_REQUEST["studiensemester_kurzbz"] : $aktStudiensemester; + $data = getPruefungsfensterByStudiensemester($studiensemester_kurzbz, $aktStudiensemester); + break; + case 'savePruefungstermin': + $studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null; + $pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null; + $pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]:null; + $titel = isset($_POST["titel"])?$_POST["titel"]:null; + $beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null; + $methode = isset($_POST["methode"])?$_POST["methode"]:null; + $einzeln = (isset($_POST["einzeln"]) && $_POST["einzeln"] ==="true")?true:false; + $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; + $termine = isset($_POST["termine"])?$_POST["termine"]:null; + $data = savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine); + break; + case 'getLehrveranstaltungenByMitarbeiter': + $mitarbeiter_uid = $_POST["mitarbeiter_uid"]; + $studiensemester_kurzbz = $_POST["studiensemester_kurzbz"]; + $data = getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz); + break; + case 'updatePruefungstermin': + $pruefung_id = isset($_POST["pruefung_id"])?$_POST["pruefung_id"]:null; + $studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null; + $pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null; + $pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]:null; + $titel = isset($_POST["titel"])?$_POST["titel"]:null; + $beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null; + $methode = isset($_POST["methode"])?$_POST["methode"]:null; + $einzeln = (isset($_POST["einzeln"]) && $_POST["einzeln"] ==="true")?true:false; + $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; + $termine = isset($_POST["termine"])?$_POST["termine"]:null; + $termineNeu = isset($_POST["termineNeu"])?$_POST["termineNeu"]:null; + $data = updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu); + break; + case 'deleteLehrveranstaltungFromPruefung': + $lvId = $_POST["lehrveranstaltung_id"]; + $pruefung_id = $_POST["pruefung_id"]; + $data = deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id); + break; + case 'stornoPruefung': + $pruefung_id = $_REQUEST["pruefung_id"]; + $data = stornoPruefung($pruefung_id); + break; + case 'deleteTermin': + $pruefung_id = $_REQUEST["pruefung_id"]; + $pruefungstermin_id = $_REQUEST["pruefungstermin_id"]; + $data = deleteTermin($pruefung_id, $pruefungstermin_id); + break; + case 'getAllPruefungen': + if($rechte->isBerechtigt('lehre/pruefungsterminAll')) + { + $data = getAllPruefungen($_REQUEST["uid"]); + } + else + { + $data = getAllPruefungen($uid); + } + break; + default: + break; +} +echo json_encode($data); + + + +function loadPruefungstypen($abschluss) +{ + $pruefungstermin = new pruefungstermin(); + $pruefungstypen = $pruefungstermin->getAllPruefungstypen($abschluss); + if(!empty($pruefungstypen)) + { + $data['result']=$pruefungstypen; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefungstermin->errormsg; + } + return $data; +} + +function loadStudiensemester($aktStudiensemester = null) +{ + $studiensemester = new studiensemester(); + if($studiensemester->getAll()) + { + $data['result']=$studiensemester->studiensemester; + if(!is_null($aktStudiensemester)) + { + $data['aktSem']=$aktStudiensemester; + } + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$studiensemester->errormsg; + } + return $data; +} + +function getPruefungsfensterByStudiensemester($studiensemester_kurzbz) +{ + $pruefungsfenster = new pruefungsfenster(); + if($pruefungsfenster->getByStudiensemester($studiensemester_kurzbz)) + { + $data['result']=$pruefungsfenster->result; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefungsfenster->errormsg; + } + return $data; +} + +function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine) +{ + if($lehrveranstaltungen === null) + { + $data['error']='true'; + $data['errormsg']="Keine Lehrverantaltung angegeben."; + return $data; + } + $termineArray = array(); + foreach ($termine as $key => $t) { + $termin = new stdClass(); + $date = $t["datum"]; + $beginn = $t["beginn"]; + $ende = $t["ende"]; + $termin->min = $t["min"]; + $termin->max = $t["max"]; + $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); + $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); + if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) + { + if(!(checkCollision($uid, $termin->beginn, $termin->ende))) + { + array_push($termineArray, $termin); + } + else + { + $data['error']='true'; + $data['errormsg']="Kollision mit anderem Termin."; + return $data; + } + } + else + { + $data['error']='true'; + $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; + return $data; + } + } + + $pruefung = new pruefungCis(); + $pruefung->termine = $termineArray; + $pruefung->mitarbeiter_uid = $uid; + $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; + $pruefung->pruefungsfenster_id = $pruefungsfenster_id; + $pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; + $pruefung->titel = $titel; + $pruefung->beschreibung = $beschreibung; + $pruefung->methode = $methode; + $pruefung->einzeln = $einzeln; + $pruefung->insertvon = $uid; + + foreach ($lehrveranstaltungen as $lv) { + if($lv != "null") + { + array_push($pruefung->lehrveranstaltungen, $lv); + } + } + + if($pruefung->save(true)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + + //TODO Mail-Inhalt fehlt +// foreach ($pruefung->lehrveranstaltungen as $lvId) +// { +// $lv = new lehrveranstaltung($lvId); +// $text = "Ein Prüfungstermin zu Ihrer Lehrveranstaltung ".$lv->bezeichnung." wurde angelegt.\n" +// . "Die Prüfung kann am " +// .date('d.m.Y', strtotime($pruefung->termine[0]->beginn))." " +// . "in der Zeit von " +// .date('H:i', strtotime($pruefung->termine[0]->beginn))." bis " +// .date('H:i', strtotime($pruefung->termine[0]->ende))." abgelegt werden."; +// //$text = "test"; +// $empfaenger = $lv->getStudentsOfLv($lvId, $pruefung->studiensemester_kurzbz); +// $mailto = ""; +// foreach ($empfaenger as $e) { +// $mailto .= $e.'@'.DOMAIN.', '; +// } +// +// $email = new mail($mailto, "fhcomplete", "Prüfungstermin für ".$lv->bezeichnung, $text); +// $email->setReplyTo($uid."@".DOMAIN); +//// var_dump($email); +// $email->send(); +// } + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +function getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz) +{ + $lehrveranstaltung = new lehrveranstaltung(); + if($lehrveranstaltung->getLVByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz)) + { + $stg = new studiengang(); + foreach($lehrveranstaltung->lehrveranstaltungen as $key=>$lv) + { + $stg->load($lv->studiengang_kz); + $lv->studiengang_bezeichnung = $stg->kurzbzlang; + } + $data['result']=$lehrveranstaltung->lehrveranstaltungen; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$lehrveranstaltung->errormsg; + } + return $data; +} + +function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu) +{ + $pruefungsfenster = new pruefungsfenster(); + $pruefungsfenster->load($pruefungsfenster_id); + $datum = new datum(); + $pruefung = new pruefungCis(); + $pruefung->load($pruefung_id); + + if($termineNeu !== null) + { + $termineNeuArray = array(); + foreach ($termineNeu as $key => $t) { + $termin = new stdClass(); + $datum = new datum(); + $date = $t["datum"]; + $beginn = $t["beginn"]; + $ende = $t["ende"]; + $termin->min = $t["min"]; + $termin->max = $t["max"]; + $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); + $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); + if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) + { + if(!(checkCollision($uid, $termin->beginn, $termin->ende))) + { + array_push($termineNeuArray, $termin); + } + else + { + $data['error']='true'; + $data['errormsg']="Kollision mit anderem Termin."; + return $data; + } + } + else + { + $data['error']='true'; + $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; + return $data; + } + } + foreach ($termineNeuArray as $t) + { + $pruefung->saveTerminPruefung($pruefung_id, $t->beginn, $t->ende, $t->max, $t->min); + } + } + + if($termine !== null) + { + $termineArray = array(); + foreach ($termine as $key => $t) { + $termin = new stdClass(); + $datum = new datum(); + $date = $t["datum"]; + $beginn = $t["beginn"]; + $ende = $t["ende"]; + $termin->pruefungstermin_id = $t["pruefungstermin_id"]; + $termin->min = $t["min"]; + $termin->max = ($t["max"] === "null") ? NULL : $t["max"]; + $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); + $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); + if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) + { + array_push($termineArray, $termin); + } + else + { + $data['error']='true'; + $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; + return $data; + } + } + foreach($termineArray as $key=>$t) + { + $termineArray[$key] = (object) $t; + } + $pruefung->termine = $termineArray; + } + + + + + + + $pruefung->mitarbeiter_uid = $uid; + $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; + $pruefung->pruefungsfenster_id = $pruefungsfenster_id; + $pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; + $pruefung->titel = $titel; + $pruefung->beschreibung = $beschreibung; + $pruefung->methode = $methode; + $pruefung->einzeln = $einzeln; + $pruefung->updatevon = $uid; + if($lehrveranstaltungen !== null) + { + foreach ($lehrveranstaltungen as $lv) + { + if($lv != "null") + { + array_push($pruefung->lehrveranstaltungen, $lv); + } + } + } + if($pruefung->save(false)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + + //TODO Mail-Inhalt fehlt + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +function deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id) +{ + $pruefung = new pruefungCis(); + $pruefung->load($pruefung_id); + if($pruefung->deleteLehrveranstaltungPruefung($lvId, $pruefung_id)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +function stornoPruefung($pruefung_id) +{ + $pruefung = new pruefungCis(); + if($pruefung->pruefungStornieren($pruefung_id)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +function deleteTermin($pruefung_id, $pruefungstermin_id) +{ + $pruefung = new pruefungCis(); + $pruefung->load($pruefung_id); + if($pruefung->deleteTerminPruefung($pruefungstermin_id)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +function getAllPruefungen($mitarbeiter_uid) +{ + //TODO Prüfungen des aktuellen Studiensemesters??? + $pruefung = new pruefungCis(); + if($pruefung->getAllPruefungen($mitarbeiter_uid)) + { + foreach ($pruefung->result as $prf) + { + $prf->getLehrveranstaltungenByPruefung(); + foreach($prf->lehrveranstaltungen as $key=>$lv) + { + $temp = new lehrveranstaltung($lv->lehrveranstaltung_id); + $array = $temp->cleanResult(); + $prf->lehrveranstaltungen[$key] = $array[0]; + } + $prf->getTermineByPruefung(); + } + $data['result']=$pruefung->result; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +function checkTerminPruefungsfenster($pruefungsfenster_id, $datum) +{ + $pruefungsfenster = new pruefungsfenster($pruefungsfenster_id); + $date = new datum(); + if($date->between($pruefungsfenster->start, $pruefungsfenster->ende, $datum)) + { + return true; + } + return false; +} + +function checkCollision($uid, $beginn, $ende) +{ + $collision = false; + $pruefung = new pruefungCis(); + $pruefung->getAllPruefungen($uid); + $datum = new datum(); + foreach($pruefung->result as $prf) + { + $prf->getTermineByPruefung(); + foreach($prf->termine as $termin) + { + if(($datum->between($termin->von, $termin->bis, $beginn)) || ($datum->between($termin->von, $termin->bis, $ende))) + { + $collision = true; + } + } + } + if($collision) + { + return true; + } + return false; +} +?> \ No newline at end of file diff --git a/cis/private/lehre/pruefung/pruefungstermin_festlegen.php b/cis/private/lehre/pruefung/pruefungstermin_festlegen.php index c83f8bf1f..b6848ca8a 100644 --- a/cis/private/lehre/pruefung/pruefungstermin_festlegen.php +++ b/cis/private/lehre/pruefung/pruefungstermin_festlegen.php @@ -32,7 +32,7 @@ require_once('../../../../include/lehrveranstaltung.class.php'); require_once('../../../../include/pruefungstermin.class.php'); require_once('../../../../include/studiengang.class.php'); require_once('../../../../include/pruefungCis.class.php'); -require_once('../../../../include/mail.class.php'); +require_once('../../../../include/mitarbeiter.class.php'); $uid = get_uid(); $db = new basis_db(); @@ -42,420 +42,6 @@ $rechte->getBerechtigungen($uid); if(!$rechte->isBerechtigt('lehre/pruefungstermin')) die('Sie haben keine Berechtigung für diese Seite'); -function compareLvIDs($a, $b) -{ - if($a->lehrveranstaltung_id == $b->lehrveranstaltung_id) - return 0; - - return -1; -} - -$studiensemester = new studiensemester(); -$studiensemester->getAll(); - -$studiensemester_kurzbz=null; -$pruefungsfenster = new pruefungsfenster(); -$pruefungsfenster->getAll("start"); - -$lehrveranstaltung = new lehrveranstaltung(); - -//TODO -$lehrveranstaltung->getLVByMitarbeiter($uid, $studiensemester->getSemesterFromDatum(date("Y-m-d"))); -//$lehrveranstaltung->getLVByMitarbeiter("leutgeb", $studiensemester->getSemesterFromDatum(date("Y-m-d"))); - -$pruefungstermin = new pruefungstermin(); -$pruefungstypen = $pruefungstermin->getAllPruefungstypen(); - -if(isset($_POST["method"]) && $_POST["method"] == "save") -{ - $studiensemester_kurzbz = isset($_POST["studiensemester"])?$_POST["studiensemester"]:null; - $pruefungsfenster_id = isset($_POST["pruefungsfenster"])?$_POST["pruefungsfenster"]:null; - $pruefungstyp_kurzbz = isset($_POST["pruefungsTyp"])?$_POST["pruefungsTyp"]:null; - $titel = isset($_POST["titel"])?$_POST["titel"]:null; - $beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null; - $methode = isset($_POST["methode"])?$_POST["methode"]:null; - $einzeln = isset($_POST["einzelpruefung"])?true:false; - $lehrveranstaltungen = isset($_POST["lv"]) ? $_POST["lv"] : null; - $termine = array(); - $error = false; - if($pruefungsfenster_id === "null") - { - $error = true; - echo "Bitte geben Sie ein Prüfungsfenster an."; - } - - if(isset($_POST["termin"])) - { - if(!$error) - { - $pruefungsfenster = new pruefungsfenster(); - $pruefungsfenster->load($pruefungsfenster_id); - $datum = new datum(); - } - for($i = 0; $i< sizeof($_POST["termin"]); $i++) - { - if(!$error) - { - $termin = new stdClass(); - $datum = new datum(); - $date = (isset($_POST["termin"][$i]) && $datum->checkDatum($_POST["termin"][$i])) ? $_POST["termin"][$i] : null; - $beginn = (isset($_POST["terminBeginn"][$i]) && $datum->checkUhrzeit($_POST["terminBeginn"][$i])) ? $_POST["terminBeginn"][$i] : null; - $ende = (isset($_POST["terminEnde"][$i]) && $datum->checkUhrzeit($_POST["terminEnde"][$i])) ? $_POST["terminEnde"][$i] : null; - $termin->min = (isset($_POST["minTeilnehmer"][$i]) && is_numeric($_POST["minTeilnehmer"][$i]) && strlen($_POST["minTeilnehmer"][$i]) > 0) ? $_POST["minTeilnehmer"][$i] : 0; - $termin->max = (isset($_POST["maxTeilnehmer"][$i]) && is_numeric($_POST["maxTeilnehmer"][$i]) && strlen($_POST["maxTeilnehmer"][$i]) > 0) ? $_POST["maxTeilnehmer"][$i] : null; - - if($datum == null) - { - echo "Fehler: Ungültiges Datum angegeben.
    "; - $error = true; - } - if($beginn == null) - { - echo "Fehler: Ungültige Beginnzeit angegeben.
    "; - $error = true; - } - if($ende == null) - { - echo "Fehler: Ungültige Endzeit angegeben.
    "; - $error = true; - } - if($termin->min === null) - { - echo "Fehler: Ungültige Mindestteilnehmerzahl angegeben.
    "; - $error = true; - } - if(!(mktime(substr($beginn,0,2), substr($beginn,-2)) < mktime(substr($ende,0,2), substr($ende,-2)))) - { - echo "Endzeit liegt vor der Startzeit!
    "; - $error = true; - } - if(!($termin->min < $termin->max) && $termin->max !== null) - { - echo "Maximalteilnehmerzahlt ist kleiner der Mindestteilnehmerzahl.
    "; - $error = true; - } - if(!$datum->between($pruefungsfenster->start, $pruefungsfenster->ende, $date)) - { - echo "Prüfungstermin liegt nicht innheralb des Prüfungsfensters.
    "; - $error = true; - } - $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); - $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); - array_push($termine, $termin); - } - } - } - - if(!$error) - { - $pruefung = new pruefungCis(); - $pruefung->termine = $termine; - $pruefung->mitarbeiter_uid = $uid; - $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; - $pruefung->pruefungsfenster_id = $pruefungsfenster_id; - $pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; - $pruefung->titel = $titel; - $pruefung->beschreibung = $beschreibung; - $pruefung->methode = $methode; - $pruefung->einzeln = $einzeln; - $pruefung->insertvon = $uid; - - if(mb_strlen($pruefung->titel) > 0) - { - if($pruefung->pruefungstyp_kurzbz != "undefiniert") - { - if($lehrveranstaltungen != null && sizeof($lehrveranstaltungen) > 0) - { - $i=0; - foreach ($lehrveranstaltungen as $lv) { - if($lv != "null") - { - array_push($pruefung->lehrveranstaltungen, $lv); - } - } - if($pruefung->save(true)) - { - //TODO Mail-Inhalt fehlt -// foreach ($pruefung->lehrveranstaltungen as $lvId) -// { -// $lv = new lehrveranstaltung($lvId); -// $text = "Ein Prüfungstermin zu Ihrer Lehrveranstaltung ".$lv->bezeichnung." wurde angelegt.\n" -// . "Die Prüfung kann am " -// .date('d.m.Y', strtotime($pruefung->termine[0]->beginn))." " -// . "in der Zeit von " -// .date('H:i', strtotime($pruefung->termine[0]->beginn))." bis " -// .date('H:i', strtotime($pruefung->termine[0]->ende))." abgelegt werden."; -// //$text = "test"; -// $empfaenger = $lv->getStudentsOfLv($lvId, $pruefung->studiensemester_kurzbz); -// $mailto = ""; -// foreach ($empfaenger as $e) { -// $mailto .= $e.'@'.DOMAIN.', '; -// } -// -// $email = new mail($mailto, "fhcomplete", "Prüfungstermin für ".$lv->bezeichnung, $text); -// $email->setReplyTo($uid."@".DOMAIN); -//// var_dump($email); -// $email->send(); -// } - - echo "Datensatz erfolgreich gespeichert!"; - } - else - { - echo "Fehler: ".$pruefung->errormsg; - } - } - else - { - echo "Bitte Lehrveranstaltungen angeben."; - } - - } - else - { - echo "Bitte einen Prüfungstyp auswählen"; - } - } - else - { - echo "Bitte einen Titel angeben."; - } - } - -} -else if(isset($_POST["method"]) && $_POST["method"] == "update") -{ - $studiensemester_kurzbz = isset($_POST["studiensemester"])?$_POST["studiensemester"]:null; - $pruefungsfenster_id = isset($_POST["pruefungsfenster"])?$_POST["pruefungsfenster"]:null; - $pruefungstyp_kurzbz = isset($_POST["pruefungsTyp"])?$_POST["pruefungsTyp"]:null; - $titel = isset($_POST["titel"])?$_POST["titel"]:null; - $beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null; - $methode = isset($_POST["methode"])?$_POST["methode"]:null; - $einzeln = isset($_POST["einzelpruefung"])?true:false; - $lehrveranstaltungen = isset($_POST["lv"]) ? $_POST["lv"] : null; - $termine = array(); - $termineNeu = array(); - $error = false; - if(!$error) - { - $pruefungsfenster = new pruefungsfenster(); - $pruefungsfenster->load($pruefungsfenster_id); - $datum = new datum(); - } - - if(isset($_POST["terminNeu"])) - { - - for($i = 0; $i< sizeof($_POST["terminNeu"]); $i++) - { - if(!$error) - { - $termin = new stdClass(); - $datum = new datum(); - $date = (isset($_POST["terminNeu"][$i]) && $datum->checkDatum($_POST["terminNeu"][$i])) ? $_POST["terminNeu"][$i] : null; - $beginn = (isset($_POST["terminBeginnNeu"][$i]) && $datum->checkUhrzeit($_POST["terminBeginnNeu"][$i])) ? $_POST["terminBeginnNeu"][$i] : null; - $ende = (isset($_POST["terminEndeNeu"][$i]) && $datum->checkUhrzeit($_POST["terminEndeNeu"][$i])) ? $_POST["terminEndeNeu"][$i] : null; - $termin->min = (isset($_POST["minTeilnehmerNeu"][$i]) && is_numeric($_POST["minTeilnehmerNeu"][$i]) && strlen($_POST["minTeilnehmerNeu"][$i]) > 0) ? $_POST["minTeilnehmerNeu"][$i] : 0; - $termin->max = (isset($_POST["maxTeilnehmerNeu"][$i]) && is_numeric($_POST["maxTeilnehmerNeu"][$i]) && strlen($_POST["maxTeilnehmerNeu"][$i]) > 0) ? $_POST["maxTeilnehmerNeu"][$i] : null; - - if($datum == null) - { - echo "Fehler: Ungültiges Datum angegeben.
    "; - $error = true; - } - if($beginn == null) - { - echo "Fehler: Ungültige Beginnzeit angegeben.
    "; - $error = true; - } - if($ende == null) - { - echo "Fehler: Ungültige Endzeit angegeben.
    "; - $error = true; - } - if($termin->min === null) - { - echo "Fehler: Ungültige Mindestteilnehmerzahl angegeben.
    "; - $error = true; - } - if(!(mktime(substr($beginn,0,2), substr($beginn,-2)) < mktime(substr($ende,0,2), substr($ende,-2)))) - { - echo "Endzeit liegt vor der Startzeit!
    "; - $error = true; - } - if(!($termin->min < $termin->max) && $termin->max !== null) - { - echo "Maximalteilnehmerzahlt ist kleiner der Mindestteilnehmerzahl.
    "; - $error = true; - } - if(!$datum->between($pruefungsfenster->start, $pruefungsfenster->ende, $date)) - { - echo "Prüfungstermin liegt nicht innheralb des Prüfungsfensters.
    "; - $error = true; - } - $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); - $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); - array_push($termineNeu, $termin); - } - } - } - - if(isset($_POST["termin"])) - { - $error = false; - for($i = 0; $i< sizeof($_POST["termin"]); $i++) - { - if(!$error) - { - $termin = new stdClass(); - $datum = new datum(); - $terminId = (isset($_POST["termin_id"][$i])) ? $_POST["termin_id"][$i] : null; - $date = (isset($_POST["termin"][$i]) && $datum->checkDatum($_POST["termin"][$i])) ? $_POST["termin"][$i] : null; - $beginn = (isset($_POST["terminBeginn"][$i]) && $datum->checkUhrzeit($_POST["terminBeginn"][$i])) ? $_POST["terminBeginn"][$i] : null; - $ende = (isset($_POST["terminEnde"][$i]) && $datum->checkUhrzeit($_POST["terminEnde"][$i])) ? $_POST["terminEnde"][$i] : null; - $termin->min = (isset($_POST["minTeilnehmer"][$i]) && is_numeric($_POST["minTeilnehmer"][$i]) && strlen($_POST["minTeilnehmer"][$i]) > 0) ? $_POST["minTeilnehmer"][$i] : 0; - $termin->max = (isset($_POST["maxTeilnehmer"][$i]) && is_numeric($_POST["maxTeilnehmer"][$i]) && strlen($_POST["maxTeilnehmer"][$i]) > 0) ? $_POST["maxTeilnehmer"][$i] : null; - - if($datum == null) - { - echo "Fehler: Ungültiges Datum angegeben.
    "; - $error = true; - } - if($beginn == null) - { - echo "Fehler: Ungültige Beginnzeit angegeben.
    "; - $error = true; - } - if($ende == null) - { - echo "Fehler: Ungültige Endzeit angegeben.
    "; - $error = true; - } - if($termin->min === null) - { - echo "Fehler: Ungültige Mindestteilnehmerzahl angegeben.
    "; - $error = true; - } - if(!(mktime(substr($beginn,0,2), substr($beginn,-2)) < mktime(substr($ende,0,2), substr($ende,-2)))) - { - echo "Endzeit liegt vor der Startzeit!
    "; - $error = true; - } - if(!($termin->min < $termin->max) && $termin->max !== null) - { - echo "Maximalteilnehmerzahlt ist kleiner der Mindestteilnehmerzahl.
    "; - $error = true; - } - if(!$datum->between($pruefungsfenster->start, $pruefungsfenster->ende, $date)) - { - echo "Prüfungstermin liegt nicht innheralb des Prüfungsfensters.
    "; - $error = true; - } - $termin->pruefungstermin_id = $terminId; - $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); - $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); - array_push($termine, $termin); - } - } - } - - if(!$error) - { - $pruefung = new pruefungCis(); - $pruefung_id = $_POST["id"]; - $pruefung->load($pruefung_id); - $pruefung->termine = $termine; - foreach ($termineNeu as $t) - { - $pruefung->saveTerminPruefung($pruefung_id, $t->beginn, $t->ende, $t->max, $t->min); - } - $pruefung->mitarbeiter_uid = $uid; - $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; - $pruefung->pruefungsfenster_id = $pruefungsfenster_id; - $pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; - $pruefung->titel = $titel; - $pruefung->beschreibung = $beschreibung; - $pruefung->methode = $methode; - $pruefung->einzeln = $einzeln; - $pruefung->updatevon = $uid; - - if(mb_strlen($pruefung->titel) > 0) - { - if($pruefung->pruefungstyp_kurzbz != "undefiniert") - { - if($lehrveranstaltungen != null && sizeof($lehrveranstaltungen) > 0) - { - $i=0; - foreach ($lehrveranstaltungen as $lv) - { - if($lv != "null") - { - array_push($pruefung->lehrveranstaltungen, $lv); - } - } - if($pruefung->save(false)) - { - echo "Datensatz erfolgreich gespeichert!"; - } - else - { - echo "Fehler: ".$pruefung->errormsg; - } - } - else - { - echo "Bitte Lehrveranstaltungen angeben."; - } - - } - else - { - echo "Bitte einen Prüfungstyp auswählen"; - } - } - else - { - echo "Bitte einen Titel angeben."; - } - } - -} -else if(isset ($_GET["method"]) && isset ($_GET["action"]) && $_GET["action"] === "deleteTermin") -{ - $pruefungstermin_id = $_GET["termin_id"]; - $pruefung_id = $_GET["id"]; - $pruefung = new pruefungCis(); - $pruefung->load($pruefung_id); - $pruefung->deleteTerminPruefung($pruefungstermin_id); -} - -else if(isset ($_GET["method"]) && isset ($_GET["action"]) && $_GET["action"] === "deleteLv") -{ - $lvId = $_GET["lvId"]; - $pruefung_id = $_GET["id"]; - $pruefung = new pruefungCis(); - $pruefung->load($pruefung_id); - $pruefung->deleteLehrveranstaltungPruefung($lvId, $pruefung_id); -} - -else if(isset ($_GET["action"]) && isset ($_GET["action"]) && $_GET["action"] === "storno") -{ - $pruefung_id = $_GET["id"]; - $pruefung = new pruefungCis(); -// $pruefung->load($pruefung_id); - $pruefung->pruefungStornieren($pruefung_id); - header("Location: pruefungstermin_festlegen.php"); -} - -$pruefungen = new pruefungCis(); -$pruefungen->getPruefungByMitarbeiter($uid, $studiensemester_kurzbz); - -foreach($pruefungen->result as $tempPrf) -{ - $tempPrf->getLehrveranstaltungenByPruefung(); - $tempPrf->getTermineByPruefung(); -} - ?> @@ -463,63 +49,128 @@ foreach($pruefungen->result as $tempPrf) Prüfungstermin festlegen + + - -

    Prüfungen verwalten

    -
    -
    +
    +

    Prüfungen verwalten

    + + + isBerechtigt('lehre/pruefungsterminAll')) + { + echo ' + '; + } + else + { + echo ''; + echo ''; + echo ''; + echo ''; + } + ?> + +
    Lektor:
    + + @@ -531,47 +182,28 @@ foreach($pruefungen->result as $tempPrf) - - + - + @@ -580,7 +212,7 @@ foreach($pruefungen->result as $tempPrf)
    Titel: - +
    Beschreibung: - +
    Studiensemester:
    Prüfungstyp: - +
    Methode:
    Einzelprüfung:
    Lehrveranstaltungen:

    Termin:
    - +
    @@ -588,24 +220,25 @@ foreach($pruefungen->result as $tempPrf) + - + @@ -615,12 +248,12 @@ foreach($pruefungen->result as $tempPrf) - +
    Datumbis min. Teilnehmer max. Teilnehmer
    - + - + - + - +
      
    -
    +

    Prüfungen

    @@ -638,245 +271,12 @@ foreach($pruefungen->result as $tempPrf) - result as $prf) - { - echo - 'storniert == true) ? "style='text-decoration: line-through'" : "").'> - - - - - - - - - - '; - } - ?> +
    '.$prf->titel.''.$prf->studiensemester_kurzbz.''; - foreach($prf->lehrveranstaltungen as $lv) - { - $lehrveranstaltung = new lehrveranstaltung(); - $lehrveranstaltung->load($lv->lehrveranstaltung_id); - echo $lehrveranstaltung->bezeichnung.'
    '; - } - echo '
    - - '; - foreach($prf->termine as $termine) - { - echo ''; - //date('Y-m-d H:i', strtotime($termine->von)); - } - echo ' -
    '.date('d.m.Y H:i', strtotime($termine->von))."".date('d.m.Y H:i', strtotime($termine->bis)).'
    -
    '.(($prf->methode == null) ? "keine Methode angegeben" : $prf->methode).''.$prf->pruefungstyp_kurzbz.''.(($prf->einzeln == true) ? "TRUE" : "FALSE").''.$prf->mitarbeiter_uid.''.(($prf->storniert == true) ? "TRUE" : "FALSE").'
    - load($pruefung_id); - $pruefung->getLehrveranstaltungenByPruefung(); - $pruefung->getTermineByPruefung(); - } - else - { - header("Location: pruefungstermin_festlegen.php"); - } - - - ?> -

    Prüfung bearbeiten

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Titel: - -
    Beschreibung: - -
    Studiensemester: - -
    Prüfungsfenster: - -
    Prüfungstyp: - -
    Methode:
    Einzelprüfung:einzeln == true) ? " checked ": "") ?> name="einzelpruefung">
    Lehrveranstaltungen: -
    - lehrveranstaltungen as $lv) - { - array_push($lv_temp, $lv->lehrveranstaltung_id); - } - foreach($lehrveranstaltung->lehrveranstaltungen as $result) - { - $studiengang->load($result->studiengang_kz); - - if(in_array($result->lehrveranstaltung_id, $lv_temp)) - { - echo ''.$studiengang->kurzbzlang.' | '.$result->bezeichnung.' ('.$result->lehrform_kurzbz.') löschen
    '; - } - } - ?> -
    -
    -
    -
    -
    Termin: -
    - - - - - - - - - - - - - termine as $prfTermin) - { - echo ' - - - - - - - - '; - } - ?> - - -
    DatumVonbismin. Teilnehmermax. TeilnehmerAktion
    - von)).'"> - - von)).'"> - - bis)).'"> - - - - - - löschen -
    -
    - Termin hinzufügen -
      - Prüfung stornieren -
      - - -
    -
    -
    - +
    +