mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-04 20:39:28 +00:00
MyLv
This commit is contained in:
@@ -41,4 +41,38 @@ class Lehreinheitmitarbeiter_model extends DB_Model
|
||||
return error ('Incorrect parameter type');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param integer $lehrveranstaltung_id
|
||||
* @param string $studiensemester_kurzbz
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function getForLv($lehrveranstaltung_id, $studiensemester_kurzbz)
|
||||
{
|
||||
$this->addSelect('ma.uid, ma.vorname, ma.nachname, ma.titelpre, ma.titelpost, lehrfunktion_kurzbz');
|
||||
$this->addGroupBy('ma.uid, ma.vorname, ma.nachname, ma.titelpre, ma.titelpost, lehrfunktion_kurzbz');
|
||||
|
||||
$this->addJoin('lehre.tbl_lehreinheit le', 'lehreinheit_id');
|
||||
$this->addJoin('campus.vw_mitarbeiter ma', $this->dbTable . '.mitarbeiter_uid=ma.uid');
|
||||
|
||||
$this->addOrder('nachname');
|
||||
$this->addOrder('vorname');
|
||||
|
||||
if (defined('CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON') && CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON != '')
|
||||
{
|
||||
$this->addJoin('(SELECT vertrag_id, CASE WHEN vertragsstatus_kurzbz=\'storno\' THEN 0 WHEN vertragsstatus_kurzbz=\'erteilt\' THEN 1 ELSE 2 END AS vertragsstatus_kurzbz FROM lehre.tbl_vertrag_vertragsstatus) v', 'vertrag_id', 'LEFT');
|
||||
$having = $this->db->compile_binds('(EXISTS (SELECT 1 FROM public.tbl_studiensemester WHERE studiensemester_kurzbz=? AND tbl_studiensemester.start < (SELECT start FROM public.tbl_studiensemester stsem WHERE stsem.studiensemester_kurzbz=?)) OR MIN(vertragsstatus_kurzbz)=1)', [
|
||||
$studiensemester_kurzbz,
|
||||
CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON
|
||||
]);
|
||||
$this->db->having($having);
|
||||
}
|
||||
|
||||
return $this->loadWhere([
|
||||
'lehrveranstaltung_id' => $lehrveranstaltung_id,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -231,6 +231,104 @@ class Lehrveranstaltung_model extends DB_Model
|
||||
return $this->execQuery($qry, $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets Lehrveranstaltungen of a student with grades if available
|
||||
*
|
||||
* @param string $student_uid
|
||||
* @param string $studiensemester_kurzbz
|
||||
* @param string|null $sprache
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function getLvsByStudentWithGrades($student_uid, $studiensemester_kurzbz, $sprache = 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
|
||||
/*
|
||||
semester (?)
|
||||
module
|
||||
bezeichnung
|
||||
sg_bezeichnung
|
||||
studiengang_kuerzel
|
||||
lvnote
|
||||
znote
|
||||
studiengang_kz
|
||||
lehrveranstaltung_id
|
||||
benotung
|
||||
lvinfo
|
||||
farbe
|
||||
|
||||
sprache (?)
|
||||
ects (?)
|
||||
incoming (?)
|
||||
orgform_kurzbz (?)
|
||||
*/
|
||||
// TODO(chris): module or kf
|
||||
#$this->addSelect($this->dbTable . '.*');
|
||||
$this->addSelect('v.*');
|
||||
$this->addSelect($this->dbTable . '.benotung');
|
||||
$this->addSelect($this->dbTable . '.lvinfo');
|
||||
$this->addSelect($this->dbTable . '.farbe');
|
||||
$this->addSelect($this->dbTable . '.incoming');
|
||||
$this->addSelect($this->dbTable . '.orgform_kurzbz');
|
||||
$this->addSelect('v.studiengang_kz');
|
||||
$this->addSelect('v.lehrveranstaltung_id');
|
||||
$this->addSelect('v.semester');
|
||||
|
||||
$this->addSelect('v.sprache');
|
||||
$this->addSelect('v.ects');
|
||||
|
||||
#$this->addSelect('splv.module');
|
||||
$this->addSelect($lvbezeichnung . ' AS bezeichnung');
|
||||
$this->addSelect($sgbezeichnung . ' AS sg_bezeichnung');
|
||||
$this->addSelect('UPPER(sg.typ::VARCHAR(1) || sg.kurzbz) AS studiengang_kuerzel');
|
||||
|
||||
$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->addJoin('campus.vw_student_lehrveranstaltung v', 'lehrveranstaltung_id');
|
||||
$this->addJoin('public.tbl_studiengang sg', $this->dbTable . '.studiengang_kz = sg.studiengang_kz');
|
||||
$this->db->where("v.lehreverzeichnis<>''");
|
||||
|
||||
$this->addJoin('campus.tbl_lvgesamtnote gn', 'gn.lehrveranstaltung_id=v.lehrveranstaltung_id AND gn.student_uid=v.uid AND gn.studiensemester_kurzbz=v.studiensemester_kurzbz', 'LEFT');
|
||||
$this->addJoin('lehre.tbl_note gnn', 'gn.note=gnn.note', 'LEFT');
|
||||
|
||||
$this->addJoin('lehre.tbl_zeugnisnote zn', 'zn.lehrveranstaltung_id=v.lehrveranstaltung_id AND zn.student_uid=v.uid AND zn.studiensemester_kurzbz=v.studiensemester_kurzbz', 'LEFT');
|
||||
$this->addJoin('lehre.tbl_note znn', 'zn.note=znn.note', 'LEFT');
|
||||
|
||||
/*if (!defined("CIS_PROFIL_STUDIENPLAN_MODULE_AUSBLENDEN") || !CIS_PROFIL_STUDIENPLAN_MODULE_AUSBLENDEN) {
|
||||
$modulebezeichnung = str_replace('v.', 'm.', $lvbezeichnung);
|
||||
$modulesql = '
|
||||
LEFT JOIN lehre.tbl_studienplan_lehrveranstaltung p ON(lv.studienplan_lehrveranstaltung_id_parent=p.studienplan_lehrveranstaltung_id)
|
||||
LEFT JOIN lehre.tbl_lehrveranstaltung m ON(m.lehrveranstaltung_id = p.lehrveranstaltung_id)';
|
||||
} else {
|
||||
$modulebezeichnung = 'NULL';
|
||||
$modulesql = '';
|
||||
}
|
||||
|
||||
$this->addJoin('(
|
||||
SELECT lv.lehrveranstaltung_id, sps.studiensemester_kurzbz, so.studiengang_kz, lv.semester, ' . $modulebezeichnung . ' AS module
|
||||
FROM lehre.tbl_studienplan_lehrveranstaltung lv
|
||||
LEFT JOIN lehre.tbl_studienplan sp ON(sp.studienplan_id=lv.studienplan_id)
|
||||
JOIN lehre.tbl_studienplan_semester sps ON(sp.studienplan_id=sps.studienplan_id AND sps.semester=lv.semester)
|
||||
JOIN lehre.tbl_studienordnung so ON(so.studienordnung_id=sp.studienordnung_id)
|
||||
' . $modulesql . '
|
||||
) splv', 'splv.lehrveranstaltung_id=v.lehrveranstaltung_id AND splv.studiensemester_kurzbz=v.studiensemester_kurzbz AND splv.studiengang_kz=v.studiengang_kz', 'LEFT');*/
|
||||
|
||||
return $this->loadWhere(['v.uid' => $student_uid, 'v.lehre' => true, 'v.studiensemester_kurzbz' => $studiensemester_kurzbz]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets valid Lehrveranstaltungen with incoming places for a Studiensemester.
|
||||
* Only
|
||||
@@ -471,4 +569,76 @@ class Lehrveranstaltung_model extends DB_Model
|
||||
|
||||
return $this->execQuery($qry, array($student_uid));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param integer $lehrveranstaltung_id
|
||||
* @param string $studiensemester_kurzbz
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function getKoordinator($lehrveranstaltung_id, $studiensemester_kurzbz = null)
|
||||
{
|
||||
$binds = [
|
||||
$lehrveranstaltung_id,
|
||||
$lehrveranstaltung_id,
|
||||
$lehrveranstaltung_id,
|
||||
$lehrveranstaltung_id
|
||||
];
|
||||
$qry = "
|
||||
SELECT
|
||||
a.uid, vorname, nachname, titelpre, titelpost
|
||||
FROM (
|
||||
SELECT
|
||||
koordinator as uid
|
||||
FROM
|
||||
lehre.tbl_lehrveranstaltung
|
||||
WHERE
|
||||
lehrveranstaltung_id = ?
|
||||
UNION
|
||||
SELECT
|
||||
uid
|
||||
FROM
|
||||
lehre.tbl_lehreinheit
|
||||
JOIN lehre.tbl_lehrveranstaltung AS lehrfach ON(tbl_lehreinheit.lehrfach_id = lehrfach.lehrveranstaltung_id)
|
||||
JOIN public.tbl_fachbereich ON(lehrfach.oe_kurzbz=tbl_fachbereich.oe_kurzbz)
|
||||
JOIN public.tbl_benutzerfunktion ON(tbl_fachbereich.fachbereich_kurzbz=tbl_benutzerfunktion.fachbereich_kurzbz)
|
||||
WHERE
|
||||
tbl_benutzerfunktion.funktion_kurzbz='fbk'
|
||||
AND (tbl_benutzerfunktion.datum_von IS null OR tbl_benutzerfunktion.datum_von <= now())
|
||||
AND (tbl_benutzerfunktion.datum_bis IS null OR tbl_benutzerfunktion.datum_bis >= now())
|
||||
AND tbl_lehreinheit.lehrveranstaltung_id = ?
|
||||
AND tbl_benutzerfunktion.oe_kurzbz = (
|
||||
SELECT
|
||||
tbl_studiengang.oe_kurzbz
|
||||
FROM
|
||||
lehre.tbl_lehrveranstaltung
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
WHERE lehrveranstaltung_id = ?
|
||||
)
|
||||
AND EXISTS (
|
||||
SELECT
|
||||
lehrveranstaltung_id
|
||||
FROM
|
||||
lehre.tbl_lehrveranstaltung
|
||||
WHERE
|
||||
lehrveranstaltung_id = ?
|
||||
AND koordinator IS null
|
||||
)
|
||||
";
|
||||
|
||||
if ($studiensemester_kurzbz !== null)
|
||||
{
|
||||
$qry .= " AND tbl_lehreinheit.studiensemester_kurzbz = ?";
|
||||
$binds[] = $studiensemester_kurzbz;
|
||||
}
|
||||
|
||||
$qry .= "
|
||||
) AS a
|
||||
JOIN campus.vw_mitarbeiter ON(a.uid=vw_mitarbeiter.uid)
|
||||
WHERE vw_mitarbeiter.aktiv
|
||||
";
|
||||
|
||||
return $this->execQuery($qry, $binds);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -36,4 +36,34 @@ class Pruefung_model extends DB_Model
|
||||
|
||||
return $this->execQuery($qry, array($person_id, $studiensemester_kurzbz));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets Pruefungen of a student for a Lehrveranstaltung.
|
||||
*
|
||||
* @param string $uid
|
||||
* @param string $lehrveranstaltung_id
|
||||
* @param string|null $lehrveranstaltung_id
|
||||
*
|
||||
* @return object
|
||||
*/
|
||||
public function getByStudentAndLv($uid, $lehrveranstaltung_id, $sprache = null)
|
||||
{
|
||||
$this->dbTable = 'lehre.tbl_pruefung';
|
||||
|
||||
if ($sprache) {
|
||||
$sprache_qry = $this->db->compile_binds('SELECT index FROM public.tbl_sprache WHERE sprache = ?', [$sprache]);
|
||||
$bezeichnung = 'bezeichnung_mehrsprachig[(' . $sprache_qry . ')]';
|
||||
} else {
|
||||
$bezeichnung = 'bezeichnung';
|
||||
}
|
||||
|
||||
$this->addSelect($this->dbTable . '.pruefung_id, ' . $this->dbTable . '.pruefungstyp_kurzbz, ' . $this->dbTable . '.datum, COALESCE(n.' . $bezeichnung . ', n.note::text) AS note');
|
||||
|
||||
$this->addJoin('lehre.tbl_lehreinheit le', 'lehreinheit_id');
|
||||
$this->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id');
|
||||
$this->addJoin('lehre.tbl_note n', 'note');
|
||||
|
||||
return $this->loadWhere(['lehrveranstaltung_id' => $lehrveranstaltung_id, 'student_uid' => $uid]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -188,4 +188,18 @@ class Organisationseinheit_model extends DB_Model
|
||||
}
|
||||
return $this->loadWhere($condition);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $oe_kurzbz
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function getWithType($oe_kurzbz)
|
||||
{
|
||||
$this->addSelect($this->dbTable . '.*, t.bezeichnung AS organisationseinheittyp');
|
||||
$this->addJoin('public.tbl_organisationseinheittyp t', 'organisationseinheittyp_kurzbz');
|
||||
|
||||
return $this->load($oe_kurzbz);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -204,4 +204,22 @@ class Studiensemester_model extends DB_Model
|
||||
|
||||
return $this->execQuery($query, array($studiensemester_kurzbz));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $student_uid
|
||||
*
|
||||
* @return StdClass
|
||||
*/
|
||||
public function getWhereStudentHasLvs($student_uid)
|
||||
{
|
||||
$this->addDistinct();
|
||||
$this->addSelect($this->dbTable . '.*');
|
||||
|
||||
$this->addJoin('campus.vw_student_lehrveranstaltung v', 'studiensemester_kurzbz');
|
||||
$this->db->where("v.lehreverzeichnis<>''");
|
||||
|
||||
$this->addOrder($this->dbTable . '.start');
|
||||
|
||||
return $this->loadWhere(['uid' => $student_uid, 'v.lehre' => true]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,4 +11,19 @@ class Sprache_model extends DB_Model
|
||||
$this->dbTable = 'public.tbl_sprache';
|
||||
$this->pk = 'sprache';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $sprachen
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function loadMultiple($sprachen)
|
||||
{
|
||||
$this->db->where_in('sprache', $sprachen);
|
||||
|
||||
$this->addOrder('index');
|
||||
|
||||
return $this->load();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user