mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-21 17:02:19 +00:00
TODO-tags for non-unique student->prestudent_id
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
*
|
||||
|
||||
@@ -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');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user