LV zuweisung & anzeige: handle semester above max_semester & anmerkung bug

This commit is contained in:
cgfhtw
2023-07-04 13:37:54 +02:00
parent ff93cb26fe
commit 7eed07a682
4 changed files with 87 additions and 41 deletions
+21 -9
View File
@@ -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 .
@@ -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 {
<span>{{sem.substr(1)}}</span>
</span>
</caption>
<thead>
<thead v-if="lv_arr !== null">
<tr>
<th scope="col">{{p.t('ui','bezeichnung')}}</th>
<th scope="col">{{p.t('lehre','lehrform')}}</th>
@@ -98,33 +98,38 @@ export default {
</tr>
</thead>
<tbody>
<tr v-for="lv in lv_arr">
<td>
<label class="w-100 m-1" :for="'flexSwitchCheckLv_' + lv.lehrveranstaltung_id">
{{lv.bezeichnung}}
</label>
</td>
<td>
<div class="m-1">
{{lv.lehrform_kurzbz}}
</div>
</td>
<td>
<div class="m-1">
{{lv.ects}}
</div>
</td>
<td>
<div class="m-1">
{{lv.note || '---'}}
</div>
</td>
<td>
<div class="m-1">
{{lv.antrag_anmerkung}}
</div>
</td>
<tr v-if="lv_arr === null" class="table-warning">
<td colspan="5">{{p.t('studierendenantrag/error_stg_last_semester')}}</td>
</tr>
<template v-else>
<tr v-for="lv in lv_arr">
<td>
<label class="w-100 m-1" :for="'flexSwitchCheckLv_' + lv.lehrveranstaltung_id">
{{lv.bezeichnung}}
</label>
</td>
<td>
<div class="m-1">
{{lv.lehrform_kurzbz}}
</div>
</td>
<td>
<div class="m-1">
{{lv.ects}}
</div>
</td>
<td>
<div class="m-1">
{{lv.note || '---'}}
</div>
</td>
<td>
<div class="m-1">
{{lv.antrag_anmerkung}}
</div>
</td>
</tr>
</template>
</tbody>
</table>
</template>
@@ -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;
}
+20
View File
@@ -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'
)
)
),
);