TODO-tags for non-unique student->prestudent_id

This commit is contained in:
Andreas Moik
2016-06-01 14:37:10 +02:00
parent 3cba596571
commit 4c3d0bf5aa
35 changed files with 1166 additions and 1059 deletions
+84 -75
View File
@@ -15,7 +15,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Andreas Moik <moik@technikum-wien.at>.
*/
/**
* Klasse zur Verwaltung der Anwesenheiten der Studierenden
@@ -469,92 +470,100 @@ class anwesenheit extends basis_db
/**
* Laedt die Anwesenheiten in Prozent von Studierenden bei Lehrveranstaltungen
* Wenn die StudentUID uebergeben wird, werden alle Lehrveranstaltungen zu denen der Studierenden zugeteilt ist inkl Prozent der Anwesenheit
* Wenn die Prestudent_id uebergeben wird, werden alle Lehrveranstaltungen zu denen der Studierenden zugeteilt ist inkl Prozent der Anwesenheit
* Wenn die LehrveranstaltungID uebergeben wird, werden alle Studierenden geholt die zugeteilt sind inkl Prozent der Anwesenheit
* Es werden pro Student die Anwesenheiten berechnet aufgrund der Lehreinheit zu der sie zugeordnet sind
* @param $studiensemester_kurzbz
* @param $student_uid
* @param $prestudent_id
* @param $lehrveranstaltung_id
* @return boolean true wenn ok, false im fehlerfall
*/
public function loadAnwesenheitStudiensemester($studiensemester_kurzbz, $student_uid=null, $lehrveranstaltung_id=null)
public function loadAnwesenheitStudiensemester($studiensemester_kurzbz, $prestudent_id=null, $lehrveranstaltung_id=null)
{
$qry = "SELECT lehrveranstaltung_id, bezeichnung, vorname, nachname, uid, sum(anwesend) as anwesend, sum(nichtanwesend) as nichtanwesend, sum(gesamtstunden) as gesamtstunden FROM (
SELECT
lehrveranstaltung_id, bezeichnung, vorname, nachname, uid,
(
SELECT
sum(einheiten)
FROM
campus.tbl_anwesenheit
WHERE
lehreinheit_id=vw_student_lehrveranstaltung.lehreinheit_id
AND uid=vw_student_lehrveranstaltung.uid
AND anwesend
) as anwesend,
(
SELECT
sum(einheiten)
FROM
campus.tbl_anwesenheit
WHERE
lehreinheit_id=vw_student_lehrveranstaltung.lehreinheit_id
AND uid=vw_student_lehrveranstaltung.uid
AND NOT anwesend
) as nichtanwesend,
(
SELECT count(*) anzahl FROM
(SELECT datum, stunde FROM campus.vw_stundenplan
WHERE lehreinheit_id=vw_student_lehrveranstaltung.lehreinheit_id
AND (vw_stundenplan.titel not like '%Nebenprüfung%' OR vw_stundenplan.titel is null) GROUP BY datum, stunde) as a
) as gesamtstunden
FROM
campus.vw_student_lehrveranstaltung
JOIN public.tbl_benutzer USING(uid)
JOIN public.tbl_person USING(person_id)
WHERE
studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
if(!is_null($lehrveranstaltung_id))
$qry.=" AND lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id);
if(!is_null($student_uid))
$qry.=" AND uid=".$this->db_add_param($student_uid);
$qry.=") as b GROUP BY lehrveranstaltung_id, bezeichnung, vorname, nachname, uid";
if($lehrveranstaltung_id!='')
$qry.=" order by nachname, vorname ";
elseif($student_uid!='')
$qry.=" order by bezeichnung";
if($result = $this->db_query($qry))
if(!is_null($prestudent_id) && !is_numeric($prestudent_id))
{
while($row = $this->db_fetch_object($result))
{
$obj = new stdClass();
$obj->bezeichnung = $row->bezeichnung;
$obj->anwesend = $row->anwesend;
$obj->nichtanwesend = $row->nichtanwesend;
$obj->gesamtstunden = $row->gesamtstunden;
$obj->erfassteanwesenheit = $row->anwesend+$row->nichtanwesend;
if($row->gesamtstunden=='' || $obj->erfassteanwesenheit=='')
$obj->prozent=100;
else
$obj->prozent = number_format(100-(100/$obj->gesamtstunden*$row->nichtanwesend),2);
$obj->vorname = $row->vorname;
$obj->nachname = $row->nachname;
$obj->uid = $row->uid;
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$this->result[] = $obj;
}
return true;
$this->errormsg = "Prestudent_id ist ungueltig";
}
else
{
$this->errormsg='Fehler beim Laden der Daten';
return false;
$qry = "SELECT lehrveranstaltung_id, bezeichnung, vorname, nachname, uid, prestudent_id, sum(anwesend) as anwesend, sum(nichtanwesend) as nichtanwesend, sum(gesamtstunden) as gesamtstunden FROM (
SELECT
lehrveranstaltung_id, bezeichnung, vorname, nachname, uid, prestudent_id,
(
SELECT
sum(einheiten)
FROM
campus.tbl_anwesenheit
WHERE
lehreinheit_id=vw_student_lehrveranstaltung.lehreinheit_id
AND uid=vw_student_lehrveranstaltung.uid
AND anwesend
) as anwesend,
(
SELECT
sum(einheiten)
FROM
campus.tbl_anwesenheit
WHERE
lehreinheit_id=vw_student_lehrveranstaltung.lehreinheit_id
AND uid=vw_student_lehrveranstaltung.uid
AND NOT anwesend
) as nichtanwesend,
(
SELECT count(*) anzahl FROM
(SELECT datum, stunde FROM campus.vw_stundenplan
WHERE lehreinheit_id=vw_student_lehrveranstaltung.lehreinheit_id
AND (vw_stundenplan.titel not like '%Nebenprüfung%' OR vw_stundenplan.titel is null) GROUP BY datum, stunde) as a
) as gesamtstunden
FROM
campus.vw_student_lehrveranstaltung
JOIN public.tbl_benutzer USING(uid)
JOIN public.tbl_person USING(person_id)
WHERE
studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
if(!is_null($lehrveranstaltung_id))
$qry.=" AND lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id);
if(!is_null($prestudent_id))
$qry.=" AND prestudent_id=".$this->db_add_param($prestudent_id);
$qry.=") as b GROUP BY lehrveranstaltung_id, bezeichnung, vorname, nachname, prestudent_id, uid";
if($lehrveranstaltung_id!='')
$qry.=" order by nachname, vorname ";
elseif(is_numeric($prestudent_id))
$qry.=" order by bezeichnung";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new stdClass();
$obj->bezeichnung = $row->bezeichnung;
$obj->anwesend = $row->anwesend;
$obj->nichtanwesend = $row->nichtanwesend;
$obj->gesamtstunden = $row->gesamtstunden;
$obj->erfassteanwesenheit = $row->anwesend+$row->nichtanwesend;
if($row->gesamtstunden=='' || $obj->erfassteanwesenheit=='')
$obj->prozent=100;
else
$obj->prozent = number_format(100-(100/$obj->gesamtstunden*$row->nichtanwesend),2);
$obj->vorname = $row->vorname;
$obj->nachname = $row->nachname;
$obj->uid = $row->uid;
$obj->prestudent_id = $row->prestudent_id;
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg='Fehler beim Laden der Daten';
}
}
return false;
}
/**
+3 -2
View File
@@ -16,8 +16,9 @@
* 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>.
*/
/**
* Klasse benutzerfunktion (FAS-Online)
+1 -1
View File
@@ -316,7 +316,7 @@ class lehrstunde extends basis_db
if(!isset($this->ssnext))
$this->ssnext = $this->ss;
if(!$student = new student($uid))
if(!$student = new student($uid)) // TODO EINE
$this->errormsg = $student->errormsg;
+1 -1
View File
@@ -592,7 +592,7 @@ class lvregel extends basis_db
// Ausbildungssemester wird nur beim 1. durchlauf ermittelt
if(!isset($this->cache[$prestudent_id]) && !isset($this->cache[$prestudent_id][$studiensemester_kurzbz]))
{
$student = new student($prestudent_id);
$student = new student($prestudent_id); // TODO EINE
// Ausbildungssemester aus dem Status holen
$prestudent = new prestudent();
+66
View File
@@ -1868,6 +1868,72 @@ class prestudent extends person
}
}
/**
* Laden aller Prestudenten zu einer UID
* @return true wenn erfolgreich, false im Fehlerfall
*/
public function getPrestudentsFromUid($uid)
{
if(!isset($uid) || $uid == "")
{
$this->errormsg = "Diese UID ist ungueltig";
return false;
}
$qry='SELECT prestudent_id FROM public.tbl_prestudent WHERE uid='.$this->db_add_param($uid);
if(!$this->db_query($qry))
{
$this->errormsg = 'Fehler beim Laden der Prestudenten';
return false;
}
while($row = $this->db_fetch_object())
{
$ps=new prestudent($row->prestudent_id);
$this->result[]=$ps;
}
return true;
}
public function statusExists($prestudent_id, $studiensemester_kurzbz, $status_kurzbz = null)
{
if(!isset($studiensemester_kurzbz) && $studiensemester_kurzbz == "")
{
$this->errormsg = "studiensemester_kurzbz ist ungueltig";
return false;
}
$qry = "SELECT status_kurzbz FROM tbl_prestudentstatus
WHERE prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER)."
AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
if(isset($status_kurzbz))
$qry .= " AND status_kurzbz=".$this->db_add_param($status_kurzbz);
if($res = $this->db_query($qry))
{
if($row = $this->db_num_rows($res) > 0)
{
return true;
}
else
{
$this->errormsg = "Es wurde kein Status gefunden";
return false;
}
}
$this->errormsg = "Fehler bei der Datenabfrage";
return false;
}
/**
* Laedt die Rolle
*
+3 -2
View File
@@ -17,8 +17,9 @@
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
* Rudolf Hangl <rudolf.hangl@technikum-wien.at> and
* Gerald Raab <gerald.raab@technikum-wien.at>.
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>,
* Gerald Raab <gerald.raab@technikum-wien.at> and
* Andreas Moik <moik@technikum-wien.at>.
*/
require_once(dirname(__FILE__).'/basis_db.class.php');