Added Cronjob to automatically add direct groups to schedule

This commit is contained in:
Andreas Österreicher
2019-01-31 08:43:24 +01:00
parent 42829ed33e
commit b56fb6deb8
4 changed files with 256 additions and 3 deletions
@@ -11,4 +11,14 @@ class Lehreinheitgruppe_model extends DB_Model
$this->dbTable = 'lehre.tbl_lehreinheitgruppe';
$this->pk = 'lehreinheitgruppe_id';
}
public function getDirectGroup($lehreinheit_id)
{
$this->addJoin('public.tbl_gruppe', 'gruppe_kurzbz');
return $this->loadWhere(array(
'tbl_gruppe.direktinskription' => true,
'lehreinheit_id' => $lehreinheit_id
)
);
}
}
@@ -109,7 +109,7 @@ class Studiensemester_model extends DB_Model
*/
public function getAusbildungssemesterByStudiensemesterAndStudiengang($studiensemester_kurzbz, $studiengang_kz)
{
$query = "SELECT DISTINCT semester
$query = "SELECT DISTINCT semester
FROM lehre.tbl_studienplan
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
JOIN lehre.tbl_studienplan_semester USING(studienplan_id)
@@ -131,9 +131,9 @@ class Studiensemester_model extends DB_Model
if (date_format(date_create($from), 'Y-m-d') > (date_format(date_create($to), 'Y-m-d')))
return success(array());
$query = "SELECT *
$query = "SELECT *
FROM public.tbl_studiensemester
WHERE
WHERE
(ende > ?::date AND start < ?::date)
OR start = ?::date
OR ende = ?::date
@@ -141,4 +141,19 @@ class Studiensemester_model extends DB_Model
return $this->execQuery($query, array($from, $to, $from, $to));
}
/**
* Liefert das Studiensemester das aktuell am naehesten zu $studiensemester_kurzbz liegt
*
* @param $studiensemester_kurzbz
* @return array | null
*/
public function getNearestFrom($studiensemester_kurzbz)
{
$query = "SELECT studiensemester_kurzbz, start, ende FROM public.vw_studiensemester
WHERE studiensemester_kurzbz <> ?
ORDER BY delta LIMIT 1";
return $this->execQuery($query, array($studiensemester_kurzbz));
}
}
@@ -11,4 +11,54 @@ class Stundenplandev_model extends DB_Model
$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);
}
}