Added method getAutocompleteSuggestions to Lehrveranstaltung_model.php

Get Lehrveranstaltungen by eventQuery string. Use with autocomplete event queries.
This commit is contained in:
Cris
2024-06-26 10:45:56 +02:00
parent 538c2e09ce
commit 3a16c4ebf3
@@ -15,6 +15,71 @@ class Lehrveranstaltung_model extends DB_Model
$this->load->model('organisation/studiensemester_model', 'StudiensemesterModel');
}
/**
* Get Lehrveranstaltungen by eventQuery string. Use with autocomplete event queries.
* @param $eventQuery String
* @param string $studiensemester_kurzbz Filter by Studiensemester
* @param array $oes Filter by Organisationseinheiten
* @return array
*/
public function getAutocompleteSuggestions($eventQuery, $studiensemester_kurzbz = null, $oes = null)
{
$params = [];
$eventQuery = '%' . $eventQuery . '%';
$qry = '
SELECT DISTINCT ON (lv_oe_kurzbz, stg_bezeichnung, lehrveranstaltung_id)
le.studiensemester_kurzbz,
lv.oe_kurzbz AS "lv_oe_kurzbz",
CASE
WHEN oe.organisationseinheittyp_kurzbz = \'Kompetenzfeld\' THEN (\'KF \' || oe.bezeichnung)
WHEN oe.organisationseinheittyp_kurzbz = \'Department\' THEN (\'DEP \' || oe.bezeichnung)
ELSE (oe.organisationseinheittyp_kurzbz || \' \' || oe.bezeichnung)
END AS "lv_oe_bezeichnung",
stg.studiengang_kz,
upper(stg.typ || stg.kurzbz) AS "stg_typ_kurzbz",
stg.bezeichnung AS "stg_bezeichnung",
lv.semester,
lv.lehrveranstaltung_id,
lv.bezeichnung AS "lv_bezeichnung"
FROM
lehre.tbl_lehrveranstaltung lv
JOIN lehre.tbl_lehreinheit le USING (lehrveranstaltung_id)
JOIN PUBLIC.tbl_organisationseinheit oe USING (oe_kurzbz)
JOIN PUBLIC.tbl_studiengang stg ON stg.studiengang_kz = lv.studiengang_kz
WHERE
/* filter negative studiengaenge */
stg.studiengang_kz > 0 ';
if (isset($studiensemester_kurzbz) && is_string($studiensemester_kurzbz))
{
/* filter studiensemester */
$qry.= ' AND le.studiensemester_kurzbz = ? ';
$params[]= $studiensemester_kurzbz;
}
if (isset($oes) && is_array($oes))
{
/* filter organisationseinheit */
$qry.= ' AND lv.oe_kurzbz IN ? ';
$params[]= $oes;
}
$qry.= '
/* filter active lehrveranstaltungen */
AND lv.aktiv = TRUE
/* filter active organisationseinheiten */
AND oe.aktiv = TRUE
/* filter by search entry */
AND lv.bezeichnung ILIKE ?
';
$params[]= $eventQuery;
return $this->execQuery($qry, $params);
}
/**
* Gets unique Groupstrings for Lehrveranstaltungen, e.g. WS2018_BIF_1_PRJM_VZ_LV12345
* @param string $studiensemester_kurzbz