From 8bd007b6ea31f2840fc85dea9ef3b587ebab2cfb Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 12 Jan 2023 09:38:41 +0100 Subject: [PATCH] Merged Fachbereichsleitungs-files into core files . approveAnrechnungUebersichtData_fbl.php into approveAnrechnungUebersichtData.php . reviewAnrechnungUebersichtData_fbl.php into reviewAnrechnungUebersichtData.php --- .../approveAnrechnungUebersicht.php | 9 +- .../approveAnrechnungUebersichtData.php | 43 ++++++- .../anrechnung/reviewAnrechnungUebersicht.php | 8 +- .../reviewAnrechnungUebersichtData.php | 109 +++++++++++++----- 4 files changed, 117 insertions(+), 52 deletions(-) diff --git a/application/views/lehre/anrechnung/approveAnrechnungUebersicht.php b/application/views/lehre/anrechnung/approveAnrechnungUebersicht.php index 34cb6b998..dec7dcaff 100644 --- a/application/views/lehre/anrechnung/approveAnrechnungUebersicht.php +++ b/application/views/lehre/anrechnung/approveAnrechnungUebersicht.php @@ -124,14 +124,7 @@ $this->load->view(
- load->config('anrechnung'); - if ($this->config->item('fbl') === TRUE) - $this->load->view('lehre/anrechnung/approveAnrechnungUebersichtData_fbl.php'); - else - $this->load->view('lehre/anrechnung/approveAnrechnungUebersichtData.php'); - ?> + load->view('lehre/anrechnung/approveAnrechnungUebersichtData.php'); ?>
diff --git a/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php b/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php index 87ba57b6f..0a0d33c3b 100644 --- a/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php +++ b/application/views/lehre/anrechnung/approveAnrechnungUebersichtData.php @@ -107,8 +107,39 @@ $query = ' AND status_kurzbz = \'' . ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR . '\' ORDER BY insertamum DESC LIMIT 1) - END "empfehlungsanfrageAm", - CASE + END "empfehlungsanfrageAm",'; + +$this->load->config('anrechnung'); +if ($this->config->item('fbl') === TRUE) +{ + $query.= ' CASE + WHEN (anrechnungen.empfehlung_anrechnung IS NULL AND anrechnungen.status_kurzbz = \'' . ANRECHNUNGSTATUS_PROGRESSED_BY_STGL . '\') THEN NULL + ELSE + (SELECT COALESCE( + STRING_AGG(CONCAT_WS(\' \', vorname, nachname), \', \') + ) empfehlungsanfrageAn + FROM ( + SELECT DISTINCT ON (benutzer.uid) bf.uid, vorname, nachname + FROM lehre.tbl_lehreinheit + JOIN lehre.tbl_lehrveranstaltung lv using (lehrveranstaltung_id) + JOIN public.tbl_organisationseinheit og using (oe_kurzbz) + JOIN public.tbl_benutzerfunktion bf using (oe_kurzbz) + JOIN public.tbl_benutzer benutzer ON bf.uid = benutzer.uid + JOIN public.tbl_person USING (person_id) + WHERE studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\' + and bf.datum_von <= now() + and (bf.datum_bis >= now() or bf.datum_bis is null) + AND lehrveranstaltung_id = anrechnungen.lehrveranstaltung_id + AND benutzer.aktiv = TRUE + AND tbl_person.aktiv = TRUE + ORDER BY benutzer.uid, nachname, vorname + ) as tmp_lvlektoren + ) + END "empfehlungsanfrageAn"'; +} +else +{ + $query.= ' CASE WHEN (anrechnungen.empfehlung_anrechnung IS NULL AND anrechnungen.status_kurzbz = \'' . ANRECHNUNGSTATUS_PROGRESSED_BY_STGL . '\') THEN NULL ELSE (SELECT COALESCE( @@ -130,8 +161,10 @@ $query = ' ORDER BY benutzer.uid, lvleiter DESC, nachname, vorname ) as tmp_lvlektoren ) - END "empfehlungsanfrageAn" - FROM anrechnungen + END "empfehlungsanfrageAn"'; +} + +$query.= ' FROM anrechnungen JOIN lehre.tbl_anrechnungstatus as anrechnungstatus ON (anrechnungstatus.status_kurzbz = anrechnungen.status_kurzbz) WHERE studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\' AND studiengang_kz IN (' . $STUDIENGAENGE_ENTITLED . ') @@ -147,7 +180,7 @@ $filterWidgetArray = array( 'lehrveranstaltung_id', 'begruendung_id', 'dms_id', - 'schreibberechtigt', + 'Schreibberechtigt', 'studiensemester_kurzbz', 'studiengang_kz', ucfirst($this->p->t('lehre', 'studiengang')), diff --git a/application/views/lehre/anrechnung/reviewAnrechnungUebersicht.php b/application/views/lehre/anrechnung/reviewAnrechnungUebersicht.php index 82e66487f..e3de15084 100644 --- a/application/views/lehre/anrechnung/reviewAnrechnungUebersicht.php +++ b/application/views/lehre/anrechnung/reviewAnrechnungUebersicht.php @@ -117,13 +117,7 @@ $this->load->view(
- load->config('anrechnung'); - if($this->config->item('fbl')===TRUE) - $this->load->view('lehre/anrechnung/reviewAnrechnungUebersichtData_fbl.php'); - else - $this->load->view('lehre/anrechnung/reviewAnrechnungUebersichtData.php');?> + load->view('lehre/anrechnung/reviewAnrechnungUebersichtData.php');?>
diff --git a/application/views/lehre/anrechnung/reviewAnrechnungUebersichtData.php b/application/views/lehre/anrechnung/reviewAnrechnungUebersichtData.php index aa28d7fc0..ca086506f 100644 --- a/application/views/lehre/anrechnung/reviewAnrechnungUebersichtData.php +++ b/application/views/lehre/anrechnung/reviewAnrechnungUebersichtData.php @@ -63,32 +63,77 @@ $query = ' AND benutzer.aktiv = TRUE AND tbl_person.aktiv = TRUE ORDER BY lehrveranstaltung_id, benutzer.uid, lehrfunktion_kurzbz DESC - ) - - SELECT DISTINCT ON (anrechnungen.*, lema.mitarbeiter_uid) anrechnungen.*, - array_to_json(anrechnungstatus.bezeichnung_mehrsprachig::varchar[])->>' . $LANGUAGE_INDEX . ' AS "status_bezeichnung", - CASE - -- erst prüfen, ob es überhaupt eine LV Leitung gibt (wenn nicht, dann immer empfehlungsberechtigt) - WHEN EXISTS (SELECT 1 FROM tbl_lvleitungen WHERE lehrveranstaltung_id = anrechnungen.lehrveranstaltung_id AND lvleiter = TRUE) - -- wenn ja, return true, wenn user LV Leitung ist oder false, wenn nicht - THEN (SELECT EXISTS (SELECT 1 FROM tbl_lvleitungen WHERE lehrveranstaltung_id = anrechnungen.lehrveranstaltung_id AND lvleiter = TRUE AND uid = \'' . $LEKTOR_UID . '\')) - -- wenn es keine LV Leitung, return immer true - ELSE TRUE - END AS empfehlungsberechtigt - FROM anrechnungen - JOIN lehre.tbl_anrechnungstatus as anrechnungstatus ON (anrechnungstatus.status_kurzbz = anrechnungen.status_kurzbz) - JOIN lehre.tbl_lehreinheit le USING (lehrveranstaltung_id) - JOIN lehre.tbl_lehreinheitmitarbeiter lema USING (lehreinheit_id) - WHERE le.studiensemester_kurzbz = anrechnungen.studiensemester_kurzbz - AND lema.mitarbeiter_uid = \'' . $LEKTOR_UID . '\' - AND le.lehre = TRUE - AND EXISTS ( - SELECT 1 - FROM lehre.tbl_anrechnung_anrechnungstatus - WHERE anrechnung_id = anrechnungen.anrechnung_id - AND status_kurzbz=\'inProgressLektor\' - ) -'; + )'; + +$this->load->config('anrechnung'); +if ($this->config->item('fbl') === TRUE) +{ + $query.= ' + SELECT DISTINCT /*ON (anrechnungen.*, bf.uid)*/ + CASE + -- erst prüfen, ob es überhaupt eine LV Leitung gibt (wenn nicht, dann immer empfehlungsberechtigt) + WHEN EXISTS (SELECT 1 FROM tbl_lvleitungen WHERE lehrveranstaltung_id = anrechnungen.lehrveranstaltung_id AND lvleiter = TRUE) + -- wenn ja, return true, wenn user LV Leitung ist oder false, wenn nicht + THEN (SELECT EXISTS (SELECT 1 FROM tbl_lvleitungen WHERE lehrveranstaltung_id = anrechnungen.lehrveranstaltung_id AND lvleiter = TRUE AND uid = \'' . $LEKTOR_UID . '\')) + -- wenn es keine LV Leitung, return immer true + ELSE TRUE + END AS empfehlungsberechtigt, + anrechnungen.*, + array_to_json(anrechnungstatus.bezeichnung_mehrsprachig::varchar[])->>' . $LANGUAGE_INDEX . ' AS "status_bezeichnung" + FROM anrechnungen + JOIN lehre.tbl_anrechnungstatus as anrechnungstatus ON (anrechnungstatus.status_kurzbz = anrechnungen.status_kurzbz) + JOIN lehre.tbl_lehreinheit le USING (lehrveranstaltung_id) + /*JOIN lehre.tbl_lehreinheitmitarbeiter lema USING (lehreinheit_id)*/ + JOIN lehre.tbl_lehrveranstaltung lv using (lehrveranstaltung_id) + JOIN public.tbl_organisationseinheit og using (oe_kurzbz) + JOIN public.tbl_benutzerfunktion bf using (oe_kurzbz) + WHERE anrechnungen.studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\' + AND le.studiensemester_kurzbz = anrechnungen.studiensemester_kurzbz + /*AND lema.mitarbeiter_uid = \'' . $LEKTOR_UID . '\'*/ + AND le.lehre = TRUE + AND bf.funktion_kurzbz = \'Leitung\' + and bf.datum_von <= now() + and (bf.datum_bis >= now() or bf.datum_bis is null) + AND og.organisationseinheittyp_kurzbz = \'Fachbereich\' + AND bf.uid = \'' . $LEKTOR_UID . '\' + AND EXISTS ( + SELECT 1 + FROM lehre.tbl_anrechnung_anrechnungstatus + WHERE anrechnung_id = anrechnungen.anrechnung_id + AND status_kurzbz=\'inProgressLektor\' + ) + order by empfehlung_anrechnung NULLS FIRST, antragsdatum + '; +} +else +{ + $query.= ' + SELECT DISTINCT ON (anrechnungen.*, lema.mitarbeiter_uid) + CASE + -- erst prüfen, ob es überhaupt eine LV Leitung gibt (wenn nicht, dann immer empfehlungsberechtigt) + WHEN EXISTS (SELECT 1 FROM tbl_lvleitungen WHERE lehrveranstaltung_id = anrechnungen.lehrveranstaltung_id AND lvleiter = TRUE) + -- wenn ja, return true, wenn user LV Leitung ist oder false, wenn nicht + THEN (SELECT EXISTS (SELECT 1 FROM tbl_lvleitungen WHERE lehrveranstaltung_id = anrechnungen.lehrveranstaltung_id AND lvleiter = TRUE AND uid = \'' . $LEKTOR_UID . '\')) + -- wenn es keine LV Leitung, return immer true + ELSE TRUE + END AS empfehlungsberechtigt, + anrechnungen.*, + array_to_json(anrechnungstatus.bezeichnung_mehrsprachig::varchar[])->>' . $LANGUAGE_INDEX . ' AS "status_bezeichnung" + FROM anrechnungen + JOIN lehre.tbl_anrechnungstatus as anrechnungstatus ON (anrechnungstatus.status_kurzbz = anrechnungen.status_kurzbz) + JOIN lehre.tbl_lehreinheit le USING (lehrveranstaltung_id) + JOIN lehre.tbl_lehreinheitmitarbeiter lema USING (lehreinheit_id) + WHERE le.studiensemester_kurzbz = anrechnungen.studiensemester_kurzbz + AND lema.mitarbeiter_uid = \'' . $LEKTOR_UID . '\' + AND le.lehre = TRUE + AND EXISTS ( + SELECT 1 + FROM lehre.tbl_anrechnung_anrechnungstatus + WHERE anrechnung_id = anrechnungen.anrechnung_id + AND status_kurzbz=\'inProgressLektor\' + ) + '; +} $filterWidgetArray = array( 'query' => $query, @@ -96,6 +141,7 @@ $filterWidgetArray = array( 'requiredPermissions' => 'lehre/anrechnung_empfehlen', 'datasetRepresentation' => 'tabulator', 'columnsAliases' => array( + 'Empfehlungsberechtigt', 'anrechnung_id', 'lehrveranstaltung_id', 'begruendung_id', @@ -113,8 +159,7 @@ $filterWidgetArray = array( ucfirst($this->p->t('anrechnung', 'antragdatum')), ucfirst($this->p->t('anrechnung', 'empfehlung')), 'status_kurzbz', - 'Status', - 'empfehlungsberechtigt' + 'Status' ), 'datasetRepOptions' => '{ height: func_height(this), @@ -148,6 +193,9 @@ $filterWidgetArray = array( } }', // tabulator properties 'datasetRepFieldsDefs' => '{ + empfehlungsberechtigt: {formatter:"tickCross", align:"center", headerTooltip:"Berechtigt wenn man die LV leitet oder wenn der LV keine LV-Leitung zugeordnet ist.", + headerFilter:"tickCross", headerFilterParams:{"tristate": true, "initial": true}, headerFilterFunc: hf_empfehlungsberechtigt + }, anrechnung_id: {visible: false, headerFilter:"input"}, lehrveranstaltung_id: {visible: false, headerFilter:"input"}, begruendung_id: {visible: false, headerFilter:"input"}, @@ -165,10 +213,7 @@ $filterWidgetArray = array( antragsdatum: {align:"center", headerFilter:"input", mutator: mut_formatStringDate}, empfehlung_anrechnung: {headerFilter:"input", align:"center", formatter: format_empfehlung_anrechnung, headerFilterFunc: hf_filterTrueFalse}, status_kurzbz: {visible: false, headerFilter:"input"}, - status_bezeichnung: {headerFilter:"input"}, - empfehlungsberechtigt: {formatter:"tickCross", align:"center", - headerFilter:"tickCross", headerFilterParams:{"tristate": true, "initial": true}, headerFilterFunc: hf_empfehlungsberechtigt - } + status_bezeichnung: {headerFilter:"input"} }', // col properties );