use new endpoint in frontend, skip next semester spezialgruppen

This commit is contained in:
Harald Bamberger
2026-10-09 16:51:17 +02:00
parent 682ad7c0e8
commit 47716f1aff
4 changed files with 23 additions and 11 deletions
@@ -78,7 +78,7 @@ class LvTermine extends FHCAPI_Controller
if ($function_error)
return $function_error;
$benutzer_gruppen = $this->fetchBenutzerGruppenFromStudiensemester($student_uid, $semester_range);
$benutzer_gruppen = $this->fetchBenutzerGruppenFromStudiensemester($student_uid, $semester_range, $nextstudiensemester->studiensemester_kurzbz);
if (isError($benutzer_gruppen))
return $benutzer_gruppen;
$benutzer_gruppen = getData($benutzer_gruppen);
@@ -161,8 +161,6 @@ class LvTermine extends FHCAPI_Controller
$semesterStud = $data->ausbildungssemester;
}
$ci->addMeta('semester of studentUid', $semesterStud);
$stundenplan_query = $this->StundenplanModel->getStundenplanQuery(
$start_date,
$end_date, //will be overwritten in model if $ende_semProlonged
@@ -252,7 +250,7 @@ class LvTermine extends FHCAPI_Controller
);
}
private function fetchBenutzerGruppenFromStudiensemester($student_uid, $semester_range)
private function fetchBenutzerGruppenFromStudiensemester($student_uid, $semester_range, $skip_semester_kurzbz)
{
$this->load->model('person/Benutzergruppe_model', 'BenutzergruppeModel');
@@ -271,6 +269,10 @@ class LvTermine extends FHCAPI_Controller
// each semester could have ajoint semesters that need to be checked
foreach($semester_array as $semester=>$semester_date_range)
{
if($semester === $skip_semester_kurzbz)
{
continue;
}
// for each active semester query the benutzer_gruppen associated to the semester
$benutzer_query = $this->BenutzergruppeModel->execReadOnlyQuery("
SELECT * FROM tbl_benutzergruppe where uid = ? AND studiensemester_kurzbz = ?",[$student_uid, $semester]);
@@ -599,10 +599,10 @@ EOSQL;
// converts the array of gruppen strings into a sql IN (_,_,_) chain
$groups = implode(', ', $gruppen[$sem_date]);
$spezgrpclauses[] = <<<EOSPEZGRP
(
sp.gruppe_kurzbz IN ({$groups})
AND sp.datum BETWEEN {$this->escape($sem_date_range->start)} AND {$this->escape($sem_date_range->ende)}
)
(
sp.gruppe_kurzbz IN ({$groups})
AND sp.datum BETWEEN {$this->escape($sem_date_range->start)} AND {$this->escape($sem_date_range->ende)}
)
EOSPEZGRP;
}
@@ -650,7 +650,7 @@ EOSQL;
$lvbdclauses = $this->genLehrverbandClauses($semester, $studentlehrverbaende);
$spezgrpclauses = $this->genSpezialgruppenClauses($semester, $gruppen);
$chainingand = ($lvbdclauses && $spezgrpclauses) ? 'AND' : '';
$chainingor = ($lvbdclauses && $spezgrpclauses) ? 'OR' : '';
$query = <<<EOSQL
with preprocessedsp as (
@@ -673,7 +673,7 @@ EOSQL;
preprocessedsp sp
where
{$lvbdclauses}
{$chainingand}
{$chainingor}
{$spezgrpclauses}
)
+9
View File
@@ -26,6 +26,15 @@ export default {
+ encodeURIComponent(true)
};
},
getCourselistByStudiensemester(student_uid, studiensemester_kurzbz, stundenplan) {
return {
method: 'get',
url: 'api/frontend/v1/stv/LvTermine/getStundenplanForStudiensemester/' + encodeURIComponent(student_uid) + '/'
+ encodeURIComponent(studiensemester_kurzbz) + '/'
+ encodeURIComponent(stundenplan) + '/'
+ encodeURIComponent(true)
};
},
exportCalendar(student_uid, stundenplan)
{
return FHC_JS_DATA_STORAGE_OBJECT.app_root + 'content/statistik/termine.xls.php?student_uid=' + encodeURIComponent(student_uid) + '&db_stpl_table='+encodeURIComponent(stundenplan);
@@ -54,7 +54,8 @@ export default {
initTabulatorOptions(){
this.tabulatorOptions = {
ajaxURL: 'dummy',
ajaxRequestFunc: () => this.$api.call(this.endpoint.getCourselist(this.id, this.dataSem.start, this.dataSem.ende, this.dbStundenplanTable)),
//ajaxRequestFunc: () => this.$api.call(this.endpoint.getCourselist(this.id, this.dataSem.start, this.dataSem.ende, this.dbStundenplanTable)),
ajaxRequestFunc: () => this.$api.call(this.endpoint.getCourselistByStudiensemester(this.id, this.currentSemester, this.dbStundenplanTable)),
ajaxResponse: (url, params, response) => {
return response.data;
},