Unterbrechung nur für das Aktuelle und kommende Semester

This commit is contained in:
cgfhtw
2023-07-13 16:13:40 +02:00
parent 9d0801676d
commit b04aefc105
3 changed files with 42 additions and 70 deletions
+24 -21
View File
@@ -1279,35 +1279,38 @@ class AntragLib
$this->_ci->load->model('organisation/Studienplan_model', 'StudienplanModel');
$this->_ci->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
$semester = [];
$result = $this->_ci->StudienplanModel->getStudienplaeneBySemester($studiengang_kz, $studiensemester_kurzbz, $ausbildungssemester);
if (!hasData($result))
return [];
return $semester;
$studienplaene = getData($result);
$studienplan_ids = array_map(function ($studienplan) {
return $studienplan->studienplan_id;
}, $studienplaene);
$result = $this->_ci->StudiensemesterModel->getFollowingSemester($studienplan_ids, $studiensemester_kurzbz, $ausbildungssemester);
$result = $this->_ci->StudiensemesterModel->getNextFrom($studiensemester_kurzbz);
if (!hasData($result))
return [];
return $semester;
$nextSem = current(getData($result));
$stsems = getData($result);
$semester[] = [
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'wiedereinstieg' => $nextSem->start
];
$result = $this->_ci->StudiensemesterModel->loadWhere();
$result = $this->_ci->StudienplanModel->getStudienplaeneBySemester($studiengang_kz, $nextSem->studiensemester_kurzbz, $ausbildungssemester+1);
if (!hasData($result))
return [];
$result = getData($result);
usort($result, function($a, $b) {
return $a->start > $b->start ? 1 : -1;
});
foreach ($stsems as $stsem) {
$stsem->wiedereinstieg = array_filter($result, function ($sem) use ($stsem) {
return $sem->start > $stsem->ende;
});
}
return $semester;
return $stsems;
$result = $this->_ci->StudiensemesterModel->getNextFrom($nextSem->studiensemester_kurzbz);
if (!hasData($result))
return $semester;
$semAfterNext = current(getData($result));
$semester[] = [
'studiensemester_kurzbz' => $nextSem->studiensemester_kurzbz,
'wiedereinstieg' => $semAfterNext->start
];
return $semester;
}
public function getAktivePrestudentenInStgs($studiengaenge, $query)
@@ -204,34 +204,4 @@ class Studiensemester_model extends DB_Model
return $this->execQuery($query, array($studiensemester_kurzbz));
}
public function getFollowingSemester($studienplan_ids, $studiensemester_kurzbz, $ausbildungssemester)
{
$query = '
WITH RECURSIVE following(studiensemester_kurzbz, semester, start) AS (
SELECT studiensemester_kurzbz, ?, start
FROM public.tbl_studiensemester
WHERE studiensemester_kurzbz=?
UNION ALL
SELECT * FROM (
SELECT s.studiensemester_kurzbz, s.semester, ss.start
FROM lehre.tbl_studienplan_semester s
JOIN public.tbl_studiensemester ss USING(studiensemester_kurzbz)
INNER JOIN following a ON(s.semester=a.semester+1 AND ss.start > a.start)
WHERE studienplan_id IN ?
ORDER BY start ASC
LIMIT 1
) wrapper
)
SELECT sem.*, following.semester
FROM following
LEFT JOIN ' . $this->dbTable . ' sem USING(studiensemester_kurzbz)
ORDER BY start';
return $this->execQuery($query, [
$ausbildungssemester,
$studiensemester_kurzbz,
$studienplan_ids
]);
}
}
@@ -53,9 +53,18 @@ export default {
this.prestudentId;
},
datumWsFormatted() {
if(!this.data.datum_wiedereinstieg)
return '';
let datum = new Date(this.data.datum_wiedereinstieg);
let datumUnformatted = '';
if (this.studierendenantragId) {
if (this.data.datum_wiedereinstieg)
datumUnformatted = this.data.datum_wiedereinstieg;
} else {
if (this.stsem !== null && this.data.studiensemester[this.stsem].wiedereinstieg)
datumUnformatted = this.data.studiensemester[this.stsem].wiedereinstieg;
}
if (datumUnformatted === '')
return datumUnformatted;
let datum = new Date(datumUnformatted);
return datum.toLocaleDateString();
}
},
@@ -93,7 +102,7 @@ export default {
formData.append("studiensemester", this.stsem !== null && this.data.studiensemester[this.stsem].studiensemester_kurzbz);
formData.append("prestudent_id", this.data.prestudent_id);
formData.append("grund", this.$refs.grund.value);
formData.append("datum_wiedereinstieg", this.$refs.datum_wiedereinstieg && this.$refs.datum_wiedereinstieg.value);
formData.append("datum_wiedereinstieg", this.stsem !== null && this.data.studiensemester[this.stsem].wiedereinstieg);
axios.post(
FHC_JS_DATA_STORAGE_OBJECT.app_root +
@@ -267,21 +276,11 @@ export default {
<div v-if="data.studierendenantrag_id">
{{datumWsFormatted}}
</div>
<div v-else>
<select v-if="stsem === null" class="form-select" disabled>
<option value="" disabled selected>
{{p.t('ui/select_studiensemester')}}
</option>
</select>
<select v-else ref="datum_wiedereinstieg" class="form-select">
<option
v-for="sem in data.studiensemester[stsem].wiedereinstieg"
:key="sem.studiensemester_kurzbz"
:value="sem.start"
>
{{sem.studiensemester_kurzbz}}
</option>
</select>
<div v-else-if="stsem === null" class="form-control">
{{p.t('ui/select_studiensemester')}}
</div>
<div v-else class="form-control">
{{datumWsFormatted}}
</div>
<div v-if="errors.datum_wiedereinstieg.length" class="invalid-feedback d-block">