diff --git a/application/libraries/AntragLib.php b/application/libraries/AntragLib.php index 38504772c..f1a757bc2 100644 --- a/application/libraries/AntragLib.php +++ b/application/libraries/AntragLib.php @@ -765,14 +765,16 @@ class AntragLib ); if (isError($result)) return $result; - $lvsA = getData($result) ?: []; - foreach($lvsA as $lv) - { - if (isset($lvszugewiesen[$lv->lehrveranstaltung_id]) && - ($lvszugewiesen[$lv->lehrveranstaltung_id]->note == $this->_ci->config->item('wiederholung_note_nicht_zugelassen'))) + $lvsA = $result->retval; // NOTE(chris): don't use getData() because we want to differenciate [] and null + if ($lvsA) { + foreach($lvsA as $lv) { - $lv->antrag_zugelassen = true; - $lv->antrag_anmerkung = $lvszugewiesen[$lv->lehrveranstaltung_id]->anmerkung; + if (isset($lvszugewiesen[$lv->lehrveranstaltung_id]) && + ($lvszugewiesen[$lv->lehrveranstaltung_id]->note == $this->_ci->config->item('wiederholung_note_nicht_zugelassen'))) + { + $lv->antrag_zugelassen = true; + $lv->antrag_anmerkung = $lvszugewiesen[$lv->lehrveranstaltung_id]->anmerkung; + } } } @@ -798,7 +800,7 @@ class AntragLib } return success([ - '1' . $semA => $lvsA ?: [], + '1' . $semA => $lvsA, '2' . $semB => $lvsB ?: [] ]); } @@ -822,13 +824,23 @@ class AntragLib if (isError($result)) return $result; $result = getData($result); - if (!$result) + if (!$result) { + $result = $this->_ci->StudiengangModel->load($studiengang_kz); + if (isError($result)) + return $result; + if (!hasData($result)) + return error('No Studiengang found with studiengang_kz: ' . $studiengang_kz); + $stg = current(getData($result)); + + if ($ausbildungssemester > $stg->max_semester) + return success(); return error('No studienplan found for stg: ' . $studiengang_kz . ', studiensemester: ' . $studiensemester_kurzbz . ', ausbildungssemester: ' . ($ausbildungssemester)); + } if (count($result) > 1) return error('Multiple studienplaene found for stg: ' . $studiengang_kz . diff --git a/public/js/components/Studierendenantrag/Leitung/LvPopup.js b/public/js/components/Studierendenantrag/Leitung/LvPopup.js index 045e98729..c3f2aa118 100644 --- a/public/js/components/Studierendenantrag/Leitung/LvPopup.js +++ b/public/js/components/Studierendenantrag/Leitung/LvPopup.js @@ -25,12 +25,12 @@ export default { lvzugelassen() { let zwischen = {}; for (let k in this.lvs){ - zwischen[k] = this.lvs[k].filter(lv=>lv.antrag_zugelassen); + zwischen[k] = this.lvs[k] ? this.lvs[k].filter(lv=>lv.antrag_zugelassen) : null; } return zwischen; }, lvzugelassenLength() { - return Object.values(this.lvzugelassen).reduce((result, current) => result + current.length, 0); + return Object.values(this.lvzugelassen).reduce((result, current) => result + (current ? current.length : 0), 0); } }, methods: { @@ -86,7 +86,7 @@ export default { {{sem.substr(1)}} - + {{p.t('ui','bezeichnung')}} {{p.t('lehre','lehrform')}} @@ -98,33 +98,38 @@ export default { - - - - - -
- {{lv.lehrform_kurzbz}} -
- - -
- {{lv.ects}} -
- - -
- {{lv.note || '---'}} -
- - -
- {{lv.antrag_anmerkung}} -
- + + {{p.t('studierendenantrag/error_stg_last_semester')}} + diff --git a/public/js/components/Studierendenantrag/Lvzuweisung.js b/public/js/components/Studierendenantrag/Lvzuweisung.js index cbc97b79e..d987f55be 100644 --- a/public/js/components/Studierendenantrag/Lvzuweisung.js +++ b/public/js/components/Studierendenantrag/Lvzuweisung.js @@ -108,6 +108,14 @@ export default { { let res = {}; for (var k in result.data.retval) { + if (result.data.retval[k] === null) { + const alert = document.createElement('div'); + alert.innerHTML = this.p.t('studierendenantrag', 'error_stg_last_semester'); + alert.className = 'alert alert-warning'; + alert.role = 'alert'; + this.$refs["lvtable" + k.substr(0,1)].append(alert); + continue; + } let lvs = result.data.retval[k].reduce((obj,lv) => { obj[lv.studienplan_lehrveranstaltung_id] = lv; return obj; @@ -129,8 +137,9 @@ export default { var table = new Tabulator(this.$refs["lvtable" + k.substr(0,1)], { data: current, dataTree: true, - dataTreeStartExpanded:true, //start with an expanded tree - dataTreeChildIndent:15, + dataTreeStartExpanded: true, //start with an expanded tree + dataTreeChildIndent: 15, + layout: "fitDataStretch", columns: [ {title: this.p.t('ui','bezeichnung'), field: "bezeichnung"}, {title: this.p.t('lehre','lehrform'), field: "lehrform_kurzbz"}, @@ -197,7 +206,7 @@ export default { input.type = "text"; input.value = cell.getValue() || ""; input.addEventListener('input', () => { - lvs[data.studienplan_lehrveranstaltung_id].antrag_zugelassen = input.value; + lvs[data.studienplan_lehrveranstaltung_id].antrag_anmerkung = input.value; }); return input; } diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index f6df3afad..562e4e5c2 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -19906,6 +19906,26 @@ array( ) ) ), + array( + 'app' => 'core', + 'category' => 'studierendenantrag', + 'phrase' => 'error_stg_last_semester', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Der Studiengang hat nicht genĂ¼gend Semester', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The course does not have enough semesters', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), );