Files
FHC-Core/include/prestudent.class.php
T
2016-03-07 12:18:38 +01:00

1782 lines
61 KiB
PHP

<?php
/* Copyright (C) 2007 fhcomplete.org
*
* 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> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
require_once(dirname(__FILE__).'/person.class.php');
class prestudent extends person
{
//Tabellenspalten
public $prestudent_id; // varchar(16)
public $aufmerksamdurch_kurzbz;
public $studiengang_kz;
public $berufstaetigkeit_code;
public $ausbildungcode;
public $zgv_code;
public $zgvort;
public $zgvdatum;
public $zgvnation;
public $zgvmas_code;
public $zgvmaort;
public $zgvmadatum;
public $zgvmanation;
public $ausstellungsstaat;
public $aufnahmeschluessel;
public $facheinschlberuf;
public $anmeldungreihungstest;
public $reihungstestangetreten;
public $reihungstest_id;
public $punkte; //rt_gesamtpunkte
public $rt_punkte1;
public $rt_punkte2;
public $rt_punkte3 = 0;
public $bismelden = true;
public $anmerkung;
public $anmerkung_status;
public $mentor;
public $ext_id_prestudent;
public $dual = false;
public $zgvdoktor_code;
public $zgvdoktorort;
public $zgvdoktordatum;
public $zgvdoktornation;
public $status_kurzbz;
public $studiensemester_kurzbz;
public $ausbildungssemester;
public $datum;
public $insertamum;
public $insertvon;
public $updateamum;
public $updatevon;
public $orgform_kurzbz;
public $studienplan_id;
public $studienplan_bezeichnung;
public $bestaetigtam;
public $bestaetigtvon;
public $bewerbung_abgeschicktamum;
public $studiensemester_old = '';
public $ausbildungssemester_old = '';
// ErgebnisArray
public $result = array();
public $num_rows = 0;
/**
* Konstruktor - Uebergibt die Connection und laedt optional einen Prestudent
* @param $prestudent_id Prestudent der geladen werden soll (default=null)
*/
public function __construct($prestudent_id=null)
{
parent::__construct();
if($prestudent_id != null)
$this->load($prestudent_id);
}
/**
* Laedt Prestudent mit der uebergebenen ID
* @param $prestudent_id ID des Prestudenten der geladen werden soll
*/
public function load($prestudent_id)
{
if(!is_numeric($prestudent_id))
{
$this->errormsg = 'ID ist ungueltig';
return false;
}
$qry = 'SELECT * '
. 'FROM public.tbl_prestudent '
. 'WHERE prestudent_id = '.$this->db_add_param($prestudent_id, FHC_INTEGER);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->prestudent_id = $row->prestudent_id;
$this->aufmerksamdurch_kurzbz = $row->aufmerksamdurch_kurzbz;
$this->studiengang_kz = $row->studiengang_kz;
$this->berufstaetigkeit_code = $row->berufstaetigkeit_code;
$this->ausbildungcode = $row->ausbildungcode;
$this->zgv_code = $row->zgv_code;
$this->zgvort = $row->zgvort;
$this->zgvdatum = $row->zgvdatum;
$this->zgvnation = $row->zgvnation;
$this->zgvmas_code = $row->zgvmas_code;
$this->zgvmaort = $row->zgvmaort;
$this->zgvmadatum = $row->zgvmadatum;
$this->zgvmanation = $row->zgvmanation;
$this->aufnahmeschluessel = $row->aufnahmeschluessel;
$this->facheinschlberuf = $this->db_parse_bool($row->facheinschlberuf);
$this->anmeldungreihungstest = $row->anmeldungreihungstest;
$this->reihungstestangetreten = $this->db_parse_bool($row->reihungstestangetreten);
$this->reihungstest_id = $row->reihungstest_id;
$this->punkte = $row->rt_gesamtpunkte;
$this->rt_punkte1 = $row->rt_punkte1;
$this->rt_punkte2 = $row->rt_punkte2;
$this->rt_punkte3 = $row->rt_punkte3;
$this->bismelden = $this->db_parse_bool($row->bismelden);
$this->person_id = $row->person_id;
$this->anmerkung = $row->anmerkung;
$this->mentor = $row->mentor;
$this->ext_id_prestudent = $row->ext_id;
$this->dual = $this->db_parse_bool($row->dual);
$this->ausstellungsstaat = $row->ausstellungsstaat;
$this->zgvdoktor_code = $row->zgvdoktor_code;
$this->zgvdoktorort = $row->zgvdoktorort;
$this->zgvdoktordatum = $row->zgvdoktordatum;
$this->zgvdoktornation = $row->zgvdoktornation;
if(!person::load($row->person_id))
return false;
else
return true;
}
else
{
$this->errormsg = "Kein Prestudent Eintrag gefunden";
return false;
}
}
else
{
$this->errormsg = "Fehler beim Laden des Prestudenten";
return false;
}
}
/**
* Prueft die Variablen vor dem Speichern
* auf Gueltigkeit.
* @return true wenn ok, false im Fehlerfall
*/
protected function validate()
{
if($this->punkte>9999.9999)
{
$this->errormsg = 'Reihungstestgesamtpunkte darf nicht groesser als 9999.9999 sein';
return false;
}
if($this->rt_punkte1>9999.9999)
{
$this->errormsg = 'Reihungstestpunkte1 darf nicht groesser als 9999.9999 sein';
return false;
}
if($this->rt_punkte2>9999.9999)
{
$this->errormsg = 'Reihungstestpunkte2 darf nicht groesser als 9999.9999 sein';
return false;
}
if($this->rt_punkte3>9999.9999)
{
$this->errormsg = 'Reihungstestpunkte3 darf nicht groesser als 9999.9999 sein';
return false;
}
return true;
}
/**
* Speichert die Benutzerdaten in die Datenbank
* Wenn $new auf true gesetzt ist wird ein neuer Datensatz angelegt
* ansonsten der Datensatz mit $uid upgedated
* @return true wenn erfolgreich, false im Fehlerfall
*/
public function save()
{
//Personen Datensatz speichern
//if(!person::save())
// return false;
$this->checkAusstellungsstaat();
//Variablen auf Gueltigkeit pruefen
if(!prestudent::validate())
return false;
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
{
$qry = 'BEGIN;INSERT INTO public.tbl_prestudent (aufmerksamdurch_kurzbz, person_id,
studiengang_kz, berufstaetigkeit_code, ausbildungcode, zgv_code, zgvort, zgvdatum, zgvnation,
zgvmas_code, zgvmaort, zgvmadatum, zgvmanation, aufnahmeschluessel, facheinschlberuf,
reihungstest_id, anmeldungreihungstest, reihungstestangetreten, rt_gesamtpunkte,
rt_punkte1, rt_punkte2, rt_punkte3, bismelden, insertamum, insertvon,
updateamum, updatevon, anmerkung, dual, ausstellungsstaat, mentor) VALUES('.
$this->db_add_param($this->aufmerksamdurch_kurzbz).",".
$this->db_add_param($this->person_id).",".
$this->db_add_param($this->studiengang_kz).",".
$this->db_add_param($this->berufstaetigkeit_code).",".
$this->db_add_param($this->ausbildungcode).",".
$this->db_add_param($this->zgv_code).",".
$this->db_add_param($this->zgvort).",".
$this->db_add_param($this->zgvdatum).",".
$this->db_add_param($this->zgvnation).",".
$this->db_add_param($this->zgvmas_code).",".
$this->db_add_param($this->zgvmaort).",".
$this->db_add_param($this->zgvmadatum).",".
$this->db_add_param($this->zgvmanation).",".
$this->db_add_param($this->aufnahmeschluessel).",".
$this->db_add_param($this->facheinschlberuf, FHC_BOOLEAN).",".
$this->db_add_param($this->reihungstest_id).",".
$this->db_add_param($this->anmeldungreihungstest).",".
$this->db_add_param($this->reihungstestangetreten, FHC_BOOLEAN).",".
$this->db_add_param($this->punkte).",".
$this->db_add_param($this->rt_punkte1).",".
$this->db_add_param($this->rt_punkte2).",".
$this->db_add_param($this->rt_punkte3).",".
$this->db_add_param($this->bismelden, FHC_BOOLEAN).",".
$this->db_add_param($this->insertamum).",".
$this->db_add_param($this->insertvon).",".
$this->db_add_param($this->updateamum).",".
$this->db_add_param($this->updatevon).",".
$this->db_add_param($this->anmerkung).",".
$this->db_add_param($this->dual, FHC_BOOLEAN).",".
$this->db_add_param($this->ausstellungsstaat).",".
$this->db_add_param($this->mentor).");";
}
else
{
$qry = 'UPDATE public.tbl_prestudent SET'.
' aufmerksamdurch_kurzbz='.$this->db_add_param($this->aufmerksamdurch_kurzbz).",".
' person_id='.$this->db_add_param($this->person_id).",".
' studiengang_kz='.$this->db_add_param($this->studiengang_kz).",".
' berufstaetigkeit_code='.$this->db_add_param($this->berufstaetigkeit_code).",".
' ausbildungcode='.$this->db_add_param($this->ausbildungcode).",".
' zgv_code='.$this->db_add_param($this->zgv_code).",".
' zgvort='.$this->db_add_param($this->zgvort).",".
' zgvdatum='.$this->db_add_param($this->zgvdatum).",".
' zgvnation='.$this->db_add_param($this->zgvnation).",".
' zgvmas_code='.$this->db_add_param($this->zgvmas_code).",".
' zgvmaort='.$this->db_add_param($this->zgvmaort).",".
' zgvmadatum='.$this->db_add_param($this->zgvmadatum).",".
' zgvmanation='.$this->db_add_param($this->zgvmanation).",".
' aufnahmeschluessel='.$this->db_add_param($this->aufnahmeschluessel).",".
' facheinschlberuf='.$this->db_add_param($this->facheinschlberuf, FHC_BOOLEAN).",".
' reihungstest_id='.$this->db_add_param($this->reihungstest_id).",".
' anmeldungreihungstest='.$this->db_add_param($this->anmeldungreihungstest).",".
' reihungstestangetreten='.$this->db_add_param($this->reihungstestangetreten, FHC_BOOLEAN).",".
' rt_gesamtpunkte='.$this->db_add_param($this->punkte).",".
' rt_punkte1='.$this->db_add_param($this->rt_punkte1).",".
' rt_punkte2='.$this->db_add_param($this->rt_punkte2).",".
' rt_punkte3='.$this->db_add_param($this->rt_punkte3).",".
' bismelden='.$this->db_add_param($this->bismelden, FHC_BOOLEAN).",".
' updateamum='.$this->db_add_param($this->updateamum).",".
' updatevon='.$this->db_add_param($this->updatevon).",".
' anmerkung='.$this->db_add_param($this->anmerkung).",".
' mentor='.$this->db_add_param($this->mentor).",".
' dual='.$this->db_add_param($this->dual, FHC_BOOLEAN).",".
' ausstellungsstaat='.$this->db_add_param($this->ausstellungsstaat).
" WHERE prestudent_id=".$this->db_add_param($this->prestudent_id).";";
}
if($this->db_query($qry))
{
if($this->new)
{
$qry = "SELECT currval('public.tbl_prestudent_prestudent_id_seq') as id;";
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->prestudent_id = $row->id;
$this->db_query('COMMIT;');
return true;
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Sequence';
$this->db_query('ROLLBACK;');
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Sequence';
$this->db_query('ROLLBACK;');
return false;
}
}
//Log schreiben
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern des Prestudent-Datensatzes';
return false;
}
}
/**
* Falls ZGV vorhanden, setze Ausstellungsstaat (für BIS-Meldung)
* auf Nation der höchsten angegebenen ZGV
*/
private function checkAusstellungsstaat()
{
if ($this->zgvmas_code && $this->zgvmanation) {
$this->ausstellungsstaat = $this->zgvmanation;
} elseif ($this->zgv_code && $this->zgvnation) {
$this->ausstellungsstaat = $this->zgvnation;
}
}
/**
* Laden aller Prestudenten, die an $datum zum Reihungstest geladen sind.
* Wenn $equal auf true gesetzt ist wird genau dieses Datum verwendet,
* ansonsten werden auch alle mit späterem Datum geladen. ---> von kindlm am 30.03.2012 geändert
* da zukünftige Teilnehmer nicht mehr angezeigt werden sollen.
* @return true wenn erfolgreich, false im Fehlerfall
*/
public function getPrestudentRT($datum, $equal=false)
{
$sql_query='SELECT DISTINCT * FROM public.vw_prestudent WHERE rt_datum';
if ($equal)
$sql_query.='=';
else
$sql_query.='=';
$sql_query.="'$datum' ORDER BY nachname,vorname";
if(!$this->db_query($sql_query))
{
$this->errormsg = 'Fehler beim Speichern des Benutzer-Datensatzes:'.$sql_query;
return false;
}
$this->num_rows=0;
while($row = $this->db_fetch_object())
{
$ps=new prestudent();
$ps->prestudent_id = $row->prestudent_id;
$ps->person_id = $row->person_id;
$ps->reihungstest_id = $row->reihungstest_id;
$ps->staatsbuergerschaft = $row->staatsbuergerschaft;
$ps->geburtsnation = $row->geburtsnation;
$ps->sprache = $row->sprache;
$ps->anrede = $row->anrede;
$ps->titelpost = $row->titelpost;
$ps->titelpre = $row->titelpre;
$ps->nachname = $row->nachname;
$ps->vorname = $row->vorname;
$ps->vornamen = $row->vornamen;
$ps->gebdatum = $row->gebdatum;
$ps->gebort = $row->gebort;
$ps->gebzeit = $row->gebzeit;
// $ps->foto = $row->foto;
$ps->anmerkungen = $row->anmerkungen;
$ps->homepage = $row->homepage;
$ps->svnr = $row->svnr;
$ps->ersatzkennzeichen = $row->ersatzkennzeichen;
$ps->familienstand = $row->familienstand;
$ps->geschlecht = $row->geschlecht;
$ps->anzahlkinder = $row->anzahlkinder;
$ps->aktiv = $this->db_parse_bool($row->aktiv);
$ps->aufmerksamdurch_kurzbz = $row->aufmerksamdurch_kurzbz;
$ps->studiengang_kz = $row->studiengang_kz;
$ps->berufstaetigkeit_code = $row->berufstaetigkeit_code;
$ps->ausbildungcode = $row->ausbildungcode;
$ps->zgv_code = $row->zgv_code;
$ps->zgvort = $row->zgvort;
$ps->zgvdatum = $row->zgvdatum;
//$ps->zgvnation = $row->zgvnation;
$ps->zgvmas_code = $row->zgvmas_code;
$ps->zgvmaort = $row->zgvmaort;
$ps->zgvmadatum = $row->zgvmadatum;
//$ps->zgvmanation = $row->zgvmanation;
$ps->aufnahmeschluessel = $row->aufnahmeschluessel;
$ps->facheinschlberuf = $this->db_parse_bool($row->facheinschlberuf);
$ps->anmeldungreihungstest = $row->anmeldungreihungstest;
$ps->reihungstestangetreten = $this->db_parse_bool($row->reihungstestangetreten);
$ps->punkte = $row->punkte;
$ps->rt_punkte1 = $row->rt_punkte1;
$ps->rt_punkte2 = $row->rt_punkte2;
$ps->bismelden = $this->db_parse_bool($row->bismelden);
$ps->rt_studiengang_kz = $row->rt_studiengang_kz;
$ps->rt_ort = $row->rt_ort;
$ps->rt_datum = $row->rt_datum;
$ps->rt_uhrzeit = $row->rt_uhrzeit;
$ps->updateamum = $row->updateamum;
$ps->updatevon = $row->updatevon;
$ps->insertamum = $row->insertamum;
$ps->insertvon = $row->insertvon;
//$ps->ext_id_prestudent = $row->ext_id_prestudent;
$this->result[]=$ps;
$this->num_rows++;
}
return true;
}
/**
* Laedt die Rolle(n) eines Prestudenten
*/
public function getPrestudentRolle($prestudent_id, $status_kurzbz=null, $studiensemester_kurzbz=null, $order="datum, insertamum", $ausbildungssemester=null)
{
if(!is_numeric($prestudent_id))
{
$this->errormsg = 'Prestudent_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT
tbl_prestudentstatus.*, tbl_studienplan.bezeichnung as studienplan_bezeichnung
FROM public.tbl_prestudentstatus
LEFT JOIN lehre.tbl_studienplan USING(studienplan_id)
WHERE
prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER);
if($status_kurzbz!=null)
$qry.= " AND status_kurzbz=".$this->db_add_param($status_kurzbz);
if($studiensemester_kurzbz!=null)
$qry.= " AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
if($ausbildungssemester!=null)
$qry.= " AND ausbildungssemester=".$this->db_add_param($ausbildungssemester);
if($order!='')
$qry.=" ORDER BY ".$order;
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$rolle = new prestudent();
$rolle->prestudent_id = $row->prestudent_id;
$rolle->status_kurzbz = $row->status_kurzbz;
$rolle->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$rolle->ausbildungssemester = $row->ausbildungssemester;
$rolle->datum = $row->datum;
$rolle->insertamum = $row->insertamum;
$rolle->insertvon = $row->insertvon;
$rolle->updateamum = $row->updateamum;
$rolle->updatevon = $row->updatevon;
$rolle->orgform_kurzbz = $row->orgform_kurzbz;
$rolle->studienplan_id = $row->studienplan_id;
$rolle->studienplan_bezeichnung = $row->studienplan_bezeichnung;
$rolle->bestaetigtam = $row->bestaetigtam;
$rolle->bestaetigtvon = $row->bestaetigtvon;
$rolle->anmerkung_status = $row->anmerkung;
$rolle->bewerbung_abgeschicktamum = $row->bewerbung_abgeschicktamum;
$this->result[] = $rolle;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der PrestudentDaten';
return false;
}
}
/**
* Laedt die Rolle
*
* @param $prestudent_id
* @param $status_kurzbz
* @param $studiensemester_kurzbz
* @param $ausbildungssemester
* @return boolean
*/
public function load_rolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester)
{
if(!is_numeric($prestudent_id) || $prestudent_id=='')
{
$this->errormsg = 'Prestudent_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM public.tbl_prestudentstatus WHERE prestudent_id=".$this->db_add_param($prestudent_id).
" AND status_kurzbz=".$this->db_add_param($status_kurzbz).
" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).
" AND ausbildungssemester=".$this->db_add_param($ausbildungssemester);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->prestudent_id = $row->prestudent_id;
$this->status_kurzbz = $row->status_kurzbz;
$this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$this->ausbildungssemester = $row->ausbildungssemester;
$this->datum = $row->datum;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->ext_id_prestudent = $row->ext_id;
$this->orgform_kurzbz = $row->orgform_kurzbz;
$this->studienplan_id = $row->studienplan_id;
$this->bestaetigtam = $row->bestaetigtam;
$this->bestaetigtvon = $row->bestaetigtvon;
$this->anmerkung_status = $row->anmerkung;
$this->bewerbung_abgeschicktamum = $row->bewerbung_abgeschicktamum;
return true;
}
else
{
$this->errormsg = 'Rolle existiert nicht';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der PrestudentDaten';
return false;
}
}
/**
* Laedt die Interessenten und Bewerber fuer ein bestimmtes Studiensemester
* @param $studiensemester_kurzbz Studiensemester fuer das die Int. und Bewerber
* geladen werden sollen
*/
public function loadIntessentenUndBewerber($studiensemester_kurzbz, $studiengang_kz, $semester=null, $typ=null, $orgform=null)
{
$stsemqry='';
if(!is_null($studiensemester_kurzbz) && $studiensemester_kurzbz!='')
$stsemqry=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
$qry = "SELECT
*, a.anmerkung, tbl_person.anmerkung as anmerkungen
FROM
(
SELECT
*, (SELECT status_kurzbz FROM tbl_prestudentstatus
WHERE prestudent_id=prestudent.prestudent_id $stsemqry
ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) AS rolle
FROM tbl_prestudent prestudent ORDER BY prestudent_id
) a, tbl_prestudentstatus, tbl_person
WHERE a.rolle=tbl_prestudentstatus.status_kurzbz AND
a.person_id=tbl_person.person_id AND
a.prestudent_id = tbl_prestudentstatus.prestudent_id AND
a.studiengang_kz=".$this->db_add_param($studiengang_kz);
if(!is_null($studiensemester_kurzbz) && $studiensemester_kurzbz!='')
$qry.=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
if($semester!=null)
$qry.=" AND ausbildungssemester=".$this->db_add_param($semester);
if($orgform!=null && $orgform!='')
$qry.=" AND tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform);
switch ($typ)
{
case "interessenten":
$qry.=" AND a.rolle='Interessent'";
break;
case "bewerbungnichtabgeschickt":
$qry.=" AND a.rolle='Interessent' AND bewerbung_abgeschicktamum is null";
break;
case "bewerbungabgeschickt":
$qry.=" AND a.rolle='Interessent' AND bewerbung_abgeschicktamum is not null AND bestaetigtam is null";
break;
case "statusbestaetigt":
$qry.=" AND a.rolle='Interessent' AND bestaetigtam is not null";
break;
case "zgv":
$stg_obj = new studiengang();
$stg_obj->load($studiengang_kz);
if($stg_obj->typ=='m')
$qry.=" AND a.rolle='Interessent' AND a.zgvmas_code is not null";
else
$qry.=" AND a.rolle='Interessent' AND a.zgv_code is not null";
break;
case "reihungstestangemeldet":
$qry.=" AND a.rolle='Interessent' AND a.anmeldungreihungstest is not null";
break;
case "reihungstestnichtangemeldet":
$qry.=" AND a.rolle='Interessent' AND a.anmeldungreihungstest is null";
break;
case "bewerber":
$qry.=" AND a.rolle='Bewerber'";
break;
case "aufgenommen":
$qry.=" AND a.rolle='Aufgenommener'";
break;
case "warteliste":
$qry.=" AND a.rolle='Wartender'";
break;
case "absage":
$qry.=" AND a.rolle='Abgewiesener'";
break;
case "prestudent":
if($studiensemester_kurzbz=='' || is_null($studiensemester_kurzbz))
$qry = "SELECT *, '' as status_kurzbz, '' as studiensemester_kurzbz, '' as ausbildungssemester, '' as datum, tbl_person.anmerkung as anmerkungen, '' as orgform_kurzbz FROM public.tbl_prestudent prestudent, public.tbl_person WHERE NOT EXISTS (select * from tbl_prestudentstatus WHERE prestudent_id=prestudent.prestudent_id) AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER)." AND prestudent.person_id=tbl_person.person_id";
else
$qry .= " AND a.rolle IN('Interessent', 'Bewerber', 'Aufgenommener', 'Wartender', 'Abgewiesener')";
break;
case "absolvent":
$qry.=" AND a.rolle='Absolvent'";
break;
case "diplomand":
$qry.=" AND a.rolle='Diplomand'";
break;
default:
break;
}
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$ps = new prestudent();
$ps->person_id = $row->person_id;
$ps->staatsbuergerschaft = $row->staatsbuergerschaft;
$ps->gebnation = $row->geburtsnation;
$ps->sprache = $row->sprache;
$ps->anrede = $row->anrede;
$ps->titelpost = $row->titelpost;
$ps->titelpre = $row->titelpre;
$ps->nachname = $row->nachname;
$ps->vorname = $row->vorname;
$ps->vornamen = $row->vornamen;
$ps->gebdatum = $row->gebdatum;
$ps->gebort = $row->gebort;
$ps->gebzeit = $row->gebzeit;
//$ps->foto = $row->foto;
$ps->anmerkungen = $row->anmerkungen;
$ps->homepage = $row->homepage;
$ps->svnr = $row->svnr;
$ps->ersatzkennzeichen = $row->ersatzkennzeichen;
$ps->familienstand = $row->familienstand;
$ps->geschlecht = $row->geschlecht;
$ps->anzahlkinder = $row->anzahlkinder;
$ps->aktiv = $this->db_parse_bool($row->aktiv);
$ps->prestudent_id = $row->prestudent_id;
$ps->aufmerksamdurch_kurzbz = $row->aufmerksamdurch_kurzbz;
$ps->studiengang_kz = $row->studiengang_kz;
$ps->berufstaetigkeit_code = $row->berufstaetigkeit_code;
$ps->ausbildungcode = $row->ausbildungcode;
$ps->zgv_code = $row->zgv_code;
$ps->zgvort = $row->zgvort;
$ps->zgvdatum = $row->zgvdatum;
$ps->zgvnation = $row->zgvnation;
$ps->zgvmas_code = $row->zgvmas_code;
$ps->zgvmaort = $row->zgvmaort;
$ps->zgvmadatum = $row->zgvmadatum;
$ps->zgvmanation = $row->zgvmanation;
$ps->ausstellungsstaat = $row->ausstellungsstaat;
$ps->aufnahmeschluessel = $row->aufnahmeschluessel;
$ps->facheinschlberuf = $this->db_parse_bool($row->facheinschlberuf);
$ps->anmeldungreihungstest = $row->anmeldungreihungstest;
$ps->reihungstestangetreten = $this->db_parse_bool($row->reihungstestangetreten);
$ps->reihungstest_id = $row->reihungstest_id;
$ps->punkte = $row->rt_gesamtpunkte;
$ps->rt_punkte1 = $row->rt_punkte1;
$ps->rt_punkte2 = $row->rt_punkte2;
$ps->rt_punkte3 = $row->rt_punkte3;
$ps->bismelden = $this->db_parse_bool($row->bismelden);
$ps->anmerkung = $row->anmerkung;
$ps->dual = $this->db_parse_bool($row->dual);
$ps->status_kurzbz = $row->status_kurzbz;
$ps->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$ps->ausbildungssemester = $row->ausbildungssemester;
$ps->datum = $row->datum;
$ps->orgform_kurzbz = $row->orgform_kurzbz;
$this->result[] = $ps;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Prueft ob eine Person bereits einen PreStudenteintrag
* fuer einen Studiengang besitzt
* @param person_id
* studiengang_kz
* @return true wenn vorhanden
* false wenn nicht vorhanden
* false und errormsg wenn Fehler aufgetreten ist
*/
public function exists($person_id, $studiengang_kz)
{
if(!is_numeric($person_id))
{
$this->errormsg = 'Person_id muss eine gueltige Zahl sein';
return false;
}
if(!is_numeric($studiengang_kz))
{
$this->errormsg = 'Studiengang_kz muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT count(*) as anzahl FROM public.tbl_prestudent
WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER)."
AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
if($row->anzahl>0)
{
$this->errormsg = '';
return true;
}
else
{
$this->errormsg = '';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Speichert den Prestudentstatus
* @return true wenn ok, false im Fehlerfall
*/
public function save_rolle()
{
if($this->new)
{
//pruefen ob die Rolle schon vorhanden ist
if($this->load_rolle($this->prestudent_id, $this->status_kurzbz, $this->studiensemester_kurzbz, $this->ausbildungssemester))
{
$this->errormsg = 'Diese Rolle existiert bereits';
return false;
}
$qry = 'INSERT INTO public.tbl_prestudentstatus (prestudent_id, status_kurzbz,
studiensemester_kurzbz, ausbildungssemester, datum, insertamum, insertvon,
updateamum, updatevon, ext_id, orgform_kurzbz, bestaetigtam, bestaetigtvon, anmerkung,
bewerbung_abgeschicktamum, studienplan_id) VALUES('.
$this->db_add_param($this->prestudent_id).",".
$this->db_add_param($this->status_kurzbz).",".
$this->db_add_param($this->studiensemester_kurzbz).",".
$this->db_add_param($this->ausbildungssemester).",".
$this->db_add_param($this->datum).",".
$this->db_add_param($this->insertamum).",".
$this->db_add_param($this->insertvon).",".
$this->db_add_param($this->updateamum).",".
$this->db_add_param($this->updatevon).",".
$this->db_add_param($this->ext_id_prestudent).",".
$this->db_add_param($this->orgform_kurzbz).",".
$this->db_add_param($this->bestaetigtam).",".
$this->db_add_param($this->bestaetigtvon).",".
$this->db_add_param($this->anmerkung_status).",".
$this->db_add_param($this->bewerbung_abgeschicktamum).",".
$this->db_add_param($this->studienplan_id,FHC_INTEGER).");";
}
else
{
if($this->studiensemester_old=='')
$this->studiensemester_old = $this->studiensemester_kurzbz;
if($this->ausbildungssemester_old=='')
$this->ausbildungssemester_old = $this->ausbildungssemester;
//wenn der PrimaryKey geaendert wird, schauen ob schon ein Eintrag mit diesem Key vorhanden ist
if($this->studiensemester_old!=$this->studiensemester_kurzbz || $this->ausbildungssemester_old!=$this->ausbildungssemester)
{
if($this->load_rolle($this->prestudent_id, $this->status_kurzbz, $this->studiensemester_kurzbz, $this->ausbildungssemester))
{
$this->errormsg = 'Diese Rolle existiert bereits';
return false;
}
}
$qry = 'UPDATE public.tbl_prestudentstatus SET'.
' ausbildungssemester='.$this->db_add_param($this->ausbildungssemester).",".
' studiensemester_kurzbz='.$this->db_add_param($this->studiensemester_kurzbz).",".
' datum='.$this->db_add_param($this->datum).",".
' updateamum='.$this->db_add_param($this->updateamum).",".
' updatevon='.$this->db_add_param($this->updatevon).",".
' bestaetigtam='.$this->db_add_param($this->bestaetigtam).",".
' bestaetigtvon='.$this->db_add_param($this->bestaetigtvon).",".
' bewerbung_abgeschicktamum='.$this->db_add_param($this->bewerbung_abgeschicktamum).",".
' studienplan_id='.$this->db_add_param($this->studienplan_id, FHC_INTEGER).",".
' anmerkung='.$this->db_add_param($this->anmerkung_status).",".
' orgform_kurzbz='.$this->db_add_param($this->orgform_kurzbz).
" WHERE
prestudent_id=".$this->db_add_param($this->prestudent_id, FHC_INTEGER, false)."
AND status_kurzbz=".$this->db_add_param($this->status_kurzbz, FHC_STRING, false)."
AND studiensemester_kurzbz=".$this->db_add_param($this->studiensemester_old, FHC_STRING, false)."
AND ausbildungssemester=".$this->db_add_param($this->ausbildungssemester_old, FHC_STRING, false).";";
}
if($this->db_query($qry))
{
//Log schreiben
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern des Prestudentstatus';
return false;
}
}
/**
* Loescht einen Prestudentstatus
* @param $prestudent_id
* $status_kurzbz
* $studiensemester_kurzbz
* $ausbildungssemester
* @return true wenn ok, false wenn Fehler
*/
public function delete_rolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester)
{
if(!is_numeric($prestudent_id))
{
$this->errormsg = 'Prestudent_id ist ungueltig';
return false;
}
$qry = "DELETE FROM public.tbl_prestudentstatus
WHERE
prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER)."
AND status_kurzbz=".$this->db_add_param($status_kurzbz)."
AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
AND ausbildungssemester=".$this->db_add_param($ausbildungssemester);
if($this->load_rolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester))
{
$this->db_query('BEGIN;');
$log = new log();
$log->executetime = date('Y-m-d H:i:s');
$log->beschreibung = 'Loeschen der Rolle '.$status_kurzbz.' bei '.$prestudent_id;
$log->mitarbeiter_uid = get_uid();
$log->sql = $qry;
$log->sqlundo = 'INSERT INTO public.tbl_prestudentstatus(prestudent_id, status_kurzbz, studiensemester_kurzbz,'
. ' ausbildungssemester, datum, insertamum, insertvon, updateamum, updatevon, ext_id, orgform_kurzbz,'
. ' bestaetigtam, bestaetigtvon, anmerkung, bewerbung_abgeschicktamum, studienplan_id) VALUES('.
$this->db_add_param($this->prestudent_id).','.
$this->db_add_param($this->status_kurzbz).','.
$this->db_add_param($this->studiensemester_kurzbz).','.
$this->db_add_param($this->ausbildungssemester).','.
$this->db_add_param($this->datum).','.
$this->db_add_param($this->insertamum).','.
$this->db_add_param($this->insertvon).','.
$this->db_add_param($this->updateamum).','.
$this->db_add_param($this->updatevon).','.
$this->db_add_param($this->ext_id_prestudent).','.
$this->db_add_param($this->orgform_kurzbz).','.
$this->db_add_param($this->bestaetigtam).','.
$this->db_add_param($this->bestaetigtvon).','.
$this->db_add_param($this->anmerkung_status).','.
$this->db_add_param($this->bewerbung_abgeschicktamum).','.
$this->db_add_param($this->studienplan_id, FHC_INTEGER).');';
if($log->save(true))
{
if($this->db_query($qry))
{
$this->db_query('COMMIT');
return true;
}
else
{
$this->db_query('ROLLBACK');
$this->errormsg = 'Fehler beim Loeschen der Daten';
return false;
}
}
else
{
$this->db_query('ROLLBACK');
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
return false;
}
}
public function bestaetige_rolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester, $user)
{
if(!is_numeric($prestudent_id))
{
$this->errormsg = 'Prestudent_id ist ungueltig';
return false;
}
$qry = 'UPDATE public.tbl_prestudentstatus SET'.
' bestaetigtam='.$this->db_add_param(date('Y-m-d')).','.
' bestaetigtvon='.$this->db_add_param($user)." ".
' WHERE
prestudent_id='.$this->db_add_param($prestudent_id, FHC_INTEGER).'
AND status_kurzbz='.$this->db_add_param($status_kurzbz).'
AND studiensemester_kurzbz='.$this->db_add_param($studiensemester_kurzbz).'
AND ausbildungssemester='.$this->db_add_param($ausbildungssemester);
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg='Fehler beim Speichern der Daten';
return false;
}
}
/**
* Liefert den Letzten Status eines Prestudenten in einem Studiensemester
* Wenn kein Studiensemester angegeben wird, wird der letztgueltige Status ermittelt
* @param $prestudent_id
* @param $studiensemester_kurzbz
* @return boolean
*/
public function getLastStatus($prestudent_id, $studiensemester_kurzbz='', $status_kurzbz = '')
{
if($prestudent_id=='' || !is_numeric($prestudent_id))
{
$this->errormsg = 'Prestudent_id ist ungueltig';
return false;
}
$qry = "SELECT tbl_prestudentstatus.*, bezeichnung AS studienplan_bezeichnung
FROM public.tbl_prestudentstatus LEFT JOIN lehre.tbl_studienplan USING (studienplan_id)
WHERE prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER);
if($studiensemester_kurzbz!='')
$qry.=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
if($status_kurzbz !='')
$qry.= " AND status_kurzbz =".$this->db_add_param($status_kurzbz);
$qry.=" ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1";
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->prestudent_id = $row->prestudent_id;
$this->status_kurzbz = $row->status_kurzbz;
$this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$this->ausbildungssemester = $row->ausbildungssemester;
$this->datum = $row->datum;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->bestaetigtam = $row->bestaetigtam;
$this->bestaetigtvon = $row->bestaetigtvon;
$this->bewerbung_abgeschicktamum = $row->bewerbung_abgeschicktamum;
$this->orgform_kurzbz = $row->orgform_kurzbz;
$this->studienplan_id = $row->studienplan_id;
$this->studienplan_bezeichnung = $row->studienplan_bezeichnung;
return true;
}
else
{
$this->errormsg = 'Keine Rolle vorhanden';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der PrestudentDaten';
return false;
}
}
/**
* Liefert den Ersten Status eines Prestudenten mit der übergebenen Statuskurzbezeichnung
* @param $prestudent_id
* @param $studiensemester_kurzbz
* @return boolean
*/
public function getFirstStatus($prestudent_id, $status_kurzbz)
{
if($prestudent_id=='' || !is_numeric($prestudent_id))
{
$this->errormsg = 'Prestudent_id ist ungueltig';
return false;
}
$qry = "SELECT * FROM public.tbl_prestudentstatus
WHERE
prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER)."
AND status_kurzbz = ".$this->db_add_param($status_kurzbz)."
ORDER BY datum ASC, insertamum ASC, ext_id ASC LIMIT 1";
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->prestudent_id = $row->prestudent_id;
$this->status_kurzbz = $row->status_kurzbz;
$this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$this->ausbildungssemester = $row->ausbildungssemester;
$this->datum = $row->datum;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->bestaetigtam = $row->bestaetigtam;
$this->bestaetigtvon = $row->bestaetigtvon;
$this->bewerbung_abgeschicktamum = $row->bewerbung_abgeschicktamum;
$this->orgform_kurzbz = $row->orgform_kurzbz;
$this->studienplan_id = $row->studienplan_id;
return true;
}
else
{
$this->errormsg = 'Keine Rolle vorhanden';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der PrestudentDaten';
return false;
}
}
/**
* Laedt alle Prestudenten der Person
* @return true wenn ok, false wenn Fehler
*/
public function getPrestudenten($person_id)
{
if(!is_numeric($person_id) || $person_id=='')
{
$this->errormsg='ID ist ungueltig';
return false;
}
$qry = "SELECT * FROM public.tbl_prestudent WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER)." ORDER BY prestudent_id";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new prestudent();
$obj->prestudent_id = $row->prestudent_id;
$obj->aufmerksamdurch_kurzbz = $row->aufmerksamdurch_kurzbz;
$obj->studiengang_kz = $row->studiengang_kz;
$obj->berufstaetigkeit_code = $row->berufstaetigkeit_code;
$obj->ausbildungcode = $row->ausbildungcode;
$obj->zgv_code = $row->zgv_code;
$obj->zgvort = $row->zgvort;
$obj->zgvdatum = $row->zgvdatum;
$obj->zgvnation = $row->zgvnation;
$obj->zgvmas_code = $row->zgvmas_code;
$obj->zgvmaort = $row->zgvmaort;
$obj->zgvmadatum = $row->zgvmadatum;
$obj->zgvmanation = $row->zgvmanation;
$obj->aufnahmeschluessel = $row->aufnahmeschluessel;
$obj->facheinschlberuf = $this->db_parse_bool($row->facheinschlberuf);
$obj->anmeldungreihungstest = $row->anmeldungreihungstest;
$obj->reihungstestangetreten = $this->db_parse_bool($row->reihungstestangetreten);
$obj->reihungstest_id = $row->reihungstest_id;
$obj->punkte = $row->rt_gesamtpunkte;
$obj->rt_punkte1 = $row->rt_punkte1;
$obj->rt_punkte2 = $row->rt_punkte2;
$obj->rt_punkte3 = $row->rt_punkte3;
$obj->bismelden = $this->db_parse_bool($row->bismelden);
$obj->person_id = $row->person_id;
$obj->anmerkung = $row->anmerkung;
$obj->mentor = $row->mentor;
$obj->ext_id_prestudent = $row->ext_id;
$obj->dual = $this->db_parse_bool($row->dual);
$obj->ausstellungsstaat = $row->ausstellungsstaat;
$obj->zgvdoktor_code = $row->zgvdoktor_code;
$obj->zgvdoktorort = $row->zgvdoktorort;
$obj->zgvdoktordatum = $row->zgvdoktordatum;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = "Fehler beim Laden";
return false;
}
}
/**
* Gibt die eingetragenen ZGV zurück
* @return array
*/
public function getZgv()
{
$zgv = array
(
'bachelor' => array(),
'master' => array(),
//'doktor' => array(),
);
$attribute = array
(
'art',
'ort',
'datum',
'nation',
);
$db_attribute = array
(
'zgv_code',
'zgvort',
'zgvdatum',
'zgvnation',
'zgvmas_code',
'zgvmaort',
'zgvmadatum',
'zgvmanation',
'zgvdoktor_code',
'zgvdoktorort',
'zgvdoktordatum',
'zgvdoktornation',
);
foreach($this->result as $prestudent)
{
foreach($zgv as &$value)
{
foreach($attribute as $attribut)
{
$db_attribute_name = current($db_attribute);
if($prestudent->$db_attribute_name)
{
$value[$attribut] = $prestudent->$db_attribute_name;
}
next($db_attribute);
}
}
reset($db_attribute);
}
return $zgv;
}
/**
* Liefert die Anzahl der Bewerber im ausgewaehlten Bereich
* @param $studiensemester_kurzbz Studiensemester
* @param $studiengang_kz Kennzahl des Studienganges (optional)
* @param $orgform_kurzbz Organisationsform (optional)
* @param $ausbildungssemester Ausbildungssemester (optional)
* @return Anzahl der Bewerber oder false im Fehlerfall
*/
public function getAnzBewerber($studiensemester_kurzbz, $studiengang_kz=null, $orgform_kurzbz=null, $ausbildungssemester=null)
{
$qry = "SELECT
count(*) as anzahl
FROM
public.tbl_prestudent
JOIN public.tbl_prestudentstatus USING(prestudent_id)
WHERE
tbl_prestudentstatus.status_kurzbz='Bewerber'
AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
if(!is_null($studiengang_kz))
$qry.=" AND tbl_prestudent.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
if(!is_null($orgform_kurzbz))
$qry.=" AND (tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)." OR (tbl_prestudentstatus.orgform_kurzbz IS NULL AND EXISTS(SELECT 1 FROM public.tbl_studiengang WHERE studiengang_kz=tbl_prestudent.studiengang_kz AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).")))";
if(!is_null($ausbildungssemester))
$qry.=" AND tbl_prestudentstatus.ausbildungssemester=".$this->db_add_param($ausbildungssemester);
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
return $row->anzahl;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Liefert die Anzahl der Interessenten im ausgewaehlten Bereich
* @param $studiensemester_kurzbz Studiensemester
* @param $studiengang_kz Kennzahl des Studienganges (optional)
* @param $orgform_kurzbz Organisationsform (optional)
* @param $ausbildungssemester Ausbildungssemester (optional)
* @return Anzahl der Interessenten oder false im Fehlerfall
*/
public function getAnzInteressenten($studiensemester_kurzbz, $studiengang_kz=null, $orgform_kurzbz=null, $ausbildungssemester=null)
{
$qry = "SELECT
count(*) as anzahl
FROM
public.tbl_prestudent
JOIN public.tbl_prestudentstatus USING(prestudent_id)
WHERE
tbl_prestudentstatus.status_kurzbz='Interessent'
AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
if(!is_null($studiengang_kz))
$qry.=" AND tbl_prestudent.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
if(!is_null($orgform_kurzbz))
$qry.=" AND (tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)." OR (tbl_prestudentstatus.orgform_kurzbz IS NULL AND EXISTS(SELECT 1 FROM public.tbl_studiengang WHERE studiengang_kz=tbl_prestudent.studiengang_kz AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).")))";
if(!is_null($ausbildungssemester))
$qry.=" AND tbl_prestudentstatus.ausbildungssemester=".$this->db_add_param($ausbildungssemester);
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
return $row->anzahl;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Liefert die Anzahl der Interessenten mit Zugangsvoraussetzung im ausgewaehlten Bereich
* @param $studiensemester_kurzbz Studiensemester
* @param $studiengang_kz Kennzahl des Studienganges (optional)
* @param $orgform_kurzbz Organisationsform (optional)
* @param $ausbildungssemester Ausbildungssemester (optional)
* @return Anzahl der Interessenten mit ZGV oder false im Fehlerfall
*/
public function getAnzInteressentenZGV($studiensemester_kurzbz, $studiengang_kz=null, $orgform_kurzbz=null, $ausbildungssemester=null)
{
$qry = "SELECT
count(*) as anzahl
FROM
public.tbl_prestudent
JOIN public.tbl_prestudentstatus USING(prestudent_id)
JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE
tbl_prestudentstatus.status_kurzbz='Interessent'
AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
AND ((tbl_studiengang.typ<>'m' AND zgv_code IS NOT NULL) OR zgvmas_code IS NOT NULL)";
if(!is_null($studiengang_kz))
$qry.=" AND tbl_prestudent.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
if(!is_null($orgform_kurzbz))
$qry.=" AND (tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)." OR (tbl_prestudentstatus.orgform_kurzbz IS NULL AND tbl_studiengang.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)."))";
if(!is_null($ausbildungssemester))
$qry.=" AND tbl_prestudentstatus.ausbildungssemester=".$this->db_add_param($ausbildungssemester);
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
return $row->anzahl;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Liefert ein Array mit den Bewerberzahlen
* @param $studiensemester_kurzbz (optional)
* @return true wenn ok, false im Fehlerfall DatenArray in $this->result
* Bsp:
* $prestudent->result[$stsem][$stg_kz]['anzahl']
* $prestudent->result[$stsem][$stg_kz][$orgform][$semester]['anzahl']
*/
public function listAnzBewerber($studiensemester_kurzbz=null)
{
$qry = "SELECT
tbl_prestudentstatus.studiensemester_kurzbz,
tbl_prestudent.studiengang_kz,
tbl_prestudentstatus.ausbildungssemester,
COALESCE(tbl_prestudentstatus.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) as orgform_kurzbz
FROM
public.tbl_prestudent
JOIN public.tbl_prestudentstatus USING(prestudent_id)
JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE
tbl_prestudentstatus.status_kurzbz='Bewerber'";
if(!is_null($studiensemester_kurzbz))
$qry.=" AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
$this->result = array();
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
// Studiensemester
if(!isset($this->result[$row->studiensemester_kurzbz]['anzahl']))
$this->result[$row->studiensemester_kurzbz]['anzahl']=0;
$this->result[$row->studiensemester_kurzbz]['anzahl']++;
// Studiengang
if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']))
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']=0;
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']++;
// Orgform
if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']))
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']=0;
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']++;
// Ausbildungssemester
if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']))
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']=0;
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']++;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Liefert ein Array mit den Interessentenzahlen
* @param $studiensemester_kurzbz (optional)
* @return true wenn ok, false im Fehlerfall DatenArray in $this->result
* Bsp:
* $prestudent->result[$stsem][$stg_kz]['anzahl']
* $prestudent->result[$stsem][$stg_kz][$orgform][$semester]['anzahl']
*/
public function listAnzInteressenten($studiensemester_kurzbz=null)
{
$qry = "SELECT
tbl_prestudentstatus.studiensemester_kurzbz,
tbl_prestudent.studiengang_kz,
tbl_prestudentstatus.ausbildungssemester,
COALESCE(tbl_prestudentstatus.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) as orgform_kurzbz
FROM
public.tbl_prestudent
JOIN public.tbl_prestudentstatus USING(prestudent_id)
JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE
bismelden=true
AND tbl_prestudentstatus.status_kurzbz='Interessent'";
if(!is_null($studiensemester_kurzbz))
$qry.=" AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
$this->result = array();
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
// Studiensemester
if(!isset($this->result[$row->studiensemester_kurzbz]['anzahl']))
$this->result[$row->studiensemester_kurzbz]['anzahl']=0;
$this->result[$row->studiensemester_kurzbz]['anzahl']++;
// Studiengang
if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']))
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']=0;
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']++;
// Orgform
if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']))
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']=0;
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']++;
// Ausbildungssemester
if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']))
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']=0;
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']++;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
public function listAnzAbbrecher($studiensemester_kurzbz=null)
{
$qry = "SELECT
tbl_prestudentstatus.studiensemester_kurzbz,
tbl_prestudent.studiengang_kz,
tbl_prestudentstatus.ausbildungssemester,
COALESCE(tbl_prestudentstatus.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) as orgform_kurzbz
FROM
public.tbl_prestudent
JOIN public.tbl_prestudentstatus USING(prestudent_id)
JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE
tbl_prestudentstatus.status_kurzbz='Abbrecher'
AND bismelden=true";
if(!is_null($studiensemester_kurzbz))
$qry.=" AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
$this->result = array();
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
// Studiensemester
if(!isset($this->result[$row->studiensemester_kurzbz]['anzahl']))
$this->result[$row->studiensemester_kurzbz]['anzahl']=0;
$this->result[$row->studiensemester_kurzbz]['anzahl']++;
// Studiengang
if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']))
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']=0;
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']++;
// Orgform
if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']))
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']=0;
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']++;
// Ausbildungssemester
if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']))
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']=0;
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']++;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
public function listAnzStudierende($studiensemester_kurzbz=null)
{
$qry = "SELECT
distinct on(prestudent_id) prestudent_id,
tbl_prestudentstatus.studiensemester_kurzbz,
tbl_prestudent.studiengang_kz,
tbl_prestudentstatus.ausbildungssemester,
COALESCE(tbl_prestudentstatus.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) as orgform_kurzbz
FROM
public.tbl_prestudent
JOIN public.tbl_prestudentstatus USING(prestudent_id)
JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE
tbl_prestudentstatus.status_kurzbz IN ('Student','Unterbrecher','Diplomand')
AND bismelden=true";
if(!is_null($studiensemester_kurzbz))
$qry.=" AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
$this->result = array();
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
// Studiensemester
if(!isset($this->result[$row->studiensemester_kurzbz]['anzahl']))
$this->result[$row->studiensemester_kurzbz]['anzahl']=0;
$this->result[$row->studiensemester_kurzbz]['anzahl']++;
// Studiengang
if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']))
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']=0;
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']++;
// Orgform
if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']))
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']=0;
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']++;
// Ausbildungssemester
if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']))
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']=0;
$this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']++;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Anzahl der Abbrecher liefern.<br>
* WM: Kopie von getBewerber() => @TODO: überprüfen!!!
* @param type $studiensemester_kurzbz
* @param type $studiengang_kz
* @param type $orgform_kurzbz
* @param type $ausbildungssemester
* @return boolean
*/
public function getAnzAbbrecher($studiensemester_kurzbz, $studiengang_kz=null, $orgform_kurzbz=null, $ausbildungssemester=null)
{
$qry = "SELECT
count(*) as anzahl
FROM
public.tbl_prestudent
JOIN public.tbl_prestudentstatus USING(prestudent_id)
WHERE
tbl_prestudentstatus.status_kurzbz='Abbrecher'
AND bismelden=true
AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
if(!is_null($studiengang_kz))
$qry.=" AND tbl_prestudent.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
if(!is_null($orgform_kurzbz))
$qry.=" AND (tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)." OR (tbl_prestudentstatus.orgform_kurzbz IS NULL AND EXISTS(SELECT 1 FROM public.tbl_studiengang WHERE studiengang_kz=tbl_prestudent.studiengang_kz AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).")))";
if(!is_null($ausbildungssemester))
$qry.=" AND tbl_prestudentstatus.ausbildungssemester=".$this->db_add_param($ausbildungssemester);
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
return $row->anzahl;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Anzahl der Studierenden liefern.<br>
* WM: Kopie von getBewerber() => @TODO: überprüfen!!!
* @param type $studiensemester_kurzbz
* @param type $studiengang_kz
* @param type $orgform_kurzbz
* @param type $ausbildungssemester
* @return boolean
*/
public function getAnzStudierende($studiensemester_kurzbz, $studiengang_kz=null, $orgform_kurzbz=null, $ausbildungssemester=null)
{
$qry = "SELECT count(*) as anzahl FROM (
SELECT
distinct on(prestudent_id) prestudent_id
FROM
public.tbl_prestudent
JOIN public.tbl_prestudentstatus USING(prestudent_id)
WHERE
tbl_prestudentstatus.status_kurzbz IN ('Student','Unterbrecher','Diplomand')
AND bismelden=true
AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
if(!is_null($studiengang_kz))
$qry.=" AND tbl_prestudent.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
if(!is_null($orgform_kurzbz))
$qry.=" AND (tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)." OR (tbl_prestudentstatus.orgform_kurzbz IS NULL AND EXISTS(SELECT 1 FROM public.tbl_studiengang WHERE studiengang_kz=tbl_prestudent.studiengang_kz AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).")))";
if(!is_null($ausbildungssemester))
$qry.=" AND tbl_prestudentstatus.ausbildungssemester=".$this->db_add_param($ausbildungssemester);
$qry.=") as sub";
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
return $row->anzahl;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Laedt die Studiensemester eines Studenten
* @param $uid
* @return array mit Studiensemestern
*/
public function getSemesterZuUid($uid)
{
$qry = "SELECT
tbl_studiensemester.studiensemester_kurzbz, tbl_studiensemester.bezeichnung
FROM
public.tbl_prestudentstatus
JOIN public.tbl_prestudent USING (prestudent_id)
JOIN public.tbl_student USING (prestudent_id)
JOIN public.tbl_studiensemester USING (studiensemester_kurzbz)
WHERE
status_kurzbz IN ('Student', 'Diplomand','Incoming')
AND student_uid = ". $this->db_add_param($uid)."
ORDER BY ausbildungssemester";
if($result = $this->db_query($qry))
{
$semester = array();
while($row = $this->db_fetch_object($result))
$semester[$row->studiensemester_kurzbz] = $row->bezeichnung;
return $semester;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Laedt alle Studenten eines Studienplans und eines Studiensemesters
* @param $studienplan_id
* @param $studiensemester_kurzbz
* @param $studiengang_kz
* @return array mit allen Prestudenten, welche sich für den angegebenen Studienplan im angegebenen Semester beworben haben
*/
public function getAllStudentenFromStudienplanAndStudsem($studienplan_id, $studiensemester_kurzbz, $studiengang_kz)
{
if(!is_numeric($studienplan_id))
{
$this->errormsg = 'studienplan_id ist ungueltig';
return false;
}
if(!$studiensemester_kurzbz || $studiensemester_kurzbz == "")
{
$this->errormsg = 'studiensemester_kurzbz ist ungueltig';
return false;
}
$qry = "SELECT DISTINCT prestudent_id, vorname, nachname, gebdatum, rt_gesamtpunkte, tbl_prestudent.studiengang_kz, bis.tbl_zgvgruppe.bezeichnung, get_rolle_prestudent(prestudent_id, null) as laststatus
FROM
public.tbl_prestudent
JOIN public.tbl_person USING(person_id)
LEFT JOIN bis.tbl_zgvgruppe_zuordnung USING(zgv_code)
LEFT JOIN bis.tbl_zgvgruppe USING(gruppe_kurzbz)
WHERE
tbl_prestudent.studiengang_kz=". $this->db_add_param($studiengang_kz)."
AND EXISTS(
SELECT
1
FROM
public.tbl_prestudentstatus
WHERE
tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id
AND studiensemester_kurzbz=". $this->db_add_param($studiensemester_kurzbz)."
AND status_kurzbz='Bewerber'
AND (
studienplan_id=". $this->db_add_param($studienplan_id)."
OR
(anmerkung like '%' || (SELECT orgform_kurzbz || '_' || sprache FROM lehre.tbl_studienplan WHERE studienplan_id=". $this->db_add_param($studienplan_id).") || '%')
)
);";
if($result = $this->db_query($qry))
{
$ret = array();
while($row = $this->db_fetch_object($result))
$ret[] = $row;
return $ret;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}