Merge branch 'feature-60973/komponente_fuer_lehrfaecherverteilung' into feature-61232/Studierendenverwaltung_Karteireiter_Projektarbeit_portieren

This commit is contained in:
Alexei Karpenko
2025-08-23 16:16:41 +02:00
362 changed files with 23905 additions and 7774 deletions
+1
View File
@@ -298,6 +298,7 @@ class Akte_model extends DB_Model
$this->db->where('person_id', $person_id);
$this->addOrder('erstelltam', 'DESC');
$this->addOrder('akte_id', 'DESC');
return $this->loadWhere([
'archiv' => true
@@ -102,6 +102,8 @@ class Dokumentprestudent_model extends DB_Model
$qry.=" AND (v.archivierbar = FALSE OR v.archivierbar IS NULL)";
}
$qry.=" ORDER BY d.bezeichnung ASC";
return $this->execQuery($qry, $parametersArray);
}
}
@@ -11,4 +11,5 @@ class Abgabe_model extends DB_Model
$this->dbTable = 'campus.tbl_abgabe';
$this->pk = 'abgabe_id';
}
}
+134 -164
View File
@@ -322,7 +322,7 @@ EOSQL;
if (hasData($result))
{
$lehrveranstaltung = getData($result)[0];
$oe_result = $this->LehrveranstaltungModel->getAllOe($lehrveranstaltung->lehrveranstaltung_id, $lehrveranstaltung->studiengang_kz);
$oe_result = $this->LehrveranstaltungModel->getAllOe($lehrveranstaltung->lehrveranstaltung_id);
return success(hasData($oe_result) ? array_column(getData($oe_result), 'oe_kurzbz') : array(''));
}
}
@@ -335,7 +335,7 @@ EOSQL;
}
public function getByLvidStudiensemester($lv_id, $studiensemester_kurzbz)
public function getByLvidStudiensemester($lv_id, $studiensemester_kurzbz, $mitarbeiter_uid = null, $fachbereich_kurzbz = null)
{
$qry = "WITH lehreinheiten AS (
SELECT *
@@ -343,98 +343,66 @@ EOSQL;
WHERE lehrveranstaltung_id = ?
AND studiensemester_kurzbz = ?
),
gruppen AS (
SELECT
COALESCE(
string_agg(
tbl_lehreinheitgruppe.gruppe_kurzbz, ' '
) FILTER (WHERE NOT direktinskription),
string_agg(
COALESCE(
upper(tbl_studiengang.typ::varchar(1) ||tbl_studiengang.kurzbz) ||
'-'||
COALESCE(tbl_lehreinheitgruppe.semester::varchar, '') ||
COALESCE(tbl_lehreinheitgruppe.verband::varchar, '')||
COALESCE(tbl_lehreinheitgruppe.gruppe, '')), ', '
)
) AS gruppe,
lehreinheit_id
FROM
lehre.tbl_lehreinheitgruppe
LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
LEFT JOIN public.tbl_gruppe USING(gruppe_kurzbz)
GROUP BY lehreinheit_id
),
mitarbeiter AS (
SELECT kurzbz, semesterstunden, planstunden, lehreinheit_id
FROM lehre.tbl_lehreinheitmitarbeiter
JOIN public.tbl_mitarbeiter USING(mitarbeiter_uid)
),
fachbereich AS (
SELECT
tbl_organisationseinheit.bezeichnung,
tbl_organisationseinheit.organisationseinheittyp_kurzbz,
lehreinheit_id
FROM
public.tbl_organisationseinheit,
lehre.tbl_lehrveranstaltung as lehrfach,
lehre.tbl_lehreinheit
WHERE tbl_organisationseinheit.oe_kurzbz = lehrfach.oe_kurzbz
AND lehrfach.lehrveranstaltung_id = tbl_lehreinheit.lehrfach_id
),
tag_data_agg AS (
SELECT
lehreinheit_id,
COALESCE(json_agg(tag ORDER BY id), '[]'::json) AS tags
FROM (
SELECT DISTINCT ON (public.tbl_notiz.notiz_id)
tbl_notiz.notiz_id AS id,
typ_kurzbz,
array_to_json(tbl_notiz_typ.bezeichnung_mehrsprachig)->>0 AS beschreibung,
text AS notiz,
style,
erledigt AS done,
lehreinheit_id
FROM public.tbl_notizzuordnung
JOIN public.tbl_notiz ON tbl_notizzuordnung.notiz_id = tbl_notiz.notiz_id
JOIN public.tbl_notiz_typ ON tbl_notiz.typ = tbl_notiz_typ.typ_kurzbz
WHERE lehreinheit_id IN (SELECT lehreinheit_id FROM lehreinheiten)
) AS tag
GROUP BY lehreinheit_id
)
". $this->_getGruppenCTE() . ",
". $this->_getLektorenCTE() . ",
". $this->_getFachbereichCTE() . ",
". $this->_getTagsCTE() . "
SELECT lehreinheiten.*,
lehreinheiten.lehrform_kurzbz as lv_lehrform_kurzbz,
tbl_lehrveranstaltung.kurzbz as lv_kurzbz,
tbl_lehrveranstaltung.bezeichnung as lv_bezeichnung,
COALESCE(tag_data_agg.tags, '[]'::json) AS tags,
(
SELECT string_agg(gr.gruppe, ' ')
FROM gruppen gr
WHERE gr.lehreinheit_id = lehreinheiten.lehreinheit_id
) AS gruppen,
(
SELECT string_agg(ma.kurzbz, ' ')
FROM mitarbeiter ma
WHERE ma.lehreinheit_id = lehreinheiten.lehreinheit_id
) AS lektoren,
(
SELECT string_agg(fachbereich.bezeichnung, ' ')
FROM fachbereich
WHERE fachbereich.lehreinheit_id = lehreinheiten.lehreinheit_id
) AS fachbereich
gruppen.gruppen,
mitarbeiter.lektoren,
mitarbeiter.le_planstunden,
mitarbeiter.vorname,
mitarbeiter.nachname,
mitarbeiter.semesterstunden,
fachbereich.bezeichnung as fachbereich,
UPPER(CONCAT(tbl_studiengang.typ,tbl_studiengang.kurzbz)) as studiengang,
semester
FROM lehreinheiten
LEFT JOIN lehre.tbl_lehrveranstaltung ON tbl_lehrveranstaltung.lehrveranstaltung_id = lehreinheiten.lehrfach_id
LEFT JOIN tag_data_agg ON tag_data_agg.lehreinheit_id = lehreinheiten.lehreinheit_id";
LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
LEFT JOIN tag_data_agg ON tag_data_agg.lehreinheit_id = lehreinheiten.lehreinheit_id
LEFT JOIN mitarbeiter ON lehreinheiten.lehreinheit_id = mitarbeiter.lehreinheit_id
LEFT JOIN fachbereich ON lehreinheiten.lehreinheit_id = fachbereich.lehreinheit_id
LEFT JOIN gruppen ON lehreinheiten.lehreinheit_id = gruppen.lehreinheit_id
WHERE true
";
return $this->execReadOnlyQuery($qry, array($lv_id, $studiensemester_kurzbz));
$params = array($lv_id, $studiensemester_kurzbz);
if ($mitarbeiter_uid !== null)
{
$qry .= " AND lehreinheiten.lehreinheit_id IN ( SELECT lehreinheit_id FROM lehre.tbl_lehreinheitmitarbeiter WHERE mitarbeiter_uid = ?) ";
$params[] = $mitarbeiter_uid;
}
if($fachbereich_kurzbz !== null)
{
$qry .= " AND EXISTS ( SELECT 1 FROM lehre.tbl_lehrveranstaltung JOIN public.tbl_fachbereich USING(oe_kurzbz) WHERE fachbereich_kurzbz= ? AND lehrveranstaltung_id=lehreinheiten.lehrfach_id)";
$params[] = $fachbereich_kurzbz;
}
$qry .= " ORDER BY lehrveranstaltung_id;";
return $this->execReadOnlyQuery($qry, $params);
}
private function getLVTmp($stg_kz = null)
{
$qry = "SELECT DISTINCT ON(lehrveranstaltung_id) *,
'' as studienplan_id, '' as studienplan_beeichnung,
CONCAT(vw_lehreinheit.stg_typ, vw_lehreinheit.stg_kurzbz) as studiengang
FROM campus.vw_lehreinheit
'' as stundenblockung,
'' as lehreinheit_id,
'' as wochenrythmus,
'' as raumtyp,
'' as raumtypalternativ,
'' as gruppen,
'' as studienplan_id,
'' as studienplan_beeichnung,
UPPER(CONCAT(vw_lehreinheit.stg_typ, vw_lehreinheit.stg_kurzbz)) as studiengang
FROM campus.vw_lehreinheit
WHERE mitarbeiter_uid = ?
AND studiensemester_kurzbz = ?";
@@ -460,89 +428,6 @@ EOSQL;
return $this->execReadOnlyQuery($qry, $params);
}
public function getLEByLV($lv_id, $studiensemester_kurzbz, $mitarbeiter_uid = null, $fachbereich_kurzbz = null)
{
$qry = "
WITH gruppen AS (
SELECT
COALESCE(
string_agg(
tbl_lehreinheitgruppe.gruppe_kurzbz, ', '
) FILTER (WHERE NOT direktinskription),
string_agg(
COALESCE(
upper(tbl_studiengang.typ::varchar(1) ||tbl_studiengang.kurzbz) ||
'-'||
COALESCE(tbl_lehreinheitgruppe.semester::varchar, '') ||
COALESCE(tbl_lehreinheitgruppe.verband::varchar, '')||
COALESCE(tbl_lehreinheitgruppe.gruppe, '')), ', '
)
) AS gruppen,
lehreinheit_id
FROM
lehre.tbl_lehreinheitgruppe
LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
LEFT JOIN public.tbl_gruppe USING(gruppe_kurzbz)
GROUP BY lehreinheit_id
),
lektoren AS (
SELECT string_agg(kurzbz, ' ') as lektoren,
string_agg(semesterstunden::text, ' ') as semesterstunden,
string_agg(planstunden::text, ' ') as planstunden,
lehreinheit_id
FROM lehre.tbl_lehreinheitmitarbeiter
JOIN public.tbl_mitarbeiter USING(mitarbeiter_uid)
GROUP BY lehreinheit_id
),
fachbereich AS (
SELECT
string_agg(CONCAT(tbl_organisationseinheit.bezeichnung, ' (', tbl_organisationseinheit.organisationseinheittyp_kurzbz, ')'),' ') as fachbereich,
lehreinheit_id
FROM
public.tbl_organisationseinheit,
lehre.tbl_lehrveranstaltung as lehrfach,
lehre.tbl_lehreinheit
WHERE
tbl_organisationseinheit.oe_kurzbz = lehrfach.oe_kurzbz
AND lehrfach.lehrveranstaltung_id = tbl_lehreinheit.lehrfach_id
GROUP BY lehreinheit_id
)
SELECT tbl_lehreinheit.*,
tbl_lehrveranstaltung.*,
tbl_lehrveranstaltung.kurzbz as lv_kurzbz,
tbl_lehrveranstaltung.bezeichnung as lv_bezeichnung,
lektoren.lektoren,
lektoren.semesterstunden,
lektoren.planstunden,
fachbereich.fachbereich
FROM lehre.tbl_lehreinheit
LEFT JOIN lehre.tbl_lehrveranstaltung ON tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_lehreinheit.lehrfach_id
LEFT JOIN gruppen ON tbl_lehreinheit.lehreinheit_id = gruppen.lehreinheit_id
LEFT JOIN lektoren ON tbl_lehreinheit.lehreinheit_id = lektoren.lehreinheit_id
LEFT JOIN fachbereich ON tbl_lehreinheit.lehreinheit_id = fachbereich.lehreinheit_id
WHERE tbl_lehreinheit.lehrveranstaltung_id = ?
AND studiensemester_kurzbz = ?
";
$params = array($lv_id, $studiensemester_kurzbz);
if ($mitarbeiter_uid !== null)
{
$qry .= " AND tbl_lehreinheit.lehreinheit_id IN ( SELECT lehreinheit_id FROM lehre.tbl_lehreinheitmitarbeiter WHERE mitarbeiter_uid = ?) ";
$params[] = $mitarbeiter_uid;
}
if($fachbereich_kurzbz !== null)
{
$qry .= " AND EXISTS ( SELECT 1 FROM lehre.tbl_lehrveranstaltung JOIN public.tbl_fachbereich USING(oe_kurzbz) WHERE fachbereich_kurzbz= ? AND lehrveranstaltung_id=tbl_lehreinheit.lehrfach_id)";
$params[] = $fachbereich_kurzbz;
}
$qry .= " ORDER BY lehreinheit_id;";
return $this->execReadOnlyQuery($qry, $params);
}
public function deleteLehreinheit($lehreinheit_id)
{
$lehreinheit = $this->loadWhere(array('lehreinheit_id' => $lehreinheit_id));
@@ -741,4 +626,89 @@ EOSQL;
$this->db->trans_commit();
return success('Contract successfully updated.');
}
private function _getGruppenCTE()
{
return "gruppen AS (
SELECT
lehreinheit_id,
STRING_AGG(
CASE
WHEN (tbl_lehreinheitgruppe.gruppe_kurzbz IS NULL OR tbl_lehreinheitgruppe.gruppe_kurzbz = '')
THEN
UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) ||
COALESCE(TRIM(tbl_lehreinheitgruppe.semester::text), '') ||
COALESCE(TRIM(tbl_lehreinheitgruppe.verband), '') ||
COALESCE(TRIM(tbl_lehreinheitgruppe.gruppe), '')
ELSE
CASE
WHEN NOT tbl_gruppe.direktinskription THEN tbl_lehreinheitgruppe.gruppe_kurzbz
ELSE NULL
END
END,
' '
) AS gruppen
FROM lehre.tbl_lehreinheitgruppe
LEFT JOIN public.tbl_studiengang USING (studiengang_kz)
LEFT JOIN public.tbl_gruppe USING (gruppe_kurzbz)
JOIN lehreinheiten USING(lehreinheit_id)
GROUP BY lehreinheit_id
)";
}
private function _getLektorenCTE()
{
return "mitarbeiter AS (
SELECT
tbl_lehreinheitmitarbeiter.lehreinheit_id,
STRING_AGG(m.kurzbz, ' ') AS lektoren,
STRING_AGG(tbl_person.vorname, ' ') AS vorname,
STRING_AGG(tbl_person.nachname, ' ') AS nachname,
STRING_AGG(tbl_lehreinheitmitarbeiter.semesterstunden::text, ' ') AS semesterstunden,
STRING_AGG(tbl_lehreinheitmitarbeiter.planstunden::text, ' ') AS le_planstunden
FROM lehre.tbl_lehreinheitmitarbeiter
JOIN public.tbl_mitarbeiter m USING (mitarbeiter_uid)
JOIN lehreinheiten USING(lehreinheit_id)
JOIN public.tbl_benutzer ON mitarbeiter_uid = uid
JOIN public.tbl_person ON tbl_benutzer.person_id = tbl_person.person_id
GROUP BY tbl_lehreinheitmitarbeiter.lehreinheit_id
)";
}
private function _getFachbereichCTE()
{
return "fachbereich AS (
SELECT
CONCAT(tbl_organisationseinheit.bezeichnung, ' (', tbl_organisationseinheit.organisationseinheittyp_kurzbz, ')') as bezeichnung,
lehreinheiten.lehreinheit_id
FROM public.tbl_organisationseinheit
JOIN lehre.tbl_lehrveranstaltung AS lehrfach ON tbl_organisationseinheit.oe_kurzbz = lehrfach.oe_kurzbz
JOIN lehre.tbl_lehreinheit ON lehrfach.lehrveranstaltung_id = tbl_lehreinheit.lehrfach_id
JOIN lehreinheiten ON tbl_lehreinheit.lehreinheit_id = lehreinheiten.lehreinheit_id
)";
}
private function _getTagsCTE()
{
return "tag_data_agg AS (
SELECT
lehreinheit_id,
COALESCE(json_agg(tag ORDER BY id), '[]'::json) AS tags
FROM (
SELECT DISTINCT ON (public.tbl_notiz.notiz_id)
tbl_notiz.notiz_id AS id,
typ_kurzbz,
array_to_json(tbl_notiz_typ.bezeichnung_mehrsprachig)->>0 AS beschreibung,
text AS notiz,
style,
erledigt AS done,
lehreinheit_id
FROM public.tbl_notizzuordnung
JOIN public.tbl_notiz ON tbl_notizzuordnung.notiz_id = tbl_notiz.notiz_id
JOIN public.tbl_notiz_typ ON tbl_notiz.typ = tbl_notiz_typ.typ_kurzbz
WHERE lehreinheit_id IN (SELECT lehreinheit_id FROM lehreinheiten)
) AS tag
GROUP BY lehreinheit_id
)";
}
}
@@ -304,7 +304,7 @@ class Lehreinheitgruppe_model extends DB_Model
}
else if ($verband === true)
{
$gruppen_result = $this->_ci->LehrverbandModel->loadWhere(array('gid' => $gid));
$gruppen_result = $this->LehrverbandModel->loadWhere(array('gid' => $gid));
if (!hasData($gruppen_result))
return error('No group found for gid ' . $gid);
@@ -470,6 +470,12 @@ class Lehreinheitgruppe_model extends DB_Model
END AS verplant");
$this->addJoin('tbl_studiengang', 'studiengang_kz', 'LEFT');
$this->addJoin('public.tbl_gruppe', 'gruppe_kurzbz', 'LEFT');
return $this->loadWhere(array('lehreinheit_id' => $lehreinheit_id, 'tbl_gruppe.direktinskription' => false));
$this->db->where('lehreinheit_id', $lehreinheit_id);
$this->db->group_start()
->where('tbl_gruppe.direktinskription !=', true)
->or_where('tbl_gruppe.direktinskription IS NULL')
->group_end();
return $this->load();
}
}
@@ -452,16 +452,6 @@ class Lehrveranstaltung_model extends DB_Model
*/
public function getLvsByStudentWithGrades($student_uid, $studiensemester_kurzbz, $sprache = null, $lvid=null)
{
if ($sprache) {
$sprache_qry = $this->db->compile_binds('SELECT index FROM public.tbl_sprache WHERE sprache = ?', [$sprache]);
$bezeichnung = 'bezeichnung_mehrsprachig[(' . $sprache_qry . ')]';
$sgbezeichnung = $sprache == 'English' ? 'COALESCE(sg.english, sg.bezeichnung)' : 'sg.bezeichnung';
$lvbezeichnung = $sprache == 'English' ? 'COALESCE(v.bezeichnung_english, v.bezeichnung)' : 'v.bezeichnung';
} else {
$bezeichnung = 'bezeichnung';
$sgbezeichnung = 'sg.bezeichnung';
$lvbezeichnung = 'v.bezeichnung';
}
$this->addDistinct();
// TODO(chris): selects
@@ -501,16 +491,20 @@ class Lehrveranstaltung_model extends DB_Model
$this->addSelect('znn.positiv');
#$this->addSelect('splv.module');
$this->addSelect($lvbezeichnung . ' AS bezeichnung');
$this->addSelect($sgbezeichnung . ' AS sg_bezeichnung');
$this->addSelect('v.bezeichnung AS bezeichnung');
$this->addSelect('v.bezeichnung_english AS bezeichnung_eng');
$this->addSelect('sg.bezeichnung AS sg_bezeichnung');
$this->addSelect('sg.english AS sg_bezeichnung_eng');
$this->addSelect('UPPER(sg.typ::VARCHAR(1) || sg.kurzbz) AS studiengang_kuerzel');
//also adds returns the index of the grade
//TODO: ist zeugnissnote immer gleich wie die lvgesamtnote
$this->addSelect('COALESCE(zn.note::numeric,gn.note::numeric) as note_index');
$this->addSelect('COALESCE(znn.positiv,gnn.positiv) as positiv');
$this->addSelect('COALESCE(gnn.' . $bezeichnung . ', gnn.bezeichnung, gn.note::text) AS lvnote');
$this->addSelect('COALESCE(znn.' . $bezeichnung . ', znn.bezeichnung, zn.note::text) AS znote');
$this->addSelect('gnn.bezeichnung_mehrsprachig AS lvnotebez');
$this->addSelect('gnn.note AS lvnote');
$this->addSelect('znn.bezeichnung_mehrsprachig AS znotebez');
$this->addSelect('znn.note AS znote');
// TODO(chris): Potentielle Anpassung "Eine UID"
$this->addJoin('campus.vw_student_lehrveranstaltung v', 'lehrveranstaltung_id');
@@ -989,6 +983,43 @@ class Lehrveranstaltung_model extends DB_Model
return $this->execQuery($qry, $params);
}
/**
* Gets lehrveranstaltungen of Studienplan
* @param $studienplan_id ID des Studienplans
* @param $semester Semester optional
* @return array|null
*/
public function getLvsByStudienplanId($studienplan_id, $semester = null)
{
$params = array($studienplan_id);
$qry = "SELECT tbl_lehrveranstaltung.*,
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id,
tbl_studienplan_lehrveranstaltung.semester as stpllv_semester,
tbl_studienplan_lehrveranstaltung.pflicht as stpllv_pflicht,
tbl_studienplan_lehrveranstaltung.koordinator as stpllv_koordinator,
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent,
tbl_studienplan_lehrveranstaltung.sort stpllv_sort,
tbl_studienplan_lehrveranstaltung.curriculum,
tbl_studienplan_lehrveranstaltung.export,
tbl_studienplan_lehrveranstaltung.genehmigung
FROM lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_studienplan_lehrveranstaltung
USING(lehrveranstaltung_id)
WHERE tbl_studienplan_lehrveranstaltung.studienplan_id = ?
";
if ($semester !== null)
{
$qry.= " AND tbl_studienplan_lehrveranstaltung.semester = ?";
$params[] = $semester;
}
$qry .= " ORDER BY stpllv_sort, semester, sort";
return $this->execQuery($qry, $params);
}
public function getLvsByOrganization($oe_kurzbz)
{
$qry="
@@ -1122,9 +1153,9 @@ class Lehrveranstaltung_model extends DB_Model
$qry .= "
SELECT DISTINCT on(lehrveranstaltung_id) lehrveranstaltung_id,
kurzbz as lv_kurzbz,
bezeichnung as lv_bezeichnung,
bezeichnung_english as lv_bezeichnung_english,
tbl_lehrveranstaltung.kurzbz as lv_kurzbz,
tbl_lehrveranstaltung.bezeichnung as lv_bezeichnung,
tbl_lehrveranstaltung.bezeichnung_english as lv_bezeichnung_english,
studiengang_kz,
semester,
tbl_lehrveranstaltung.sprache,
@@ -1133,7 +1164,7 @@ class Lehrveranstaltung_model extends DB_Model
tbl_lehrveranstaltung.anmerkung,
tbl_lehrveranstaltung.lehre,
lehreverzeichnis as lv_lehreverzeichnis,
aktiv,
tbl_lehrveranstaltung.aktiv,
planfaktor as lv_planfaktor,
planlektoren as lv_planlektoren,
planpersonalkosten as lv_planpersonalkosten,
@@ -1143,9 +1174,11 @@ class Lehrveranstaltung_model extends DB_Model
''::text as studienplan_id,
'' as studienplan_bezeichnung,
'' as studienplan_lehrveranstaltung_id_parent,
tbl_lehrveranstaltung.lehrtyp_kurzbz
tbl_lehrveranstaltung.lehrtyp_kurzbz,
UPPER(CONCAT(tbl_studiengang.typ,tbl_studiengang.kurzbz)) as studiengang
FROM lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_lehreinheit USING (lehrveranstaltung_id)
JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE studiengang_kz = ?
AND studiensemester_kurzbz = ?
";
@@ -1159,7 +1192,7 @@ class Lehrveranstaltung_model extends DB_Model
}
if (!is_null($verband))
{
$qry .= ' AND (orgform_kurzbz = ? OR orgform_kurzbz IS NULL)';
$qry .= ' AND (tbl_lehrveranstaltung.orgform_kurzbz = ? OR tbl_lehrveranstaltung.orgform_kurzbz IS NULL)';
$params[] = $verband;
}
@@ -1178,133 +1211,48 @@ class Lehrveranstaltung_model extends DB_Model
{
return "
SELECT
lehrveranstaltung_id, kurzbz as lv_kurzbz, tbl_lehrveranstaltung.bezeichnung as lv_bezeichnung, bezeichnung_english as lv_bezeichnung_english, studiengang_kz,
lehrveranstaltung_id, tbl_lehrveranstaltung.kurzbz as lv_kurzbz, tbl_lehrveranstaltung.bezeichnung as lv_bezeichnung, bezeichnung_english as lv_bezeichnung_english, studiengang_kz,
tbl_studienplan_lehrveranstaltung.semester, tbl_lehrveranstaltung.sprache,
ects as lv_ects, semesterstunden, anmerkung, lehre, lehreverzeichnis as lv_lehreverzeichnis, tbl_lehrveranstaltung.aktiv,
planfaktor as lv_planfaktor, planlektoren as lv_planlektoren, planpersonalkosten as lv_planpersonalkosten,
plankostenprolektor as lv_plankostenprolektor, lehrform_kurzbz as lv_lehrform_kurzbz, tbl_lehrveranstaltung.orgform_kurzbz,
tbl_studienplan_lehrveranstaltung.studienplan_id::text as studienplan_id, tbl_studienplan.bezeichnung as studienplan_bezeichnung, tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent::text,
tbl_lehrveranstaltung.lehrtyp_kurzbz
tbl_lehrveranstaltung.lehrtyp_kurzbz, UPPER(CONCAT(tbl_studiengang.typ,tbl_studiengang.kurzbz)) as studiengang
FROM
lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_studienplan_lehrveranstaltung USING(lehrveranstaltung_id)
JOIN lehre.tbl_studienplan USING(studienplan_id)
JOIN tbl_studiengang USING(studiengang_kz)
WHERE
tbl_lehrveranstaltung.aktiv AND ((studienplan_id, tbl_studienplan_lehrveranstaltung.semester) IN ( " . implode(',', $placeholders) . "))
UNION
";
}
public function getAllOe($lv_id, $stg_kz = null)
public function getAllOe($lv_id)
{
$qry = "SELECT DISTINCT oe_kurzbz
FROM lehre.tbl_studienplan_lehrveranstaltung
JOIN lehre.tbl_studienplan USING(studienplan_id)
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE lehrveranstaltung_id = ? ";
FROM lehre.tbl_studienplan_lehrveranstaltung
JOIN lehre.tbl_studienplan USING(studienplan_id)
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE lehrveranstaltung_id = ?
$params = array($lv_id);
if (!is_null($stg_kz))
{
$qry .= ' OR studiengang_kz = ?';
$params[] = $stg_kz;
}
UNION
(
SELECT oe_kurzbz
FROM public.tbl_studiengang
WHERE studiengang_kz = (
SELECT tbl_lehrveranstaltung.studiengang_kz
FROM lehre.tbl_lehrveranstaltung
WHERE lehrveranstaltung_id = ?
)
)
";
$params = array($lv_id, $lv_id);
return $this->execReadOnlyQuery($qry, $params);
}
/**
* Gets Lehrveranstaltungen for a student, as needed for a Projektarbeit.
* @param student_uid
* @param studiengang_kz optional, all Lvs of this Studiengang will be included
* @param additional_lehrveranstaltung_id optional, this lv will be added to result
* @return object success or error
*/
public function getLvsForProjektarbeit($student_uid, $studiengang_kz = null, $additional_lehrveranstaltung_id = null)
{
$params = array($student_uid, $student_uid);
$qry = "
SELECT *
FROM
lehre.tbl_lehrveranstaltung
WHERE
(
lehrveranstaltung_id IN (
SELECT
lehrveranstaltung_id
FROM
campus.vw_student_lehrveranstaltung
WHERE
uid=?
UNION
SELECT
lehrveranstaltung_id
FROM
lehre.tbl_zeugnisnote
WHERE
student_uid=?
)";
if (isset($studiengang_kz))
{
$params[] = $studiengang_kz;
$qry .= " OR (studiengang_kz = ? AND semester IS NOT NULL)";
}
if (isset($additional_lehrveranstaltung_id))
{
$params[] = $additional_lehrveranstaltung_id;
$qry .= " OR lehrveranstaltung_id = ?";
}
$qry .= "
)
AND projektarbeit = TRUE
ORDER BY
semester, bezeichnung";
return $this->execQuery($qry, $params);
}
/**
* Gets lehrveranstaltungen of Studienplan
* @param $studienplan_id ID des Studienplans
* @param $semester Semester optional
* @return array|null
*/
public function getLvsByStudienplanId($studienplan_id, $semester = null)
{
$params = array($studienplan_id);
$qry = "SELECT tbl_lehrveranstaltung.*,
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id,
tbl_studienplan_lehrveranstaltung.semester as stpllv_semester,
tbl_studienplan_lehrveranstaltung.pflicht as stpllv_pflicht,
tbl_studienplan_lehrveranstaltung.koordinator as stpllv_koordinator,
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent,
tbl_studienplan_lehrveranstaltung.sort stpllv_sort,
tbl_studienplan_lehrveranstaltung.curriculum,
tbl_studienplan_lehrveranstaltung.export,
tbl_studienplan_lehrveranstaltung.genehmigung
FROM lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_studienplan_lehrveranstaltung
USING(lehrveranstaltung_id)
WHERE tbl_studienplan_lehrveranstaltung.studienplan_id = ?
";
if ($semester !== null)
{
$qry.= " AND tbl_studienplan_lehrveranstaltung.semester = ?";
$params[] = $semester;
}
$qry .= " ORDER BY stpllv_sort, semester, sort";
return $this->execQuery($qry, $params);
}
}
@@ -30,4 +30,35 @@ class Paabgabe_model extends DB_Model
return $this->execQuery($qry, array($projektarbeit_id));
}
/**
* Gets all Paabgabe Termin Deadlines of zugewiesene Projektarbeiten as a Mitarbeiter for Terminübersicht Abgabetool.
* @param int $person_id
* @return object
*/
public function getDeadlines($person_id)
{
$qry = "SELECT
DISTINCT TO_CHAR(tbl_paabgabe.datum, 'DD.MM.YYYY') as datum, tbl_paabgabe.fixtermin, tbl_paabgabe.kurzbz,
person_student.vorname as stud_vorname, person_student.nachname as stud_nachname,
person_student.titelpre as stud_titelpre, person_student.titelpost as stud_titelpost,
tbl_lehrveranstaltung.semester, UPPER(tbl_studiengang.typ || tbl_studiengang.kurzbz) as stg,
tbl_paabgabetyp.bezeichnung as typ_bezeichnung
FROM
campus.tbl_paabgabe
JOIN lehre.tbl_projektarbeit USING(projektarbeit_id)
JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id)
JOIN public.tbl_benutzer bn_student ON(tbl_projektarbeit.student_uid=bn_student.uid)
JOIN public.tbl_person person_student ON(bn_student.person_id=person_student.person_id)
JOIN lehre.tbl_lehreinheit ON(tbl_projektarbeit.lehreinheit_id=tbl_lehreinheit.lehreinheit_id)
JOIN lehre.tbl_lehrveranstaltung ON(tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id)
JOIN public.tbl_studiengang ON(tbl_lehrveranstaltung.studiengang_kz=tbl_studiengang.studiengang_kz)
JOIN campus.tbl_paabgabetyp USING(paabgabetyp_kurzbz)
WHERE
tbl_projektbetreuer.person_id= ? AND tbl_paabgabe.datum>=now() AND bn_student.aktiv
ORDER BY datum";
return $this->execReadOnlyQuery($qry, array($person_id));
}
}
@@ -71,6 +71,198 @@ class Projektarbeit_model extends DB_Model
return $this->execQuery($qry, $params);
}
/**
* Update a Projektarbeit of a student by projektarbeit_id with
* the paramenters used by the student endupload page in cis4 abgabetool.
*/
public function updateProjektarbeit($projektarbeit_id,$sprache,$abstract,$abstract_en,
$schlagwoerter, $schlagwoerter_en,$seitenanzahl)
{
$qry = "UPDATE lehre.tbl_projektarbeit SET
seitenanzahl = ?,
abgabedatum = now(),
sprache = ?,
schlagwoerter_en = ?,
schlagwoerter = ?,
abstract = ?,
abstract_en = ?
WHERE projektarbeit_id = ?";
return $this->execQuery($qry, array($seitenanzahl, $sprache, $schlagwoerter_en,
$schlagwoerter, $abstract, $abstract_en, $projektarbeit_id));
}
/**
* Get a List of Projektarbeiten of a student with betreuer
* used by the student cis4 abgabetool.
*/
public function getStudentProjektarbeitenWithBetreuer($studentUID)
{
$betreuerQuery = "
SELECT
vorname as bvorname,
nachname as bnachname,
titelpre as btitelpre,
titelpost AS btitelpost,
titelpost AS btitelpost,
tbl_betreuerart.beschreibung AS betreuerart_beschreibung,
(SELECT person_id
FROM lehre.tbl_projektbetreuer
WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_person_id,
(SELECT betreuerart_kurzbz
FROM lehre.tbl_projektbetreuer
WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_betreuerart_kurzbz,
(SELECT tbl_betreuerart.beschreibung
FROM lehre.tbl_projektbetreuer JOIN lehre.tbl_betreuerart USING(betreuerart_kurzbz)
WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied') LIMIT 1) AS zweitbetreuer_betreuerart_beschreibung,
tbl_betreuerart.betreuerart_kurzbz,
person_id as bperson_id,
projektarbeit_id,
lehre.tbl_projekttyp.bezeichnung as projekttypbezeichnung,
lehre.tbl_lehreinheit.studiensemester_kurzbz,
lehre.tbl_lehrveranstaltung.studiengang_kz,
public.tbl_studiengang.kurzbzlang,
lehre.tbl_projektbetreuer.note as note,
public.tbl_mitarbeiter.mitarbeiter_uid,
lehre.tbl_projektarbeit.titel as titel,
lehre.tbl_projektarbeit.sprache as sprache,
lehre.tbl_projektarbeit.seitenanzahl as seitenanzahl,
lehre.tbl_projektarbeit.kontrollschlagwoerter as kontrollschlagwoerter,
lehre.tbl_projektarbeit.schlagwoerter as schlagwoerter,
lehre.tbl_projektarbeit.schlagwoerter_en as schlagwoerter_en,
lehre.tbl_projektarbeit.abstract as abstract,
lehre.tbl_projektarbeit.abstract_en as abstract_en,
(SELECT abgeschicktvon FROM extension.tbl_projektarbeitsbeurteilung WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id AND betreuer_person_id = tbl_projektbetreuer.person_id) AS babgeschickt,
(SELECT abgeschicktvon FROM extension.tbl_projektarbeitsbeurteilung WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_abgeschickt,
(SELECT datum FROM campus.tbl_paabgabe WHERE paabgabetyp_kurzbz = 'end' AND abgabedatum IS NOT NULL AND projektarbeit_id = tbl_projektarbeit.projektarbeit_id LIMIT 1) AS abgegeben
FROM lehre.tbl_projektarbeit
LEFT JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id)
LEFT JOIN public.tbl_person USING(person_id)
LEFT JOIN public.tbl_benutzer USING(person_id)
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
LEFT JOIN lehre.tbl_betreuerart USING(betreuerart_kurzbz)
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
LEFT JOIN public.tbl_mitarbeiter ON(public.tbl_mitarbeiter.mitarbeiter_uid = public.tbl_benutzer.uid)
LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE
tbl_projektarbeit.student_uid = ? AND
(projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
AND betreuerart_kurzbz IN ('Betreuer', 'Begutachter', 'Erstbegutachter', 'Senatsvorsitz')";
return $this->execReadOnlyQuery($betreuerQuery, array($studentUID));
}
/**
* Get a List of Projektarbeit Abgabetermin used by the student cis4 abgabetool.
*/
public function getProjektarbeitAbgabetermine($projektarbeit_id) {
$qry ="SELECT campus.tbl_paabgabe.paabgabe_id,
campus.tbl_paabgabe.projektarbeit_id,
campus.tbl_paabgabe.fixtermin,
campus.tbl_paabgabe.kurzbz,
campus.tbl_paabgabe.datum,
campus.tbl_paabgabetyp.paabgabetyp_kurzbz,
campus.tbl_paabgabetyp.bezeichnung,
campus.tbl_paabgabe.abgabedatum,
campus.tbl_paabgabe.insertvon
FROM campus.tbl_paabgabe JOIN campus.tbl_paabgabetyp USING(paabgabetyp_kurzbz)
WHERE campus.tbl_paabgabe.projektarbeit_id = ?
ORDER BY campus.tbl_paabgabe.datum";
return $this->execReadOnlyQuery($qry, array($projektarbeit_id));
}
public function getProjektbetreuerAnrede($bperson_id) {
$qry_betr="SELECT distinct trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as first,
public.tbl_mitarbeiter.mitarbeiter_uid, anrede
FROM public.tbl_person JOIN lehre.tbl_projektbetreuer ON(lehre.tbl_projektbetreuer.person_id=public.tbl_person.person_id)
JOIN public.tbl_benutzer ON(public.tbl_benutzer.person_id=public.tbl_person.person_id)
JOIN public.tbl_mitarbeiter ON(public.tbl_benutzer.uid=public.tbl_mitarbeiter.mitarbeiter_uid)
WHERE public.tbl_person.person_id= ?";
return $this->execReadOnlyQuery($qry_betr, [$bperson_id]);
}
public function getProjektarbeitBenutzer($uid) {
$qry="SELECT * FROM campus.vw_benutzer where uid=?";
return $this->execReadOnlyQuery($qry, [$uid]);
}
/**
* Checks if mitarbeiter has a projektbetreuer zuordnung to student.
*/
public function checkZuordnung($studentUID, $maUID) {
//oder Lektor mit Betreuung dieses Studenten
$qry = "
SELECT 1
FROM
lehre.tbl_projektarbeit
JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id)
JOIN campus.vw_benutzer on(vw_benutzer.person_id=tbl_projektbetreuer.person_id)
WHERE
tbl_projektarbeit.student_uid = ? AND
vw_benutzer.uid = ?";
return $this->execReadOnlyQuery($qry, array($studentUID, $maUID));
}
/**
* Get a List of Projektarbeiten of a mitarbeiter with zuordnung
* used by the mitarbeiter cis4 abgabetool.
*/
public function getMitarbeiterProjektarbeiten($uid, $showAll){
$qry = "SELECT
*
FROM
(SELECT tbl_person.vorname, tbl_person.nachname, tbl_studiengang.typ, tbl_studiengang.kurzbz,
tbl_projektarbeit.projekttyp_kurzbz, tbl_projekttyp.bezeichnung, tbl_projektarbeit.titel, tbl_projektarbeit.projektarbeit_id,
tbl_projektbetreuer.betreuerart_kurzbz, tbl_betreuerart.beschreibung AS betreuerart_beschreibung,
tbl_benutzer.uid, tbl_student.matrikelnr, tbl_lehreinheit.studiensemester_kurzbz
FROM lehre.tbl_projektarbeit
LEFT JOIN lehre.tbl_projektbetreuer using(projektarbeit_id)
LEFT JOIN lehre.tbl_betreuerart using(betreuerart_kurzbz)
LEFT JOIN public.tbl_benutzer on(uid=student_uid)
LEFT JOIN public.tbl_student on(public.tbl_benutzer.uid=public.tbl_student.student_uid)
LEFT JOIN public.tbl_person on(tbl_benutzer.person_id=tbl_person.person_id)
LEFT JOIN lehre.tbl_lehreinheit using(lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung using(lehrveranstaltung_id)
LEFT JOIN public.tbl_studiengang on(lehre.tbl_lehrveranstaltung.studiengang_kz=public.tbl_studiengang.studiengang_kz)
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
AND tbl_projektbetreuer.person_id IN (SELECT person_id FROM public.tbl_benutzer
WHERE public.tbl_benutzer.person_id=lehre.tbl_projektbetreuer.person_id
AND public.tbl_benutzer.uid= ? )
".($showAll?'':' AND public.tbl_benutzer.aktiv AND lehre.tbl_projektarbeit.note IS NULL ')."
AND betreuerart_kurzbz IN ('Betreuer', 'Begutachter', 'Erstbegutachter', 'Zweitbegutachter', 'Erstbetreuer', 'Senatsvorsitz', 'Senatsmitglied')
ORDER BY tbl_projektarbeit.projektarbeit_id, betreuerart_kurzbz desc) as xy
ORDER BY nachname;";
return $this->execReadOnlyQuery($qry, array($uid));
}
/**
* Fetch Student info relevant to a projektarbeit_id
*/
public function getStudentInfoForProjektarbeitId($projektarbeit_id) {
$qry = "SELECT *
FROM campus.vw_student
WHERE uid IN(
SELECT student_uid
FROM lehre.tbl_projektarbeit
WHERE projektarbeit_id = ? )";
return $this->execReadOnlyQuery($qry, array($projektarbeit_id));
}
/**
*
* @param
@@ -709,24 +709,38 @@ class Studiengang_model extends DB_Model
if (isError($stg_ltg))
return $stg_ltg;
$stg_ltg = getData($stg_ltg) ?: [];
$stg_ltg = array_values(array_filter($stg_ltg, function($stg_leitung){
return $stg_leitung->aktiv;
}));
$addFotoProperty($stg_ltg);
$gf_ltg = $this->BenutzerfunktionModel->getBenutzerFunktionenDetailed('gLtg', $stg_obj->oe_kurzbz);
if (isError($gf_ltg))
return $gf_ltg;
$gf_ltg = getData($gf_ltg) ?: [];
$gf_ltg = array_values(array_filter($gf_ltg, function($gf_leitung){
return $gf_leitung->aktiv;
}));
$addEmailProperty($gf_ltg);
$addFotoProperty($gf_ltg);
$stv_ltg = $this->BenutzerfunktionModel->getBenutzerFunktionenDetailed('stvLtg', $stg_obj->oe_kurzbz);
if (isError($stv_ltg))
return $stv_ltg;
$stv_ltg = getData($stv_ltg) ?: [];
$stv_ltg = array_values(array_filter($stv_ltg, function($stv_leitung){
return $stv_leitung->aktiv;
}));
$addEmailProperty($stv_ltg);
$addFotoProperty($stv_ltg);
$ass = $this->BenutzerfunktionModel->getBenutzerFunktionenDetailed('ass', $stg_obj->oe_kurzbz);
if (isError($ass))
return $ass;
$ass = getData($ass) ?: [];
$ass = array_values(array_filter($ass, function($assistenz){
return $assistenz->aktiv;
}));
$addEmailProperty($ass);
$addFotoProperty($ass);
@@ -734,6 +748,9 @@ class Studiengang_model extends DB_Model
if (isError($hochschulvertr))
return $hochschulvertr;
$hochschulvertr = getData($hochschulvertr) ?: [];
$hochschulvertr = array_values(array_filter($hochschulvertr, function($hochschul_vertreter){
return $hochschul_vertreter->aktiv;
}));
$addEmailProperty($hochschulvertr);
@@ -741,6 +758,9 @@ class Studiengang_model extends DB_Model
if (isError($stdv))
return $stdv;
$stdv = getData($stdv) ?: [];
$stdv = array_values(array_filter($stdv, function($std_vertreter){
return $std_vertreter->aktiv;
}));
$addEmailProperty($stdv);
@@ -748,6 +768,9 @@ class Studiengang_model extends DB_Model
if (isError($jahrgangsvertr))
return $jahrgangsvertr;
$jahrgangsvertr = getData($jahrgangsvertr) ?: [];
$jahrgangsvertr = array_values(array_filter($jahrgangsvertr, function($jahrgang_vertreter){
return $jahrgang_vertreter->aktiv;
}));
$addEmailProperty($jahrgangsvertr);
@@ -107,6 +107,8 @@ class Studienplan_model extends DB_Model
));
}
// Deprecated
// im Lehrveranstaltung_model vorhanden
public function getAllOesForLv($lehrveranstaltung_id)
{
$this->addDistinct('oe_kurzbz');
@@ -167,5 +169,4 @@ class Studienplan_model extends DB_Model
'person_id' => $person_id
]);
}
}
@@ -341,4 +341,10 @@ class Studiensemester_model extends DB_Model
WHERE studiensemester_kurzbz = ?",[$studiensemester_kurzbz]);
}
public function isValidStudiensemester($studiensemester_kurzbz)
{
$result = $this->load($studiensemester_kurzbz);
return hasData($result);
}
}
+52 -51
View File
@@ -153,57 +153,58 @@ class Notiz_model extends DB_Model
*/
public function getNotizWithDocEntries($id, $type, $withoutTags = true)
{
$withoutTagsClause = $withoutTags ? " AND n.typ IS NULL" : "";
$qry = "
SELECT
n.*,
CASE
WHEN person_verfasser.vorname IS NOT NULL AND person_verfasser.vorname != ''
OR person_verfasser.nachname IS NOT NULL AND person_verfasser.nachname != ''
THEN CONCAT(person_verfasser.vorname, ' ', person_verfasser.nachname)
ELSE NULL
END AS verfasser,
CASE
WHEN person_bearbeiter.vorname IS NOT NULL AND person_bearbeiter.vorname != ''
OR person_bearbeiter.nachname IS NOT NULL AND person_bearbeiter.nachname != ''
THEN CONCAT(person_bearbeiter.vorname, ' ', person_bearbeiter.nachname)
ELSE NULL
END AS bearbeiter,
count(dms_id) as countDoc, z.notizzuordnung_id,
(CASE
WHEN n.updateamum >= n.insertamum THEN n.updateamum
ELSE n.insertamum
END) AS lastUpdate,
regexp_replace(n.text, '<[^>]*>', '', 'g') as text_stripped,
TO_CHAR(n.start::timestamp, 'DD.MM.YYYY') AS start_format,
TO_CHAR(n.ende::timestamp, 'DD.MM.YYYY') AS ende_format,
z.notiz_id, z.person_id as id, ? as type_id
FROM
public.tbl_notiz n
JOIN
public.tbl_notizzuordnung z USING (notiz_id)
LEFT JOIN
public.tbl_notiz_dokument dok USING (notiz_id)
LEFT JOIN
campus.tbl_dms_version USING (dms_id)
LEFT JOIN
public.tbl_benutzer p_verfasser ON (p_verfasser.uid = n.verfasser_uid)
LEFT JOIN
public.tbl_person person_verfasser ON (person_verfasser.person_id = p_verfasser.person_id)
LEFT JOIN
public.tbl_benutzer p_bearbeiter ON (p_bearbeiter.uid = n.bearbeiter_uid)
LEFT JOIN
public.tbl_person person_bearbeiter ON (person_bearbeiter.person_id = p_bearbeiter.person_id)
WHERE
z.{$type} = ?
{$withoutTagsClause}
GROUP BY
notiz_id, z.notizzuordnung_id,
person_verfasser.vorname, person_verfasser.nachname,
person_bearbeiter.vorname, person_bearbeiter.nachname
";
$qry = "
SELECT
n.*,
CASE
WHEN person_verfasser.vorname IS NOT NULL AND person_verfasser.vorname != ''
OR person_verfasser.nachname IS NOT NULL AND person_verfasser.nachname != ''
THEN CONCAT(person_verfasser.vorname, ' ', person_verfasser.nachname)
ELSE NULL
END AS verfasser,
CASE
WHEN person_bearbeiter.vorname IS NOT NULL AND person_bearbeiter.vorname != ''
OR person_bearbeiter.nachname IS NOT NULL AND person_bearbeiter.nachname != ''
THEN CONCAT(person_bearbeiter.vorname, ' ', person_bearbeiter.nachname)
ELSE NULL
END AS bearbeiter,
count(dms_id) as countDoc, z.notizzuordnung_id,
(CASE
WHEN n.updateamum >= n.insertamum THEN n.updateamum
ELSE n.insertamum
END) AS lastUpdate,
regexp_replace(n.text, '<[^>]*>', '', 'g') as text_stripped,
TO_CHAR(n.start::timestamp, 'DD.MM.YYYY') AS start_format,
TO_CHAR(n.ende::timestamp, 'DD.MM.YYYY') AS ende_format,
z.notiz_id, z.person_id as id, ? as type_id
FROM
public.tbl_notiz n
JOIN
public.tbl_notizzuordnung z USING (notiz_id)
LEFT JOIN
public.tbl_notiz_dokument dok USING (notiz_id)
LEFT JOIN
campus.tbl_dms_version USING (dms_id)
LEFT JOIN
public.tbl_benutzer p_verfasser ON (p_verfasser.uid = n.verfasser_uid)
LEFT JOIN
public.tbl_person person_verfasser ON (person_verfasser.person_id = p_verfasser.person_id)
LEFT JOIN
public.tbl_benutzer p_bearbeiter ON (p_bearbeiter.uid = n.bearbeiter_uid)
LEFT JOIN
public.tbl_person person_bearbeiter ON (person_bearbeiter.person_id = p_bearbeiter.person_id)
WHERE
z.$type = ?";
if ($withoutTags)
$qry .= " AND n.typ IS NULL ";
$qry .= "GROUP BY
notiz_id, z.notizzuordnung_id,
person_verfasser.vorname, person_verfasser.nachname,
person_bearbeiter.vorname, person_bearbeiter.nachname
";
return $this->execQuery($qry, array($type, $id));
}
@@ -402,20 +402,6 @@ class Mitarbeiter_model extends DB_Model
return $this->execQuery($qry, $parametersArray);
}
public function isLehrauftragFirma($mitarbeiter_uid)
{
$this->addSelect('firma_id');
$this->addJoin('public.tbl_benutzer', 'uid = mitarbeiter_uid');
$this->addJoin('public.tbl_person', 'person_id');
$this->addJoin('public.tbl_adresse', 'person_id', 'LEFT');
$this->addOrder('zustelladresse', 'DESC');
$this->addOrder('firma_id');
$this->addLimit(1);
$firma_result = $this->loadWhere(array('mitarbeiter_uid' => $mitarbeiter_uid));
$firma = getData($firma_result)[0]->firma_id;
return !is_null($firma);
}
/**
* Get Lektoren by studiengang_kz
*
@@ -444,4 +430,18 @@ class Mitarbeiter_model extends DB_Model
return $this->execQuery($qry, $parametersArray);
}
public function isLehrauftragFirma($mitarbeiter_uid)
{
$this->addSelect('firma_id');
$this->addJoin('public.tbl_benutzer', 'uid = mitarbeiter_uid');
$this->addJoin('public.tbl_person', 'person_id');
$this->addJoin('public.tbl_adresse', 'person_id', 'LEFT');
$this->addOrder('zustelladresse', 'DESC');
$this->addOrder('firma_id');
$this->addLimit(1);
$firma_result = $this->loadWhere(array('mitarbeiter_uid' => $mitarbeiter_uid));
$firma = getData($firma_result)[0]->firma_id;
return !is_null($firma);
}
}
@@ -21,7 +21,7 @@ class Reservierung_model extends DB_Model
public function getReservierungen($start_date, $end_date, $ort_kurzbz = null)
{
$stundenplan_reservierungen_query="SELECT r.* , stund.beginn, stund.ende,
$lvplan_reservierungen_query="SELECT r.* , stund.beginn, stund.ende,
CASE
WHEN r.gruppe_kurzbz IS NOT NULL THEN r.gruppe_kurzbz
ELSE CONCAT(UPPER(studg.typ),UPPER(studg.kurzbz),'-',COALESCE(CAST(r.semester AS varchar),'/'),COALESCE(CAST(r.verband AS varchar),'/'))
@@ -46,7 +46,7 @@ class Reservierung_model extends DB_Model
JOIN lehre.tbl_stunde ON lehre.tbl_stunde.stunde = res.stunde
WHERE res.ort_kurzbz = ? AND datum >= ? AND datum <= ?";
$subquery = is_null($ort_kurzbz)? $stundenplan_reservierungen_query:$raum_reservierungen_query;
$subquery = is_null($ort_kurzbz)? $lvplan_reservierungen_query:$raum_reservierungen_query;
$query_result= $this->execReadOnlyQuery("
SELECT
@@ -89,7 +89,7 @@ class Reservierung_model extends DB_Model
JOIN lehre.tbl_stunde ON lehre.tbl_stunde.stunde = res.stunde
WHERE res.uid = ? AND datum >= ? AND datum <= ?";
// $subquery = is_null($ort_kurzbz)? $stundenplan_reservierungen_query:$raum_reservierungen_query;
// $subquery = is_null($ort_kurzbz)? $lvplan_reservierungen_query:$raum_reservierungen_query;
$subquery = $raum_reservierungen_query;
@@ -11,4 +11,19 @@ class Stunde_model extends DB_Model
$this->dbTable = 'lehre.tbl_stunde';
$this->pk = 'stunde';
}
/**
* $time needs to be of PGSQL TIME format
*/
public function getStundeForTime($time) {
$query = "
SELECT min(stunde) as stunde FROM (
SELECT stunde, extract(epoch from (beginn-?)) AS delta FROM lehre.tbl_stunde
UNION
SELECT stunde, extract(epoch from (ende-?)) AS delta FROM lehre.tbl_stunde
) foo WHERE delta>=0
";
return $this->execReadOnlyQuery($query, [$time, $time]);
}
}
@@ -177,7 +177,7 @@ class Stundenplan_model extends DB_Model
) as subquery
GROUP BY unr, datum, beginn, ende, ort_kurzbz, titel, lehrform, lehrfach, lehrfach_bez, organisationseinheit, farbe, lehrveranstaltung_id
GROUP BY unr, datum, beginn, ende, titel, lehrform, lehrfach, lehrfach_bez, organisationseinheit, farbe, lehrveranstaltung_id
ORDER BY datum, beginn
");
@@ -327,7 +327,7 @@ class Stundenplan_model extends DB_Model
) as subquery
GROUP BY unr, datum, beginn, ende, ort_kurzbz, titel, lehrform, lehrfach, lehrfach_bez, organisationseinheit, farbe, lehrveranstaltung_id
GROUP BY unr, datum, beginn, ende, titel, lehrform, lehrfach, lehrfach_bez, organisationseinheit, farbe, lehrveranstaltung_id
ORDER BY datum, beginn
", [$start_date, $end_date, $lv_id]);
@@ -384,7 +384,7 @@ class Stundenplan_model extends DB_Model
) as subquery
GROUP BY unr, datum, beginn, ende, ort_kurzbz, titel, lehrform, lehrfach, lehrfach_bez, organisationseinheit, farbe, lehrveranstaltung_id
GROUP BY unr, datum, beginn, ende, titel, lehrform, lehrfach, lehrfach_bez, organisationseinheit, farbe, lehrveranstaltung_id
ORDER BY datum, beginn", [$start_date, $end_date, $ma_uid]);
}
@@ -223,13 +223,14 @@ class Stundenplandev_model extends DB_Model
public function deleteLektorPlanning($lehreinheit_id, $mitarbeiter_uid)
{
$this->addDistinct('mitarbeiter_uid');
//TODO (david) prüfen ob der check notwendig ist
/*$this->addDistinct('mitarbeiter_uid');
$this->addSelect('mitarbeiter_uid');
$stundenplan_result = $this->loadWhere(array('lehreinheit_id' => $lehreinheit_id));
$stundenplan_array = hasData($stundenplan_result) ? (getData($stundenplan_result)) : array();
if (sizeof($stundenplan_array) <= 1)
return error('Diese/r LektorIn kann nicht aus dem LVPlan entfernt werden da dies der/die letzte verplante LektorIn ist');
return error('Diese/r LektorIn kann nicht aus dem LVPlan entfernt werden da dies der/die letzte verplante LektorIn ist');*/
$this->addJoin('lehre.tbl_stundenplan_betriebsmittel', 'stundenplandev_id');
$betriebsmittel_result = $this->loadWhere(array('lehreinheit_id' => $lehreinheit_id, 'tbl_stundenplandev.mitarbeiter_uid' => $mitarbeiter_uid));