mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-22 09:22:22 +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
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user