This commit is contained in:
Stefan Puraner
2014-05-06 13:39:53 +00:00
parent 6294a84c8a
commit 9a15920f59
6 changed files with 307 additions and 15 deletions
+98 -6
View File
@@ -300,9 +300,15 @@ function writePruefungsTable(e, data, anmeldung)
termin = termin.getDate()+"."+(termin.getMonth()+1)+"."+termin.getFullYear();
frist = frist.getTime();
frist = frist - (3*24*60*60*1000);
frist = new Date(frist);
frist = frist.getDate()+"."+(frist.getMonth()+1)+"."+frist.getFullYear();
if(anmeldung || e.lehrveranstaltung[0].angemeldet)
var fristDate = new Date(frist);
frist = fristDate.getDate()+"."+(fristDate.getMonth()+1)+"."+fristDate.getFullYear();
if(fristDate < new Date())
{
if(!storno)
button = "<p><span style='display: inline-block; width: 155px;'>Frist abgelaufen</span></br>";
}
else if(anmeldung || e.lehrveranstaltung[0].angemeldet)
{
if(storno)
{
@@ -631,13 +637,16 @@ function showAnmeldungen(pruefungstermin_id, lehrveranstaltung_id)
function writeAnmeldungen(data)
{
console.log(data);
if(data.error === 'false')
{
var terminId = data.result[0].pruefungstermin_id;
var lehrveranstaltung_id = data.result[0].lehrveranstaltung_id;
var terminId = data.result.anmeldungen[0].pruefungstermin_id;
var pruefung_id = data.result.anmeldungen[0].pruefung_id;
var lehrveranstaltung_id = data.result.anmeldungen[0].lehrveranstaltung_id;
var ort_kurzbz = data.result.ort_kurzbz;
var liste = "<ul id='sortable'>";
var count = 0;
data.result.forEach(function(d){
data.result.anmeldungen.forEach(function(d){
count++;
var vorname = d.student.vorname !== "null" ? d.student.vorname : "";
var nachname = d.student.nachname !== "null" ? d.student.nachname : "";
@@ -669,6 +678,15 @@ function writeAnmeldungen(data)
liste += "</ul>";
$("#reihungSpeichernButton").html("<input type='button' value='Reihung speichern' onclick='saveReihung(\""+terminId+"\", \""+lehrveranstaltung_id+"\");'>");
$("#anmeldeDaten").html(liste);
if(ort_kurzbz !== null)
{
$("#raumLink").html("<span>Prüfungsraum: </span>"+ort_kurzbz);
}
else
{
$("#raumLink").html("<a href='#' onclick='openRaumDialog(\""+terminId+"\", \""+lehrveranstaltung_id+"\");'>Prüfungsort</a>");
}
$(document).tooltip({
position: {
at: "right center",
@@ -682,10 +700,19 @@ function writeAnmeldungen(data)
$("#reihungSpeichernButton").empty();
$("#kommentar").empty();
$("#kommentarSpeichernButton").empty();
$("#raumLink").empty();
messageBox("message", data.errormsg, "red", "highlight", 1000);
}
}
function openRaumDialog(terminId, lehrveranstaltung_id)
{
getRaeume(terminId);
$("#raum").html('<h2>Prüfungsraum</h2><input onChange="changeStateOfRaumDropdown();" type="checkbox" /><span> im Büro</span></br><span style="font-weight: bold;">Raum: </span><select id="raeumeDropdown"></select>');
$("#raumSpeichernButton").html("<input type='button' value='Raum speichern' onclick='saveRaum(\""+terminId+"\", \""+lehrveranstaltung_id+"\");'/>");
$("#raumDialog").dialog("open");
}
/**
* speichert die Reihung der Studenten einer Prüfungsanmeldung
* @param {type} terminId ID des Prüfungstermines
@@ -827,6 +854,7 @@ function loadPruefungStudiengang(studiengang_kz)
},
error: loadError
}).success(function(data){
console.log(data);
if(data.error === 'false')
{
$("#pruefungenListe").empty();
@@ -1824,4 +1852,68 @@ function checkMinMaxTeilnehmer(min, max)
}
}
return true;
}
function changeStateOfRaumDropdown()
{
console.log($("#raum input[type=checkbox]").prop("checked"));
if($("#raum input[type=checkbox]").prop("checked") === true)
{
$("#raeumeDropdown").css("visibility", "hidden");
$("#raeumeDropdown").prev().css("visibility", "hidden");
}
else
{
$("#raeumeDropdown").css("visibility", "visible");
$("#raeumeDropdown").prev().css("visibility", "visible");
}
}
function saveRaum(terminId, lehrveranstaltung_id)
{
var ort_kurzbz;
if($("#raum input[type=checkbox]").prop("checked") === true)
{
ort_kurzbz = "buero";
}
else
{
ort_kurzbz = $("#raeumeDropdown").val();
}
$.ajax({
dataType: 'json',
url: "./pruefungsanmeldung.json.php",
type: "POST",
data: {
method: "saveRaum",
ort_kurzbz: ort_kurzbz,
terminId: terminId
},
error: loadError
}).success(function(data){
console.log(data);
$("#raumDialog").dialog("close");
showAnmeldungen(terminId, lehrveranstaltung_id);
});
}
function getRaeume(terminId)
{
$.ajax({
dataType: 'json',
url: "./pruefungsanmeldung.json.php",
type: "POST",
data: {
method: "getAllFreieRaeume",
terminId: terminId
},
error: loadError
}).success(function(data){
console.log(data);
var liste = "";
data.result.forEach(function(d){
liste += "<option value="+d.ort_kurzbz+">"+d.ort_kurzbz+"</option>"
});
$("#raeumeDropdown").html(liste);
});
}
@@ -18,6 +18,11 @@ require_once('../../../../include/student.class.php');
require_once('../../../../include/studiensemester.class.php');
require_once('../../../../include/lehreinheit.class.php');
require_once('../../../../include/studiengang.class.php');
require_once('../../../../include/ort.class.php');
require_once('../../../../include/stunde.class.php');
require_once('../../../../include/reservierung.class.php');
require_once('../../../../include/mitarbeiter.class.php');
$uid = get_uid();
@@ -71,6 +76,15 @@ switch($method)
case 'saveKommentar':
$data = saveKommentar();
break;
case 'getAllFreieRaeume':
$terminId = $_REQUEST["terminId"];
$data = getAllFreieRaeume($terminId);
break;
case 'saveRaum':
$terminId = $_REQUEST["terminId"];
$ort_kurzbz = $_REQUEST["ort_kurzbz"];
$data = saveRaum($terminId, $ort_kurzbz, $uid);
break;
default:
break;
}
@@ -471,9 +485,10 @@ function getAnmeldungenTermin()
{
$lehrveranstaltung_id = $_REQUEST["lehrveranstaltung_id"];
$pruefungstermin_id = $_REQUEST["pruefungstermin_id"];
$pruefungstermin = new pruefungstermin($pruefungstermin_id);
$pruefungsanmeldung = new pruefungsanmeldung();
$anmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($pruefungstermin_id, $lehrveranstaltung_id);
foreach($anmeldungen as $a)
$pruefungstermin->anmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($pruefungstermin_id, $lehrveranstaltung_id);
foreach($pruefungstermin->anmeldungen as $a)
{
$student = new student($a->uid);
$temp = new stdClass();
@@ -482,9 +497,9 @@ function getAnmeldungenTermin()
$temp->uid = $student->uid;
$a->student = $temp;
}
if(!empty($anmeldungen))
if(!empty($pruefungstermin->anmeldungen))
{
$data['result']=$anmeldungen;
$data['result']=$pruefungstermin;
$data['error']='false';
$data['errormsg']='';
}
@@ -617,6 +632,10 @@ function getPruefungenStudiengang($uid, $aktStudiensemester)
return $data;
}
/**
*
* @return typespeichert ein Kommentar zu einer Prüfungsanmeldung
*/
function saveKommentar()
{
$kommentar = $_REQUEST["kommentar"];
@@ -637,4 +656,129 @@ function saveKommentar()
}
return $data;
}
/**
* liefert alle freien Räume für einen Prüfungstermin
*/
function getAllFreieRaeume($terminId)
{
$pruefungstermin = new pruefungstermin();
$pruefungstermin->load($terminId);
$ort = new ort();
$datum_von = explode(" ", $pruefungstermin->von);
$datum_bis = explode(" ", $pruefungstermin->bis);
$teilnehmer = $pruefungstermin->getNumberOfParticipants();
$teilnehmer = $teilnehmer !== false ? $teilnehmer : 0;
if($ort->search($datum_von[0], $datum_von[1], $datum_bis[1], null, $teilnehmer, true))
{
usort($ort->result, "compareRaeume");
$data['result']=$ort->result;
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$ort->errormsg;
}
return $data;
}
/**
* vergleicht die Kurzbezeichnungen von 2 Räumen
* @param $a Ort-Objekt
* @param $b Ort-Objekt
* @return $a < $b Wert < 0; $a > $b Wert > 0; $a = $b Wert 0
*/
function compareRaeume($a, $b)
{
return strcmp($a->ort_kurzbz, $b->ort_kurzbz);
}
function saveRaum($terminId, $ort_kurzbz, $uid)
{
$pruefungstermin = new pruefungstermin($terminId);
$stunde = new stunde();
$datum_von = explode(" ", $pruefungstermin->von);
$datum_bis = explode(" ", $pruefungstermin->bis);
$stunden = $stunde->getStunden($datum_von[1], $datum_bis[1]);
$reservierung = new reservierung();
$reserviert = false;
foreach($stunden as $h)
{
if($reservierung->isReserviert($ort_kurzbz, $datum_von[0], $h))
$reserviert = true;
}
if(!$reserviert)
{
$pruefung = new pruefungCis($pruefungstermin->pruefung_id);
$mitarbeiter = new mitarbeiter($pruefung->mitarbeiter_uid);
if($ort_kurzbz === "buero")
{
$pruefungstermin->ort_kurzbz = $ort_kurzbz;
if($pruefungstermin->save(false))
{
$data['result']="reserviert";
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$pruefungstermin->errormsg;
}
}
else
{
$reservierung->studiengang_kz = "0";
$reservierung->ort_kurzbz = $ort_kurzbz;
$reservierung->uid = $pruefung->mitarbeiter_uid;
$reservierung->datum = $datum_von[0];
$reservierung->titel = $pruefung->titel;
if(strlen($pruefung->titel) > 10)
{
$reservierung->titel = "Prüfung";
}
$reservierung->beschreibung = "Prüfung";
$reservierung->insertamum = date('Y-m-d G:i:s');
$reservierung->insertvon = $uid;
$reservierungError = false;
foreach($stunden as $h)
{
$reservierung->stunde = $h;
if(!$reservierung->save(true))
{
$reservierungError = true;
}
}
if(!$reservierungError)
{
$pruefungstermin->ort_kurzbz = $reservierung->ort_kurzbz;
if($pruefungstermin->save(false))
{
$data['result']="reserviert";
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$pruefungstermin->errormsg;
}
}
else
{
$data['error']='true';
$data['errormsg']=$reservierung->errormsg;
}
}
}
else
{
$data['error']='true';
$data['errormsg']="Reservierung nicht möglich.";
}
return $data;
}
?>
@@ -107,10 +107,8 @@ $benutzer = new student($uid);
#accordion p {
margin: 0;
height: 24px;
}
/* div {
float: left;
}*/
</style>
</head>
@@ -120,10 +120,14 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
overflow-x: hidden;
}
#anmeldungen > div, h2 {
#anmeldungen > * {
padding: 0.5em;
}
#raum > * {
margin-bottom: 0.5em;
}
#message {
position: fixed;
bottom: 0px;
@@ -199,12 +203,18 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
font-size: 1em;
font-weight: bold;
}
</style>
</head>
<body>
<script>
$(document).ready(function(){
loadStudiengaenge();
$("#raumDialog").dialog({
modal: true,
autoOpen: false,
width: "400px"
});
});
</script>
<h1>Anmeldungen Verwalten</h1>
@@ -239,6 +249,17 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
<div id="kommentarSpeichernButton">
</div>
<div id="raumLink">
</div>
<div id="raumDialog">
<div id="raum">
</div>
<div id="raumSpeichernButton">
</div>
</div>
</div>
</div>
+4 -1
View File
@@ -459,6 +459,9 @@ class pruefungCis extends basis_db
$obj->bis = $row->bis;
$obj->max = $row->teilnehmer_max;
$obj->min = $row->teilnehmer_min;
$obj->anmeldung_von= $row->anmeldung_von;
$obj->anmeldung_bis = $row->anmeldung_bis;
$obj->ort_kurzbz = $row->ort_kurzbz;
array_push($this->termine, $obj);
}
return true;
@@ -495,7 +498,7 @@ class pruefungCis extends basis_db
. 'bis='.$this->db_add_param($ende).', '
. 'teilnehmer_max='.$this->db_add_param($max).', '
. 'teilnehmer_min='.$this->db_add_param($min).' '
. 'WHERE pruefungstermin_id='.$this->db_add_param($pruefungstermin_id).';';
. 'WHERE pruefungstermin_id='.$this->db_add_param($pruefungstermin_id).';';
if(!$this->db_query($qry))
{
+34
View File
@@ -34,6 +34,9 @@ class pruefungstermin extends basis_db{
public $bis; //timestamp without timezone
public $teilnehmer_max; //smallint
public $teilnehmer_min; //smallint
public $anmeldung_von; //date
public $anmeldung_bis; //date
public $ort_kurzbz; //varchar(16)
/**
* Konstruktor
@@ -86,6 +89,9 @@ class pruefungstermin extends basis_db{
$this->bis = $row->bis;
$this->teilnehmer_max = $row->teilnehmer_max;
$this->teilnehmer_min = $row->teilnehmer_min;
$this->anmeldung_von= $row->anmeldung_von;
$this->anmeldung_bis = $row->anmeldung_bis;
$this->ort_kurzbz = $row->ort_kurzbz;
}
return true;
}
@@ -151,4 +157,32 @@ class pruefungstermin extends basis_db{
}
return false;
}
public function save($new = false)
{
if($new)
{
}
else
{
$qry = 'UPDATE campus.tbl_pruefungstermin SET '
. 'pruefung_id='.$this->db_add_param($this->pruefung_id).', '
. 'von='.$this->db_add_param($this->von).', '
. 'bis='.$this->db_add_param($this->bis).', '
. 'teilnehmer_max='.$this->db_add_param($this->teilnehmer_max).', '
. 'teilnehmer_min='.$this->db_add_param($this->teilnehmer_min).', '
. 'anmeldung_von='.$this->db_add_param($this->anmeldung_von).', '
. 'anmeldung_bis='.$this->db_add_param($this->anmeldung_bis).', '
. 'ort_kurzbz='.$this->db_add_param($this->ort_kurzbz).' '
. 'WHERE pruefungstermin_id='.$this->db_add_param($this->pruefungstermin_id).';';
}
if($this->db_query($qry))
{
return true;
}
return false;
}
}