Merge branch 'master' into feature-19538/Gruppenadministratoren

This commit is contained in:
Harald Bamberger
2022-08-16 07:54:43 +02:00
30 changed files with 1946 additions and 96 deletions
@@ -309,4 +309,50 @@ class Lehrveranstaltung_model extends DB_Model
return $this->execQuery($query, array($uid, $studiensemester_kurzbz, $lehrveranstaltung_id));
}
/**
* Sucht nach LV Templates und gibt Id und Label ("bezeichnung [kurzbz]") aus
* Diese funktion ist für autocomplete gedacht
*
* @param string $filter Suchfilter
* @return \stdClass A return object
*/
public function loadTemplates($filter)
{
$filter = strtolower($filter);
$qry = "SELECT
tbl_lehrveranstaltung.lehrveranstaltung_id, tbl_lehrveranstaltung.bezeichnung, tbl_lehrveranstaltung.kurzbz
FROM
lehre.tbl_lehrveranstaltung
WHERE
tbl_lehrveranstaltung.lehrtyp_kurzbz = 'tpl' AND (
CAST(tbl_lehrveranstaltung.lehrveranstaltung_id AS TEXT) LIKE '%".$this->db_escape($filter)."%' OR
LOWER(tbl_lehrveranstaltung.bezeichnung) LIKE '%".$this->db_escape($filter). "%' OR
LOWER(tbl_lehrveranstaltung.kurzbz) LIKE '%".$this->db_escape($filter). "%'
)
";
return $this->execQuery($qry);
}
/**
* Lädt Template und gibt Id und Label ("bezeichnung [kurzbz]") zurück
* Diese funktion ist für autocomplete gedacht
*
* @param string $name
* @return \stdClass A return object
*/
public function loadTemplateByName($name)
{
$qry = "SELECT
tbl_lehrveranstaltung.lehrveranstaltung_id as id, CONCAT(tbl_lehrveranstaltung.bezeichnung, ' [', tbl_lehrveranstaltung.kurzbz, ']') as label
FROM
lehre.tbl_lehrveranstaltung
WHERE
tbl_lehrveranstaltung.lehrtyp_kurzbz = 'tpl' AND (
CAST(tbl_lehrveranstaltung.lehrveranstaltung_id AS TEXT) = '".($name ? $this->db_escape($name) : 0)."' OR tbl_lehrveranstaltung.bezeichnung = '".$this->db_escape($name). "' OR tbl_lehrveranstaltung.kurzbz = '".$this->db_escape($name). "'
)
";
return $this->execQuery($qry);
}
}
+6 -6
View File
@@ -82,7 +82,7 @@ class Person_model extends DB_Model
}
else
{
$person['svnr'] = $person['svnr'] . 'v' . ($result->retval[0]->svnr{11} + 1);
$person['svnr'] = $person['svnr'] . 'v' . ($result->retval[0]->svnr[11] + 1);
}
}
}
@@ -283,8 +283,8 @@ class Person_model extends DB_Model
SELECT p2.person_id
FROM public.tbl_person p
JOIN public.tbl_person p2
ON p.vorname = p2.vorname
AND p.nachname = p2.nachname
ON lower(p.vorname) = lower(p2.vorname)
AND lower(p.nachname) = lower(p2.nachname)
AND p.gebdatum = p2.gebdatum
AND p.person_id = ?
)
@@ -310,8 +310,8 @@ class Person_model extends DB_Model
SELECT p2.person_id
FROM public.tbl_person p
JOIN public.tbl_person p2
ON p.vorname = p2.vorname
AND p.nachname = p2.nachname
ON lower(p.vorname) = lower(p2.vorname)
AND lower(p.nachname) = lower(p2.nachname)
AND p.gebdatum = p2.gebdatum
AND p.person_id = ?
)
@@ -330,7 +330,7 @@ class Person_model extends DB_Model
SELECT vorname, nachname, gebdatum, person_id
FROM tbl_person
) p2
ON (p1.vorname = p2.vorname AND p1.nachname = p2.nachname AND p1.gebdatum = p2.gebdatum)
ON (lower(p1.vorname) = lower(p2.vorname) AND lower(p1.nachname) = lower(p2.nachname) AND p1.gebdatum = p2.gebdatum)
WHERE p1.person_id != p2.person_id AND (p1.person_id = ?)";
return $this->execQuery($qry, array($person_id, $person_id, $person_id));
@@ -254,6 +254,22 @@
ORDER BY ps.zgvmanation DESC NULLS LAST, ps.prestudent_id DESC
LIMIT 1
) AS "ZGVMNation",
(
SELECT upper(tbl_nation.nationengruppe_kurzbz)
FROM public.tbl_prestudent ps
JOIN bis.tbl_nation ON ps.zgvnation = tbl_nation.nation_code
WHERE ps.person_id = p.person_id
ORDER BY ps.zgvnation DESC NULLS LAST, ps.prestudent_id DESC
LIMIT 1
) AS "ZGVNationGruppe",
(
SELECT upper(tbl_nation.nationengruppe_kurzbz)
FROM public.tbl_prestudent ps
JOIN bis.tbl_nation ON ps.zgvmanation = tbl_nation.nation_code
WHERE ps.person_id = p.person_id
ORDER BY ps.zgvmanation DESC NULLS LAST, ps.prestudent_id DESC
LIMIT 1
) AS "ZGVMNationGruppe",
(
SELECT tbl_organisationseinheit.bezeichnung
FROM public.tbl_benutzerfunktion
@@ -361,6 +377,8 @@
ucfirst($this->p->t('lehre', 'studiengang')).' ('.$this->p->t('global', 'aktiv').')',
'ZGV Nation BA',
'ZGV Nation MA',
'ZGV Gruppe BA',
'ZGV Gruppe MA',
'InfoCenter Mitarbeiter'
),
'formatRow' => function($datasetRaw) {
@@ -452,6 +470,16 @@
$datasetRaw->{'ZGVMNation'} = '-';
}
if ($datasetRaw->{'ZGVNationGruppe'} == null)
{
$datasetRaw->{'ZGVNationGruppe'} = '-';
}
if ($datasetRaw->{'ZGVMNationGruppe'} == null)
{
$datasetRaw->{'ZGVMNationGruppe'} = '-';
}
if ($datasetRaw->{'InfoCenterMitarbeiter'} === null)
{
$datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein';
@@ -199,14 +199,15 @@ $query = '
LIMIT 1
) AS "ReihungstestApplied",
(
SELECT rtp.datum
SELECT CONCAT(rtp.datum, rtp.uhrzeit)
FROM public.tbl_prestudentstatus pss
JOIN public.tbl_prestudent ps USING(prestudent_id)
LEFT JOIN (
SELECT rtp.person_id,
rt.studiensemester_kurzbz,
rtp.teilgenommen,
rt.datum
rt.datum,
rt.uhrzeit
FROM public.tbl_rt_person rtp
JOIN tbl_reihungstest rt ON(rtp.rt_id = rt.reihungstest_id)
WHERE rt.stufe = 1
@@ -409,13 +410,13 @@ $query = '
$datasetRaw->{'ReihungstestApplied'} = 'Nein';
}
if ($datasetRaw->{'ReihungstestDate'} == null)
if ($datasetRaw->{'ReihungstestDate'} == '')
{
$datasetRaw->{'ReihungstestDate'} = '-';
}
else
{
$datasetRaw->{'ReihungstestDate'} = date_format(date_create($datasetRaw->{'ReihungstestDate'}),'Y-m-d');
$datasetRaw->{'ReihungstestDate'} = date_format(date_create($datasetRaw->{'ReihungstestDate'}),'Y-m-d H:i');
}
if ($datasetRaw->{'ZGVNation'} == null)
+33 -14
View File
@@ -31,15 +31,35 @@ $query = "WITH zustaendigkeiten AS (
$query .= " THEN TRUE
ELSE FALSE
END AS \"zustaendig\"
FROM system.tbl_fehler_zustaendigkeiten zst
FROM system.tbl_fehler_zustaendigkeiten zst
)";
$query .= "SELECT issue_id, fehlercode AS \"Fehlercode\", iss.fehlercode_extern AS \"Fehlercode extern\", datum AS \"Datum\",
inhalt AS \"Inhalt\", inhalt_extern AS \"Inhalt extern\", iss.person_id AS \"PersonId\", iss.oe_kurzbz AS \"OE\",
inhalt AS \"Inhalt\", inhalt_extern AS \"Inhalt extern\", iss.person_id AS \"PersonId\", iss.oe_kurzbz AS \"OE\",
ftyp.bezeichnung_mehrsprachig[".$LANGUAGE_INDEX."] AS \"Fehlertyp\", stat.bezeichnung_mehrsprachig[".$LANGUAGE_INDEX."] AS \"Fehlerstatus\",
verarbeitetvon AS \"Verarbeitet von\",verarbeitetamum AS \"Verarbeitet am\", fr.app AS \"Applikation\",
fr.fehlertyp_kurzbz AS \"Fehlertypcode\", iss.status_kurzbz AS \"Statuscode\",
pers.vorname AS \"Vorname\", pers.nachname AS \"Nachname\",
pers.vorname AS \"Vorname\", pers.nachname AS \"Nachname\",
(
/* show all relevant Studiengänge of person and wether it is an employee*/
SELECT STRING_AGG(studiengang || ' ' || last_status, ' | ')
|| (CASE WHEN EXISTS (
SELECT 1 FROM public.tbl_mitarbeiter ma
JOIN public.tbl_benutzer ben ON ma.mitarbeiter_uid = ben.uid
WHERE person_id = prestudents.person_id
AND ben.aktiv
) THEN ' | Mitarbeiter' ELSE '' END)
FROM (
SELECT DISTINCT person_id, prestudent_id, UPPER(stg.typ || stg.kurzbz) AS studiengang, get_rolle_prestudent(ps.prestudent_id, null) AS last_status
FROM public.tbl_prestudent ps
JOIN public.tbl_studiengang stg USING (studiengang_kz)
WHERE person_id = pers.person_id
ORDER BY prestudent_id DESC
) prestudents
WHERE last_status IN ('Aufgenommener', 'Student', 'Incoming', 'Diplomand', 'Abbrecher', 'Unterbrecher', 'Absolvent')
GROUP BY person_id
LIMIT 1;
) AS \"Zugehörigkeit\",
CASE
WHEN
EXISTS(SELECT 1
@@ -60,7 +80,7 @@ $query .= "SELECT issue_id, fehlercode AS \"Fehlercode\", iss.fehlercode_extern
FROM system.tbl_fehler_zustaendigkeiten
JOIN public.tbl_person USING (person_id)
WHERE fehlercode = fr.fehlercode
GROUP BY fehlercode
GROUP BY fehlercode
) AS \"Person Zuständigkeiten\",
(
SELECT string_agg(organisationseinheittyp_kurzbz || ' ' || oe.bezeichnung || COALESCE(' - ' || fu.beschreibung, ''), ' | ' ORDER BY bezeichnung, oe_kurzbz)
@@ -68,7 +88,7 @@ $query .= "SELECT issue_id, fehlercode AS \"Fehlercode\", iss.fehlercode_extern
LEFT JOIN public.tbl_organisationseinheit oe USING (oe_kurzbz)
LEFT JOIN public.tbl_funktion fu USING (funktion_kurzbz)
WHERE fehlercode = fr.fehlercode
GROUP BY fehlercode
GROUP BY fehlercode
) AS \"Organisationseinheit Zuständigkeiten\"
FROM system.tbl_issue iss
JOIN system.tbl_fehler fr USING (fehlercode)
@@ -95,13 +115,13 @@ if (!isEmptyArray($all_oe_kurzbz_berechtigt))
AND NOT EXISTS (SELECT 1 /* irrelevant if already finished studies and studied a while ago */
FROM public.tbl_prestudentstatus ps_finished
JOIN public.tbl_studiensemester sem_finished USING (studiensemester_kurzbz)
WHERE prestudent_id = ps.prestudent_id
WHERE prestudent_id = ps.prestudent_id
AND status_kurzbz IN ('Absolvent','Abbrecher','Abgewiesener')
AND datum::date + interval '2 months' < NOW()
AND EXISTS (SELECT 1 FROM public.tbl_prestudent /* if more recent prestudent exists, still display the issue */
JOIN public.tbl_prestudentstatus USING (prestudent_id)
JOIN public.tbl_studiensemester USING (studiensemester_kurzbz)
WHERE tbl_prestudentstatus.status_kurzbz IN $RELEVANT_PRESTUDENT_STATUS
WHERE tbl_prestudentstatus.status_kurzbz IN $RELEVANT_PRESTUDENT_STATUS
AND person_id = ps.person_id
AND prestudent_id <> ps_finished.prestudent_id
AND tbl_studiensemester.start::date > sem_finished.start::date)
@@ -149,6 +169,7 @@ $filterWidgetArray = array(
ucfirst($this->p->t('fehlermonitoring', 'statuscode')),
ucfirst($this->p->t('person', 'vorname')),
ucfirst($this->p->t('person', 'nachname')),
ucfirst($this->p->t('fehlermonitoring', 'zugehoerigkeit')),
ucfirst($this->p->t('fehlermonitoring', 'hauptzustaendig')),
ucfirst($this->p->t('fehlermonitoring', 'zustaendigePersonen')),
ucfirst($this->p->t('fehlermonitoring', 'zustaendigeOrganisationseinheiten'))
@@ -180,16 +201,16 @@ $filterWidgetArray = array(
$datasetRaw->{'OE'} = '-';
}
if ($datasetRaw->{'Verarbeitet am'} == null)
{
$datasetRaw->{'Verarbeitet am'} = '-';
}
if ($datasetRaw->{'Verarbeitet von'} == null)
{
$datasetRaw->{'Verarbeitet von'} = '-';
}
if ($datasetRaw->{'Zugehörigkeit'} == null)
{
$datasetRaw->{'Zugehörigkeit'} = '-';
}
if ($datasetRaw->{'Person Zuständigkeiten'} == null)
{
$datasetRaw->{'Person Zuständigkeiten'} = '-';
@@ -200,8 +221,6 @@ $filterWidgetArray = array(
$datasetRaw->{'Organisationseinheit Zuständigkeiten'} = '-';
}
return $datasetRaw;
},
'markRow' => function($datasetRaw) {