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) if ($function_error)
return $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)) if (isError($benutzer_gruppen))
return $benutzer_gruppen; return $benutzer_gruppen;
$benutzer_gruppen = getData($benutzer_gruppen); $benutzer_gruppen = getData($benutzer_gruppen);
@@ -161,8 +161,6 @@ class LvTermine extends FHCAPI_Controller
$semesterStud = $data->ausbildungssemester; $semesterStud = $data->ausbildungssemester;
} }
$ci->addMeta('semester of studentUid', $semesterStud);
$stundenplan_query = $this->StundenplanModel->getStundenplanQuery( $stundenplan_query = $this->StundenplanModel->getStundenplanQuery(
$start_date, $start_date,
$end_date, //will be overwritten in model if $ende_semProlonged $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'); $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 // each semester could have ajoint semesters that need to be checked
foreach($semester_array as $semester=>$semester_date_range) 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 // for each active semester query the benutzer_gruppen associated to the semester
$benutzer_query = $this->BenutzergruppeModel->execReadOnlyQuery(" $benutzer_query = $this->BenutzergruppeModel->execReadOnlyQuery("
SELECT * FROM tbl_benutzergruppe where uid = ? AND studiensemester_kurzbz = ?",[$student_uid, $semester]); 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 // converts the array of gruppen strings into a sql IN (_,_,_) chain
$groups = implode(', ', $gruppen[$sem_date]); $groups = implode(', ', $gruppen[$sem_date]);
$spezgrpclauses[] = <<<EOSPEZGRP $spezgrpclauses[] = <<<EOSPEZGRP
( (
sp.gruppe_kurzbz IN ({$groups}) sp.gruppe_kurzbz IN ({$groups})
AND sp.datum BETWEEN {$this->escape($sem_date_range->start)} AND {$this->escape($sem_date_range->ende)} AND sp.datum BETWEEN {$this->escape($sem_date_range->start)} AND {$this->escape($sem_date_range->ende)}
) )
EOSPEZGRP; EOSPEZGRP;
} }
@@ -650,7 +650,7 @@ EOSQL;
$lvbdclauses = $this->genLehrverbandClauses($semester, $studentlehrverbaende); $lvbdclauses = $this->genLehrverbandClauses($semester, $studentlehrverbaende);
$spezgrpclauses = $this->genSpezialgruppenClauses($semester, $gruppen); $spezgrpclauses = $this->genSpezialgruppenClauses($semester, $gruppen);
$chainingand = ($lvbdclauses && $spezgrpclauses) ? 'AND' : ''; $chainingor = ($lvbdclauses && $spezgrpclauses) ? 'OR' : '';
$query = <<<EOSQL $query = <<<EOSQL
with preprocessedsp as ( with preprocessedsp as (
@@ -673,7 +673,7 @@ EOSQL;
preprocessedsp sp preprocessedsp sp
where where
{$lvbdclauses} {$lvbdclauses}
{$chainingand} {$chainingor}
{$spezgrpclauses} {$spezgrpclauses}
) )
+9
View File
@@ -26,6 +26,15 @@ export default {
+ encodeURIComponent(true) + 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) 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); 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(){ initTabulatorOptions(){
this.tabulatorOptions = { this.tabulatorOptions = {
ajaxURL: 'dummy', 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) => { ajaxResponse: (url, params, response) => {
return response.data; return response.data;
}, },