diff --git a/cis/private/lehre/pruefung/pruefung.js b/cis/private/lehre/pruefung/pruefung.js index 0bc5df0b8..c8edc3860 100644 --- a/cis/private/lehre/pruefung/pruefung.js +++ b/cis/private/lehre/pruefung/pruefung.js @@ -62,12 +62,12 @@ function terminHinzufuegen(htmlTag) { case 'input': var count = $("#prfTermin tr").length+1; - $("#prfTermin").append(''); + $("#prfTermin").append(''); setDatePicker(); break; case 'span': var count = $("#prfTermin tr").length+1; - $("#prfTermin").append(''); + $("#prfTermin").append(''); break; } @@ -1065,6 +1065,9 @@ function savePruefungstermin() case 4: termin.max = $(w).val(); break; + case 5: + termin.sammelklausur = $(w).prop("checked"); + break; } }); if(!checkTermin(termin)) @@ -1353,6 +1356,14 @@ function loadPruefungsDetails(prfId) $("#termin"+j+"Ende").text(bis); $("#termin"+j+"min").text(min); $("#termin"+j+"max").text(max); + if(t.sammelklausur) + { + $("#termin"+j+"sammelklausur").text("true"); + } + else + { + $("#termin"+j+"sammelklausur").text("false"); + } $("#termin"+j+"Id").closest("tr").append("löschen"); terminHinzufuegen("span"); } @@ -1458,6 +1469,9 @@ function updatePruefung(prfId) case 5: termin.max = $(w).text(); break; + case 6: + termin.sammelklausur = $(w).prop("checked"); + break; } }); if(!checkTermin(termin)) @@ -1496,6 +1510,9 @@ function updatePruefung(prfId) case 4: termin.max = $(w).val(); break; + case 5: + termin.sammelklausur = $(w).prop("checked"); + break; } }); if(!checkTermin(termin)) diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php index 8c5ae3407..28b672b2c 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php @@ -823,8 +823,20 @@ function getAllFreieRaeume($terminId) $datum_bis = explode(" ", $pruefungstermin->bis); $teilnehmer = $pruefungstermin->getNumberOfParticipants(); $teilnehmer = $teilnehmer !== false ? $teilnehmer : 0; + $pruefungstermin->getAll($pruefungstermin->von, $pruefungstermin->bis, TRUE); + if($ort->search($datum_von[0], $datum_von[1], $datum_bis[1], null, $teilnehmer, true)) { + foreach($pruefungstermin->result as $termin) + { + if($termin->pruefungstermin_id != $pruefungstermin->pruefungstermin_id && !is_null($termin->ort_kurzbz)) + { + $o = new ort($termin->ort_kurzbz); + $o->ort_kurzbz .= " (Sammelklausur)"; + array_push($ort->result, $o); + } + } + usort($ort->result, "compareRaeume"); $data['result']=$ort->result; $data['error']='false'; @@ -863,7 +875,7 @@ function saveRaum($terminId, $ort_kurzbz, $uid) if($reservierung->isReserviert($ort_kurzbz, $datum_von[0], $h)) $reserviert = true; } - if(!$reserviert) + if(!$reserviert || $pruefungstermin->sammelklausur == TRUE) { $pruefung = new pruefungCis($pruefungstermin->pruefung_id); $mitarbeiter = new mitarbeiter($pruefung->mitarbeiter_uid); diff --git a/cis/private/lehre/pruefung/pruefungstermin.json.php b/cis/private/lehre/pruefung/pruefungstermin.json.php index d649d1a15..1b8c94077 100644 --- a/cis/private/lehre/pruefung/pruefungstermin.json.php +++ b/cis/private/lehre/pruefung/pruefungstermin.json.php @@ -229,6 +229,7 @@ function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id $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)); + $termin->sammelklausur = $t["sammelklausur"]; // if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) // { if(!(checkCollision($uid, $termin->beginn, $termin->ende))) @@ -372,6 +373,7 @@ function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pru $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)); + $termin->sammelklausur = $t["sammelklausur"]; // if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) // { if(!(checkCollision($uid, $termin->beginn, $termin->ende))) @@ -394,7 +396,7 @@ function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pru } foreach ($termineNeuArray as $t) { - $pruefung->saveTerminPruefung($pruefung_id, $t->beginn, $t->ende, $t->max, $t->min); + $pruefung->saveTerminPruefung($pruefung_id, $t->beginn, $t->ende, $t->max, $t->min, $t->sammelklausur); } } diff --git a/cis/private/lehre/pruefung/pruefungstermin_festlegen.php b/cis/private/lehre/pruefung/pruefungstermin_festlegen.php index 15e8eab88..bfc11ec1f 100644 --- a/cis/private/lehre/pruefung/pruefungstermin_festlegen.php +++ b/cis/private/lehre/pruefung/pruefungstermin_festlegen.php @@ -247,6 +247,7 @@ if(empty($lehrveranstaltung->lehrveranstaltungen) && !$rechte->isBerechtigt('leh bis min. Teilnehmer max. Teilnehmer + Sammelklausur @@ -267,6 +268,12 @@ if(empty($lehrveranstaltung->lehrveranstaltungen) && !$rechte->isBerechtigt('leh + + + + + + diff --git a/include/pruefungCis.class.php b/include/pruefungCis.class.php index 75821ad14..3e02e48c6 100644 --- a/include/pruefungCis.class.php +++ b/include/pruefungCis.class.php @@ -200,7 +200,7 @@ class pruefungCis extends basis_db } foreach ($this->termine as $termin) { - if(!$this->saveTerminPruefung($this->pruefung_id, $termin->beginn, $termin->ende, $termin->max, $termin->min)) + if(!$this->saveTerminPruefung($this->pruefung_id, $termin->beginn, $termin->ende, $termin->max, $termin->min, $termin->sammelklausur)) { $this->errormsg = 'Fehler beim Speichern der Termine.'; $this->db_query('ROLLBACK'); @@ -417,7 +417,7 @@ class pruefungCis extends basis_db * @param type $min minimale Teilnehmerzahl * @return boolean true, wenn ok; false im Fehlerfall */ - public function saveTerminPruefung($pruefung_id, $beginn, $ende, $max, $min) + public function saveTerminPruefung($pruefung_id, $beginn, $ende, $max, $min, $sammelklausur) { if(!is_numeric($pruefung_id)) { @@ -425,12 +425,13 @@ class pruefungCis extends basis_db return false; } - $qry = 'INSERT INTO campus.tbl_pruefungstermin (pruefung_id, von, bis, teilnehmer_max, teilnehmer_min) VALUES (' + $qry = 'INSERT INTO campus.tbl_pruefungstermin (pruefung_id, von, bis, teilnehmer_max, teilnehmer_min, sammelklausur) VALUES (' . $this->db_add_param($pruefung_id).', ' . $this->db_add_param($beginn).', ' . $this->db_add_param($ende).', ' . $this->db_add_param($max).', ' - . $this->db_add_param($min).');'; + . $this->db_add_param($min).', ' + . $this->db_add_param($sammelklausur).');'; if(!$this->db_query($qry)) { @@ -462,6 +463,7 @@ class pruefungCis extends basis_db $obj->anmeldung_von= $row->anmeldung_von; $obj->anmeldung_bis = $row->anmeldung_bis; $obj->ort_kurzbz = $row->ort_kurzbz; + $obj->sammelklausur = $row->sammelklausur; array_push($this->termine, $obj); } return true; diff --git a/include/pruefungstermin.class.php b/include/pruefungstermin.class.php index 9b5817c75..c3ff1badb 100644 --- a/include/pruefungstermin.class.php +++ b/include/pruefungstermin.class.php @@ -37,6 +37,7 @@ class pruefungstermin extends basis_db{ public $anmeldung_von; //date public $anmeldung_bis; //date public $ort_kurzbz; //varchar(16) + public $sammelklausur; //boolean /** * Konstruktor @@ -92,6 +93,7 @@ class pruefungstermin extends basis_db{ $this->anmeldung_von= $row->anmeldung_von; $this->anmeldung_bis = $row->anmeldung_bis; $this->ort_kurzbz = $row->ort_kurzbz; + $this->sammelklausur = $row->sammelklausur; } return true; } @@ -185,4 +187,54 @@ class pruefungstermin extends basis_db{ return false; } + + /** + * lädt alle Prüfungstermine + */ + public function getAll($beginn=NULL, $ende=NULL, $sammelklausur=NULL) + { + $qry = 'SELECT * FROM campus.tbl_pruefungstermin'; + + if(!is_null($beginn) && !is_null($ende)) + { + $qry .= ' WHERE von <='.$this->db_add_param($beginn).' ' + . 'AND bis >='.$this->db_add_param($ende); + } + if(!is_null($sammelklausur) && !is_null($beginn)) + { + $qry .= ' AND sammelklausur='.$this->db_add_param($sammelklausur); + } + else + { + $qry .= ' WHERE sammelklausur='.$this->db_add_param($sammelklausur); + } + + $qry .= ';'; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new stdClass(); + $obj->pruefungstermin_id = $row->pruefungstermin_id; + $obj->pruefung_id = $row->pruefung_id; + $obj->von = $row->von; + $obj->bis = $row->bis; + $obj->teilnehmer_max = $row->teilnehmer_max; + $obj->teilnehmer_min = $row->teilnehmer_min; + $obj->anmeldung_von= $row->anmeldung_von; + $obj->anmeldung_bis = $row->anmeldung_bis; + $obj->ort_kurzbz = $row->ort_kurzbz; + $obj->sammelklausur = $row->sammelklausur; + array_push($this->result, $obj); + } + return true; + } + else + { + $this->errormsg = 'Termine konnten nicht geladen werden.'; + return false; + } + + } }