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++; }