From 6add22c9a852e53c99b2d9b62a8407438fbf26c2 Mon Sep 17 00:00:00 2001 From: Rudolf Hangl Date: Tue, 8 Apr 2008 11:11:24 +0000 Subject: [PATCH] --- vilesci/personen/lost_souls.php | 90 ++++++++++ .../zutrittskarten/generatefromsipass.php | 170 +++++++++++++++--- 2 files changed, 234 insertions(+), 26 deletions(-) create mode 100644 vilesci/personen/lost_souls.php diff --git a/vilesci/personen/lost_souls.php b/vilesci/personen/lost_souls.php new file mode 100644 index 000000000..4253b0bb3 --- /dev/null +++ b/vilesci/personen/lost_souls.php @@ -0,0 +1,90 @@ +, + * Andreas Oesterreicher , + * Rudolf Hangl and + */ +/* +Finden aller aktiven Studenten, die das Studium noch nicht beendet aber trotzdem keinen aktuellen Status haben +*/ +require_once('../config.inc.php'); +require_once('../../include/studiengang.class.php'); +require_once('../../include/studiensemester.class.php'); +require_once('../../include/functions.inc.php'); + +if(!$conn=pg_pconnect(CONN_STRING)) + die("Konnte Verbindung zur Datenbank nicht herstellen"); + +function myaddslashes($var) +{ + return ($var!=''?"'".addslashes($var)."'":'null'); +} + +$studiensemester=new studiensemester($conn); +$ssem=$studiensemester->getaktorNext(); +$alle=0; +$abab=0; +$now=0; +$hit=0; + +echo "Semester: ".$ssem."
"; +$qry="SELECT DISTINCT tbl_prestudent.prestudent_id, tbl_prestudent.studiengang_kz FROM public.tbl_person + JOIN public.tbl_prestudent USING(person_id) + JOIN public.tbl_student ON(tbl_prestudent.prestudent_id=tbl_student.prestudent_id) + JOIN public.tbl_prestudentrolle ON(tbl_prestudent.prestudent_id=tbl_prestudentrolle.prestudent_id) + WHERE tbl_person.aktiv AND rolle_kurzbz!='Incoming' ORDER by tbl_prestudent.studiengang_kz;"; + +if ($result=pg_query($conn, $qry)) +{ + while($row=pg_fetch_object($result)) + { + $alle=pg_num_rows($result); + $qry_chk="SELECT prestudent_id FROM public.tbl_prestudentrolle WHERE (rolle_kurzbz='Abgewiesener' OR rolle_kurzbz='Abbrecher' OR rolle_kurzbz='Absolvent') AND prestudent_id='".$row->prestudent_id."';"; + if ($result_chk=pg_query($conn, $qry_chk)) + { + if(pg_num_rows($result_chk)==0) + { + $qry_chk2="SELECT prestudent_id FROM public.tbl_prestudentrolle WHERE studiensemester_kurzbz='".$ssem."' AND prestudent_id='".$row->prestudent_id."';"; + if ($result_chk2=pg_query($conn, $qry_chk2)) + { + if(pg_num_rows($result_chk2)==0) + { + $qry_erg="SELECT nachname,vorname, tbl_prestudent.studiengang_kz, matrikelnr FROM public.tbl_person JOIN public.tbl_prestudent USING(person_id) JOIN public.tbl_student ON(tbl_prestudent.prestudent_id=tbl_student.prestudent_id) WHERE tbl_prestudent.prestudent_id='".$row->prestudent_id."';"; + if ($result_erg=pg_query($conn, $qry_erg)) + { + if($row_erg=pg_fetch_object($result_erg)) + { + echo "
".sprintf("[%04s]\n", $row_erg->studiengang_kz).", ".$row_erg->matrikelnr.", ".$row_erg->nachname.", ".$row_erg->vorname; + $hit++; + } + } + } + else + { + $now++; + } + } + } + else + { + $abab++; + } + } + } +} +echo "
Ergebnis:
Lost Souls: ".$hit."
in akt. Sem.: ".$now."
fertig: ".$abab."
gesamt: ".$alle; \ No newline at end of file diff --git a/vilesci/stammdaten/imexport/zutrittskarten/generatefromsipass.php b/vilesci/stammdaten/imexport/zutrittskarten/generatefromsipass.php index 2bdbb4d3c..8e838252e 100644 --- a/vilesci/stammdaten/imexport/zutrittskarten/generatefromsipass.php +++ b/vilesci/stammdaten/imexport/zutrittskarten/generatefromsipass.php @@ -18,6 +18,8 @@ $sipass=array(array()); $i=0; $key_nummer=0; $update=false; +$custom=array(array()); +$error=false; if (!$conn=pg_pconnect(CONN_STRING)) die(pg_last_error($conn)); @@ -45,32 +47,82 @@ else die('Letzte Nummer konnte nicht eruiert werden!'); //einlesen der daten von sipass - -$qry="SELECT * FROM asco.cardholder -JOIN asco.card_physical ON(asco.card_physical.cardholder_id=asco.cardholder.cardholder_id) -JOIN asco.card_logical ON(asco.card_physical.card_physical_id=asco.card_logical.card_physical_id);"; +$qry="SELECT * FROM asco.employee_custom_data"; +if($result = mssql_query($qry,$conn_ext)) +{ + while($row=mssql_fetch_object($result)) + { + $custom[$row->emp_id][$row->field_id]=$row->char_value; + } +} +$qry="SELECT * FROM asco.employee"; if($result_ext = mssql_query($qry,$conn_ext)) { while($row=mssql_fetch_object($result_ext)) { $sipass[$i][0]=''; - $sipass[$i][1]=$row->cardholder_id; + $sipass[$i][1]=$row->emp_no; $sipass[$i][2]=$row->last_name; $sipass[$i][3]=$row->first_name; - $sipass[$i][4]=$row->number; + $sipass[$i][4]=$row->card_no; $sipass[$i][5]=date('d.m.Y',strtotime($row->start_date)); $sipass[$i][6]=date('d.m.Y',strtotime($row->end_date)); + if(isset($custom[$row->emp_id][7])) + { + $sipass[$i][7]=$custom[$row->emp_id][7]; //UID + } + else + { + $sipass[$i][7]=""; + } + if(isset($custom[$row->emp_id][8])) + { + $sipass[$i][8]=$custom[$row->emp_id][8]; //Matrikelnr. + } + else + { + $sipass[$i][8]=""; + } + if(isset($custom[$row->emp_id][9])) + { + $sipass[$i][9]=$custom[$row->emp_id][9]; //Stg./Verwaltung + } + else + { + $sipass[$i][9]=""; + } $i++; } } -$qry="SELECT DISTINCT nachname as LastName, vorname as FirstName,nummer as CardNumber, - EXTRACT(DAY FROM vw_betriebsmittelperson.insertamum) AS tag, - EXTRACT(MONTH FROM vw_betriebsmittelperson.insertamum) AS monat, - EXTRACT(YEAR FROM vw_betriebsmittelperson.insertamum) AS jahr - FROM public.vw_betriebsmittelperson - LEFT OUTER JOIN (public.tbl_student JOIN public.tbl_studiengang USING (studiengang_kz)) ON (uid=student_uid) - WHERE betriebsmitteltyp='Zutrittskarte' AND benutzer_aktiv AND retouram IS NULL;"; +// +$qry="SELECT bmp.person_id as person2, bmp.nachname as nachname2,bmp.nummer as nummer2, bmp.vorname as vorname2, + public.vw_betriebsmittelperson.person_id AS person1, public.vw_betriebsmittelperson.nachname as nachname1, public.vw_betriebsmittelperson.nummer as nummer1, + public.vw_betriebsmittelperson.vorname as vorname1, public.vw_betriebsmittelperson.gebdatum as gebdatum1, public.vw_betriebsmittelperson.* FROM public.vw_betriebsmittelperson bmp + JOIN public.vw_betriebsmittelperson ON (bmp.nummer=public.vw_betriebsmittelperson.nummer) + WHERE (trim(bmp.nachname)!=trim(public.vw_betriebsmittelperson.nachname) OR (trim(bmp.vorname)!=trim(public.vw_betriebsmittelperson.vorname))) + AND public.vw_betriebsmittelperson.betriebsmitteltyp='Zutrittskarte' AND bmp.betriebsmitteltyp='Zutrittskarte' + AND public.vw_betriebsmittelperson.benutzer_aktiv AND public.vw_betriebsmittelperson.retouram IS NULL AND bmp.benutzer_aktiv AND bmp.retouram IS NULL + AND bmp.person_id".$row->person2.", ".$row->nachname2.", ".$row->vorname2.", ".$row->nummer2.", ".$row->person1.", ".$row->nachname1.", ".$row->vorname1.", ".$row->nummer1; + $error=true; + } +} +if($error) die(""); + +$qry="SELECT DISTINCT ON (person_id, nummer) nachname as LastName, vorname as FirstName,nummer as CardNumber, matrikelnr, uid, kurzbzlang, personalnummer, lektor, + EXTRACT(DAY FROM vw_betriebsmittelperson.insertamum) AS tag, + EXTRACT(MONTH FROM vw_betriebsmittelperson.insertamum) AS monat, + EXTRACT(YEAR FROM vw_betriebsmittelperson.insertamum) AS jahr + FROM public.vw_betriebsmittelperson + LEFT OUTER JOIN (public.tbl_student JOIN public.tbl_studiengang USING (studiengang_kz)) ON (uid=student_uid) + LEFT OUTER JOIN public.tbl_mitarbeiter ON (uid=mitarbeiter_uid) + WHERE betriebsmitteltyp='Zutrittskarte' AND benutzer_aktiv AND retouram IS NULL;"; //abhanden gekommene karten??? if($result = pg_query($conn, $qry)) @@ -83,11 +135,61 @@ if($result = pg_query($conn, $qry)) //überprüfen, ob bereits vorhanden if($sipass[$j][4]==$row->cardnumber) { - $sipass[$j][0]="U"; - $sipass[$j][2]=trim($row->lastname); - $sipass[$j][3]=trim($row->firstname); - $sipass[$j][5]=date('d.m.Y',strtotime($row->tag.'.'.$row->monat.'.'.$row->jahr)); - $sipass[$j][6]=date('d.m.Y',strtotime($row->tag.'.'.$row->monat.'.'.($row->jahr+5))); + $upd=FALSE; + if($sipass[$j][2]!=trim($row->lastname)) + { + $sipass[$j][2]=trim($row->lastname); + $upd=TRUE; + } + if($sipass[$j][3]!=trim($row->firstname)) + { + $sipass[$j][3]=trim($row->firstname); + $upd=TRUE; + } + if($sipass[$j][5]!=date('d.m.Y',strtotime($row->tag.'.'.$row->monat.'.'.$row->jahr))) + { + $sipass[$j][5]=date('d.m.Y',strtotime($row->tag.'.'.$row->monat.'.'.$row->jahr)); + $upd=TRUE; + } + if($sipass[$j][6]!=date('d.m.Y',strtotime($row->tag.'.'.$row->monat.'.'.($row->jahr+5)))) + { + $sipass[$j][6]=date('d.m.Y',strtotime($row->tag.'.'.$row->monat.'.'.($row->jahr+5))); + $upd=TRUE; + } + if($sipass[$j][7]!=trim($row->uid)) + { + $sipass[$j][7]=trim($row->uid); + $upd=TRUE; + } + if($sipass[$j][8]!=trim($row->matrikelnr)) + { + $sipass[$j][8]=trim($row->matrikelnr); + $upd=TRUE; + } + if($row->personalnummer!='' && $row->personalnummer!= NULL) + { + if($sipass[$j][9]!="Verwaltung") + { + $sipass[$j][9]="Verwaltung"; + $upd=TRUE; + } + } + else + { + if($sipass[$j][9]!=trim($row->kurzbzlang)) + { + $sipass[$j][9]=trim($row->kurzbzlang); + $upd=TRUE; + } + } + if($upd) + { + $sipass[$j][0]="U"; + } + else + { + $sipass[$j][0]="V"; //kein update, wird auch nicht gelöscht + } $update=true; break; } @@ -104,6 +206,17 @@ if($result = pg_query($conn, $qry)) $sipass[$i][4]=str_replace(" ","",$row->cardnumber); $sipass[$i][5]=$row->tag.'.'.$row->monat.'.'.$row->jahr; $sipass[$i][6]=$row->tag.'.'.$row->monat.'.'.($row->jahr+5); + $sipass[$j][7]=trim($row->uid); + $sipass[$j][8]=trim($row->matrikelnr); + if($row->personalnummer!='' && $row->personalnummer!= NULL) + { + $sipass[$j][9]="Verwaltung"; + + } + else + { + $sipass[$j][9]=trim($row->kurzbzlang); + } $i++; $key_nummer++; } @@ -121,14 +234,19 @@ for($j=0;$j<$i;$j++) } else { - $ausdruck.=$sipass[$j][0]."\t"; - $ausdruck.=$sipass[$j][1]."\t"; - $ausdruck.=$sipass[$j][2]."\t"; - $ausdruck.=$sipass[$j][3]."\t"; - $ausdruck.=$sipass[$j][4]."\t"; - $ausdruck.=$sipass[$j][5]."\t"; - $ausdruck.=$sipass[$j][6]."\t"; - $ausdruck.="\n"; + if(trim($sipass[$j][0]!='V')) + { + $ausdruck.=$sipass[$j][0]."\t"; + $ausdruck.=$sipass[$j][1]."\t"; + $ausdruck.=$sipass[$j][2]."\t"; + $ausdruck.=$sipass[$j][3]."\t"; + $ausdruck.=$sipass[$j][4]."\t"; + $ausdruck.=$sipass[$j][5]."\t"; + $ausdruck.=$sipass[$j][6]."\t"; + $ausdruck.=$sipass[$j][7]."\t"; + $ausdruck.=$sipass[$j][8]."\t"; + $ausdruck.=$sipass[$j][9]."\n"; + } } } header("Content-Type: text/plain");