diff --git a/cis/private/lehre/notenliste.xls.php b/cis/private/lehre/notenliste.xls.php index e48bd7fb2..4f0ff03a2 100644 --- a/cis/private/lehre/notenliste.xls.php +++ b/cis/private/lehre/notenliste.xls.php @@ -174,7 +174,7 @@ $qry = "SELECT distinct on(nachname, vorname, person_id) vorname, nachname, matrikelnr, person_id, tbl_student.student_uid as uid, tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe, (SELECT rolle_kurzbz FROM public.tbl_prestudentrolle WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status, - tbl_bisio.bisio_id, + tbl_bisio.bisio_id, tbl_bisio.bis, tbl_bisio.von, tbl_zeugnisnote.note FROM campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid) @@ -185,14 +185,13 @@ $qry = "SELECT WHERE vw_student_lehrveranstaltung.lehrveranstaltung_id='".addslashes($lvid)."' AND (tbl_zeugnisnote.studiensemester_kurzbz='".addslashes($stsem)."' OR tbl_zeugnisnote.studiensemester_kurzbz is null) AND - ((tbl_bisio.von<'".$stsemdatumbis."' AND (tbl_bisio.bis>'".$stsemdatumvon."' OR tbl_bisio.bis is null)) OR tbl_bisio.von is null) AND vw_student_lehrveranstaltung.studiensemester_kurzbz='".addslashes($stsem)."' AND tbl_studentlehrverband.studiensemester_kurzbz='".addslashes($stsem)."'"; if($lehreinheit_id!='') $qry.=" AND vw_student_lehrveranstaltung.lehreinheit_id='".addslashes($lehreinheit_id)."'"; - $qry.=' ORDER BY nachname, vorname'; + $qry.=' ORDER BY nachname, vorname, person_id, tbl_bisio.bis DESC'; if($result = pg_query($conn, $qry)) { @@ -209,7 +208,7 @@ $qry = "SELECT $inc=' (i)'; else $inc=''; - if($elem->bisio_id!='' && $elem->status!='Incoming') //Outgoing + if($elem->bisio_id!='' && $elem->status!='Incoming' && ($elem->bis > $stsemdatumvon || $elem->bis=='') && $elem->von < $stsemdatumbis) //Outgoing $inc.=' (o)'; if($elem->note==6) //angerechnet diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index 1ec7e71e4..ba765a81f 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -1689,7 +1689,7 @@ if(!$error) else { //Nachschauen ob dieses Betriebsmittel schon existiert - if($bm->getBetriebsmittel($_POST['betriebsmitteltyp'],$_POST['nummerold'])) + if($bm->getBetriebsmittel($_POST['betriebsmitteltyp'],$_POST['nummer'])) { if(count($bm->result)>0) { @@ -1742,52 +1742,77 @@ if(!$error) $errormsg = 'Fehler beim Anlegen des Betriebsmittels'; } } - - //Zuordnung Betriebsmittel-Person anlegen - $bmp = new betriebsmittelperson($conn, null, null, true); - if($_POST['neu']!='true') + + if($_POST['betriebsmitteltyp']=='Zutrittskarte') { - if($bmp->load($betriebsmittel_id, $_POST['person_id'])) + //Bei Zutrittskarten schauen ob diese schon vergeben sind + $qry = "SELECT vorname, nachname, uid + FROM public.vw_betriebsmittelperson + WHERE betriebsmitteltyp='Zutrittskarte' AND + nummer::bigint='".$_POST['nummer']."'::bigint AND + person_id<>'".$_POST['person_id']."' AND + retouram is null"; + if($result_bmp = pg_query($conn, $qry)) { - $bmp->updateamum = date('Y-m-d H:i:s'); - $bmp->updatevon = $user; - $bmp->new = false; + if(pg_num_rows($result_bmp)>0) + { + $row_bmp = pg_fetch_object($result_bmp); + $error = true; + $return = false; + $errormsg = "Diese Zutrittskarte ist bereits ausgegeben an: $row_bmp->vorname $row_bmp->nachname ($row_bmp->uid)"; + } + } + } + + if(!$error) + { + //Zuordnung Betriebsmittel-Person anlegen + $bmp = new betriebsmittelperson($conn, null, null, true); + if($_POST['neu']!='true') + { + if($bmp->load($_POST['betriebsmittel_id'], $_POST['person_id'])) + { + $bmp->updateamum = date('Y-m-d H:i:s'); + $bmp->updatevon = $user; + $bmp->betriebsmittel_id_old = $_POST['betriebsmittel_id']; + $bmp->new = false; + } + else + { + //$error = true; + //$return = false; + //$errormsg = 'Fehler beim Laden der Betriebmittelperson Zuordnung'.$betriebsmittel_id.'-'.$_POST['person_id']; + $bmp->insertamum = date('Y-m-d H:i:s'); + $bmp->insertvon = $user; + $bmp->new = true; + } } else { - //$error = true; - //$return = false; - //$errormsg = 'Fehler beim Laden der Betriebmittelperson Zuordnung'.$betriebsmittel_id.'-'.$_POST['person_id']; $bmp->insertamum = date('Y-m-d H:i:s'); $bmp->insertvon = $user; $bmp->new = true; } - } - else - { - $bmp->insertamum = date('Y-m-d H:i:s'); - $bmp->insertvon = $user; - $bmp->new = true; - } - - if(!$error) - { - $bmp->person_id = $_POST['person_id']; - $bmp->betriebsmittel_id=$betriebsmittel_id; - $bmp->anmerkung = $_POST['anmerkung']; - $bmp->kaution = trim(str_replace(',','.',$_POST['kaution'])); - $bmp->ausgegebenam = $_POST['ausgegebenam']; - $bmp->retouram = $_POST['retouram']; - - if($bmp->save()) + + if(!$error) { - $return = true; - $data = $betriebsmittel_id; - } - else - { - $return = false; - $errormsg = $bmp->errormsg; + $bmp->person_id = $_POST['person_id']; + $bmp->betriebsmittel_id=$betriebsmittel_id; + $bmp->anmerkung = $_POST['anmerkung']; + $bmp->kaution = trim(str_replace(',','.',$_POST['kaution'])); + $bmp->ausgegebenam = $_POST['ausgegebenam']; + $bmp->retouram = $_POST['retouram']; + + if($bmp->save()) + { + $return = true; + $data = $betriebsmittel_id; + } + else + { + $return = false; + $errormsg = $bmp->errormsg; + } } } } diff --git a/include/betriebsmittel.class.php b/include/betriebsmittel.class.php index ad48ac7d7..e585beb57 100644 --- a/include/betriebsmittel.class.php +++ b/include/betriebsmittel.class.php @@ -182,9 +182,9 @@ class betriebsmittel 'nummerintern='.$this->addslashes($this->nummerintern).', '. 'reservieren='.($this->reservieren?'true':'false').', '. 'ort_kurzbz='.$this->addslashes($this->ort_kurzbz).', '. - 'ext_id='.$this->addslashes($this->ext_id).', '. - 'updateamum= now(), '. - 'updatevon='.$this->addslashes($this->updatevon).' '. + 'ext_id='.$this->addslashes($this->ext_id).', '. + 'updateamum= now(), '. + 'updatevon='.$this->addslashes($this->updatevon).' '. 'WHERE betriebsmittel_id='.$this->addslashes($this->betriebsmittel_id).';'; } diff --git a/include/betriebsmittelperson.class.php b/include/betriebsmittelperson.class.php index a10ed8b56..de90bd019 100644 --- a/include/betriebsmittelperson.class.php +++ b/include/betriebsmittelperson.class.php @@ -33,8 +33,10 @@ class betriebsmittelperson var $done=false; // @var boolean //Tabellenspalten - Var $betriebsmittel_id; // @var integer + var $betriebsmittel_id; // @var integer var $person_id; // @var integer + var $betriebsmittel_id_old; // @var integer + var $person_id_old; // @var integer var $anmerkung; // @var string var $kaution; // @var numeric(5,2) var $ausgegebenam; // @var date @@ -193,6 +195,19 @@ class betriebsmittelperson if($new==null) $new = $this->new; + //Pruefen ob dieses Betriebsmittel dieser Person schon zugeordnet ist + $qry = "SELECT 1 FROM public.tbl_betriebsmittelperson + WHERE person_id='".addslashes($this->person_id)."' AND + betriebsmittel_id='".addslashes($this->betriebsmittel_id)."'"; + if($result = pg_query($this->conn, $qry)) + { + if(pg_num_rows($result)>0) + { + $this->errormsg = 'Dieses Betriebsmittel ist der Person bereits zugeordnet'; + return false; + } + } + if($new) { //Neuen Datensatz einfuegen @@ -217,6 +232,10 @@ class betriebsmittelperson $this->errormsg = "betriebsmittel_id und Person_id muessen gueltige Zahlen sein: ".$this->betriebsmittel_id." (".$this->person_id.")\n"; return false; } + if($this->betriebsmittel_id_old=='') + $this->betriebsmittel_id_old = $this->betriebsmittel_id; + if($this->person_id_old=='') + $this->person_id_old = $this->person_id; $qry='UPDATE public.tbl_betriebsmittelperson SET '. 'betriebsmittel_id='.$this->addslashes($this->betriebsmittel_id).', '. @@ -226,10 +245,10 @@ class betriebsmittelperson 'ausgegebenam='.$this->addslashes($this->ausgegebenam).', '. 'retouram='.$this->addslashes($this->retouram).', '. 'ext_id='.$this->addslashes($this->ext_id).', '. - 'updateamum= now(), '. - 'updatevon='.$this->addslashes($this->updatevon).' '. - 'WHERE betriebsmittel_id='.$this->addslashes($this->betriebsmittel_id). - ' AND person_id='.$this->addslashes($this->person_id).";"; + 'updateamum= now(), '. + 'updatevon='.$this->addslashes($this->updatevon).' '. + 'WHERE betriebsmittel_id='.$this->addslashes($this->betriebsmittel_id_old). + ' AND person_id='.$this->addslashes($this->person_id_old).";"; } if(pg_query($this->conn, $qry)) diff --git a/include/tw/anwesenheitsliste.inc.php b/include/tw/anwesenheitsliste.inc.php index 023faa58b..af1d77069 100644 --- a/include/tw/anwesenheitsliste.inc.php +++ b/include/tw/anwesenheitsliste.inc.php @@ -249,7 +249,7 @@ $qry = "SELECT distinct on(nachname, vorname, person_id) vorname, nachname, matrikelnr, tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe, (SELECT rolle_kurzbz FROM public.tbl_prestudentrolle WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status, - tbl_bisio.bisio_id, + tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_zeugnisnote.note FROM campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid) @@ -260,14 +260,13 @@ $qry = "SELECT WHERE vw_student_lehrveranstaltung.lehrveranstaltung_id='".addslashes($lvid)."' AND (tbl_zeugnisnote.studiensemester_kurzbz='".addslashes($stsem)."' OR tbl_zeugnisnote.studiensemester_kurzbz is null) AND - ((tbl_bisio.von<'".$stsemdatumbis."' AND (tbl_bisio.bis>'".$stsemdatumvon."' OR tbl_bisio.bis is null)) OR tbl_bisio.von is null) AND vw_student_lehrveranstaltung.studiensemester_kurzbz='".addslashes($stsem)."' AND tbl_studentlehrverband.studiensemester_kurzbz='".addslashes($stsem)."'"; if($lehreinheit_id!='') $qry.=" AND vw_student_lehrveranstaltung.lehreinheit_id='".addslashes($lehreinheit_id)."'"; -$qry.=' ORDER BY nachname, vorname'; +$qry.=' ORDER BY nachname, vorname, person_id, tbl_bisio.bis DESC'; //echo $qry; if($result = pg_query($conn, $qry)) { @@ -305,7 +304,7 @@ if($result = pg_query($conn, $qry)) else $inc=''; - if($elem->bisio_id!='' && $elem->status!='Incoming') //Outgoing + if($elem->bisio_id!='' && $elem->status!='Incoming' && ($elem->bis > $stsemdatumvon || $elem->bis=='') && $elem->von < $stsemdatumbis) //Outgoing $inc.=' (o)'; if($elem->note==6) //angerechnet diff --git a/include/tw/anwesenheitsliste_bilder.inc.php b/include/tw/anwesenheitsliste_bilder.inc.php index 36895a517..21e209342 100644 --- a/include/tw/anwesenheitsliste_bilder.inc.php +++ b/include/tw/anwesenheitsliste_bilder.inc.php @@ -124,7 +124,7 @@ $qry = "SELECT distinct on(nachname, vorname, person_id) vorname, nachname, matrikelnr, person_id, tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe, (SELECT rolle_kurzbz FROM public.tbl_prestudentrolle WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status, - tbl_bisio.bisio_id, + tbl_bisio.bisio_id, tbl_bisio.bis, tbl_bisio.von, tbl_zeugnisnote.note FROM campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid) @@ -135,14 +135,13 @@ $qry = "SELECT WHERE vw_student_lehrveranstaltung.lehrveranstaltung_id='".addslashes($lvid)."' AND (tbl_zeugnisnote.studiensemester_kurzbz='".addslashes($stsem)."' OR tbl_zeugnisnote.studiensemester_kurzbz is null) AND - ((tbl_bisio.von<'".$stsemdatumbis."' AND (tbl_bisio.bis>'".$stsemdatumvon."' OR tbl_bisio.bis is null)) OR tbl_bisio.von is null) AND vw_student_lehrveranstaltung.studiensemester_kurzbz='".addslashes($stsem)."' AND tbl_studentlehrverband.studiensemester_kurzbz='".addslashes($stsem)."'"; if($lehreinheit_id!='') $qry.=" AND vw_student_lehrveranstaltung.lehreinheit_id='".addslashes($lehreinheit_id)."'"; -$qry.=' ORDER BY nachname, vorname'; +$qry.=' ORDER BY nachname, vorname, person_id, tbl_bisio.bis DESC'; $lineheight=80; if($result = pg_query($conn, $qry)) { @@ -180,7 +179,7 @@ if($result = pg_query($conn, $qry)) else $inc=''; - if($elem->bisio_id!='' && $elem->status!='Incoming') //Outgoing + if($elem->bisio_id!='' && $elem->status!='Incoming' && ($elem->bis > $stsemdatumvon || $elem->bis=='') && $elem->von < $stsemdatumbis) //Outgoing $inc.=' (o)'; if($elem->note==6) //angerechnet