diff --git a/vilesci/stammdaten/imexport/zutrittskarten/generatefromsipass.php b/vilesci/stammdaten/imexport/zutrittskarten/generatefromsipass.php
index 421e2009e..365eb760f 100644
--- a/vilesci/stammdaten/imexport/zutrittskarten/generatefromsipass.php
+++ b/vilesci/stammdaten/imexport/zutrittskarten/generatefromsipass.php
@@ -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().'
'.$sql_query);
+if(!$result=mssql_query($qry,$conn_ext))
+ die(mssql_get_last_message().'
'.$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().'
'.$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().'
'.$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().'
'.$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++;
}