mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
Unterbrechung nur für das Aktuelle und kommende Semester
This commit is contained in:
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user