diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php
index 6b3f848aa..c55ce8e10 100644
--- a/application/models/education/Lehrveranstaltung_model.php
+++ b/application/models/education/Lehrveranstaltung_model.php
@@ -11,4 +11,164 @@ class Lehrveranstaltung_model extends DB_Model
$this->dbTable = 'lehre.tbl_lehrveranstaltung';
$this->pk = 'lehrveranstaltung_id';
}
+
+ /**
+ * Gets unique Groupstrings for Lehrveranstaltungen, e.g. WS2018_BIF_1_PRJM_VZ_LV12345
+ * @param $studiensemester_kurzbz
+ * @param null $ausbildungssemester
+ * @param null $studiengang_kz
+ * @param null $lehrveranstaltung_ids
+ * @return StdClass
+ */
+ public function getLehrveranstaltungGroupNames($studiensemester_kurzbz, $ausbildungssemester = null, $studiengang_kz = null, $lehrveranstaltung_ids = null)
+ {
+ $this->load->model('system/studiensemester_model', 'StudiensemesterModel');
+ $this->load->model('organisation/studiengang_model', 'StudiengangModel');
+
+ $studiengang_kz_arr = array();
+ $ausbildungssemester_arr = array();
+ $lehrveranstaltung_id_arr = array();
+
+ if (is_numeric($studiengang_kz))
+ {
+ $studiengang_kz_arr[] = $studiengang_kz;
+ }
+ elseif (is_array($studiengang_kz))
+ {
+ $studiengang_kz_arr = $studiengang_kz;
+ }
+ else
+ {
+ $studiengangdata = $this->StudiengangModel->getStudiengaengeByStudiensemester($studiensemester_kurzbz);
+
+ if (!hasData($studiengangdata))
+ show_error('no studiengaenge retrieved');
+
+ foreach ($studiengangdata->retval as $studiengang)
+ {
+ $studiengang_kz_arr[] = $studiengang->studiengang_kz;
+ }
+ }
+
+ if (is_numeric($ausbildungssemester))
+ {
+ $ausbildungssemester_arr[] = $ausbildungssemester;
+ }
+ elseif (is_array($ausbildungssemester))
+ {
+ $ausbildungssemester_arr = $ausbildungssemester;
+ }
+ else
+ {
+ foreach ($studiengang_kz_arr as $studiengang_kz_item)
+ {
+ $result = $this->StudiensemesterModel->getAusbildungssemesterByStudiensemesterAndStudiengang($studiensemester_kurzbz, $studiengang_kz_item);
+
+ if (isError($result))
+ return error($result->retval);
+
+ foreach ($result->retval as $semester)
+ {
+ if (!in_array($semester->semester, $ausbildungssemester_arr))
+ $ausbildungssemester_arr[] = $semester->semester;
+ }
+ }
+ }
+
+ if (is_numeric($lehrveranstaltung_ids))
+ {
+ $lehrveranstaltung_id_arr[] = $lehrveranstaltung_ids;
+ }
+ elseif (is_array($lehrveranstaltung_ids))
+ {
+ $lehrveranstaltung_id_arr = $lehrveranstaltung_ids;
+ }
+
+ $parametersarray = array($studiensemester_kurzbz, $studiensemester_kurzbz);
+
+ $query = "
+
+ SELECT lehrveranstaltung_id, ? || '_' || kuerzel || '_' || lvpostfix AS lvgroupname
+ FROM(
+ SELECT DISTINCT ON (kuerzel, lvpostfix)
+ lehrveranstaltung_id,
+ UPPER(tbl_studiengang.typ :: VARCHAR(1) || tbl_studiengang.kurzbz) AS kuerzel,
+ tbl_lehrveranstaltung.semester || '_' || tbl_lehrveranstaltung.kurzbz || '_' || COALESCE(tbl_lehrveranstaltung.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) || '_LV' || lehrveranstaltung_id AS lvpostfix
+ FROM lehre.tbl_lehrveranstaltung
+ JOIN public.tbl_studiengang ON tbl_lehrveranstaltung.studiengang_kz = tbl_studiengang.studiengang_kz
+ WHERE tbl_lehrveranstaltung.lehrtyp_kurzbz != 'modul'
+ AND EXISTS (SELECT 1 FROM lehre.tbl_lehreinheit WHERE lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND studiensemester_kurzbz = ?)";
+
+ if (count($ausbildungssemester_arr) > 0)
+ $query .= " AND tbl_lehrveranstaltung.semester IN (". implode(", ", $ausbildungssemester_arr).")";
+
+ if (count($studiengang_kz_arr) > 0)
+ $query .= " AND tbl_lehrveranstaltung.studiengang_kz IN (". implode(", ", $studiengang_kz_arr).")";
+
+ if (count($lehrveranstaltung_id_arr) > 0)
+ {
+ $query .= " AND tbl_lehrveranstaltung.lehrveranstaltung_id IN (". implode(', ', $lehrveranstaltung_id_arr).")";
+ }
+
+ $query .= ") lvgroups ORDER BY lvgroupname";
+
+ return $this->execQuery($query, $parametersarray);
+ }
+
+ /**
+ * Gets all students of a Lehrveranstaltung
+ * @param $studiensemester_kurzbz
+ * @param $lehrveranstaltung_id
+ * @return array|null
+ */
+ public function getStudentsByLv($studiensemester_kurzbz, $lehrveranstaltung_id)
+ {
+ $query = "SELECT
+ distinct on(nachname, vorname, person_id) vorname, nachname, matrikelnr,
+ tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
+ (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
+
+ FROM
+ campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid)
+ JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student ON(uid=student_uid)
+ LEFT JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
+ LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
+ LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
+ LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
+ LEFT JOIN public.tbl_studiengang ON(vw_student_lehrveranstaltung.studiengang_kz=tbl_studiengang.studiengang_kz)
+ WHERE
+ vw_student_lehrveranstaltung.studiensemester_kurzbz=?
+ AND
+ vw_student_lehrveranstaltung.lehrveranstaltung_id=?
+ ORDER BY nachname, vorname, person_id, tbl_bisio.bis DESC";
+
+ return $this->execQuery($query, array($studiensemester_kurzbz, $lehrveranstaltung_id));
+ }
+
+ /**
+ * Gets all lecturers of a Lehrveranstaltung
+ * @param $studiensemester_kurzbz
+ * @param $lehrveranstaltung_id
+ * @return array|null
+ */
+ public function getLecturersByLv($studiensemester_kurzbz, $lehrveranstaltung_id)
+ {
+ $query = "SELECT * FROM (SELECT distinct on(uid) vorname, nachname, tbl_benutzer.uid as uid,
+ CASE WHEN lehrfunktion_kurzbz='LV-Leitung' THEN true ELSE false END as lvleiter
+ FROM lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter, public.tbl_benutzer, public.tbl_person
+ WHERE
+ tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND
+ tbl_lehreinheitmitarbeiter.mitarbeiter_uid=tbl_benutzer.uid AND
+ tbl_person.person_id=tbl_benutzer.person_id AND
+ lehrveranstaltung_id=? AND
+ tbl_lehreinheitmitarbeiter.mitarbeiter_uid NOT like '_Dummy%' AND
+ tbl_benutzer.aktiv=true AND tbl_person.aktiv=true AND
+ studiensemester_kurzbz=?) AS a
+ ORDER BY lvleiter DESC, nachname, vorname";
+
+ return $this->execQuery($query, array($lehrveranstaltung_id, $studiensemester_kurzbz));
+ }
}
diff --git a/application/models/organisation/Studiengang_model.php b/application/models/organisation/Studiengang_model.php
index af790c831..78c81836f 100644
--- a/application/models/organisation/Studiengang_model.php
+++ b/application/models/organisation/Studiengang_model.php
@@ -407,4 +407,26 @@ class Studiengang_model extends DB_Model
array('reihungstest')
);
}
+
+ /**
+ * Gets Studiengaenge of a Studiensemesester
+ * @param $studiensemester_kurzbz
+ * @return array|null
+ */
+ public function getStudiengaengeByStudiensemester($studiensemester_kurzbz)
+ {
+ $query = "SELECT
+ distinct tbl_studiengang.*, UPPER(typ::varchar(1) || kurzbz) AS kuerzel
+ FROM
+ public.tbl_studiengang
+ JOIN lehre.tbl_studienordnung USING(studiengang_kz)
+ JOIN lehre.tbl_studienplan USING(studienordnung_id)
+ JOIN lehre.tbl_studienplan_semester USING(studienplan_id)
+ WHERE
+ tbl_studienplan_semester.studiensemester_kurzbz=?
+ ORDER BY
+ typ, kurzbz";
+
+ return $this->execQuery($query, array($studiensemester_kurzbz));
+ }
}
diff --git a/application/models/organisation/Studiensemester_model.php b/application/models/organisation/Studiensemester_model.php
index cb693144d..300e13805 100644
--- a/application/models/organisation/Studiensemester_model.php
+++ b/application/models/organisation/Studiensemester_model.php
@@ -32,6 +32,26 @@ class Studiensemester_model extends DB_Model
return $this->execQuery($query);
}
+ /**
+ * getNextOrAktSemester
+ * 62 days - in july and august, semester after summer is returned
+ */
+ public function getAktOrNextSemester($days = 62)
+ {
+ if (!is_numeric($days))
+ {
+ $days = 62;
+ }
+
+ $query = 'SELECT studiensemester_kurzbz
+ FROM public.tbl_studiensemester
+ WHERE start < NOW() + \'' . $days . ' DAYS\':: INTERVAL
+ ORDER BY start DESC
+ LIMIT 1';
+
+ return $this->execQuery($query);
+ }
+
/**
* getNextFrom
*/
@@ -80,4 +100,23 @@ class Studiensemester_model extends DB_Model
return $this->execQuery($query);
}
+
+ /**
+ * Gets valid Ausbildungssemester of a Studiensemester with a Studiengang
+ * @param $studiensemester_kurzbz
+ * @param $studiengang_kz
+ * @return array|null
+ */
+ public function getAusbildungssemesterByStudiensemesterAndStudiengang($studiensemester_kurzbz, $studiengang_kz)
+ {
+ $query = "SELECT DISTINCT semester
+ FROM lehre.tbl_studienplan
+ JOIN lehre.tbl_studienordnung USING(studienordnung_id)
+ JOIN lehre.tbl_studienplan_semester USING(studienplan_id)
+ WHERE tbl_studienplan_semester.studiensemester_kurzbz = ?
+ AND tbl_studienordnung.studiengang_kz = ?
+ ORDER BY semester";
+
+ return $this->execQuery($query, array($studiensemester_kurzbz, $studiengang_kz));
+ }
}
diff --git a/application/models/person/Benutzerfunktion_model.php b/application/models/person/Benutzerfunktion_model.php
index e75540d92..6a15df107 100644
--- a/application/models/person/Benutzerfunktion_model.php
+++ b/application/models/person/Benutzerfunktion_model.php
@@ -22,4 +22,55 @@ class Benutzerfunktion_model extends DB_Model
return $this->loadWhere(array('person_id' => $person_id));
}
-}
\ No newline at end of file
+
+ /**
+ * Gets all Benutzer for a given OE and specified Benutzerfunktionen
+ * @param $oe_kurzbz
+ * @param $funktion_kurzbz string with one benutzerfunktionname or array with one or more
+ * @return array|null
+ */
+ public function getBenutzerFunktionen($funktion_kurzbz, $oe_kurzbz = null, $activeoeonly = false, $activebenonly = false)
+ {
+ $parametersArray = array();
+
+ $query = "SELECT * FROM public.tbl_benutzerfunktion";
+
+ if ($activeoeonly === true)
+ $query .= " JOIN public.tbl_organisationseinheit USING(oe_kurzbz)";
+
+ if ($activebenonly === true)
+ $query .= " JOIN public.tbl_benutzer USING(uid)";
+
+ $query .= "WHERE (datum_von <= NOW() OR datum_von IS NULL) AND (datum_bis >= NOW() OR datum_bis IS NULL)";
+
+ if (is_string($funktion_kurzbz))
+ {
+ $query .= " AND funktion_kurzbz = ".$funktion_kurzbz.")";
+ }
+ elseif (is_array($funktion_kurzbz) && count($funktion_kurzbz) > 0)
+ {
+ $funktionstr = "'".implode("', '", $funktion_kurzbz)."'";
+ $query .= " AND funktion_kurzbz IN (".$funktionstr.")";
+ }
+
+ if (is_string($oe_kurzbz))
+ {
+ $query .= " AND tbl_benutzerfunktion.oe_kurzbz = ?";
+ $parametersArray[] = $oe_kurzbz;
+ }
+
+ if ($activebenonly === true)
+ {
+ $query .= " AND tbl_benutzer.aktiv";
+ }
+
+ if ($activeoeonly === true)
+ {
+ $query .= " AND tbl_organisationseinheit.aktiv";
+ }
+
+ $query .= " ORDER BY funktion_kurzbz, oe_kurzbz, uid";
+
+ return $this->execQuery($query, $parametersArray);
+ }
+}
diff --git a/cis/private/lehre/anwesenheitsliste.pdf.php b/cis/private/lehre/anwesenheitsliste.pdf.php
index 80d823a4f..eef40ff3f 100644
--- a/cis/private/lehre/anwesenheitsliste.pdf.php
+++ b/cis/private/lehre/anwesenheitsliste.pdf.php
@@ -166,7 +166,7 @@ $qry = 'SELECT
tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
(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_zeugnisnote.note, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_studiengang.kurzbzlang
FROM
campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid)
JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student ON(uid=student_uid)
@@ -174,6 +174,7 @@ $qry = 'SELECT
LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
+ LEFT JOIN public.tbl_studiengang ON(tbl_student.studiengang_kz=tbl_studiengang.studiengang_kz)
WHERE
vw_student_lehrveranstaltung.lehrveranstaltung_id='.$db->db_add_param($lvid, FHC_INTEGER).' AND
vw_student_lehrveranstaltung.studiensemester_kurzbz='.$db->db_add_param($studiensemester);
@@ -229,7 +230,8 @@ if($result = $db->db_query($qry))
'semester'=>$row->semester,
'verband'=>trim($row->verband),
'gruppe'=>trim($row->gruppe),
- 'zusatz'=>$zusatz
+ 'zusatz'=>$zusatz,
+ 'studiengang_kurzbz'=>$row->kurzbzlang
));
}
}
diff --git a/cis/private/lehre/notenliste.php b/cis/private/lehre/notenliste.php
index 4e1ae2d95..67ce204ef 100644
--- a/cis/private/lehre/notenliste.php
+++ b/cis/private/lehre/notenliste.php
@@ -32,9 +32,11 @@ require_once('../../../include/datum.class.php');
require_once('../../../include/note.class.php');
require_once('../../../include/phrasen.class.php');
require_once('../../../include/studiengang.class.php');
+require_once('../../../include/studienordnung.class.php');
require_once('../../../include/lehrveranstaltung.class.php');
require_once('../../../include/pruefung.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
+require_once('../../../include/prestudent.class.php');
$sprache = getSprache();
$p = new phrasen($sprache);
@@ -47,11 +49,11 @@ echo '
-
-
-
-
-
+
+
+
+
+
'.$p->t('tools/leistungsbeurteilung').'
@@ -118,7 +120,7 @@ if(!check_student($user))
}
else
{
- $qry = "SELECT vw_student.vorname, vw_student.nachname, tbl_studiengang.studiengang_kz
+ $qry = "SELECT vw_student.vorname, vw_student.nachname, vw_student.prestudent_id, tbl_studiengang.studiengang_kz
FROM public.tbl_studiengang JOIN campus.vw_student USING (studiengang_kz)
WHERE campus.vw_student.uid = ".$db->db_add_param($user).";";
@@ -133,6 +135,19 @@ else
$stg_obj = new studiengang();
$stg_obj->load($row->studiengang_kz);
$stg_name = $stg_obj->bezeichnung_arr[$sprache];
+ $prestudent_id = $row->prestudent_id;
+ $prestudent = new prestudent($prestudent_id);
+ if ($prestudent->getLastStatus($prestudent_id, $prestudent->studiensemester_kurzbz))
+ {
+ $studienplan_id = $prestudent->studienplan_id;
+ $studienordnung = new studienordnung();
+ if ($studienordnung->getStudienordnungFromStudienplan($studienplan_id))
+ {
+ $studiengangbezeichnung_sto = $sprache === 'English' ? $studienordnung->__get('studiengangbezeichnung_englisch') : $studienordnung->__get('studiengangbezeichnung');
+ }
+ }
+
+ $studiengang_bezeichnung = empty($studiengangbezeichnung_sto) ? $stg_name : $studiengangbezeichnung_sto;
}
$notenarr=array();
@@ -152,7 +167,7 @@ else
echo "
";
echo "".$p->t('global/name').": $vorname $nachname
";
- echo "".$p->t('global/studiengang').": $stg_name
";
+ echo "".$p->t('global/studiengang').": $studiengang_bezeichnung
";
echo "".$p->t('global/studiensemester')."