This commit is contained in:
Rudolf Hangl
2008-04-08 11:11:24 +00:00
parent 88374df482
commit 6add22c9a8
2 changed files with 234 additions and 26 deletions
+90
View File
@@ -0,0 +1,90 @@
<?php
/* Copyright (C) 2008 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
* Rudolf Hangl <rudolf.hangl@technikum-wien.at> 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."<br>";
$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 "<br>".sprintf("[%04s]\n", $row_erg->studiengang_kz).", ".$row_erg->matrikelnr.", ".$row_erg->nachname.", ".$row_erg->vorname;
$hit++;
}
}
}
else
{
$now++;
}
}
}
else
{
$abab++;
}
}
}
}
echo "<br><b>Ergebnis: </b><br>Lost Souls: ".$hit."<br>in akt. Sem.: ".$now."<br>fertig: ".$abab."<br>gesamt: ".$alle;
@@ -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<public.vw_betriebsmittelperson.person_id
ORDER BY bmp.nachname;";
if($result = pg_query($conn, $qry))
{
while($row=pg_fetch_object($result))
{
echo "<br>".$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.="<Keine>\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");