This commit is contained in:
Rudolf Hangl
2008-03-18 10:50:17 +00:00
parent 0c1a1323c6
commit a1774804ea
@@ -14,76 +14,88 @@ require_once('../../../../include/Excel/File.php');
require_once('../../../../include/Excel/Writer.php');
require_once('../../../../include/Excel/Validator.php');
$sipass=array(array());
$i=0;
$update=false;
if (!$conn=pg_pconnect(CONN_STRING))
die(pg_last_error($conn));
/*
// zugriff auf mssql-datenbank ----------------------- DB-Zugriff ändern !!!!!!
if (!$conn_ext=mssql_connect (STPDB_SERVER, STPDB_USER, STPDB_PASSWD))
die('Fehler beim Verbindungsaufbau!');
mssql_select_db(STPDB_DB, $conn_ext);
// letzte Nummer
$sql_query="SELECT max(key) AS last_keynr FROM sync.tbl_zutrittskarte;";
/*
//letzte Nummer
$sql_query="SELECT max(key) AS last_keynr FROM ***************;";
//echo $sql_query;
if(!$result=pg_exec($conn, $sql_query))
die(pg_errormessage().'<BR>'.$sql_query);
if(!$result=mssql_query($qry,$conn_ext))
die(mssql_get_last_message().'<BR>'.$sql_query);
if ($row=pg_fetch_object($result))
$key_nummer=$row->last_keynr+1;
else
die ('Letzte Nummer konnte nicht eroiert werden!');
die('Letzte Nummer konnte nicht eruiert werden!');*/
//einlesen der daten von sipass
/*
$qry="SELECT ID, LastName, FirstName, CardNumber, StartDate, EndDate FROM **************;";
if($result_ext = mssql_query($qry,$conn_ext))
{
while($row=mssql_fetch_object($result_ext))
{
$sipass[$i][1]=$result_ext->ID;
$sipass[$i][2]=$result_ext->LastName;
$sipass[$i][3]=$result_ext->FirstName;
$sipass[$i][4]=$result_ext->CardNumber;
$sipass[$i][5]=$result_ext->StartDate;
$sipass[$i][6]=$result_ext->EndDate;
$i++;
}
}*/
// Neue Zutrittskarten
/*$sql_query="SELECT svnr,vorname,nachname,nummerintern,nummer,
max(tbl_benutzer.uid) AS uid, max(matrikelnr) AS matrikelnr, max(kurzbzlang) AS stg_kurzbzlang,
upper(max(typ) || max(kurzbz)) AS stg_kurzbz,
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_benutzer JOIN public.tbl_student ON (uid=student_uid)
JOIN public.tbl_studiengang USING (studiengang_kz))
USING (person_id)
WHERE betriebsmitteltyp='Zutrittskarte' AND nummer NOT IN (SELECT physaswnumber FROM sync.tbl_zutrittskarte)
GROUP BY svnr,vorname,nachname,nummerintern,nummer, vw_betriebsmittelperson.insertamum;";
*/
$sql_query="SELECT svnr,vorname,nachname,nummerintern,nummer, uid, matrikelnr, kurzbzlang AS stg_kurzbzlang,
upper(typ)||upper(kurzbz) AS stg_kurzbz,
$qry="SELECT DISTINCT vorname as FirstName,nachname as LastName, 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
AND nummer NOT IN (SELECT physaswnumber FROM sync.tbl_zutrittskarte);";
//echo $sql_query;
if(!$result_neu=pg_exec($conn, $sql_query))
die(pg_errormessage().'<BR>'.$sql_query);
WHERE betriebsmitteltyp='Zutrittskarte' AND benutzer_aktiv AND retouram IS NULL;";
// Updates von Zutrittskarten
$sql_query="SELECT svnr,vorname,nachname,nummerintern,nummer,firstname,name,key, uid, matrikelnr,
kurzbzlang AS stg_kurzbzlang, upper(typ)||upper(kurzbz) AS stg_kurzbz, text1,pin,
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)
JOIN sync.tbl_zutrittskarte ON (physaswnumber=nummer)
WHERE benutzer_aktiv AND retouram IS NULL
AND (trim(vw_betriebsmittelperson.nachname)!=trim(tbl_zutrittskarte.name)
OR trim(vw_betriebsmittelperson.vorname)!=trim(tbl_zutrittskarte.firstname)
OR trim(vw_betriebsmittelperson.uid)!=trim(tbl_zutrittskarte.text1));";
//echo $sql_query;
if(!$result_upd=pg_exec($conn, $sql_query))
die(pg_errormessage().'<BR>'.$sql_query);
// Loeschen von Zutrittskarten
$sql_query="SELECT *
FROM sync.tbl_zutrittskarte
WHERE physaswnumber NOT IN
(SELECT nummer
FROM public.vw_betriebsmittelperson
WHERE betriebsmitteltyp='Zutrittskarte' AND retouram IS NULL
);"; // AND benutzer_aktiv
//echo $sql_query;
if(!$result_del=pg_exec($conn, $sql_query))
die(pg_errormessage().'<BR>'.$sql_query);
if($result = pg_query($conn, $qry))
{
while($row=pg_fetch_object($result))
{
$update=false;
for($j=0;$j<$i;$j++)
{
//überprüfen, ob bereits vorhanden
if($sipass[$j][4]==$row->cardnumber)
{
$sipass[$j][0]="U";
$sipass[$j][2]=$row->lastname;
$sipass[$j][3]=$row->firstname;
$sipass[$j][5]=$row->tag.'.'.$row->monat.'.'.$row->jahr;
$sipass[$j][6]=$row->tag.'.'.$row->monat.'.'.($row->jahr+5);
$update=true;
break;
}
}
if(!$update)
{
//wenn nicht gefunden, dann append
$sipass[$i][0]="A";
$sipass[$i][1]='';
$sipass[$i][2]=$row->lastname;
$sipass[$i][3]=$row->firstname;
$sipass[$i][4]=$row->cardnumber;
$sipass[$i][5]=$row->tag.'.'.$row->monat.'.'.$row->jahr;
$sipass[$i][6]=$row->tag.'.'.$row->monat.'.'.($row->jahr+5);
$i++;
}
}
}
//------------ Excel init --------------------------
@@ -91,120 +103,31 @@ if(!$result_del=pg_exec($conn, $sql_query))
// Creating a workbook
$workbook = new Spreadsheet_Excel_Writer();
// sending HTTP headers
$workbook->send("CerpassZutrittskartenUpdate". "_" . date("d_m_Y") . ".xls");
$workbook->send("SiPassZutrittskartenUpdate". "_" . date("d_m_Y") . ".xls");
// Creating a worksheet
$worksheet =& $workbook->addWorksheet("CerpassZutrittskartenUpdate");
//$format_bold =& $workbook->addFormat();
//$format_bold->setBold();
//$format_title =& $workbook->addFormat();
//$format_title->setBold();
// $format_title->setColor('yellow');
// $format_title->setPattern(1);
// $format_title->setFgColor('blue');
// let's merge
//$format_title->setAlign('merge');
$worksheet->write(0,0,"(Command)"); // a:Add - u:Update - d:Delete
$worksheet->write(0,1,"(Key)"); // Gleich wie LogAswNumber
$worksheet->write(0,2,"(Name)");
$worksheet->write(0,3,"(FirstName)");
$worksheet->write(0,4,"(Group)"); // Muss auf Anlage vorhanden sein Studenten: StudiengangskennzahlLang Mitarbeiter: Verwaltung/General
$worksheet->write(0,5,"(LogAswNumber)"); // Betriebsmittel: LogNummer
$worksheet->write(0,6,"(PhysAswNumber)"); // Betriebsmittel: Nummer
$worksheet->write(0,7,"(ValidStart)"); // aktuell
$worksheet->write(0,8,"(ValidEnd)"); // +5 Jahre
$worksheet->write(0,9,"(UID)"); //Text1:
$worksheet->write(0,10,"(Matrikelnummer)"); //Text2: Wichtig bei Studenten
$worksheet->write(0,11,"(Text3)"); //Text3: Nicht verwenden
$worksheet->write(0,12,"(Text4)"); //Text4: Nicht verwenden
$worksheet->write(0,13,"(Text5)"); //Text5:
$worksheet->write(0,14,"(Text6)"); //Text6:
$worksheet->write(0,15,"(PIN)"); // Nicht verwenden
$worksheet->write(0,16,"(CardState)"); // Bei Neuen immer auf 0
$worksheet =& $workbook->addWorksheet("SiPassZutrittskartenUpdate");
// set width of columns
$worksheet->setColumn(0,0,2); // erste Spalte auf width=2
$worksheet->setColumn(1,1,5); // zweite Spalten auf width=5
//$worksheet->setColumn(0,0,22);
$worksheet->setColumn(0,0,2); // erste Spalte auf width=2
$worksheet->setColumn(0,1,8); // zweite Spalte auf width=8
$worksheet->setColumn(0,2,20);
$worksheet->setColumn(0,3,20);
$worksheet->setColumn(0,4,12);
$worksheet->setColumn(0,5,10);
$worksheet->setColumn(0,6,10);
$z=1; // Start bei Zeile 1
// Neue Zutrittskarten
while ($row=pg_fetch_object($result_neu))
$z=0; // Start bei Zeile 0
for($j=0;$j<$i;$j++)
{
$command='a';
$gruppe=$row->stg_kurzbz;
if ($gruppe=='')
$gruppe='Verwaltung';
$worksheet->write($z,0, $command);
$worksheet->write($z,1, $key_nummer); //$row->nummerintern);
$worksheet->write($z,2, $row->nachname);
$worksheet->write($z,3, $row->vorname);
$worksheet->write($z,4, $gruppe);
$worksheet->write($z,5, $key_nummer++); //$row->nummerintern);
$worksheet->write($z,6, $row->nummer);
$worksheet->write($z,7, $row->tag.'.'.$row->monat.'.'.$row->jahr);
$worksheet->write($z,8, $row->tag.'.'.$row->monat.'.'.($row->jahr+5));
$worksheet->write($z,9, $row->uid);
$worksheet->write($z,10,$row->matrikelnr);
$worksheet->write($z,11,'');
$worksheet->write($z,12,'');
$worksheet->write($z,13,'');
$worksheet->write($z,14,'');
$worksheet->write($z,15,'');
$worksheet->write($z,16,'0');
$z++;
}
// Updates von Zutrittskarten
while ($row=pg_fetch_object($result_upd))
{
$command='u';
$gruppe=$row->stg_kurzbz;
if ($gruppe=='')
$gruppe='Verwaltung';
$worksheet->write($z,0, $command);
$worksheet->write($z,1, $row->key);
$worksheet->write($z,2, $row->nachname);
$worksheet->write($z,3, $row->vorname);
$worksheet->write($z,4, $gruppe);
$worksheet->write($z,5, $row->key);
$worksheet->write($z,6, $row->nummer);
$worksheet->write($z,7, $row->tag.'.'.$row->monat.'.'.$row->jahr);
$worksheet->write($z,8, $row->tag.'.'.$row->monat.'.'.($row->jahr+5));
$worksheet->write($z,9, $row->uid);
$worksheet->write($z,10,$row->matrikelnr);
$worksheet->write($z,11,'');
$worksheet->write($z,12,$row->text1);
$worksheet->write($z,13,$row->name);
$worksheet->write($z,14,$row->firstname);
$worksheet->write($z,15,$row->pin);
$worksheet->write($z,16,'0');
$z++;
}
// Loeschen von Zutrittskarten
while ($row=pg_fetch_object($result_del))
{
$command='d';
$worksheet->write($z,0, $command);
$worksheet->write($z,1, $row->key);
$worksheet->write($z,2, $row->name);
$worksheet->write($z,3, $row->firstname);
$worksheet->write($z,4, $row->groupe);
$worksheet->write($z,5, $row->logaswnumber);
$worksheet->write($z,6, $row->physaswnumber);
$worksheet->write($z,7, $row->validstart);
$worksheet->write($z,8, $row->validend);
$worksheet->write($z,9, $row->text1);
$worksheet->write($z,10,$row->text2);
$worksheet->write($z,11,$row->text3);
$worksheet->write($z,12,$row->text4);
$worksheet->write($z,13,$row->text5);
$worksheet->write($z,14,$row->text6);
$worksheet->write($z,15,$row->pin);
$worksheet->write($z,16,'0');
$worksheet->write($z,0, $sipass[$j][0]);
$worksheet->write($z,1, $sipass[$j][1]);
$worksheet->write($z,2, $sipass[$j][2]);
$worksheet->write($z,3, $sipass[$j][3]);
$worksheet->write($z,4, $sipass[$j][4]);
$worksheet->write($z,5, $sipass[$j][5]);
$worksheet->write($z,6, $sipass[$j][6]);
$z++;
}