From 9a15920f59c62a8243b0b4304420d2dd320f3ca2 Mon Sep 17 00:00:00 2001 From: Stefan Puraner Date: Tue, 6 May 2014 13:39:53 +0000 Subject: [PATCH] --- cis/private/lehre/pruefung/pruefung.js | 104 +++++++++++- .../pruefung/pruefungsanmeldung.json.php | 152 +++++++++++++++++- .../lehre/pruefung/pruefungsanmeldung.php | 4 +- .../pruefungsanmeldungen_verwalten.php | 23 ++- include/pruefungCis.class.php | 5 +- include/pruefungstermin.class.php | 34 ++++ 6 files changed, 307 insertions(+), 15 deletions(-) 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 = "

"; $("#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üro
Raum: '); + $("#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; + } }