diff --git a/cis/private/lehre/pruefung/pruefung.js b/cis/private/lehre/pruefung/pruefung.js
index 127f731ed..428c17387 100644
--- a/cis/private/lehre/pruefung/pruefung.js
+++ b/cis/private/lehre/pruefung/pruefung.js
@@ -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 = "
Frist abgelaufen";
+ }
+ 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 = "
";
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 += "
";
$("#reihungSpeichernButton").html("");
$("#anmeldeDaten").html(liste);
+ if(ort_kurzbz !== null)
+ {
+ $("#raumLink").html("Prüfungsraum: "+ort_kurzbz);
+ }
+ else
+ {
+ $("#raumLink").html("Prüfungsort");
+ }
+
$(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('Prüfungsraum
im BüroRaum: ');
+ $("#raumSpeichernButton").html("");
+ $("#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 += ""
+ });
+ $("#raeumeDropdown").html(liste);
+ });
}
\ 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 4e317b334..7b7a772e2 100644
--- a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php
+++ b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php
@@ -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;
+}
?>
\ No newline at end of file
diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.php b/cis/private/lehre/pruefung/pruefungsanmeldung.php
index de3e025b6..f94f7835d 100644
--- a/cis/private/lehre/pruefung/pruefungsanmeldung.php
+++ b/cis/private/lehre/pruefung/pruefungsanmeldung.php
@@ -107,10 +107,8 @@ $benutzer = new student($uid);
#accordion p {
margin: 0;
+ height: 24px;
}
-/* div {
- float: left;
- }*/
diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php
index 3ae594a60..af33e84a2 100644
--- a/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php
+++ b/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php
@@ -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;
}
+
Anmeldungen Verwalten
@@ -239,6 +249,17 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
+
+
+
+
diff --git a/include/pruefungCis.class.php b/include/pruefungCis.class.php
index 302f79c0d..75821ad14 100644
--- a/include/pruefungCis.class.php
+++ b/include/pruefungCis.class.php
@@ -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))
{
diff --git a/include/pruefungstermin.class.php b/include/pruefungstermin.class.php
index 1f492a8da..9b5817c75 100644
--- a/include/pruefungstermin.class.php
+++ b/include/pruefungstermin.class.php
@@ -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;
+ }
}