Merge branch 'master' into feature-61164/AbgabetoolQualityGates

# Conflicts:
#	application/models/organisation/Studiengang_model.php
This commit is contained in:
Johann Hoffmann
2026-01-26 15:06:22 +01:00
40 changed files with 1425 additions and 81 deletions
+1 -1
View File
@@ -169,7 +169,7 @@ class Student_model extends DB_Model
$max = 0;
if ($matrikelnrres && hasData($matrikelnrres)) {
$max = mb_substr(getData($matrikelnrres)[0]->matrikelnr, 7);
$max = mb_substr(trim(getData($matrikelnrres)[0]->matrikelnr), -3);
if (!is_numeric($max)) {
$max = (int)$max;
}
@@ -316,8 +316,8 @@ class Lehrveranstaltung_model extends DB_Model
(SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status,
tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student,
tbl_zeugnisnote.note, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_benutzer.uid,
UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kuerzel, tbl_studiengang.orgform_kurzbz, vw_student_lehrveranstaltung.semester, vw_student_lehrveranstaltung.studiensemester_kurzbz, vw_student_lehrveranstaltung.bezeichnung
UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kuerzel, tbl_studiengang.orgform_kurzbz, vw_student_lehrveranstaltung.semester, vw_student_lehrveranstaltung.studiensemester_kurzbz, vw_student_lehrveranstaltung.bezeichnung,
tbl_student.prestudent_id
FROM
campus.vw_student_lehrveranstaltung
JOIN public.tbl_benutzer USING(uid)
@@ -386,6 +386,37 @@ class Lehrveranstaltung_model extends DB_Model
return $this->execQuery($query, array($lehrveranstaltung_id, $studiensemester_kurzbz));
}
/**
* Get LV-Leitung of given Lehrveranstaltung ID and Studiensemester.
*
* @param $lehrveranstaltung_id
* @param $studiensemester
* @return array|stdClass|null
*/
public function getLvLeitung($lehrveranstaltung_id, $studiensemester)
{
$params = [$lehrveranstaltung_id, $studiensemester];
$qry = "
SELECT
vorname, nachname, mitarbeiter_uid, lehrfunktion_kurzbz
FROM
lehre.tbl_lehreinheit
JOIN lehre.tbl_lehreinheitmitarbeiter lema USING (lehreinheit_id)
JOIN public.tbl_benutzer b ON b.uid = lema.mitarbeiter_uid
JOIN public.tbl_person p using (person_id)
WHERE
tbl_lehreinheit.lehrveranstaltung_id= ?
AND tbl_lehreinheit.studiensemester_kurzbz = ?
AND lehrfunktion_kurzbz = 'LV-Leitung'
ORDER BY
lema.insertamum DESC
LIMIT 1
";
return $this->execQuery($qry, $params);
}
/**
* Gets all Leiter of Lehrveranstaltungsorganisationseinheit
* @param $lehrveranstaltung_id
@@ -64,16 +64,16 @@ class Projektarbeit_model extends DB_Model
if (isset($projekttyp))
{
if (is_array($projekttyp))
$qry .= ' AND tbl_projektarbeit.projekttyp_kurzbz IN ?';
$qry .= ' AND pa.projekttyp_kurzbz IN ?';
else
$qry .= ' AND tbl_projektarbeit.projekttyp_kurzbz=?';
$qry .= ' AND pa.projekttyp_kurzbz=?';
$params[] = $projekttyp;
}
if (isset($final))
{
$qry .= ' AND tbl_projektarbeit.final=?';
$qry .= ' AND pa.final=?';
$params[] = $final;
}
@@ -771,6 +771,75 @@ class Studiengang_model extends DB_Model
return $this->execReadOnlyQuery($qry, array($studiengang_kz, $orgform_kurzbz, $studiensemester_kurzbz));
}
/**
* Get active Studiengänge with Kuerzel by given Studiengang-Kennzahlen.
* Helpful to easily get Studiengänge the user is entitled for.
*
* @param $studiengang_kz_arr
* @param $studiensemester_kurzbz
* @return array|stdClass|null Returns one row per Studiengang. Not considering the Orgforms.
*/
public function getByStgs($studiengang_kz_arr, $studiensemester_kurzbz)
{
if (is_numeric($studiengang_kz_arr))
{
$studiengang_kz_arr = [$studiengang_kz_arr];
}
$qry = '
SELECT
DISTINCT stg.*, UPPER(typ::varchar(1) || kurzbz) AS kuerzel
FROM
public.tbl_studiengang stg
JOIN lehre.tbl_studienordnung sto USING(studiengang_kz)
JOIN lehre.tbl_studienplan stpl USING(studienordnung_id)
JOIN lehre.tbl_studienplan_semester stplsem USING(studienplan_id)
WHERE
stg.studiengang_kz IN ?
AND stplsem.studiensemester_kurzbz = ?
ORDER BY
stg.kurzbzlang
';
return $this->execQuery($qry, [$studiengang_kz_arr, $studiensemester_kurzbz]);
}
/**
* Get OrgForms of given Studiengang and Studiensemester.
*
* @param $studiengang_kz
* @param $studiensemester_kurzbz
* @return array|stdClass|null
*/
public function getOrgformsByStg($studiengang_kz, $studiensemester_kurzbz)
{
$qry = '
SELECT
stpl.orgform_kurzbz
FROM
public.tbl_studiengang stg
JOIN lehre.tbl_studienordnung sto USING(studiengang_kz)
JOIN lehre.tbl_studienplan stpl USING(studienordnung_id)
JOIN lehre.tbl_studienplan_semester stplsem USING(studienplan_id)
WHERE
stg.studiengang_kz = ?
AND stg.aktiv = TRUE
AND stplsem.studiensemester_kurzbz = ?
GROUP BY
stpl.orgform_kurzbz
ORDER BY
CASE stpl.orgform_kurzbz
WHEN \'VZ\' THEN 1
WHEN \'BB\' THEN 2
WHEN \'DUA\' THEN 3
ELSE 4
END,
stpl.orgform_kurzbz;
';
return $this->execQuery($qry, [$studiengang_kz, $studiensemester_kurzbz]);
}
public function getStudiengaengeFiltered($allowed_stg) {
$query ="SELECT DISTINCT
@@ -535,4 +535,53 @@ class Stundenplan_model extends DB_Model
return $this->execQuery($query, [$uid, $uid]);
}
/**
* Get Stundenplantermine for given Lehreinheit.
*
* @param $lehreinheit_id
* @return array|stdClass|null
*/
public function getTermineByLe($lehreinheit_id)
{
$qry = '
SELECT DISTINCT
datum
FROM
lehre.vw_stundenplan
WHERE
lehreinheit_id = ?
ORDER BY
datum ASC
';
return $this->execQuery($qry, [$lehreinheit_id]);
}
/**
* Get Stundenplantermine for given Lehrveranstaltung of given Studiensemester.
*
* @param $lehrveranstaltung_id
* @param $studiensemester_kurzbz
* @return array|stdClass|null
*/
public function getTermineByLv($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$qry = '
SELECT DISTINCT
datum
FROM
lehre.vw_stundenplan
WHERE
lehreinheit_id IN (
SELECT lehreinheit_id
FROM lehre.tbl_lehreinheit
WHERE lehrveranstaltung_id = ?
AND studiensemester_kurzbz = ?
)
ORDER BY datum ASC
';
return $this->execQuery($qry, [$lehrveranstaltung_id, $studiensemester_kurzbz]);
}
}