From 47716f1affc5f1ed638ca3d113c15b769bfb5965 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Fri, 9 Oct 2026 16:51:17 +0200 Subject: [PATCH] use new endpoint in frontend, skip next semester spezialgruppen --- .../controllers/api/frontend/v1/stv/LvTermine.php | 10 ++++++---- application/models/ressource/Stundenplan_model.php | 12 ++++++------ public/js/api/factory/stv/coursedates.js | 9 +++++++++ .../ListLehrveranstaltungstermine.js | 3 ++- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/application/controllers/api/frontend/v1/stv/LvTermine.php b/application/controllers/api/frontend/v1/stv/LvTermine.php index 6eaff8b1d..ec558f888 100644 --- a/application/controllers/api/frontend/v1/stv/LvTermine.php +++ b/application/controllers/api/frontend/v1/stv/LvTermine.php @@ -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]); diff --git a/application/models/ressource/Stundenplan_model.php b/application/models/ressource/Stundenplan_model.php index c06000bbc..96fb5c319 100644 --- a/application/models/ressource/Stundenplan_model.php +++ b/application/models/ressource/Stundenplan_model.php @@ -599,10 +599,10 @@ EOSQL; // converts the array of gruppen strings into a sql IN (_,_,_) chain $groups = implode(', ', $gruppen[$sem_date]); $spezgrpclauses[] = <<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 = << 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; },