Merge branch 'master' into feature-53904/Vertragshistorie_valorisierte_Gehaelter_anzeigen

This commit is contained in:
Werner Masik
2025-08-06 17:34:59 +02:00
413 changed files with 38491 additions and 7048 deletions
-23
View File
@@ -44,27 +44,4 @@ class Bisio_model extends DB_Model
else
return success("Bisio not found");
}
/**
* checks, if an (extension) table exists to avoid later errors
* @param String $schema like 'extension'
* @param String $table like 'tbl_mo_bisiozuordnung'
* @return boolean
*/
public function tableExists($schema, $table)
{
$params = array($schema, $table);
$qry = "SELECT
1
FROM
information_schema.role_table_grants
WHERE
table_schema = ?
AND table_name = ?";
$result = $this->execQuery($qry, $params);
return $result;
}
}
@@ -0,0 +1,14 @@
<?php
class Mobilitaetstyp_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'bis.tbl_mobilitaetstyp';
$this->pk = 'mobilitaetstyp_kurzbz';
}
}
+64 -4
View File
@@ -92,7 +92,7 @@ class Akte_model extends DB_Model
a.anmerkung,
a.nachgereicht,
a.nachgereicht_am,
CASE WHEN MAX(dp.dokument_kurzbz) IS NOT NULL THEN TRUE ELSE FALSE END AS accepted
CASE WHEN MAX(dp.dokument_kurzbz) IS NOT NULL THEN TRUE ELSE FALSE END AS accepted,
FROM public.tbl_akte a
INNER JOIN public.tbl_prestudent p USING(person_id)
LEFT JOIN public.tbl_dokumentprestudent dp USING(prestudent_id, dokument_kurzbz)
@@ -111,6 +111,61 @@ class Akte_model extends DB_Model
return $this->execQuery($query, $parametersArray);
}
/**
* getAktenAccepted FAS
*/
public function getAktenFAS($person_id, $dokument_kurzbz = null, $stg_kz = null, $prestudent_id = null, $returnInhalt = false)
{
$query = 'SELECT
a.akte_id,
a.bezeichnung,
a.dokument_kurzbz,
a.titel_intern,
a.anmerkung_intern,
a.insertamum as hochgeladenamum,
a.updatevon, a.insertvon, a.uid,
a.dms_id, a.anmerkung as infotext,
a.nachgereicht,
CASE
WHEN inhalt IS NOT NULL OR a.dms_id IS NOT NULL
THEN true
ELSE false
END AS vorhanden,
a.nachgereicht_am,
ausstellungsnation, formal_geprueft_amum, archiv,
signiert, stud_selfservice, akzeptiertamum, inhalt
FROM public.tbl_akte a
WHERE a.person_id = ?';
$parametersArray = array($person_id);
if (!isEmptyString($dokument_kurzbz))
{
$query .= " AND dokument_kurzbz = ?
AND dokument_kurzbz NOT IN ('Zeugnis','DiplSupp','Bescheid')";
array_push($parametersArray, $dokument_kurzbz);
}
if($stg_kz != null && $prestudent_id != null)
{
$query.= " AND dokument_kurzbz not in (
SELECT dokument_kurzbz
FROM public.tbl_dokument
JOIN public.tbl_dokumentstudiengang USING(dokument_kurzbz)
WHERE studiengang_kz= ?
AND dokument_kurzbz NOT IN(
SELECT dokument_kurzbz FROM public.tbl_dokumentprestudent
JOIN public.tbl_dokument USING(dokument_kurzbz)
WHERE prestudent_id=?))";
array_push($parametersArray, $stg_kz);
array_push($parametersArray, $prestudent_id);
}
$query .= ' ORDER BY erstelltam';
return $this->execQuery($query, $parametersArray);
}
/**
* getAktenAcceptedDms
*/
@@ -195,9 +250,9 @@ class Akte_model extends DB_Model
}
/**
* Liefert die Archivdokumente einer Person
* Liefert die Archivdokumente einer Person/mehrerer Personen
*
* @param integer $person_id
* @param integer/array $person_id
* @param boolean|null $signiert Wenn true werden nur Dokumente geliefert die digital signiert wurden.
* @param boolean|null $stud_selfservice Wenn true werden nur Dokumente geliefert die Studierende selbst herunterladen duerfen.
*
@@ -237,10 +292,15 @@ class Akte_model extends DB_Model
if ($stud_selfservice !== null)
$this->db->where('stud_selfservice', (boolean)$stud_selfservice);
if (is_array($person_id))
$this->db->where_in('person_id', $person_id);
else
$this->db->where('person_id', $person_id);
$this->addOrder('erstelltam', 'DESC');
$this->addOrder('akte_id', 'DESC');
return $this->loadWhere([
'person_id' => $person_id,
'archiv' => true
]);
}
+87
View File
@@ -11,4 +11,91 @@ class Dokument_model extends DB_Model
$this->dbTable = 'public.tbl_dokument';
$this->pk = 'dokument_kurzbz';
}
/**
* Loads all missing Documents of a Studiengang
* a Prestudent has not submitted
* @param integer studiengang_kz
* @param integer prestudent_id
* @param boolean archivdokumente
* Default: true.
* If false, documents that are archivable (tbl_vorlage.archivierbar e.g. certificate, notice, ...) not retrieved
* @return Array of Documents || error
*/
public function getMissingDocuments($studiengang_kz, $prestudent_id = null, $archivdokumente = false, $person_id = null)
{
$parametersArray = array($studiengang_kz);
$qry = "SELECT
tbl_dokument.* ,
tbl_dokumentstudiengang.*
FROM public.tbl_dokument
JOIN public.tbl_dokumentstudiengang USING(dokument_kurzbz)
LEFT JOIN public.tbl_vorlage ON (tbl_dokument.dokument_kurzbz = tbl_vorlage.vorlage_kurzbz)
WHERE studiengang_kz = ? ";
if($prestudent_id)
{
array_push($parametersArray, $prestudent_id);
$qry.=" AND tbl_dokument.dokument_kurzbz NOT IN (
SELECT dokument_kurzbz FROM public.tbl_dokumentprestudent WHERE prestudent_id= ?)";
}
if(!$archivdokumente)
{
$qry.=" AND (tbl_vorlage.archivierbar = FALSE OR tbl_vorlage.archivierbar IS NULL)";
}
$qry.=" ORDER BY tbl_dokument.dokument_kurzbz;";
return $this->execQuery($qry, $parametersArray);
}
public function getUnacceptedDocuments($prestudent_id, $person_id)
{
$parametersArray = array($person_id, $prestudent_id);
$qry = " SELECT
a.akte_id,
a.bezeichnung,
a.dokument_kurzbz,
a.titel_intern,
a.anmerkung_intern,
a.insertamum as hochgeladenamum,
a.updatevon,
a.insertvon,
a.uid,
a.dms_id,
a.anmerkung as infotext,
a.nachgereicht,
CASE
WHEN inhalt IS NOT NULL
OR a.dms_id IS NOT NULL THEN true
ELSE false
END AS vorhanden,
a.nachgereicht_am,
ausstellungsnation,
formal_geprueft_amum,
archiv,
signiert,
stud_selfservice,
akzeptiertamum,
inhalt
FROM
public.tbl_akte a
WHERE
a.person_id = ?
AND a.dokument_kurzbz NOT IN (
SELECT
dokument_kurzbz
FROM
public.tbl_dokumentprestudent
WHERE
prestudent_id = ?
)
AND a.dokument_kurzbz NOT IN ('Zeugnis','DiplSupp','Bescheid')
ORDER BY a.dokument_kurzbz;";
return $this->execQuery($qry, $parametersArray);
}
}
@@ -69,4 +69,41 @@ class Dokumentprestudent_model extends DB_Model
return $result;
}
/**
* Loads all Documents of Prestudent, already submitted
* @param integer prestudent_id
* @param boolean archivdokumente Default true. if false, archivable Documents (tbl_vorlage.archivierbar zB Zeugnis, Bescheid, ...) not retrieved
* @return Array of Documents || error
*/
public function getPrestudentDokumente($prestudent_id, $archivdokumente = true)
{
$parametersArray = array($prestudent_id);
$qry = "SELECT
d.bezeichnung,
d.dokument_kurzbz,
dp.datum as Docdatum,
dp.mitarbeiter_uid as DocMitarbeiter_uid,
dp.insertamum as Docinsertamum,
dp.prestudent_id,
CONCAT(p.vorname, ' ', p.nachname) as insertvonma
FROM
public.tbl_dokumentprestudent dp
JOIN public.tbl_dokument d USING(dokument_kurzbz)
LEFT JOIN public.tbl_vorlage v ON (d.dokument_kurzbz = v.vorlage_kurzbz)
LEFT JOIN public.tbl_benutzer bn ON (bn.uid = dp.mitarbeiter_uid)
LEFT JOIN public.tbl_person p ON (p.person_id = bn.person_id)
WHERE
prestudent_id = ?";
if(!$archivdokumente)
{
$qry.=" AND (v.archivierbar = FALSE OR v.archivierbar IS NULL)";
}
$qry.=" ORDER BY d.bezeichnung ASC";
return $this->execQuery($qry, $parametersArray);
}
}
+247 -1
View File
@@ -511,4 +511,250 @@ class Reihungstest_model extends DB_Model
return $this->execQuery($query, array($date, $studiengang_kz));
}
}
/**
* Loads all placement tests of a given person
* @param integer $person_id
* @return array Returns object array with data of placement tests
*/
public function getReihungstestPerson($person_id)
{
$query = '
SELECT
tbl_rt_person.*,
tbl_reihungstest.studiengang_kz,
tbl_reihungstest.anmerkung,
tbl_reihungstest.datum,
tbl_reihungstest.uhrzeit,
tbl_reihungstest.ext_id,
tbl_reihungstest.max_teilnehmer,
tbl_reihungstest.oeffentlich,
tbl_reihungstest.freigeschaltet,
tbl_reihungstest.studiensemester_kurzbz as studiensemester,
tbl_reihungstest.stufe,
tbl_reihungstest.anmeldefrist,
tbl_reihungstest.aufnahmegruppe_kurzbz,
tbl_studiengang.typ,
UPPER(typ::varchar(1) || kurzbz) AS stg_kuerzel,
so.studiengangbezeichnung,
so.studiengangbezeichnung_englisch,
so.studiengangkurzbzlang
FROM
public.tbl_rt_person
JOIN public.tbl_reihungstest ON (rt_id=reihungstest_id)
JOIN public.tbl_studiengang ON tbl_reihungstest.studiengang_kz = tbl_studiengang.studiengang_kz
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
WHERE
tbl_rt_person.person_id = ?
ORDER BY datum, uhrzeit ASC';
return $this->execQuery($query, array($person_id));
}
/**
* Calculates Result of Placement Test for a given Person and given placementtest
* and with taking account of weighting per area
*
* @param $person_id ID of Person
* @param $punkte if true result is points else result is percentage of sum
* @param $reihungstest_id ID of Placementtest
* @param $weightedArray array of weighting per area (gewicht per gebiet_id)
* @return float result
*/
public function getReihungstestErgebnisPerson($person_id, $punkte, $reihungstest_id, $weightedArray = null)
{
$parametersArray = array($reihungstest_id);
$qry = "
SELECT DISTINCT ON (vw_auswertung_ablauf.gebiet_id) gebiet_id,
vw_auswertung_ablauf.*,
tbl_studiengang.typ
FROM
testtool.vw_auswertung_ablauf
JOIN
public.tbl_studiengang USING (studiengang_kz)
WHERE
reihungstest_id = ? ";
//using prestudent Status to avoid to get the sum of more than 1 placement tests
$qry .= "
AND prestudent_id = (
SELECT
prestudent_id
FROM
public.tbl_rt_person
JOIN
public.tbl_prestudent USING(person_id)
JOIN
public.tbl_prestudentstatus USING (prestudent_id, studienplan_id)
JOIN
tbl_reihungstest ON (
tbl_rt_person.rt_id = tbl_reihungstest.reihungstest_id
)
WHERE
tbl_rt_person.person_id = ?
AND
tbl_rt_person.rt_id = ?
AND
tbl_prestudentstatus.status_kurzbz = 'Interessent'
AND
tbl_prestudentstatus.studiensemester_kurzbz = tbl_reihungstest.studiensemester_kurzbz
ORDER BY tbl_reihungstest.datum DESC, tbl_prestudent.priorisierung ASC LIMIT 1
)
";
array_push($parametersArray, $person_id);
array_push($parametersArray, $reihungstest_id);
$resultRtPerson = $this->execQuery($qry, $parametersArray);
$ergebnis = 0;
$summeGewicht = 0;
foreach ($resultRtPerson->retval as $row)
{
$prozent = 0;
if($row->punkte>=$row->maxpunkte)
{
$prozent = 100;
$row->punkte = $row->maxpunkte;
}
else
$prozent = (($row->punkte + $row->offsetpunkte)/($row->maxpunkte + $row->offsetpunkte))*100;
if($punkte == 'true')
{
if($row->punkte)
{
$ergebnis += $row->punkte;
}
}
else
{
if ($row->punkte)
{
$gew = isset($weightedArray[$row->gebiet_id]) ? $weightedArray[$row->gebiet_id] : 1;
$ergebnis += $prozent * $gew;
$summeGewicht += $gew;
}
}
}
$return = $summeGewicht > 0
? number_format($ergebnis/$summeGewicht, 4, '.', '')
: number_format($ergebnis, 4, '.', '');
return $return;
}
/**
* returns Reihungstests for given studyplans and include_ids
*
* @param Array $studienplan_arr array of studienplaene
* @param Array $include_ids array of include_ids
* @return Array List of Reihungstests
*/
public function getReihungstestByStudyPlanAndIds($studienplan_arr, $include_ids = null)
{
$studienplan_ids_string = implode(',', $studienplan_arr);
$studienplan_arr = explode(',', $studienplan_ids_string);
$parametersArray = array($studienplan_arr);
$qry = "
SELECT
distinct a.*,
CASE EXTRACT(DOW FROM a.datum)
WHEN 0 THEN 'So'
WHEN 1 THEN 'Mo'
WHEN 2 THEN 'Di'
WHEN 3 THEN 'Mi'
WHEN 4 THEN 'Do'
WHEN 5 THEN 'Fr'
WHEN 6 THEN 'Sa'
END AS wochentag,
sg.kurzbzlang as stg,
(
SELECT count(*) FROM public.tbl_rt_person
WHERE rt_id = a.reihungstest_id
) as angemeldete_teilnehmer
FROM
public.tbl_reihungstest a
JOIN public.tbl_rt_studienplan USING(reihungstest_id)
JOIN public.tbl_studiengang sg USING(studiengang_kz)
WHERE studienplan_id IN ?";
if($include_ids && is_array($include_ids) && count($include_ids) > 0)
{
$include_ids_string = implode(',', $include_ids);
$include_ids = explode(',', $include_ids_string);
array_push($parametersArray, $include_ids);
$qry .= "OR reihungstest_id in ?";
}
$qry .= "ORDER BY a.datum DESC";
return $this->execQuery($qry, $parametersArray);
}
/**
* returns Reihungstests for given studyplans and include_ids
*
* @param Integer $studiengang_kz
* @param $include_id optional (here null)
* @return Array List of Reihungstests
*/
public function getZukuenftigeReihungstestStg($studiengang_kz, $include_id = null)
{
$parametersArray = array($studiengang_kz, $studiengang_kz, $include_id);
$qry = "
SELECT *,
CASE EXTRACT(DOW FROM a.datum)
WHEN 0 THEN 'So'
WHEN 1 THEN 'Mo'
WHEN 2 THEN 'Di'
WHEN 3 THEN 'Mi'
WHEN 4 THEN 'Do'
WHEN 5 THEN 'Fr'
WHEN 6 THEN 'Sa'
END AS wochentag,
(
SELECT count(*) FROM public.tbl_prestudent
WHERE reihungstest_id=a.reihungstest_id
) as angemeldete_teilnehmer
FROM
(
SELECT *, '1' as sortierung,
(
SELECT upper(typ || kurzbz) FROM public.tbl_studiengang
WHERE studiengang_kz=tbl_reihungstest.studiengang_kz
) as stg
FROM
public.tbl_reihungstest
WHERE
datum>=now()-'1 days'::interval AND studiengang_kz=?
UNION
SELECT *, '2' as sortierung,
(
SELECT upper(typ || kurzbz) FROM public.tbl_studiengang
WHERE studiengang_kz=tbl_reihungstest.studiengang_kz
) as stg
FROM
public.tbl_reihungstest
WHERE datum>=now()-'1 days'::interval AND studiengang_kz!=?
UNION
SELECT *, '0' as sortierung,
(
SELECT upper(typ || kurzbz) FROM public.tbl_studiengang
WHERE studiengang_kz=tbl_reihungstest.studiengang_kz
) as stg
FROM
public.tbl_reihungstest
WHERE reihungstest_id=?
ORDER BY sortierung, stg, datum
) a
";
return $this->execQuery($qry, $parametersArray);
}
}
@@ -11,4 +11,5 @@ class Abgabe_model extends DB_Model
$this->dbTable = 'campus.tbl_abgabe';
$this->pk = 'abgabe_id';
}
}
@@ -202,4 +202,66 @@ class Anrechnung_model extends DB_Model
return success();
}
/**
* Get Anrechnungsdata for Table Anrechnungen
*
* @param $prestudent_id
* @return array
*/
public function getAnrechnungsData($prestudent_id)
{
$qry = '
SELECT
lehre.tbl_anrechnung.anrechnung_id,
lehre.tbl_anrechnung.prestudent_id,
lehre.tbl_anrechnung.lehrveranstaltung_id,
lehre.tbl_lehrveranstaltung.bezeichnung AS bez_lehrveranstaltung,
lehre.tbl_anrechnung_begruendung.bezeichnung AS begruendung,
lehre.tbl_anrechnung_anrechnungstatus.status_kurzbz AS status,
genehmigt_von,
lehre.tbl_anrechnung.insertamum,
lehre.tbl_anrechnung.insertvon,
lehre.tbl_anrechnung.updateamum,
lehre.tbl_anrechnung.updatevon,
lehrveranstaltung_id_kompatibel,
lv_comp.bezeichnung as lehrveranstaltung_bez_kompatibel,
count(nz.notizzuordnung_id) AS notizen_anzahl
FROM
lehre.tbl_anrechnung
JOIN lehre.tbl_lehrveranstaltung USING (lehrveranstaltung_id)
LEFT JOIN lehre.tbl_lehrveranstaltung lv_comp ON (lehre.tbl_anrechnung.lehrveranstaltung_id_kompatibel = lv_comp.lehrveranstaltung_id)
JOIN lehre.tbl_anrechnung_begruendung USING (begruendung_id)
LEFT JOIN lehre.tbl_anrechnung_anrechnungstatus ON (lehre.tbl_anrechnung_anrechnungstatus.anrechnung_id = lehre.tbl_anrechnung.anrechnung_id)
AND lehre.tbl_anrechnung_anrechnungstatus.insertamum = (
SELECT MAX(insertamum)
FROM lehre.tbl_anrechnung_anrechnungstatus
WHERE anrechnung_id = lehre.tbl_anrechnung.anrechnung_id
)
LEFT JOIN lehre.tbl_anrechnungstatus USING (status_kurzbz)
LEFT JOIN public.tbl_notizzuordnung nz ON (nz.anrechnung_id = lehre.tbl_anrechnung.anrechnung_id)
WHERE
lehre.tbl_anrechnung.prestudent_id = ?
GROUP BY
nz.anrechnung_id,
lehre.tbl_anrechnung.anrechnung_id,
lehre.tbl_anrechnung.prestudent_id,
lehre.tbl_anrechnung.lehrveranstaltung_id,
bez_lehrveranstaltung,
begruendung,
status,
genehmigt_von,
lehre.tbl_anrechnung.insertamum,
lehre.tbl_anrechnung.insertvon,
lehre.tbl_anrechnung.updateamum,
lehre.tbl_anrechnung.updatevon,
lehrveranstaltung_id_kompatibel,
lehrveranstaltung_bez_kompatibel
ORDER BY
lehre.tbl_anrechnung.updateamum ASC
';
return $this->execQuery($qry, array($prestudent_id));
}
}
@@ -0,0 +1,14 @@
<?php
class Anrechnunganrechnungstatus_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'lehre.tbl_anrechnung_anrechnungstatus';
$this->pk = 'anrechnungstatus_id';
}
}
@@ -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');
@@ -988,4 +982,41 @@ 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);
}
}
@@ -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));
}
}
@@ -69,4 +69,196 @@ 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));
}
}
@@ -191,7 +191,7 @@ class Organisationseinheit_model extends DB_Model
/**
* @param string $oe_kurzbz
*
*
* @return stdClass
*/
public function getWithType($oe_kurzbz)
@@ -203,18 +203,14 @@ class Organisationseinheit_model extends DB_Model
}
/**
* Get OEs by eventQuery string. Use with autocomplete event queries.
* @param $eventQuery String
* @return array
* get highest organisation units
*/
public function getAutocompleteSuggestions($eventQuery)
public function getHeads()
{
$this->addSelect('oe_kurzbz');
$this->addSelect('organisationseinheittyp_kurzbz, oe_kurzbz, bezeichnung, aktiv, lehre');
$this->addOrder('organisationseinheittyp_kurzbz, bezeichnung');
$this->addSelect('*');
$this->addSelect('oe_kurzbz as head');
$result = $this->loadWhere(array('oe_parent_kurzbz' => null, 'aktiv' => true));
return $this->loadWhere("
oe_kurzbz ILIKE '%". $this->escapeLike($eventQuery). "%'
");
return $result;
}
}
@@ -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);
@@ -134,4 +134,17 @@ class Studienplan_model extends DB_Model
'prestudent_id' => $prestudent_id
]);
}
public function getStudienplaeneForPerson($person_id)
{
$this->addDistinct();
$this->addSelect($this->dbTable . '.*');
$this->addSelect('ps.*');
$this->addJoin('public.tbl_prestudentstatus pss', 'studienplan_id');
$this->addJoin('public.tbl_prestudent ps', 'prestudent_id');
return $this->loadWhere([
'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);
}
}
@@ -33,4 +33,16 @@ class Benutzergruppe_model extends DB_Model
$uids = (hasData($res)) ? getData($res) : array();
return $uids;
}
/**
* Laedt die Aufnahmegruppe(n) in Abhängigkeit von User und Studiensemester
* @param uid, gruppe_kurzbz, studiensemester_kurzbz
* @return array
*/
public function loadAufnahmegruppen($uid, $stsem)
{
$query = "
SELECT * FROM tbl_gruppe WHERE aufnahmegruppe=true;";
return $this->execReadOnlyQuery($query);
}
}
+26 -3
View File
@@ -154,8 +154,21 @@ class Notiz_model extends DB_Model
public function getNotizWithDocEntries($id, $type)
{
$qry = "
SELECT
n.*, count(dms_id) as countDoc, z.notizzuordnung_id,
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
@@ -173,10 +186,20 @@ class Notiz_model extends DB_Model
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 = ?
GROUP BY
notiz_id, z.notizzuordnung_id
notiz_id, z.notizzuordnung_id,
person_verfasser.vorname, person_verfasser.nachname,
person_bearbeiter.vorname, person_bearbeiter.nachname
";
return $this->execQuery($qry, array($type, $id));
@@ -12,34 +12,34 @@ class Mitarbeiter_model extends DB_Model
$this->pk = 'mitarbeiter_uid';
}
/**
* Checks if the user is a Mitarbeiter.
* @param string $uid
* @param boolean null $fixangestellt
* @return array
*/
public function isMitarbeiter($uid, $fixangestellt = null)
{
$this->addSelect('1');
/**
* Checks if the user is a Mitarbeiter.
* @param string $uid
* @param boolean null $fixangestellt
* @return array
*/
public function isMitarbeiter($uid, $fixangestellt = null)
{
$this->addSelect('1');
if (is_bool($fixangestellt))
{
$result = $this->loadWhere(array('mitarbeiter_uid' => $uid, 'fixangestellt' => $fixangestellt));
}
else // default
{
$result = $this->loadWhere(array('mitarbeiter_uid' => $uid));
}
if (is_bool($fixangestellt))
{
$result = $this->loadWhere(array('mitarbeiter_uid' => $uid, 'fixangestellt' => $fixangestellt));
}
else // default
{
$result = $this->loadWhere(array('mitarbeiter_uid' => $uid));
}
if(hasData($result))
{
return success(true);
}
else
{
return success(false);
}
}
if(hasData($result))
{
return success(true);
}
else
{
return success(false);
}
}
/**
* Laedt das Personal
@@ -98,6 +98,129 @@ class Mitarbeiter_model extends DB_Model
return $this->execQuery($qry, $params);
}
/**
* gibt Personen mit Übersicht von Vertragsdaten aus
*
* @return array
*/
public function getPersonenWithContractDetails($person_id = null)
{
$qry = "
SELECT
b.uid , p.person_id,
p.vorname, p.nachname,
gebdatum,
COALESCE(b.alias, b.uid) AS email,
STRING_AGG(DISTINCT va.bezeichnung, ', ') AS Vertragsarten,
STRING_AGG(DISTINCT u.bezeichnung, ', ') AS Unternehmen,
STRING_AGG(d.dienstverhaeltnis_id::TEXT, ', ') AS ids,
b.aktiv
FROM
hr.tbl_dienstverhaeltnis d
JOIN
public.tbl_benutzer b ON d.mitarbeiter_uid = b.uid
JOIN
public.tbl_person p ON p.person_id = b.person_id
JOIN
public.tbl_organisationseinheit u ON d.oe_kurzbz = u.oe_kurzbz
JOIN
hr.tbl_vertragsart va ON d.vertragsart_kurzbz = va.vertragsart_kurzbz
";
if($person_id)
{
$qry .= " WHERE p.person_id = ?";
}
$qry.= "
GROUP BY
b.uid, p.person_id, p.vorname, p.nachname, b.alias
ORDER BY
p.nachname, p.vorname;
";
$params = array($person_id);
return $this->execQuery($qry, $params);
}
/**
* get current disciplinary Abteilung of person
*
* @param $person_id
*
* @return Array benutzerfunktionsdata
*/
public function getPersonAbteilung($uid)
{
$qry = "
SELECT
bf.benutzerfunktion_id, bf.fachbereich_kurzbz, bf.uid, bf.funktion_kurzbz, bf.updateamum,
bf.updatevon, bf.insertamum, bf.insertvon, bf.ext_id, bf.semester, bf.oe_kurzbz,
bf.datum_von, bf.datum_bis, bf.bezeichnung, bf.wochenstunden,
oe.oe_kurzbz, oe.oe_parent_kurzbz, oe.bezeichnung,
oe.organisationseinheittyp_kurzbz, oe.aktiv, oe.mailverteiler,
oe.freigabegrenze, oe.kurzzeichen, oe.lehre, oe.standort,
oe.warn_semesterstunden_frei, oe.warn_semesterstunden_fix, oe.standort_id
FROM tbl_benutzerfunktion bf
JOIN public.tbl_organisationseinheit oe USING(oe_kurzbz)
WHERE uid = ?
AND funktion_kurzbz = 'oezuordnung'
AND datum_von <= NOW()
AND (datum_bis IS NULL OR datum_bis >= NOW())
";
$result = $this->execQuery($qry, [$uid]);
return $result;
}
/**
* get Leitung / Vorgesetzten of current OE
*
* @param $oe_kurzbz
*
* @return Array persondata / benutzerfunktionsdata
*/
public function getLeitungOrg($oe_kurzbz)
{
$qry = "
SELECT bf.benutzerfunktion_id,bf.fachbereich_kurzbz,bf.uid,bf.funktion_kurzbz,
bf.updateamum,bf.updatevon,bf.insertamum,bf.insertvon,bf.ext_id,bf.semester,
bf.oe_kurzbz,bf.datum_von,bf.datum_bis,bf.bezeichnung,bf.wochenstunden,
p.person_id, p.vorname,p.nachname,p.titelpre,p.titelpost
FROM public.tbl_benutzerfunktion bf JOIN public.tbl_organisationseinheit oe USING(oe_kurzbz)
JOIN public.tbl_benutzer b USING (uid) JOIN public.tbl_mitarbeiter ma ON(b.uid=ma.mitarbeiter_uid)
JOIN public.tbl_person p USING(person_id)
WHERE funktion_kurzbz='Leitung' AND oe.oe_kurzbz = ?
AND datum_von<=now() AND (datum_bis is null OR datum_bis>=now());
";
return $this->execQuery($qry, array($oe_kurzbz));
}
/**
* get persondata for person_id
*
* @param $oe_kurzbz
*
* @return Array persondata
*/
public function getHeader($person_id)
{
$qry = "
SELECT
titelpre, vorname, nachname, titelpost, foto, foto_sperre, person_id, alias, telefonklappe
FROM
public.tbl_person
JOIN public.tbl_benutzer b USING(person_id)
JOIN public.tbl_mitarbeiter ma ON (ma.mitarbeiter_uid = b.uid)
WHERE
person_id = ?
";
return $this->execQuery($qry, array($person_id));
}
/**
* Gibt ein Array mit den UIDs der Vorgesetzten zurück
* @return object
@@ -213,7 +336,7 @@ class Mitarbeiter_model extends DB_Model
if (hasData($kurzbzexists) && getData($kurzbzexists)[0])
return error('No Kurzbezeichnung could be generated');
return success($kurzbz);
}
@@ -240,13 +363,13 @@ class Mitarbeiter_model extends DB_Model
$qry = "
SELECT " . $returnwert . "
FROM
public.tbl_mitarbeiter ma
public.tbl_mitarbeiter ma
JOIN
public.tbl_benutzer b on (ma.mitarbeiter_uid = b.uid)
public.tbl_benutzer b on (ma.mitarbeiter_uid = b.uid)
JOIN
public.tbl_person p on (p.person_id = b.person_id)
public.tbl_person p on (p.person_id = b.person_id)
WHERE
lower (p.nachname) LIKE '%". $this->db->escape_like_str($filter)."%'
lower (p.nachname) LIKE '%". $this->db->escape_like_str($filter)."%'
OR
lower (p.vorname) LIKE '%". $this->db->escape_like_str($filter)."%'
OR
@@ -261,14 +384,14 @@ class Mitarbeiter_model extends DB_Model
* @param $lehrveranstaltung_id
* @return array with Mitarbeiter and their Lehreinheiten
*/
public function getMitarbeiterFromLV($lehrveranstaltung_id){
//TODO(manu) maybe filter that in pruefungslist.js ?
$qry = "SELECT DISTINCT
lehrveranstaltung_id, uid, vorname, wahlname, vornamen, nachname, titelpre, titelpost, kurzbz, mitarbeiter_uid
public function getMitarbeiterFromLV($lehrveranstaltung_id)
{
$qry = "SELECT DISTINCT
lehrveranstaltung_id, uid, vorname, wahlname, vornamen, nachname, titelpre, titelpost, kurzbz, mitarbeiter_uid
FROM
lehre.tbl_lehreinheitmitarbeiter, campus.vw_mitarbeiter, lehre.tbl_lehreinheit
lehre.tbl_lehreinheitmitarbeiter, campus.vw_mitarbeiter, lehre.tbl_lehreinheit
WHERE
lehrveranstaltung_id= ?
lehrveranstaltung_id= ?
AND
mitarbeiter_uid=uid
AND
@@ -278,4 +401,33 @@ class Mitarbeiter_model extends DB_Model
return $this->execQuery($qry, $parametersArray);
}
/**
* Get Lektoren by studiengang_kz
*
* @param $studiengang_kz
* @return array with Mitarbeiter
*/
public function getLektoren($studiengang_kz)
{
$qry = "
SELECT DISTINCT
campus.vw_mitarbeiter.uid,
campus.vw_mitarbeiter.vorname,
campus.vw_mitarbeiter.nachname,
studiengang_kz,
tbl_studiengang.typ,
tbl_studiengang.kurzbz AS stg_kurzbz
FROM
campus.vw_mitarbeiter
JOIN public.tbl_benutzerfunktion USING (uid)
JOIN public.tbl_studiengang USING(oe_kurzbz)
WHERE studiengang_kz = ?
AND lektor is true
ORDER BY campus.vw_mitarbeiter.nachname";
$parametersArray = array($studiengang_kz);
return $this->execQuery($qry, $parametersArray);
}
}
@@ -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]);
}
}
@@ -50,7 +50,6 @@ class Stundenplan_model extends DB_Model
*/
public function groupedCalendarEvents($ort_kurzbz,$start_date,$end_date){
$gruppierteEvents= $this->execReadOnlyQuery("
SELECT
@@ -178,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
");
@@ -186,6 +185,99 @@ class Stundenplan_model extends DB_Model
return $query_result;
}
/**
* groups rows of a subquery that fetches data from the lehre.vw_stundenplan table or lehre.vw_stundenplandev
* @param string $stundenplanViewQuery the subquery used to group the result regarding consecutive hours (Tab LV Termine)
*
* @return stdClass
*/
public function stundenplanGruppierungConsecutive($stundenplanViewQuery)
{
$query_result = $this->execReadOnlyQuery("
SELECT
distinct lehrveranstaltung_id,
datum,
MIN(beginn) as beginn,
MAX(ende) as ende,
type,
topic,
gruppe,
ort_kurzbz,
lehreinheit_id,
lehrfach_bez,
lektor,
lektorname,
gruppen_kuerzel,
farbe
FROM
(
SELECT
'lehreinheit' as type, beginn, ende, datum,
CONCAT(lehrfach,'-',lehrform) as topic,
array_agg(DISTINCT lektor) as lektor,
array_agg(DISTINCT lektorname) as lektorname,
array_agg(DISTINCT (gruppe,verband,semester,studiengang_kz,gruppen_kuerzel)) as gruppe,
array_agg(DISTINCT (gruppen_kuerzel)) as gruppen_kuerzel,
string_agg(DISTINCT ort_kurzbz, '/') as ort_kurzbz,
array_agg(DISTINCT lehreinheit_id) as lehreinheit_id,
titel, lehrfach, lehrform, lehrfach_bez, organisationseinheit, farbe, lehrveranstaltung_id
FROM
(
SELECT unr,datum,beginn, ende,
CASE
WHEN sp.mitarbeiter_kurzbz IS NOT NULL THEN sp.mitarbeiter_kurzbz
ELSE lektor
END as lektor,
CASE
WHEN gruppe_kurzbz IS NOT NULL THEN gruppe_kurzbz
ELSE (SELECT UPPER(typ || kurzbz)
FROM public.tbl_studiengang
WHERE studiengang_kz=sp.studiengang_kz) || COALESCE(sp.semester,'0') || COALESCE(sp.verband,'') || COALESCE(sp.gruppe,'')
END as gruppen_kuerzel,
(SELECT bezeichnung
FROM public.tbl_organisationseinheit
WHERE oe_kurzbz IN(
SELECT oe_kurzbz
FROM lehre.tbl_lehrveranstaltung
WHERE lehrveranstaltung_id = sp.lehrveranstaltung_id
)) as organisationseinheit,
ort_kurzbz, studiengang_kz, titel,lehreinheit_id,lehrfach_id,sp.anmerkung,fix,lehrveranstaltung_id,
stg_kurzbzlang,stg_bezeichnung,stg_typ,fachbereich_kurzbz,lehrfach,lehrfach_bez,farbe,lehrform,
anmerkung_lehreinheit,gruppe, verband, semester,stg_kurzbz,
CONCAT(p.nachname, ' ', p.vorname) as lektorname
FROM (".$stundenplanViewQuery.") sp
JOIN lehre.tbl_stunde ON lehre.tbl_stunde.stunde = sp.stunde
LEFT JOIN public.tbl_benutzer bn ON bn.uid = sp.uid
LEFT JOIN public.tbl_person p ON p.person_id = bn.person_id
) as subquery
GROUP BY unr, datum, beginn, ende, ort_kurzbz, titel, lehrform, lehrfach, lehrfach_bez, organisationseinheit,
farbe, lehrveranstaltung_id
ORDER BY datum, beginn) t
GROUP BY
lehrveranstaltung_id,
type,
datum,
topic,
lektor,
lehrfach_bez,
gruppe,
ort_kurzbz,
lehreinheit_id,
lektorname,
gruppen_kuerzel,
farbe
ORDER BY
datum, beginn
"
);
return $query_result;
}
/**
* queries Stundenplan but for a whole lva, irrespective of who is requesting it
*
@@ -235,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]);
@@ -292,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]);
}
@@ -300,10 +392,13 @@ class Stundenplan_model extends DB_Model
/**
* NO STANDALONE FUNCTION - Generates a SQL query string to fetch 'stundenplan' events for a specific student within the current semester.
*
* @param isLvList if condition needed for Tab LV Termine is given
* @param db_stpl_table enables switch to db 'stundenplandev'
*
* @return mixed
*/
public function getStundenplanQuery($start_date, $end_date,$semester,$gruppen,$studentlehrverbaende){
public function getStundenplanQuery($start_date, $end_date, $semester, $gruppen, $studentlehrverbaende, $isLvList=false, $db_stpl_table='stundenplan'){
// helper function to check if either $gruppen or $studentlehrverbaende are empty for each semester
$emptyCheck = function($toBeCheckedArray) use ($semester){
$result = true;
@@ -325,7 +420,7 @@ class Stundenplan_model extends DB_Model
$query =
"select sp.*
from lehre.vw_stundenplan sp
from lehre.vw_".$db_stpl_table." sp
WHERE
sp.datum >= ".$this->escape($start_date)."
AND sp.datum <= ".$this->escape($end_date);
@@ -335,10 +430,10 @@ class Stundenplan_model extends DB_Model
{
$query .= " AND ( ";
}
foreach($semester as $sem => $semester_date_range)
{
foreach($semester_date_range as $sem_date => $sem_date_range)
{
// if there are not groups for the semester skip the iteration step
@@ -358,7 +453,13 @@ class Stundenplan_model extends DB_Model
{
$query = substr($query, 0, -2);
}
//Condition for showLVList FHC4
if(!$isLvList)
$stringGroupLv = "AND gruppe_kurzbz is null";
else
$stringGroupLv ="";
foreach($semester as $sem=>$semester_date_range)
{
foreach($semester_date_range as $sem_date => $sem_date_range)
@@ -373,10 +474,10 @@ class Stundenplan_model extends DB_Model
// Eintraege fuer den ganzen Verband
$query .= "OR (sp.studiengang_kz = ".$this->escape($lehrverband->studiengang_kz)." AND sp.semester = ".$this->escape($lehrverband->semester)." AND sp.verband = ".$this->escape($lehrverband->verband)." AND (sp.gruppe is null OR sp.gruppe='') AND sp.datum BETWEEN ".$this->escape($sem_date_range->start)." AND ".$this->escape($sem_date_range->ende).")";
// Eintraege fuer das ganze Semester
$query .= "OR (sp.studiengang_kz = ".$this->escape($lehrverband->studiengang_kz)." AND sp.semester = ".$this->escape($lehrverband->semester)." AND (sp.verband is null OR sp.verband='') AND sp.datum BETWEEN ".$this->escape($sem_date_range->start)." AND ".$this->escape($sem_date_range->ende).") AND gruppe_kurzbz is null)";
$query .= "OR (sp.studiengang_kz = ".$this->escape($lehrverband->studiengang_kz)." AND sp.semester = ".$this->escape($lehrverband->semester)." AND (sp.verband is null OR sp.verband='') AND sp.datum BETWEEN ".$this->escape($sem_date_range->start)
." AND ".$this->escape($sem_date_range->ende).")". $stringGroupLv. ")";
$query .="OR";
}
}
}
@@ -434,5 +535,4 @@ class Stundenplan_model extends DB_Model
return $this->execQuery($query, [$uid, $uid]);
}
}
+133 -2
View File
@@ -85,7 +85,7 @@ class Message_model extends DB_Model
*/
public function getMessagesOfPerson($person_id, $status = null)
{
$sql = 'SELECT m.message_id,
$sql = "SELECT m.message_id,
m.person_id,
m.subject,
m.body,
@@ -122,7 +122,7 @@ class Message_model extends DB_Model
) s ON (m.message_id = s.message_id AND re.person_id = s.person_id)
WHERE se.person_id = ?
OR re.person_id = ?
';
";
if (is_numeric($status))
{
@@ -230,4 +230,135 @@ class Message_model extends DB_Model
return $this->execQuery($query, $params);
}
/**
* Gets messages for a person for tableMessages.
* @param $person_id
* paginationInitialPage: 1,
* @param $offset number to skip, calculated by tabulatorParam paginationInitialPage and paginationSize, refers to specified numer of skipped items
* and page
* @param $limit refers to tabulatorParam paginationSize
* @return array|null
*/
public function getMessagesForTable($person_id, $offset, $limit)
{
$sql_base = "
SELECT
m.message_id AS message_id,
m.subject AS subject,
m.body AS body,
m.insertamum AS insertamum,
m.relationmessage_id AS relationmessage_id,
(SELECT COALESCE(titelpre,'') || ' ' || COALESCE(vorname,'') || ' ' || COALESCE(nachname,'') || ' ' || COALESCE(titelpost,'') FROM public.tbl_person WHERE person_id = m.person_id) as sender,
(SELECT COALESCE(titelpre,'') || ' ' || COALESCE(vorname,'') || ' ' || COALESCE(nachname,'') || ' ' || COALESCE(titelpost,'') FROM public.tbl_person WHERE person_id = r.person_id) as recipient,
m.person_id as sender_id,
r.person_id as recipient_id,
MAX(ss.status) as status,
MAX(ss.insertamum) as statusdatum
FROM public.tbl_msg_message m
JOIN public.tbl_msg_recipient r USING(message_id)
JOIN public.tbl_msg_status ss ON(r.message_id = ss.message_id AND ss.person_id = r.person_id)
WHERE m.person_id = ?
GROUP BY m.message_id, m.subject, m.body, m.insertamum, m.relationmessage_id, sender, recipient, sender_id, recipient_id
UNION ALL
SELECT
m.message_id AS message_id,
m.subject AS subject,
m.body AS body,
m.insertamum AS insertamum,
m.relationmessage_id AS relationmessage_id,
(SELECT COALESCE(titelpre,'') || ' ' || COALESCE(vorname,'') || ' ' || COALESCE(nachname,'') || ' ' || COALESCE(titelpost,'') FROM public.tbl_person WHERE person_id = m.person_id) as sender,
(SELECT COALESCE(titelpre,'') || ' ' || COALESCE(vorname,'') || ' ' || COALESCE(nachname,'') || ' ' || COALESCE(titelpost,'') FROM public.tbl_person WHERE person_id = r.person_id) as recipient,
m.person_id as sender_id,
r.person_id as recipient_id,
MAX(ss.status) as status,
MAX(ss.insertamum) as statusdatum
FROM public.tbl_msg_recipient r
JOIN public.tbl_msg_status ss USING(message_id, person_id)
JOIN public.tbl_msg_message m USING(message_id)
WHERE r.person_id = ?
GROUP BY m.message_id, m.subject, m.body, m.insertamum, m.relationmessage_id, sender, recipient, sender_id, recipient_id
";
$sql = "
SELECT COUNT(*) AS count FROM (
" . $sql_base . "
) a
";
$parametersArray = array($person_id, $person_id);
$count = $this->execQuery($sql, $parametersArray);
if (isError($count))
return $count;
$count = ceil(current(getData($count))->count/$limit);
$sql = "
SELECT * FROM (
" . $sql_base . "
) a
ORDER BY insertamum DESC
LIMIT ?
OFFSET ?
";
$parametersArray = array($person_id, $person_id, $limit, $offset);
$data = $this->execQuery($sql, $parametersArray);
if (isError($data))
return $data;
$data = getData($data);
return success(['data' => $data, 'count' => $count]);
}
/**
* Deletes entry in dependency table tbl_msg_recipient
*
* @param $message_id
* @return boolean success
*/
public function deleteMessageRecipient($message_id)
{
$sql = "
DELETE FROM public.tbl_msg_recipient
WHERE message_id = ?;
";
return $this->execQuery($sql, array($message_id));
}
/**
* Deletes entry in dependency table tbl_msg_status
*
* @param $message_id
* @return boolean success
*/
public function deleteMessageStatus($message_id)
{
$sql = "
DELETE FROM public.tbl_msg_status
WHERE message_id = ?;
";
return $this->execQuery($sql, array($message_id));
}
/**
* Deletes entry in dependency table tbl_msg_message
*
* @param $message_id
* @return boolean success
*/
public function deleteMessage($message_id)
{
$sql = "
DELETE FROM public.tbl_msg_message
WHERE message_id = ?;
";
return $this->execQuery($sql, array($message_id));
}
}
+127 -1
View File
@@ -13,7 +13,7 @@ class Vorlage_model extends DB_Model
}
/**
* Returns mume types
* Returns mime types
*/
public function getMimeTypes()
{
@@ -21,4 +21,130 @@ class Vorlage_model extends DB_Model
return $this->execQuery($query);
}
/**
* Returns all Vorlagen for archive
*/
public function getArchivVorlagen()
{
$query ="SELECT * FROM public.tbl_vorlage WHERE archivierbar=true ORDER BY bezeichnung";
return $this->execQuery($query);
}
/**
* Returns all Vorlagen
* that belongs to the organisation units of the user
* and the parents of those organisation units until the root of the
* @param Array Array of $oe_kurzbz
* @return object Array of Vorlagen
*/
public function getAllVorlagenByOe($oe_kurzbz)
{
// Loads library OrganisationseinheitLib
$this->load->library('OrganisationseinheitLib');
$vorlage = success(array()); // Default value
$table = '(
SELECT v.vorlage_kurzbz,
v.bezeichnung,
vs.version,
vs.oe_kurzbz,
vs.aktiv,
vs.subject,
vs.text,
v.mimetype
FROM tbl_vorlagestudiengang vs
JOIN tbl_vorlage v USING(vorlage_kurzbz)
) templates';
$alias = 'templates';
$fields = array(
'templates.vorlage_kurzbz AS id',
'templates.bezeichnung || \' (\' || UPPER(templates.oe_kurzbz) || \')\' AS description'
);
$where = 'templates.aktiv = TRUE
AND templates.subject IS NOT NULL
AND templates.text IS NOT NULL
AND templates.mimetype = \'text/html\'
GROUP BY 1, 2, 3';
$order_by = 'description ASC';
if (!is_array($oe_kurzbz))
{
$vorlage = $this->organisationseinheitlib->treeSearchEntire(
$table,
$alias,
$fields,
$where,
$order_by,
$oe_kurzbz
);
}
else // is an array
{
// Get the vorlage for each organisation unit
foreach($oe_kurzbz as $val)
{
$tmpVorlage = $this->organisationseinheitlib->treeSearchEntire(
$table,
$alias,
$fields,
$where,
$order_by,
$val
);
// Everything is ok and data are inside
if (hasData($tmpVorlage))
{
// If it's the first vorlage copy it
if (!hasData($vorlage))
{
for ($j = 0; $j < count(getData($tmpVorlage)); $j++)
{
if (getData($tmpVorlage)[$j]->id != '')
{
array_push($vorlage->retval, getData($tmpVorlage)[$j]);
}
}
}
else // checks for duplicates, if it's not already present push it into the array getData($vorlage)
{
for ($j = 0; $j < count(getData($tmpVorlage)); $j++)
{
$found = false;
$currentTmpVorlageData = null;
for ($i = 0; $i < count(getData($vorlage)); $i++)
{
$currentTmpVorlageData = getData($tmpVorlage)[$j];
if (getData($vorlage)[$i]->id == getData($tmpVorlage)[$j]->id
&& getData($vorlage)[$i]->_pk == getData($tmpVorlage)[$j]->_pk
&& getData($vorlage)[$i]->_ppk == getData($tmpVorlage)[$j]->_ppk
&& getData($vorlage)[$i]->_jtpk == getData($tmpVorlage)[$j]->_jtpk)
{
$found = true;
break;
}
}
if (!$found && $currentTmpVorlageData->id != '')
{
array_push($vorlage->retval, $currentTmpVorlageData);
}
}
}
}
}
}
return $vorlage;
}
}
@@ -11,4 +11,31 @@ class Ablauf_model extends DB_Model
$this->dbTable = 'testtool.tbl_ablauf';
$this->pk = 'ablauf_id';
}
/**
* Returns Weighting of the respective ranking test areas
* @param $studiengang_kz Studiengang_kz
* @param $semester Integer optional
* @return array of weightings per ranking test areas of given studiengang
*/
public function getAblaufGebieteAndGewichte($studiengang_kz, $semester = null)
{
$parametersArray = array($studiengang_kz);
$qry = "
SELECT
tbl_ablauf.gebiet_id, tbl_ablauf.gewicht
FROM
testtool.tbl_ablauf
WHERE
tbl_ablauf.studiengang_kz= ?";
if($semester)
{
$qry .= " AND semester = ?";
array_push($parametersArray, $semester);
}
return $this->execQuery($qry, $parametersArray);
}
}