tbl_student changes for vilesci/personen

This commit is contained in:
Andreas Moik
2016-05-13 12:02:00 +02:00
parent 6e97ba92aa
commit 1aa2756ea8
7 changed files with 90 additions and 58 deletions
+25 -2
View File
@@ -16,11 +16,13 @@
* 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> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
* Rudolf Hangl <rudolf.hangl@technikum-wien.at> and
* Andreas Moik <moik@technikum-wien.at>.
*/
require_once(dirname(__FILE__).'/person.class.php');
require_once(dirname(__FILE__).'/log.class.php');
require_once(dirname(__FILE__).'/studiensemester.class.php');
class prestudent extends person
{
@@ -1801,4 +1803,25 @@ class prestudent extends person
return false;
}
}
/**
* Liefert den studentlehrverband des Prestudenten im aktuellen oder nächsten Semester
* @return Objekt mit gruppe, verband und semester
*/
public function getStudentLehrverband()
{
$studiensemester = new studiensemester();
$studiensemester_kurzbz = $studiensemester->getaktorNext();
$qry_sem = "SELECT gruppe, verband, semester from tbl_studentlehrverband WHERE studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." AND prestudent_id=".$this->db_add_param($this->prestudent_id, FHC_INTEGER);
if(!$res_sem = $this->db_query($qry_sem))
$this->errormsg = 'Fehler beim Laden der Daten';
if($this->db_num_rows($res_sem) == 1)
{
$row_sem = $this->db_fetch_object($res_sem);
return $row_sem;
}
return false;
}
}
@@ -526,13 +526,13 @@ function generateMatrikelnummer($studiengang_kz, $studiensemester_kurzbz)
$matrikelnummer = sprintf("%02d",$jahr).$art.sprintf("%04d",$studiengang_kz);
$qry = "SELECT matrikelnr FROM public.tbl_student WHERE matrikelnr LIKE '$matrikelnummer%' ORDER BY matrikelnr DESC LIMIT 1";
$qry = "SELECT perskz FROM public.tbl_prestudent WHERE perskz LIKE '$matrikelnummer%' ORDER BY perskz DESC LIMIT 1";
if($db->db_query($qry))
{
if($row = $db->db_fetch_object())
{
$max = mb_substr($row->matrikelnr,7);
$max = mb_substr($row->perskz,7);
}
else
$max = 0;
+13 -13
View File
@@ -293,7 +293,7 @@ if($method!='')
$error=true;
$errormsg = $prestudent->errormsg;
}
if(!$error)
{
//Prestudent Rolle Anlegen
@@ -322,15 +322,15 @@ if($method!='')
if(!$error)
{
//Matrikelnummer und UID generieren
$matrikelnr = generateMatrikelnummer($studiengang_kz, $studiensemester_kurzbz);
$perskz = generatePerskz($studiengang_kz, $studiensemester_kurzbz);
$jahr = mb_substr($matrikelnr,0, 2);
$stg = mb_substr($matrikelnr, 3, 4);
$jahr = mb_substr($perskz,0, 2);
$stg = mb_substr($perskz, 3, 4);
$stg_obj = new studiengang();
$stg_obj->load(ltrim($stg,'0'));
$uid = generateUID($stg_obj->kurzbz,$jahr, $stg_obj->typ, $matrikelnr);
$uid = generateUID($stg_obj->kurzbz,$jahr, $stg_obj->typ, $perskz);
//Benutzerdatensatz anlegen
$benutzer = new benutzer();
@@ -364,7 +364,7 @@ if($method!='')
//Studentendatensatz anlegen
$student = new student();
$student->uid = $uid;
$student->matrikelnr = $matrikelnr;
$student->perskz = $perskz;
$student->prestudent_id = $prestudent->prestudent_id;
$student->studiengang_kz = $studiengang_kz;
$student->semester = '0';
@@ -1113,15 +1113,15 @@ function print_lehrveranstaltungen()
// ****
// * Generiert die Matrikelnummer
// * Generiert die Personenkennzeichen
// * FORMAT: 0710254001
// * 07 = Jahr
// * 1/2/0 = WS/SS/incoming
// * 0254 = Studiengangskennzahl vierstellig
// * 001 = Laufende Nummer
// ****
function generateMatrikelnummer($studiengang_kz, $studiensemester_kurzbz)
{
function generatePerskz($studiengang_kz, $studiensemester_kurzbz)
{
$db = new basis_db();
$jahr = mb_substr($studiensemester_kurzbz, 4);
@@ -1130,21 +1130,21 @@ function generateMatrikelnummer($studiengang_kz, $studiensemester_kurzbz)
$jahr = $jahr-1;
$art =0;
$matrikelnummer = sprintf("%02d",$jahr).$art.sprintf("%04d",$studiengang_kz);
$perskz = sprintf("%02d",$jahr).$art.sprintf("%04d",$studiengang_kz);
$qry = "SELECT matrikelnr FROM public.tbl_student WHERE matrikelnr LIKE '".$db->db_escape($matrikelnummer)."%' ORDER BY matrikelnr DESC LIMIT 1";
$qry = "SELECT perskz FROM public.tbl_prestudent WHERE perskz LIKE '".$db->db_escape($perskz)."%' ORDER BY perskz DESC LIMIT 1";
if($db->db_query($qry))
{
if($row = $db->db_fetch_object())
{
$max = mb_substr($row->matrikelnr,7);
$max = mb_substr($row->perskz,7);
}
else
$max = 0;
$max += 1;
return $matrikelnummer.sprintf("%03d",$max);
return $perskz.sprintf("%03d",$max);
}
else
{
@@ -302,4 +302,4 @@ if($method=="lehrveranstaltungen")
}
?>
</body>
</html>
</html>
+21 -25
View File
@@ -15,10 +15,11 @@
* 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 >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
* Authors: Christian Paminger < christian.paminger@technikum-wien.at >,
* Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >,
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >,
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > and
* Andreas moik < moik@technikum-wien.at >.
*/
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/functions.inc.php');
@@ -33,6 +34,7 @@ require_once('../../include/adresse.class.php');
require_once('../../include/nation.class.php');
require_once('../../include/firma.class.php');
require_once('../../include/preincoming.class.php');
require_once('../../include/studiensemester.class.php');
$user = get_uid();
@@ -270,32 +272,26 @@ if(count($prestudent->result)>0)
</thead><tbody>';
foreach ($prestudent->result as $row)
{
$uid='';
$gruppe='';
$pst = new prestudent($row->prestudent_id);
$uid = $pst->uid;
if($vrb = $pst->getStudentLehrverband())
$gruppe = $vrb->semester.$vrb->verband.$vrb->gruppe;
echo '<tr>';
echo "<td>$row->prestudent_id</td>";
echo "<td>".$studiengang->kuerzel_arr[$row->studiengang_kz]."</td>";
echo "<td>".($row->reihungstestangetreten?'Ja':'Nein')."</td>";
$uid='';
$gruppe='';
$qry ="SELECT * FROM public.tbl_student WHERE prestudent_id='$row->prestudent_id'";
if($result = $db->db_query($qry))
{
if($db->db_num_rows($result)>1)
{
$uid='ACHTUNG: Es gibt mehrere Studenteneinträge die auf diesen Prestudenten zeigen!';
}
else
{
if($row_std = $db->db_fetch_object($result))
{
$uid = $row_std->student_uid;
$gruppe = $row_std->semester.$row_std->verband.$row_std->gruppe;
}
}
}
echo "<td>$uid</td>";
echo "<td>$gruppe</td>";
$prestudent1 = new prestudent();
$prestudent1->getLastStatus($row->prestudent_id);
$prestudent1->getLastStatus($row->prestudent_id);
echo "<td>$prestudent1->status_kurzbz ".($prestudent1->ausbildungssemester!=''?"($prestudent1->ausbildungssemester. Semester)":'')."</td>";
echo '</tr>';
}
@@ -307,7 +303,7 @@ if($result = $db->db_query($qry))
{
if($db->db_num_rows($result)>0)
{
echo '<br><h2>Mitarbeiter</h2>';
echo '<br><h2>Mitarbeiter</h2>';
echo '<table class="liste table-autosort:0 table-stripeclass:alternate table-autostripe">
<thead>
<tr>
@@ -333,4 +329,4 @@ if($result = $db->db_query($qry))
}
echo '</body>';
echo '</html>';
?>
?>
+19 -6
View File
@@ -18,7 +18,8 @@
* Authors: Christian Paminger < christian.paminger@technikum-wien.at >
* Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > and
* Andreas Moik <moik@technikum-wien.at>.
*/
require_once('../../config/vilesci.config.inc.php');
@@ -32,6 +33,7 @@ require_once('../../include/prestudent.class.php');
require_once('../../include/datum.class.php');
require_once('../../include/authentication.class.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/studiensemester.class.php');
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
@@ -188,9 +190,9 @@ if($searchstr!='')
}
$qry = "SELECT *, tbl_benutzer.updateamum as bnupdateamum, tbl_benutzer.updatevon as bnupdatevon,
tbl_student.updateamum as supdateamum, tbl_student.updatevon as supdatevon
FROM public.tbl_student JOIN public.tbl_benutzer ON(student_uid=uid)
WHERE person_id=".$db->db_add_param($row->person_id, FHC_INTEGER);
tbl_prestudent.updateamum as supdateamum, tbl_prestudent.updatevon as supdatevon
FROM public.tbl_prestudent JOIN public.tbl_benutzer USING(uid)
WHERE tbl_benutzer.person_id=".$db->db_add_param($row->person_id, FHC_INTEGER);
if($result_student = $db->db_query($qry))
{
if($db->db_num_rows($result_student))
@@ -198,9 +200,20 @@ if($searchstr!='')
while($row_student = $db->db_fetch_object($result_student))
{
$student = new prestudent();
$stsem = new studiensemester();
$stsem_kurzbz = $stsem->getaktorNext();
$qry_sem = "SELECT gruppe, verband, semester from tbl_studentlehrverband WHERE studiensemester_kurzbz=".$db->db_add_param($stsem_kurzbz);
if(!$res_sem = $db->db_query($qry_sem))
die("Fehler beim holen des Lehrverbandes");
$gruppe='';
$student = new prestudent();var_dump($row_student->prestudent_id);
$student->getLastStatus($row_student->prestudent_id);
if($vrb = $student->getStudentLehrverband())
$gruppe = $vrb->semester.$vrb->verband.$vrb->gruppe;
$content.= '<tr>';
$content.= '<td></td>';
$content.= '<td></td>';
@@ -225,7 +238,7 @@ if($searchstr!='')
$content.= "<td></td>";
$content.= "<td></td>";
$content.= "<td>".$stg_arr[$row_student->studiengang_kz]."</td>";
$content.= "<td>$row_student->semester$row_student->verband$row_student->gruppe</td>";
$content.= "<td>$gruppe</td>";
$content.= "<td>".($row_student->supdateamum!=''?date('d.m.Y H:i:s', $datum_obj->mktime_fromtimestamp($row_student->supdateamum)):'')."</td>";
$content.= "<td>$row_student->supdatevon</td>";
$content.= '</tr>';
@@ -50,26 +50,26 @@ else
// 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,
max(tbl_benutzer.uid) AS uid, max(perskz) AS perskz, 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)
LEFT OUTER JOIN (public.tbl_benutzer JOIN public.tbl_prestudent USING(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,
$sql_query="SELECT svnr,vorname,nachname,nummerintern,nummer, uid, perskz, kurzbzlang AS stg_kurzbzlang,
upper(typ)||upper(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_student JOIN public.tbl_studiengang USING (studiengang_kz)) ON (uid=student_uid)
LEFT OUTER JOIN (public.tbl_prestudent JOIN public.tbl_studiengang USING (studiengang_kz)) USING(uid)
WHERE betriebsmitteltyp='Zutrittskarte' AND benutzer_aktiv AND retouram IS NULL
AND nummer NOT IN (SELECT physaswnumber FROM sync.tbl_zutrittskarte);";
//echo $sql_query;
@@ -77,13 +77,13 @@ if(!$result_neu=$db->db_query($sql_query))
die($db->db_last_error().'<BR>'.$sql_query);
// Updates von Zutrittskarten
$sql_query="SELECT svnr,vorname,nachname,nummerintern,nummer,firstname,name,key, uid, matrikelnr,
$sql_query="SELECT svnr,vorname,nachname,nummerintern,nummer,firstname,name,key, uid, perskz,
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)
LEFT OUTER JOIN (public.tbl_prestudent JOIN public.tbl_studiengang USING (studiengang_kz)) USING(uid)
JOIN sync.tbl_zutrittskarte ON (physaswnumber=nummer)
WHERE benutzer_aktiv AND retouram IS NULL
AND (trim(vw_betriebsmittelperson.nachname)!=trim(tbl_zutrittskarte.name)
@@ -168,7 +168,7 @@ while ($row=$db->db_fetch_object($result_neu))
$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,10,$row->perskz);
$worksheet->write($z,11,'');
$worksheet->write($z,12,'');
$worksheet->write($z,13,'');
@@ -195,7 +195,7 @@ while ($row=$db->db_fetch_object($result_upd))
$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,10,$row->perskz);
$worksheet->write($z,11,'');
$worksheet->write($z,12,$row->text1);
$worksheet->write($z,13,$row->name);
@@ -230,4 +230,4 @@ while ($row=$db->db_fetch_object($result_del))
}
$workbook->close();
?>
?>