diff --git a/application/controllers/lehre/lehrauftrag/Lehrauftrag.php b/application/controllers/lehre/lehrauftrag/Lehrauftrag.php
index 847bc2f3d..b214916cd 100644
--- a/application/controllers/lehre/lehrauftrag/Lehrauftrag.php
+++ b/application/controllers/lehre/lehrauftrag/Lehrauftrag.php
@@ -1,10 +1,9 @@
'infocenter:r'
+ 'index' => 'lehre/lehrauftrag_bestellen:r'
)
);
// Load models
- $this->load->model('education/Lehreinheit_model', 'LehreinheitModel');
- $this->load->model('education/Lehreinheitmitarbeiter_model', 'LehreinheitmitarbeiterModel');
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
-// $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); // TODO: delete?
- $this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
- // TODO: check: WidgetLib notwendig?
// Load libraries
$this->load->library('WidgetLib');
+ $this->load->library('PermissionLib');
// Load language phrases
$this->loadPhrases(
@@ -50,9 +45,6 @@ class Lehrauftrag extends Auth_Controller
$this->_setAuthUID(); // sets property uid
- //TODO: delete test user
- //$this->_uid = 'testuser';
-
$this->setControllerId(); // sets the controller id
}
@@ -63,31 +55,21 @@ class Lehrauftrag extends Auth_Controller
*/
public function index()
{
- echo '
', print_r($_GET, 1), '
';
- $studiengang_kz = $this->input->get('studiengang');
- $studiensemester_kurzbz = $this->input->get('studiensemester');
+ // Set studiengang selected for studiengang dropdown
+ $studiengang_kz = $this->input->get('studiengang'); // if provided by selected studiengang
+ $studiengang_kz = ($studiengang_kz == 'null' ? null : $studiengang_kz);
- // Set studiengang variable
- if (!isset($studiengang_kz) || !is_numeric($studiengang_kz))
+ // Retrieve studiengaenge the user is entitled for to populate studiengang dropdown
+ if (!$studiengang_kz_arr = $this->permissionlib->getSTG_isEntitledFor(self::BERECHTIGUNG_LEHRAUFTRAG_BESTELLEN))
{
- $benutzerfunktion = $this->BenutzerfunktionModel->getSTGLByUID($this->_uid);
-
- $studiengang_kz_arr = array();
- if (hasData($benutzerfunktion))
- {
- foreach ($benutzerfunktion->retval as $benutzerfkt)
- {
- $studiengang_kz_arr[] = $benutzerfkt->studiengang_kz;
- }
- }
- elseif (isError($benutzerfunktion))
- {
- show_error($benutzerfunktion->error);
- }
+ show_error('Fehler bei Berechtigungsprüfung');
}
- // Set studiensemester variable
- if (!isset($studiensemester_kurzbz) || !is_string($studiensemester_kurzbz))
+
+ // Set studiensemester selected for studiengang dropdown
+ $studiensemester_kurzbz = $this->input->get('studiensemester'); // if provided by selected studiensemester
+
+ if (is_null($studiensemester_kurzbz)) // else set next studiensemester as default value
{
$studiensemester = $this->StudiensemesterModel->getNext();
if (hasData($studiensemester))
@@ -99,15 +81,17 @@ class Lehrauftrag extends Auth_Controller
show_error($studiensemester->error);
}
}
+
$view_data = array(
+ 'studiengang_selected' => $studiengang_kz,
'studiengang' => $studiengang_kz_arr,
- 'studiensemester' => $studiensemester_kurzbz
+ 'studiensemester_selected' => $studiensemester_kurzbz
);
+
$this->load->view('lehre/lehrauftrag/lehrauftrag.php', $view_data);
}
-
// -----------------------------------------------------------------------------------------------------------------
// Private methods
diff --git a/application/views/lehre/lehrauftrag/lehrauftrag.php b/application/views/lehre/lehrauftrag/lehrauftrag.php
index 098bb448f..7742f05f8 100644
--- a/application/views/lehre/lehrauftrag/lehrauftrag.php
+++ b/application/views/lehre/lehrauftrag/lehrauftrag.php
@@ -16,58 +16,74 @@ $this->load->view(
'filterwidget' => true,
'navigationwidget' => true,
'phrases' => array(
- 'person' => array('vorname', 'nachname'),
- 'global' => array('mailAnXversandt'),
- 'ui' => array('bitteEintragWaehlen')
+ 'global' => array('lehrauftraege'),
),
'customCSSs' => 'public/css/sbadmin2/tablesort_bootstrap.css',
- 'customJSs' => array('public/js/bootstrapper.js', '')
+ 'customJSs' => array('public/js/bootstrapper.js')
)
);
?>
+
+
load->view('templates/FHC-Footer'); ?>
diff --git a/application/views/lehre/lehrauftrag/lehrauftragData.php b/application/views/lehre/lehrauftrag/lehrauftragData.php
index 8abc5dc46..f8166bf15 100644
--- a/application/views/lehre/lehrauftrag/lehrauftragData.php
+++ b/application/views/lehre/lehrauftrag/lehrauftragData.php
@@ -1,53 +1,122 @@
= 0
+
+
+UNION
+
+/* Projektbetreuungsaufträge and -vertragsstati */
+SELECT
+ pa.lehreinheit_id AS "LE_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 "Organisationseinheit",
+ 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",
+ CASE
+ /* existing contracts for given study semester with status bestellt */
+ WHEN pb.vertrag_id NOTNULL AND vertrag.vertragsstunden_studiensemester_kurzbz = \''. $STUDIENSEMESTER. '\' AND
+ vvs.vertragsstatus_kurzbz = \'bestellt\' THEN vvs.datum
+ END AS "Bestellt",
+ CASE
+ /* existing contracts for given study semester with status erteilt */
+ WHEN pb.vertrag_id NOTNULL AND vertrag.vertragsstunden_studiensemester_kurzbz = \''. $STUDIENSEMESTER. '\' AND
+ vvs.vertragsstatus_kurzbz = \'erteilt\' THEN vvs.datum
+ END AS "Erteilt",
+ CASE
+ /* existing contracts for given study semester with status akzeptiert */
+ WHEN pb.vertrag_id NOTNULL AND vertrag.vertragsstunden_studiensemester_kurzbz = \''. $STUDIENSEMESTER. '\' AND
+ vvs.vertragsstatus_kurzbz = \'akzeptiert\' THEN vvs.datum
+ END AS "Akzeptiert"
+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)
+ LEFT JOIN lehre.tbl_vertrag_vertragsstatus vvs USING (vertrag_id)
+ LEFT JOIN lehre.tbl_vertragsstatus status USING (vertragsstatus_kurzbz)
+ JOIN public.tbl_studiengang stg ON stg.studiengang_kz = lv.studiengang_kz
+WHERE
+ /* filter studiengang */
+ lv.studiengang_kz IN ('. implode(',', $STUDIENGANG) . ')
+ /* filter studiensemester */
+ AND le.studiensemester_kurzbz = \''. $STUDIENSEMESTER. '\'
+ /* filter active lehrveranstaltungen */
+ AND lv.aktiv = TRUE
+
+ORDER BY "Typ" DESC, "Auftrag", "Lektor"
';
@@ -56,35 +125,52 @@ $filterWidgetArray = array(
'app' => Lehrauftrag::APP,
'datasetName' => 'lehrauftragOrder',
'filterKurzbz' => 'LehrauftragOrder',
- //'filter_id' => $this->input->get('filter_id'),
- 'requiredPermissions' => 'infocenter', // TODO: change permission
+ 'requiredPermissions' => 'lehre', // TODO: change permission
'datasetRepresentation' => 'tabulator',
- 'reloadDataset' => ($this->input->get('reloadDataset') == 'true' ? true : false), // TODO: needed?
- //'customMenu' => true,
+ 'customMenu' => false,
'hideOptions' => true,
'hideMenu' => true,
- 'columnsAliases' => array(
- ucfirst($this->p->t('person', 'vorname'))
+ 'columnsAliases' => array( // TODO: use phrasen
+ 'LE-ID',
+ ucfirst($this->p->t('global', 'typ')),
+ 'Auftrag',
+ 'Organisationseinheit',
+ 'Gruppe',
+ 'Lektor',
+ 'Stunden',
+ 'Betrag',
+ 'Bestellt',
+ 'Erteilt',
+ 'Akzeptiert'
),
- 'markRow' => function($datasetRaw) {
-
- $mark = '';
-
- if ($datasetRaw->LockDate != null)
+ 'formatRow' => function($datasetRaw) {
+ if (is_null($datasetRaw->{'Betrag'}))
{
- $mark = FilterWidget::DEFAULT_MARK_ROW_CLASS;
+ $datasetRaw->{'Betrag'} = 'Stundensatz fehlt';
}
-
- // Parking has priority over locking
- if ($datasetRaw->ParkDate != null)
- {
- $mark = "text-info";
- }
-
- return $mark;
+ return $datasetRaw;
},
- 'datasetRepOptions' => '{height: 300}', // tabulator properties
- 'datasetRepFieldsDefs' => '{Vorname: {width: 400}}' // col properties
+ 'datasetRepOptions' => '{
+ height: 700,
+ selectable: true, // allows row selection
+ selectableRangeMode: "click", // allows range selection using shift end click on end of range
+ movableColumns: true, // allows changing column
+ pagination: "local", // paginates the data
+ paginationSize: 15 // rows allowed per page
+ }', // tabulator properties
+ 'datasetRepFieldsDefs' => '{
+ LE_ID: {headerFilter:"input", headerFilterPlaceholder:" "},
+ Typ: {headerFilter:"input", headerFilterPlaceholder:" "},
+ Auftrag: {headerFilter:"input", headerFilterPlaceholder:" "},
+ Organisationseinheit: {headerFilter:"input", headerFilterPlaceholder:" "},
+ Gruppe: {headerFilter:"input", headerFilterPlaceholder:" "},
+ Lektor: {headerFilter:"input", headerFilterPlaceholder:" "},
+ Stunden: {align:"right", headerFilter:"input", headerFilterPlaceholder:" "},
+ Betrag: {align:"right", headerFilter:"input", headerFilterPlaceholder:">=", headerFilterFunc:">="},
+ Bestellt: {align:"center", headerFilter:"input", headerFilterPlaceholder:" "},
+ Erteilt: {align:"center", headerFilter:"input", headerFilterPlaceholder:" "},
+ Akzeptiert: {align:"center", headerFilter:"input", headerFilterPlaceholder:" "}
+ }', // col properties
);
echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray);
diff --git a/system/filtersupdate.php b/system/filtersupdate.php
index 19ebea0f9..a31fe702e 100644
--- a/system/filtersupdate.php
+++ b/system/filtersupdate.php
@@ -408,9 +408,9 @@ $filters = array(
'default_filter' => true,
'filter' => '
{
- "name": "Lehrauftragsstatus",
+ "name": "",
"columns": [
- {"name": "LE-ID"},
+ {"name": "LE_ID"},
{"name": "Typ"},
{"name": "Auftrag"},
{"name": "Organisationseinheit"},
diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php
index 0ee2aeda5..b39280a29 100644
--- a/system/phrasesupdate.php
+++ b/system/phrasesupdate.php
@@ -3450,7 +3450,27 @@ $phrases = array(
'insertvon' => 'system'
)
)
- )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'global',
+ 'phrase' => 'lehrauftraege',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Lehraufträge',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Lectureships',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ )
);