mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-25 08:34:29 +00:00
Merge branch 'master' into feature-19538/Gruppenadministratoren
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user