From cab6d8db3bca8d7c382cb6a7c8deea888d4dab44 Mon Sep 17 00:00:00 2001 From: kindlm Date: Tue, 25 Aug 2015 11:11:22 +0200 Subject: [PATCH] Kartenverwaltung MA Studiensemester MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In der Kartenverwaltung können nun die Studiensemester händisch ausgewählt werden. Außerdem gibt es einen Filter für externe MA ohne Lehrauftrag. --- include/mitarbeiter.class.php | 23 +- include/studiensemester.class.php | 47 +++ vilesci/fhausweis/kartenverwaltung.php | 558 +++++++++++++------------ 3 files changed, 358 insertions(+), 270 deletions(-) diff --git a/include/mitarbeiter.class.php b/include/mitarbeiter.class.php index f6bd3d5d1..c55d9cdac 100644 --- a/include/mitarbeiter.class.php +++ b/include/mitarbeiter.class.php @@ -1093,10 +1093,11 @@ class mitarbeiter extends benutzer } /** - * + * Liefert MitarbeiterInnen für die Verwaltung der Zutrittskarten + * * @param $filter Buchstabe mit dem der Mitarbeiter beginnt * @param $fixangestellt false wenn externer mitarbeiter - * @param $studSemArray Array mit Studiensemestern in denen der externe Lektor zumindest in einem Unterrichtet haben soll + * @param $studSemArray Array mit Studiensemestern in denen der externe Lektor zumindest in einem Unterrichtet haben soll oder NULL. Wenn NULL werden nur externe Mitarbeiter ohne Lehrauftrag ausgegeben. * @return boolean */ public function getMitarbeiterForZutrittskarte($filter, $fixangestellt=true, $studSemArray) @@ -1113,11 +1114,19 @@ class mitarbeiter extends benutzer if($fixangestellt) $qry.=" AND fixangestellt"; else - $qry.=" AND NOT fixangestellt AND EXISTS - (SELECT * FROM lehre.tbl_lehreinheitmitarbeiter - JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - WHERE tbl_lehreinheitmitarbeiter.mitarbeiter_uid=uid - AND tbl_lehreinheit.studiensemester_kurzbz in (".$this->implode4SQL($studSemArray).")) "; + { + if ($studSemArray==null) + $qry.=" AND NOT fixangestellt AND personalnummer>0 AND NOT EXISTS + (SELECT * FROM lehre.tbl_lehreinheitmitarbeiter + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + WHERE tbl_lehreinheitmitarbeiter.mitarbeiter_uid=uid) "; + else + $qry.=" AND NOT fixangestellt AND EXISTS + (SELECT * FROM lehre.tbl_lehreinheitmitarbeiter + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + WHERE tbl_lehreinheitmitarbeiter.mitarbeiter_uid=uid + AND tbl_lehreinheit.studiensemester_kurzbz in (".$this->implode4SQL($studSemArray).")) "; + } $qry.=" ORDER BY nachname, vorname"; if($result = $this->db_query($qry)) { diff --git a/include/studiensemester.class.php b/include/studiensemester.class.php index a83ce397c..70a9b6887 100644 --- a/include/studiensemester.class.php +++ b/include/studiensemester.class.php @@ -824,6 +824,53 @@ class studiensemester extends basis_db return false; } } + + /** + * Liefert ausgehend von heutigen Datum $plus studiensemester in die Zukunft und $minus Studiensemester in die Vergangenheit + * + * @param integer $plus Wieviele Studiensemester in die Zukunft sollen ausgegeben werden. + * @param integer $minus Wieviele Studiensemester in die Vergangenheit sollen ausgegeben werden. + * + * @return true wenn ok, sonst false + */ + public function getPlusMinus($plus=null, $minus=null) + { + if((is_null($plus) || !is_numeric($plus)) || (is_null($minus) || !is_numeric($minus))) + return false; + + $qry = "SELECT DISTINCT * FROM public.tbl_studiensemester WHERE studiensemester_kurzbz IN + ( + (SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE start >= now() + ORDER BY ende ASC LIMIT $plus) + UNION + (SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE start <= now() + ORDER BY start DESC LIMIT $minus) + ) + ORDER BY ende DESC"; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $stsem_obj = new studiensemester(); + + $stsem_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $stsem_obj->start = $row->start; + $stsem_obj->ende = $row->ende; + $stsem_obj->bezeichnung = $row->bezeichnung; + $stsem_obj->studienjahr_kurzbz = $row->studienjahr_kurzbz; + $stsem_obj->beschreibung = $row->beschreibung; + + $this->studiensemester[] = $stsem_obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Studiensemester'; + return false; + } + } } ?> diff --git a/vilesci/fhausweis/kartenverwaltung.php b/vilesci/fhausweis/kartenverwaltung.php index bf4455dc2..fa5cac73c 100755 --- a/vilesci/fhausweis/kartenverwaltung.php +++ b/vilesci/fhausweis/kartenverwaltung.php @@ -42,37 +42,57 @@ $studiengang->getAll('oe_kurzbz', true); $fotostatus = new fotostatus(); $fotostatus->getAllStatusKurzbz(); - + $statusStudent=(isset($_REQUEST['select_statusStudent'])?$_REQUEST['select_statusStudent']:null); $statusMitarbeiter=(isset($_REQUEST['select_statusMitarbeiter'])?$_REQUEST['select_statusMitarbeiter']:null); $typMitarbeiter =(isset($_REQUEST['select_typ_mitarbeiter'])?$_REQUEST['select_typ_mitarbeiter']:null); $studiengang_kz=(isset($_REQUEST['select_studiengang'])?$_REQUEST['select_studiengang']:null); $semester=(isset($_REQUEST['select_semester'])?$_REQUEST['select_semester']:null); $buchstabe=(isset($_REQUEST['select_buchstabe'])?$_REQUEST['select_buchstabe']:null); +$studSemArray=(isset($_REQUEST['select_studiensemester'])?$_REQUEST['select_studiensemester']:array()); + +if (empty($studSemArray)) +{ + $studiensemester = new studiensemester(); + + $studSemArray[]=$studiensemester->getakt(); + $studSemArray[]=$studiensemester->getPrevious(); + $studSemArray[]=$studiensemester->getBeforePrevious(); +} + ?> + "http://www.w3.org/TR/html4/strict.dtd"> - - + + - - + + function showStudiensemester() + { + document.getElementById("studiensemester_dropdown").style.display = "inline"; + } + function hideStudiensemester() + { + document.getElementById("studiensemester_dropdown").style.display = "none"; + } + + FH-Ausweis Kartenverwaltung isBerechtigt('basis/fhausweis', 'suid')) echo '

FH-Ausweis Kartenverwaltung

-
- Studentensuche -
- - - - + + +
Studiengang: + + + - - + + - - + + - - -
Studiengang:Semester:Semester: - letzter Status: + letzter Status:
- + +
+
- Mitarbeitersuche -
-
- - - - - - - - -
Typ: - Anfangsbuchstabe: - letzter Status:
-
-
+ Mitarbeitersuche +
+
+ + + + + + + + + +
Typ:im + + Anfangsbuchstabe: + letzter Status:
+
+
'; // zeige alle Studenten an if(isset($_REQUEST['btn_submitStudent'])) { - $uids = ''; - if($semester == 'alle') - $semester = null; - - $studenten = new student(); + $uids = ''; + if($semester == 'alle') + $semester = null; + + $studenten = new student(); - if($studiengang_kz=='incoming') - $studenten->getIncoming(); - else - $studenten->getStudentsStudiengang($studiengang_kz, $semester); - $studentenArray = $studenten->result; - - // $studentenArray = $studenten->getStudents($studiengang_kz,$semester,null,null,null,'WS2011'); - echo ' -
- - - - - - - - - - - '; - - foreach($studentenArray as $stud) - { + if($studiengang_kz=='incoming') + $studenten->getIncoming(); + else + $studenten->getStudentsStudiengang($studiengang_kz, $semester); + $studentenArray = $studenten->result; + + // $studentenArray = $studenten->getStudents($studiengang_kz,$semester,null,null,null,'WS2011'); + echo ' + +
NameGeburtsdatumMatrikelnummerUIDperson_id
+ + + + + + + + + + '; + + foreach($studentenArray as $stud) + { if($stud->studiengang_kz>10000 && $stud->studiengang_kz !='10007' && $stud->studiengang_kz!='10004') continue; - // Wenn letzter Status nich Student ist -> nicht anzeigen - $prestudent = new prestudent(); - $prestudent->getLastStatus($stud->prestudent_id); - if($prestudent->status_kurzbz == 'Student' || ($studiengang_kz=='incoming' && $prestudent->status_kurzbz='Incoming')) - { - if($statusStudent=='gedrucktNichtAusgegeben') - { - // gedruckt aber noch nicht ausgegeben - $fotostatus = new fotostatus(); - $fotostatus->getLastFotoStatus($stud->person_id); - $betriebsmittel = new betriebsmittel(); + // Wenn letzter Status nich Student ist -> nicht anzeigen + $prestudent = new prestudent(); + $prestudent->getLastStatus($stud->prestudent_id); + if($prestudent->status_kurzbz == 'Student' || ($studiengang_kz=='incoming' && $prestudent->status_kurzbz='Incoming')) + { + if($statusStudent=='gedrucktNichtAusgegeben') + { + // gedruckt aber noch nicht ausgegeben + $fotostatus = new fotostatus(); + $fotostatus->getLastFotoStatus($stud->person_id); + $betriebsmittel = new betriebsmittel(); - // status akzeptiert und noch nicht gedruckt - if($fotostatus->fotostatus_kurzbz == 'akzeptiert' && $betriebsmittel->zutrittskartePrinted($stud->uid) == true && $betriebsmittel->zutrittskarteAusgegeben($stud->uid) == false) - { - echo ''; - $uids.=';'.$stud->uid; - } - } - else if($statusStudent == 'nichtGedrucktAkzept') - { - // akzeptiert und nicht gedruckt - $fotostatus = new fotostatus(); - $fotostatus->getLastFotoStatus($stud->person_id); - $betriebsmittel = new betriebsmittel(); + // status akzeptiert und noch nicht gedruckt + if($fotostatus->fotostatus_kurzbz == 'akzeptiert' && $betriebsmittel->zutrittskartePrinted($stud->uid) == true && $betriebsmittel->zutrittskarteAusgegeben($stud->uid) == false) + { + echo ''; + $uids.=';'.$stud->uid; + } + } + else if($statusStudent == 'nichtGedrucktAkzept') + { + // akzeptiert und nicht gedruckt + $fotostatus = new fotostatus(); + $fotostatus->getLastFotoStatus($stud->person_id); + $betriebsmittel = new betriebsmittel(); - // status akzeptiert und noch nicht gedruckt - if($fotostatus->fotostatus_kurzbz == 'akzeptiert' && $betriebsmittel->zutrittskartePrinted($stud->uid) == false) - { - echo ''; - $uids.=';'.$stud->uid; - } - } - else if($statusStudent == 'nichtGedruckt') - { - // akzeptiert und nicht gedruckt - $fotostatus = new fotostatus(); - $fotostatus->getLastFotoStatus($stud->person_id); - $betriebsmittel = new betriebsmittel(); + // status akzeptiert und noch nicht gedruckt + if($fotostatus->fotostatus_kurzbz == 'akzeptiert' && $betriebsmittel->zutrittskartePrinted($stud->uid) == false) + { + echo ''; + $uids.=';'.$stud->uid; + } + } + else if($statusStudent == 'nichtGedruckt') + { + // akzeptiert und nicht gedruckt + $fotostatus = new fotostatus(); + $fotostatus->getLastFotoStatus($stud->person_id); + $betriebsmittel = new betriebsmittel(); - // noch nicht gedruckt - if($betriebsmittel->zutrittskartePrinted($stud->uid) == false) - { - echo ''; - $uids.=';'.$stud->uid; - } - } - else - { - // letzten Status anzeigen - $fotostatus = new fotostatus(); - $fotostatus->getLastFotoStatus($stud->person_id); + // noch nicht gedruckt + if($betriebsmittel->zutrittskartePrinted($stud->uid) == false) + { + echo ''; + $uids.=';'.$stud->uid; + } + } + else + { + // letzten Status anzeigen + $fotostatus = new fotostatus(); + $fotostatus->getLastFotoStatus($stud->person_id); - // überprüfen ob letzer Status der gesuchte ist - if($fotostatus->fotostatus_kurzbz == $statusStudent) - { - echo ''; - $uids.=';'.$stud->uid; - } - } - } - } - echo ' - -
NameGeburtsdatumMatrikelnummerUIDperson_id
'.$stud->nachname.' '.$stud->vorname.''.$stud->gebdatum.''.$stud->matrikelnr.''.$stud->uid.''.$stud->person_id.'
'.$stud->nachname.' '.$stud->vorname.''.$stud->gebdatum.''.$stud->matrikelnr.''.$stud->uid.''.$stud->person_id.'
'.$stud->nachname.' '.$stud->vorname.''.$stud->gebdatum.''.$stud->matrikelnr.''.$stud->uid.''.$stud->person_id.'
'.$stud->nachname.' '.$stud->vorname.''.$stud->gebdatum.''.$stud->matrikelnr.''.$stud->uid.''.$stud->person_id.'
'.$stud->nachname.' '.$stud->vorname.' ('.$fotostatus->fotostatus_kurzbz.')'.$stud->gebdatum.''.$stud->matrikelnr.''.$stud->uid.''.$stud->person_id.'
'.$stud->nachname.' '.$stud->vorname.' ('.$fotostatus->fotostatus_kurzbz.')'.$stud->gebdatum.''.$stud->matrikelnr.''.$stud->uid.''.$stud->person_id.'
'.$stud->nachname.' '.$stud->vorname.''.$stud->gebdatum.''.$stud->matrikelnr.''.$stud->uid.''.$stud->person_id.'
- - - - -
-
-
'; - // + // überprüfen ob letzer Status der gesuchte ist + if($fotostatus->fotostatus_kurzbz == $statusStudent) + { + echo ''.$stud->nachname.' '.$stud->vorname.''.$stud->gebdatum.''.$stud->matrikelnr.''.$stud->uid.''.$stud->person_id.''; + $uids.=';'.$stud->uid; + } + } + } + } + echo ' + + + + + + +
+
+ '; + // } // Zeige alle Mitarbeiter an if(isset($_REQUEST['btn_submitMitarbeiter'])) -{ - $studSemArray = array(); - - $studiensemester = new studiensemester(); - $studSemArray[]=$studiensemester->getakt(); - $studSemArray[]=$studiensemester->getPrevious(); - $studSemArray[]=$studiensemester->getBeforePrevious(); - - $fixangestellt = true; - if($_REQUEST['select_typ_mitarbeiter'] == 'extern') - $fixangestellt = false; - - $mitarbeiter = new mitarbeiter(); - $mitarbeiter->getMitarbeiterForZutrittskarte($buchstabe, $fixangestellt, $studSemArray); +{ + $fixangestellt = true; + if($_REQUEST['select_typ_mitarbeiter'] == 'extern') + $fixangestellt = false; + + if($_REQUEST['select_typ_mitarbeiter'] == 'extern_ohne') + { + $fixangestellt = false; + $studSemArray = null; + } + + $mitarbeiter = new mitarbeiter(); + $mitarbeiter->getMitarbeiterForZutrittskarte($buchstabe, $fixangestellt, $studSemArray); - $uids = ''; - - echo ' -
- - - - - - - - - - - '; - - foreach($mitarbeiter->result as $mit) - { - if($statusMitarbeiter=='gedrucktNichtAusgegeben') - { - $fotostatus = new fotostatus(); - $fotostatus->getLastFotoStatus($mit->person_id); - $betriebsmittel = new betriebsmittel(); - - // status akzeptiert, gedruckt aber noch nicht ausgegeben - if($fotostatus->fotostatus_kurzbz == 'akzeptiert' && $betriebsmittel->zutrittskartePrinted($mit->uid) == true && $betriebsmittel->zutrittskarteAusgegeben($mit->uid) == false) - { - $uids.=';'.$mit->uid; - echo ''; - } - } - else if($statusMitarbeiter == 'nichtGedruckt') - { - $fotostatus = new fotostatus(); - $fotostatus->getLastFotoStatus($mit->person_id); - $betriebsmittel = new betriebsmittel(); - - // status akzeptiert und noch nicht gedruckt - if($fotostatus->fotostatus_kurzbz == 'akzeptiert' && $betriebsmittel->zutrittskartePrinted($mit->uid) == false) - { - $uids.=';'.$mit->uid; - echo ''; - } - } - else - { - $fotostatus = new fotostatus(); - $fotostatus->getLastFotoStatus($mit->person_id); + $uids = ''; + + echo ' + +
NameGeburtsdatumPersonalnummerUIDperson_id
'.$mit->nachname.' '.$mit->vorname.''.$mit->gebdatum.''.$mit->personalnummer.''.$mit->uid.''.$mit->person_id.'
'.$mit->nachname.' '.$mit->vorname.''.$mit->gebdatum.''.$mit->personalnummer.''.$mit->uid.''.$mit->person_id.'
+ + + + + + + + + + '; + + foreach($mitarbeiter->result as $mit) + { + if($statusMitarbeiter=='gedrucktNichtAusgegeben') + { + $fotostatus = new fotostatus(); + $fotostatus->getLastFotoStatus($mit->person_id); + $betriebsmittel = new betriebsmittel(); + + // status akzeptiert, gedruckt aber noch nicht ausgegeben + if($fotostatus->fotostatus_kurzbz == 'akzeptiert' && $betriebsmittel->zutrittskartePrinted($mit->uid) == true && $betriebsmittel->zutrittskarteAusgegeben($mit->uid) == false) + { + $uids.=';'.$mit->uid; + echo ''; + } + } + else if($statusMitarbeiter == 'nichtGedruckt') + { + $fotostatus = new fotostatus(); + $fotostatus->getLastFotoStatus($mit->person_id); + $betriebsmittel = new betriebsmittel(); + + // status akzeptiert und noch nicht gedruckt + if($fotostatus->fotostatus_kurzbz == 'akzeptiert' && $betriebsmittel->zutrittskartePrinted($mit->uid) == false) + { + $uids.=';'.$mit->uid; + echo ''; + } + } + else + { + $fotostatus = new fotostatus(); + $fotostatus->getLastFotoStatus($mit->person_id); - // überprüfen ob letzer Status der gesuchte ist - if($fotostatus->fotostatus_kurzbz == $statusMitarbeiter) - { - $uids.=';'.$mit->uid; - echo ''; - } - } - } - echo ' - -
NameGeburtsdatumPersonalnummerUIDperson_id
'.$mit->nachname.' '.$mit->vorname.''.$mit->gebdatum.''.$mit->personalnummer.''.$mit->uid.''.$mit->person_id.'
'.$mit->nachname.' '.$mit->vorname.''.$mit->gebdatum.''.$mit->personalnummer.''.$mit->uid.''.$mit->person_id.'
'.$mit->nachname.' '.$mit->vorname.''.$mit->gebdatum.''.$mit->personalnummer.''.$mit->uid.''.$mit->person_id.'
- - - - -
  -
-
- '; - // - } + // überprüfen ob letzer Status der gesuchte ist + if($fotostatus->fotostatus_kurzbz == $statusMitarbeiter) + { + $uids.=';'.$mit->uid; + echo ''.$mit->nachname.' '.$mit->vorname.''.$mit->gebdatum.''.$mit->personalnummer.''.$mit->uid.''.$mit->person_id.''; + } + } + } + echo ' + + + + + + +
  +
+ + '; + // + } ?>