diff --git a/application/views/lehre/lehrauftrag/approveLehrauftragData.php b/application/views/lehre/lehrauftrag/approveLehrauftragData.php new file mode 100644 index 000000000..02c3a6e22 --- /dev/null +++ b/application/views/lehre/lehrauftrag/approveLehrauftragData.php @@ -0,0 +1,286 @@ += 0 + ) tmp_lehrauftraege + + UNION + + /* Projektbetreuungsaufträge and -vertragsstati */ + SELECT *, + (SELECT + uid + FROM + public.tbl_benutzer + WHERE + person_id = tmp_projektbetreuung.person_id + AND aktiv = TRUE) AS "mitarbeiter_uid", + /* existing contracts with status bestellt */ + (SELECT + datum + FROM + lehre.tbl_vertrag_vertragsstatus + WHERE + tbl_vertrag_vertragsstatus.vertragsstatus_kurzbz = \'bestellt\' + AND vertrag_id = tmp_projektbetreuung.vertrag_id) AS "bestellt", + /* existing contracts with status erteilt */ + (SELECT + datum + FROM + lehre.tbl_vertrag_vertragsstatus + WHERE + tbl_vertrag_vertragsstatus.vertragsstatus_kurzbz = \'erteilt\' + AND vertrag_id = tmp_projektbetreuung.vertrag_id) AS "erteilt", + /* existing contracts with status akzeptiert */ + (SELECT + datum + FROM + lehre.tbl_vertrag_vertragsstatus + WHERE + tbl_vertrag_vertragsstatus.vertragsstatus_kurzbz = \'akzeptiert\' + AND vertrag_id = tmp_projektbetreuung.vertrag_id) AS "akzeptiert" + FROM + ( + SELECT + pa.lehreinheit_id, + lv.lehrveranstaltung_id, + pa.projektarbeit_id AS "projektarbeit_id", + le.studiensemester_kurzbz, + stg.studiengang_kz, + person.person_id, + \'Betreuung\' AS "typ", + (betreuerart_kurzbz || \' \' || + (SELECT + vorname || \' \' || nachname + FROM + PUBLIC.tbl_person + JOIN PUBLIC.tbl_benutzer USING (person_id) + WHERE + uid = pa.student_uid + ) + || \' [\' || projekttyp_kurzbz || \'arbeit\' || \' \' || lv.semester || \'.Semester]\') AS "auftrag", + CASE + WHEN oe.organisationseinheittyp_kurzbz = + \'Kompetenzfeld\' THEN ( + \'KF \' || oe.bezeichnung) + WHEN oe.organisationseinheittyp_kurzbz = + \'Department\' THEN ( + \'DEP \' || oe.bezeichnung) + ELSE (oe.organisationseinheittyp_kurzbz || + \' \' || oe.bezeichnung) + END AS "lv_oe_kurzbz", + CONCAT(stg.kurzbzlang, + \'-\', legr.semester, legr.verband, legr.gruppe, + \'\n\' || legr.gruppe_kurzbz) AS "gruppe", + (vorname || \' \' || nachname) AS "lektor", + TRUNC(pb.stunden, 1) AS "stunden", + TRUNC((pb.stunden * pb.stundensatz), 2) AS "betrag", + vertrag_id + FROM + lehre.tbl_projektbetreuer pb + JOIN lehre.tbl_projektarbeit pa USING (projektarbeit_id) + JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id) + JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id) + JOIN PUBLIC.tbl_organisationseinheit oe USING (oe_kurzbz) + JOIN lehre.tbl_lehreinheitgruppe legr USING (lehreinheit_id) + JOIN PUBLIC.tbl_person person USING (person_id) + LEFT JOIN lehre.tbl_vertrag vertrag USING (vertrag_id) + JOIN PUBLIC.tbl_studiengang stg + ON stg.studiengang_kz = lv.studiengang_kz + WHERE + /* filter organisationseinheit */ + lv.oe_kurzbz IN (\'' . implode('\',\'', $ORGANISATIONSEINHEIT) . '\') + /* filter studiensemester */ + AND le.studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\' + /* filter active lehrveranstaltungen */ + AND lv.aktiv = TRUE + /* filter active organisationseinheiten */ + AND oe.aktiv = TRUE + ) tmp_projektbetreuung + ) auftraege +ORDER BY "typ" DESC, "auftrag", "lektor", "bestellt", "erteilt" +'; + +$filterWidgetArray = array( + 'query' => $query, + 'app' => LehrauftragErteilen::APP, + 'datasetName' => 'lehrauftragApprove', + 'filterKurzbz' => 'LehrauftragApprove', + 'requiredPermissions' => 'lehre', // TODO: change permission + 'datasetRepresentation' => 'tabulator', + 'reloadDataset' => true, // reload query on page refresh + 'customMenu' => false, + 'hideOptions' => true, + 'hideMenu' => true, + 'columnsAliases' => array( // TODO: use phrasen + 'row_index', + 'LE-ID', + 'LV-ID', + 'PA-ID', + 'Studiensemester', + 'Studiengang', + 'Person-ID', + 'Typ', + 'Auftrag', + 'Organisationseinheit', + 'Gruppe', + 'Lektor', + 'Stunden', + 'Betrag', + 'Vertrag-ID', + 'UID', + 'Bestellt', + 'Erteilt', + 'Akzeptiert' + ), + 'datasetRepOptions' => '{ + height: 700, + layout: "fitColumns", // fit columns to width of table + responsiveLayout: "hide", // hide columns that dont fit on the table + movableColumns: true, // allows changing column + groupBy: "lektor", // collapsable groups + headerFilterPlaceholder: " ", + index: "row_index", // assign specific column as unique id (important for row indexing) + selectable: true, // allow row selection + selectableRangeMode: "click", // allow range selection using shift end click on end of range + selectablePersistence:false, // deselect previously selected rows when table is filtered, sorted or paginated + selectableCheck: function(row) + { + // only allow to select bestellte Lehraufträge + return row.getData().bestellt != null && row.getData().erteilt == null; + }, + rowUpdated:function(row) + { + // deselect and disable new selection of updated rows (approvement done) + row.deselect(); + row.getElement().off("click"); + }, + rowFormatter:function(row) + { + var data = row.getData(); + + // default (white): rows to be approved + // green: rows approved + // grey: all other + if(row.getData().bestellt != null && row.getData().erteilt == null) + { + return; + } + else if(row.getData().bestellt != null && row.getData().erteilt != null) + { + row.getElement().style["background-color"] = "#d1f1d196"; // green + } + else + { + row.getElement().style["background-color"] = "#f5f5f5"; // grey + } + } + }', // tabulator properties + 'datasetRepFieldsDefs' => '{ + row_index: {visible:false}, // necessary for row indexing + lehreinheit_id: {headerFilter:"input", bottomCalc:"count", bottomCalcFormatter:function(cell){return "Anzahl: " + cell.getValue();},}, + lehrveranstaltung_id: {headerFilter:"input"}, + projektarbeit_id: {visible: false}, + studiensemester_kurzbz: {headerFilter:"input"}, + studiengang_kz: {visible: false}, + person_id: {visible: false}, + typ: {headerFilter:"input"}, + auftrag: {headerFilter:"input"}, + lv_oe_kurzbz: {headerFilter:"input"}, + gruppe: {headerFilter:"input"}, + lektor: {headerFilter:"input"}, + stunden: {align:"right", headerFilter:"input", bottomCalc:"sum", bottomCalcParams:{precision:1}}, + betrag: {align:"right", headerFilter:"input", headerFilterPlaceholder:">=", headerFilterFunc: hf_compareWithFloat, + bottomCalc:"sum", bottomCalcParams:{precision:2}, bottomCalcFormatter:"money", bottomCalcFormatterParams:{decimal: ",", thousand: ".", symbol:"€"}}, + vertrag_id: {visible: false}, + mitarbeiter_uid: {visible: false}, + bestellt: {align:"center", headerFilter:"input", mutator: mut_formatStringDate}, + erteilt: {align:"center", headerFilter:"input", mutator: mut_formatStringDate}, + akzeptiert: {align:"center", headerFilter:"input", mutator: mut_formatStringDate} + }', // col properties +); + +echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray); + +?> +