Merge branch 'feature-3994/Digitaler_Lehrauftrag'

This commit is contained in:
Andreas Österreicher
2019-12-18 16:08:11 +01:00
12 changed files with 657 additions and 447 deletions
@@ -229,12 +229,6 @@ class Lehrauftrag extends Auth_Controller
{
$this->outputJsonSuccess($json);
}
// Send email to Mitarbeiter
// if(!$this->_sendMail($new_lehrvertrag_data_arr)) // TODO: slows down Bestell-process -> better chronjob?
{
// return error information // TODO: implement after decision regarding communication process
}
}
// -----------------------------------------------------------------------------------------------------------------
@@ -329,41 +323,4 @@ class Lehrauftrag extends Auth_Controller
return $unique_new_lehrvertrag_data_arr;
}
private function validateGetPost($lehrauftrag){
$lehreinheit_id = (isset($lehrauftrag['lehreinheit_id']) && is_numeric($lehrauftrag['lehreinheit_id'])) ? $lehrauftrag['lehreinheit_id'] : null;
$lehrveranstaltung_id = (isset($lehrauftrag['lehrveranstaltung_id']) && is_numeric($lehrauftrag['lehrveranstaltung_id'])) ? $lehrauftrag['lehrveranstaltung_id'] : null;
$person_id = (isset($lehrauftrag['person_id']) && is_numeric($lehrauftrag['person_id'])) ? $lehrauftrag['person_id'] : null;
$mitarbeiter_uid = (isset($lehrauftrag['mitarbeiter_uid']) && is_string($lehrauftrag['mitarbeiter_uid'])) ? $lehrauftrag['mitarbeiter_uid'] : null;
$vertrag_id = (isset($lehrauftrag['vertrag_id']) && is_numeric($lehrauftrag['vertrag_id'])) ? $lehrauftrag['vertrag_id'] : null;
$projektarbeit_id = (isset($lehrauftrag['projektarbeit_id']) && is_numeric($lehrauftrag['projektarbeit_id'])) ? $lehrauftrag['projektarbeit_id'] : null;
$stunden = (isset($lehrauftrag['stunden']) && is_numeric($lehrauftrag['stunden'])) ? $lehrauftrag['stunden'] : null;
$betrag = (isset($lehrauftrag['betrag']) && is_numeric($lehrauftrag['betrag'])) ? $lehrauftrag['betrag'] : null;
$studiensemester_kurzbz = (isset($lehrauftrag['studiensemester_kurzbz']) && is_string($lehrauftrag['studiensemester_kurzbz'])) ? $lehrauftrag['betrag'] : null;
return array(
$lehreinheit_id,
$lehrveranstaltung_id,
$person_id,
$mitarbeiter_uid,
$vertrag_id,
$projektarbeit_id,
$stunden,
$betrag,
$studiensemester_kurzbz
);
// LIST IS TO BE SET ABOVE!!!:
// list(
// $lehreinheit_id,
// $lehrveranstaltung_id,
// $person_id,
// $mitarbeiter_uid,
// $vertrag_id,
// $projektarbeit_id,
// $stunden,
// $betrag,
// $studiensemester_kurzbz
// ) = $this->_validateGetPost($lehrauftrag);
}
}
@@ -93,6 +93,18 @@ $this->load->view(
</ul>
</div>
<br>
<h4>Ansicht</h4>
<div class="panel panel-body">
<b>Spaltenbreite verändern</b>
<p>
Um die Spaltenbreite zu verändern, fährt man im Spaltenkopf langsam mit dem Mauszeiger auf
den rechten Rand der entprechenden Spalte. <br>
Sobald sich der Mauszeiger in einen Doppelpfeil verwandelt, wird die Maustaste geklickt und
mit gedrückter Maustaste die Spalte nach rechts erweitert oder nach links verkleinert.
</p>
</div>
<br>
</div>
</div>
</div>
@@ -120,7 +132,7 @@ $this->load->view(
</div>
</div>
<!-- tabulator data table -->
<!-- tabulator data table 'Lehrauftraege annehmen'-->
<div class="row">
<div class="col-lg-12">
<?php $this->load->view('lehre/lehrauftrag/acceptLehrauftragData.php'); ?>
@@ -133,11 +145,24 @@ $this->load->view(
<div class="col-xs-6">
<div class="btn-toolbar" role="toolbar">
<div class="btn-group" role="group">
<button id="show-all" class="btn btn-default btn-lehrauftrag active focus" type="button" data-toggle="tooltip" data-placement="left" title="Alle anzeigen"><i class='fa fa-users'></i></button>
<button id="show-ordered" class="btn btn-default btn-lehrauftrag" type="button" data-toggle="tooltip" data-placement="left" title="Nur bestellte anzeigen"></button><!-- png img set in javascript -->
<button id="show-approved" class="btn btn-default btn-lehrauftrag" type="button" data-toggle="tooltip" data-placement="left" title="Nur erteilte anzeigen"></button><!-- png img set in javascript -->
<button id="show-accepted" class="btn btn-default btn-lehrauftrag" type="button" data-toggle="tooltip" data-placement="left" title="Nur angenommene anzeigen"><i class='fa fa-handshake-o'></i></button>
<button id="show-all" class="btn btn-default btn-lehrauftrag active focus" type="button"
data-toggle="tooltip" data-placement="left" title="Alle anzeigen"><i class='fa fa-users'></i>
</button>
<button id="show-ordered" class="btn btn-default btn-lehrauftrag" type="button"
data-toggle="tooltip" data-placement="left" title="Nur bestellte anzeigen">
</button><!-- png img set in javascript -->
<button id="show-approved" class="btn btn-default btn-lehrauftrag" type="button"
data-toggle="tooltip" data-placement="left" title="Nur erteilte anzeigen">
</button><!-- png img set in javascript -->
<button id="show-accepted" class="btn btn-default btn-lehrauftrag" type="button"
data-toggle="tooltip" data-placement="left" title="Nur angenommene anzeigen"><i class='fa fa-handshake-o'></i>
</button>
</div>
<button id="show-cancelled" class="btn btn-default btn-lehrauftrag" type="button" style="margin-left: 20px;"
data-toggle="collapse" data-placement="left" title="Stornierte anzeigen"
data-target ="#collapseCancelledLehrauftraege" aria-expanded="false" aria-controls="collapseExample">
</button><!-- png img set in javascript -->
</div>
</div>
<div class="col-md-offset-2 col-md-4 col-xs-6">
@@ -149,7 +174,28 @@ $this->load->view(
</div>
</div>
</div>
<br>
<br>
<!-- collapse module with data table 'Stornierte Lehrauftraege' (collapsed by default until opened on buttonclick)-->
<div class="row">
<div class="col-lg-12 collapse" id="collapseCancelledLehrauftraege">
<h4>
<?php echo ucfirst($this->p->t('global', 'stornierteLehrauftraege')); ?>:
<small>
<abbr title="Anderes Studiensemester? Bitte oben im Dropdown wählen." >
<?php echo $studiensemester_selected ?>
</abbr>
</small>
</h4>
<div class="row">
<div class="col-lg-12">
<?php $this->load->view('lehre/lehrauftrag/cancelledLehrauftragData.php'); ?>
</div>
</div>
<br>
</div>
</div>
</div><!-- end container -->
</div><!-- end page-wrapper -->
<br>
@@ -15,11 +15,11 @@ SELECT
studiensemester_kurzbz,
studiengang_kz,
stg_typ_kurzbz,
semester,
orgform_kurzbz,
person_id,
typ,
auftrag,
semester,
lv_oe_kurzbz,
gruppe,
stunden,
@@ -305,11 +305,11 @@ $filterWidgetArray = array(
'Studiensemester',
'Studiengang-KZ',
'Studiengang',
'Semester',
'OrgForm',
'Person-ID',
'Typ',
'LV- / Projektbezeichnung',
'Semester',
'Organisationseinheit',
'Gruppe',
'Stunden',
@@ -330,6 +330,7 @@ $filterWidgetArray = array(
layout: "fitColumns", // fit columns to width of table
responsiveLayout: "hide", // hide columns that dont fit on the table
movableColumns: true, // allows changing column
placeholder: func_placeholder(),
headerFilterPlaceholder: " ",
index: "row_index", // assign specific column as unique id (important for row indexing)
selectable: true, // allow row selection
@@ -366,11 +367,11 @@ $filterWidgetArray = array(
studiensemester_kurzbz: {visible: false},
studiengang_kz: {visible: false},
stg_typ_kurzbz: {headerFilter:"input", width: "5%"},
semester: {headerFilter:"input"},
orgform_kurzbz: {headerFilter:"input"},
person_id: {visible: false},
typ: {headerFilter:"input", width: "7%"},
auftrag: {headerFilter:"input", width: "15%"},
semester: {headerFilter:"input"},
lv_oe_kurzbz: {headerFilter:"input", width: "8%"},
gruppe: {headerFilter:"input", width: "5%"},
stunden: {align:"right", formatter: form_formatNulltoStringNumber, formatterParams:{precision:1},
@@ -133,6 +133,18 @@ $this->load->view(
</div>
<br>
<h4>Ansicht</h4>
<div class="panel panel-body">
<b>Spaltenbreite verändern</b>
<p>
Um die Spaltenbreite zu verändern, fährt man im Spaltenkopf langsam mit dem Mauszeiger auf
den rechten Rand der entprechenden Spalte. <br>
Sobald sich der Mauszeiger in einen Doppelpfeil verwandelt, wird die Maustaste geklickt und
mit gedrückter Maustaste die Spalte nach rechts erweitert oder nach links verkleinert.
</p>
</div>
<br>
</div>
</div>
</div>
@@ -16,11 +16,11 @@ SELECT
studiensemester_kurzbz,
studiengang_kz,
stg_typ_kurzbz,
semester,
orgform_kurzbz,
person_id,
typ,
auftrag,
semester,
lv_oe_kurzbz,
gruppe,
lektor,
@@ -147,7 +147,7 @@ FROM
WHEN oe.organisationseinheittyp_kurzbz = \'Department\' THEN (\'DEP \' || oe.bezeichnung)
ELSE (oe.organisationseinheittyp_kurzbz || \' \' || oe.bezeichnung)
END AS "lv_oe_kurzbz",
(person.vorname || \' \' || person.nachname) AS "lektor",
(person.nachname || \' \' || person.vorname) AS "lektor",
TRUNC(lema.semesterstunden, 1) AS "stunden",
TRUNC((lema.semesterstunden * lema.stundensatz), 2) AS "betrag",
vertrag_id,
@@ -267,7 +267,7 @@ FROM
ELSE (oe.organisationseinheittyp_kurzbz ||
\' \' || oe.bezeichnung)
END AS "lv_oe_kurzbz",
(vorname || \' \' || nachname) AS "lektor",
(nachname || \' \' || vorname) AS "lektor",
TRUNC(pb.stunden, 1) AS "stunden",
TRUNC((pb.stunden * pb.stundensatz), 2) AS "betrag",
vertrag_id,
@@ -315,11 +315,11 @@ $filterWidgetArray = array(
'Studiensemester',
'Studiengang-KZ',
'Studiengang',
'Semester',
'OrgForm',
'Person-ID',
'Typ',
'LV- / Projektbezeichnung',
'Semester',
'Organisationseinheit',
'Gruppe',
'Lektor',
@@ -341,6 +341,7 @@ $filterWidgetArray = array(
layout: "fitColumns", // fit columns to width of table
responsiveLayout: "hide", // hide columns that dont fit on the table
movableColumns: true, // allows changing column
placeholder: func_placeholder(),
headerFilterPlaceholder: " ",
groupBy:"lehrveranstaltung_id",
groupToggleElement:"header", //toggle group on click anywhere in the group header
@@ -386,14 +387,14 @@ $filterWidgetArray = array(
studiensemester_kurzbz: {headerFilter:"input"},
studiengang_kz: {visible: false},
stg_typ_kurzbz: {headerFilter:"input", width: "5%"},
semester: {headerFilter:"input"},
orgform_kurzbz: {headerFilter:"input"},
person_id: {visible: false},
typ: {headerFilter:"input"},
auftrag: {headerFilter:"input", width:"20%"},
semester: {headerFilter:"input"},
lv_oe_kurzbz: {headerFilter:"input"},
gruppe: {headerFilter:"input"},
lektor: {headerFilter:"input"},
lektor: {headerFilter:"input", widthGrow: 3},
stunden: {align:"right", formatter: form_formatNulltoStringNumber, formatterParams:{precision:1},
headerFilter:"input", headerFilterFunc: hf_filterStringnumberWithOperator,
bottomCalc:"sum", bottomCalcParams:{precision:1}},
@@ -0,0 +1,105 @@
<?php
$STUDIENSEMESTER = $studiensemester_selected;
$UID = getAuthUID();
$query = '
SELECT
vertrag_id,
vertragsstunden_studiensemester_kurzbz,
vertragstyp_kurzbz,
bezeichnung,
vertragsstunden,
betrag,
datum AS "storniert",
(
SELECT
vorname || \' \' || nachname
FROM
public.tbl_person
JOIN public.tbl_benutzer benutzer USING (person_id)
WHERE benutzer.uid = (
SELECT
insertvon
FROM
lehre.tbl_vertrag_vertragsstatus
WHERE vertragsstatus_kurzbz = \'storno\'
AND vertrag_id = vvs.vertrag_id
)
) AS "storniert_von",
(
SELECT
vertragsstatus_kurzbz
FROM
lehre.tbl_vertrag_vertragsstatus
WHERE vertrag_id = vvs.vertrag_id
AND vertragsstatus_kurzbz != \'storno\'
ORDER BY datum DESC
LIMIT 1
) AS "letzterStatus_vorStorniert"
FROM lehre.tbl_vertrag_vertragsstatus vvs
JOIN lehre.tbl_vertrag USING (vertrag_id)
WHERE
/* filter lector */
uid = \'' . $UID . '\'
/* filter studiensemester */
AND vertragsstunden_studiensemester_kurzbz = \'' . $STUDIENSEMESTER . '\'
/* filter cancelled only */
AND vertragsstatus_kurzbz = \'storno\'
';
$tableWidgetArray = array(
'query' => $query,
'tableUniqueId' => 'cancelledLehrauftrag',
'requiredPermissions' => 'lehre/lehrauftrag_akzeptieren',
'datasetRepresentation' => 'tabulator',
'reloadDataset' => true, // reload query on page refresh
'columnsAliases' => array( // TODO: use phrasen
'Status',
'Studiensemester',
'Typ',
'LV- / Projektbezeichnung',
'Stunden',
'Betrag',
'Storniert am'
),
'datasetRepOptions' => '{
layout: "fitColumns", // fit columns to width of table
responsiveLayout: "hide", // hide columns that dont fit on the table
movableColumns: true, // allows changing column
placeholder: func_placeholder(),
rowFormatter:function(row){
func_rowFormatter(row);
},
selectableCheck: function(row){
return func_selectableCheck(row);
},
renderComplete:function(){
func_renderComplete(this);
},
tableBuilt: function(){
func_tableBuilt(this);
}
}', // tabulator properties
'datasetRepFieldsDefs' => '{
vertrag_id: {visible: false},
vertragsstunden_studiensemester_kurzbz: {visible: false},
vertragstyp_kurzbz: {widthGrow: 2},
bezeichnung: {widthGrow: 2},
vertragsstunden: {
align:"right", formatter: form_formatNulltoStringNumber, formatterParams:{precision:1},
bottomCalc:"sum", bottomCalcParams:{precision:1}
},
betrag: {
align:"right", formatter: form_formatNulltoStringNumber,
bottomCalc:"sum", bottomCalcParams:{precision:2}, bottomCalcFormatter:"money", bottomCalcFormatterParams:{decimal: ",", thousand: ".", symbol:"€"}
},
storniert: {align:"center", mutator: mut_formatStringDate, tooltip: storniert_tooltip},
storniert_von: {visible: false},
letzterStatus_vorStorniert: {visible: false}
}', // col properties
);
echo $this->widgetlib->widget('TableWidget', $tableWidgetArray);
?>
@@ -135,6 +135,18 @@ $this->load->view(
</div>
<br>
<h4>Ansicht</h4>
<div class="panel panel-body">
<b>Spaltenbreite verändern</b>
<p>
Um die Spaltenbreite zu verändern, fährt man im Spaltenkopf langsam mit dem Mauszeiger auf
den rechten Rand der entprechenden Spalte. <br>
Sobald sich der Mauszeiger in einen Doppelpfeil verwandelt, wird die Maustaste geklickt und
mit gedrückter Maustaste die Spalte nach rechts erweitert oder nach links verkleinert.
</p>
</div>
<br>
</div>
</div>
</div>
@@ -16,6 +16,7 @@ SELECT
studiensemester_kurzbz,
studiengang_kz,
stg_typ_kurzbz,
semester,
/* get valid STPL(s), to which the lehrveranstaltung is assigned to (can be more) */
/* therefore join over lv, studiensemester and semester */
(
@@ -50,7 +51,6 @@ SELECT
person_id,
typ,
auftrag,
semester,
lv_oe_kurzbz,
gruppe,
lektor,
@@ -178,7 +178,7 @@ FROM
WHEN oe.organisationseinheittyp_kurzbz = \'Department\' THEN (\'DEP \' || oe.bezeichnung)
ELSE (oe.organisationseinheittyp_kurzbz || \' \' || oe.bezeichnung)
END AS "lv_oe_kurzbz",
(person.vorname || \' \' || person.nachname) AS "lektor",
(person.nachname || \' \' || person.vorname) AS "lektor",
TRUNC(lema.semesterstunden, 1) AS "stunden",
lema.stundensatz,
TRUNC((lema.semesterstunden * lema.stundensatz), 2) AS "betrag",
@@ -299,7 +299,7 @@ FROM
ELSE (oe.organisationseinheittyp_kurzbz ||
\' \' || oe.bezeichnung)
END AS "lv_oe_kurzbz",
(vorname || \' \' || nachname) AS "lektor",
(nachname || \' \' || vorname) AS "lektor",
TRUNC(pb.stunden, 1) AS "stunden",
pb.stundensatz,
TRUNC((pb.stunden * pb.stundensatz), 2) AS "betrag",
@@ -347,12 +347,12 @@ $filterWidgetArray = array(
'Studiensemester',
'Studiengang-KZ',
'Studiengang',
'Semester',
'Studienplan',
'OrgForm',
'Person-ID',
'Typ',
'LV- / Projektbezeichnung',
'Semester',
'Organisationseinheit',
'Gruppe',
'Lektor',
@@ -375,6 +375,7 @@ $filterWidgetArray = array(
layout:"fitColumns", // fit columns to width of table
responsiveLayout:"hide", // hide columns that dont fit on the table
movableColumns: true, // allows changing column
placeholder: func_placeholder(),
headerFilterPlaceholder: " ",
groupBy:"lehrveranstaltung_id",
groupToggleElement:"header", //toggle group on click anywhere in the group header
@@ -421,15 +422,15 @@ $filterWidgetArray = array(
studiensemester_kurzbz: {headerFilter:"input"},
studiengang_kz: {visible: false},
stg_typ_kurzbz: {headerFilter:"input", width: "5%"},
semester: {headerFilter:"input"},
studienplan_bezeichnung: {headerFilter:"input", width: "7%"},
orgform_kurzbz: {headerFilter:"input"},
person_id: {visible: false},
typ: {headerFilter:"input"},
auftrag: {headerFilter:"input", width:"15%"},
semester: {headerFilter:"input"},
lv_oe_kurzbz: {headerFilter:"input"},
gruppe: {headerFilter:"input"},
lektor: {headerFilter:"input"},
lektor: {headerFilter:"input", widthGrow: 3},
stunden: {align:"right", formatter: form_formatNulltoStringNumber, formatterParams:{precision:1},
headerFilter:"input", headerFilterFunc: hf_filterStringnumberWithOperator,
bottomCalc:"sum", bottomCalcParams:{precision:1}},