mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-03 13:19:28 +00:00
268bf474df
Zeitwünsche angepasst
159 lines
4.6 KiB
PHP
159 lines
4.6 KiB
PHP
<?php
|
|
class Stundenplandev_model extends DB_Model
|
|
{
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->dbTable = 'lehre.tbl_stundenplandev';
|
|
$this->pk = 'stundenplandev_id';
|
|
}
|
|
|
|
public function getMissingDirectGroups($studiensemester_kurzbz = null)
|
|
{
|
|
$qry = "
|
|
SELECT
|
|
distinct lehreinheit_id, datum, stunde, mitarbeiter_uid, ort_kurzbz
|
|
FROM
|
|
lehre.tbl_stundenplandev stpl
|
|
WHERE
|
|
lehreinheit_id IN(
|
|
SELECT
|
|
lehreinheit_id
|
|
FROM
|
|
lehre.tbl_lehreinheit
|
|
JOIN lehre.tbl_lehreinheitgruppe USING(lehreinheit_id)
|
|
JOIN public.tbl_gruppe USING(gruppe_kurzbz)
|
|
WHERE
|
|
tbl_gruppe.direktinskription = true
|
|
";
|
|
|
|
$parametersArray = array();
|
|
|
|
if (!is_null($studiensemester_kurzbz))
|
|
{
|
|
$parametersArray[] = $studiensemester_kurzbz;
|
|
$qry .= ' AND tbl_lehreinheit.studiensemester_kurzbz = ?';
|
|
}
|
|
$qry .= ")
|
|
AND NOT EXISTS(
|
|
SELECT
|
|
1
|
|
FROM
|
|
lehre.tbl_stundenplandev
|
|
WHERE
|
|
datum=stpl.datum
|
|
AND stunde=stpl.stunde
|
|
AND lehreinheit_id=stpl.lehreinheit_id
|
|
AND gruppe_kurzbz=(SELECT
|
|
gruppe_kurzbz
|
|
FROM
|
|
lehre.tbl_lehreinheitgruppe
|
|
JOIN public.tbl_gruppe USING(gruppe_kurzbz)
|
|
WHERE
|
|
lehreinheit_id=stpl.lehreinheit_id
|
|
AND tbl_gruppe.direktinskription = true
|
|
)
|
|
)";
|
|
|
|
return $this->execQuery($qry, $parametersArray);
|
|
}
|
|
|
|
/**
|
|
* Get Stundenplan data.
|
|
*
|
|
* @param null $lehrveranstaltung_id
|
|
* @param null $studiensemester_kurzbz
|
|
* @param null $lehreinheit_id
|
|
* @param null $mitarbeiter_uid
|
|
* @param null $student_uid
|
|
* @param false $nurBevorstehende If true, only future data is retrieved.
|
|
* @return array|false|stdClass|null
|
|
*/
|
|
public function getStundenplanData($lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null, $nurBevorstehende = false)
|
|
{
|
|
$params = array();
|
|
|
|
$qry = "SELECT
|
|
stpl.datum, min(stpl.stunde) as stundevon, max(stpl.stunde) as stundebis,
|
|
stpl.lehreinheit_id, lehrfach.bezeichnung as lehrfach_bezeichnung,
|
|
array_agg(
|
|
CASE WHEN gruppe_kurzbz is not null THEN gruppe_kurzbz
|
|
ELSE (SELECT UPPER(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=stpl.studiengang_kz) || COALESCE(stpl.semester,'0') || COALESCE(stpl.verband,'') || COALESCE(stpl.gruppe,'')
|
|
END) as gruppen, array_agg(mitarbeiter_uid) as lektoren,
|
|
array_agg(ort_kurzbz) as orte,
|
|
array_agg(titel) as titel
|
|
FROM
|
|
lehre.tbl_stundenplandev as stpl
|
|
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
|
JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id)
|
|
WHERE ";
|
|
|
|
if ($lehrveranstaltung_id != '')
|
|
{
|
|
$qry.="
|
|
lehreinheit_id IN (
|
|
SELECT lehreinheit_id FROM lehre.tbl_lehreinheit
|
|
WHERE lehrveranstaltung_id = ?
|
|
AND studiensemester_kurzbz = ?
|
|
)";
|
|
|
|
$params[]= $lehrveranstaltung_id;
|
|
$params[]= $studiensemester_kurzbz;
|
|
|
|
}
|
|
elseif ($lehreinheit_id!='')
|
|
{
|
|
$qry.=" lehreinheit_id = ?";
|
|
|
|
$params[]= $lehreinheit_id;
|
|
}
|
|
elseif ($mitarbeiter_uid != '')
|
|
{
|
|
$qry.= "
|
|
mitarbeiter_uid = ?
|
|
AND lehreinheit_id IN (
|
|
SELECT lehreinheit_id
|
|
FROM lehre.tbl_lehreinheitmitarbeiter
|
|
JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
|
|
WHERE mitarbeiter_uid = ?
|
|
AND studiensemester_kurzbz IN ( ? )
|
|
)";
|
|
$params[] = $mitarbeiter_uid;
|
|
$params[] = $mitarbeiter_uid;
|
|
$params[] = $studiensemester_kurzbz;
|
|
}
|
|
elseif ($student_uid != '')
|
|
{
|
|
$qry.="
|
|
lehreinheit_id IN (
|
|
SELECT lehreinheit_id
|
|
FROM campus.vw_student_lehrveranstaltung
|
|
WHERE uid = ?
|
|
AND studiensemester_kurzbz = ?
|
|
)";
|
|
|
|
$params[] = $student_uid;
|
|
$params[] = $studiensemester_kurzbz;
|
|
}
|
|
else
|
|
return false;
|
|
|
|
if($nurBevorstehende)
|
|
{
|
|
$qry.= " AND stpl.datum >= NOW()::date ";
|
|
}
|
|
|
|
$qry.= "
|
|
GROUP BY stpl.datum, stpl.unr, stpl.lehreinheit_id, lehrfach.bezeichnung
|
|
ORDER BY stpl.datum, min(stpl.stunde), stpl.unr, stpl.lehreinheit_id
|
|
";
|
|
|
|
return $this->execQuery($qry, $params);
|
|
}
|
|
|
|
}
|