From 0de033e42884a27440c2bb594a910203bf0d5da2 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Mon, 1 Dec 2025 10:55:04 +0100 Subject: [PATCH] termine tab hinzugefuegt --- .../controllers/api/frontend/v1/LvPlan.php | 43 +++++++++++++- .../controllers/api/frontend/v1/lv/Setup.php | 16 +++++ .../api/frontend/v1/stv/LvTermine.php | 9 +-- application/libraries/StundenplanLib.php | 15 +++++ .../models/ressource/Stundenplan_model.php | 58 +++++++++++++++++++ public/js/api/factory/studiensemester.js | 8 +++ public/js/api/factory/stv/coursedates.js | 20 +++---- public/js/api/lehrveranstaltung/letermine.js | 13 +++++ public/js/api/lehrveranstaltung/lvtermine.js | 13 +++++ public/js/api/lehrveranstaltung/setup.js | 7 +++ .../components/LVVerwaltung/LVVerwaltung.js | 1 - .../js/components/LVVerwaltung/Setup/Table.js | 3 +- .../js/components/LVVerwaltung/Setup/Tabs.js | 18 +++++- .../components/LVVerwaltung/Tabs/LVTermine.js | 21 +++++++ .../components/LVVerwaltung/Tabs/Termine.js | 21 +++++++ .../Details/Lehrveranstaltungstermine.js | 10 +++- .../ListLehrveranstaltungstermine.js | 38 +++++------- 17 files changed, 263 insertions(+), 51 deletions(-) create mode 100644 public/js/api/factory/studiensemester.js create mode 100644 public/js/api/lehrveranstaltung/letermine.js create mode 100644 public/js/api/lehrveranstaltung/lvtermine.js create mode 100644 public/js/components/LVVerwaltung/Tabs/LVTermine.js create mode 100644 public/js/components/LVVerwaltung/Tabs/Termine.js diff --git a/application/controllers/api/frontend/v1/LvPlan.php b/application/controllers/api/frontend/v1/LvPlan.php index 28b48e3f1..257c04960 100644 --- a/application/controllers/api/frontend/v1/LvPlan.php +++ b/application/controllers/api/frontend/v1/LvPlan.php @@ -41,7 +41,9 @@ class LvPlan extends FHCAPI_Controller 'getLehreinheitStudiensemester' => self::PERM_LOGGED, 'studiensemesterDateInterval' => self::PERM_LOGGED, 'getLvPlanForStudiensemester' => self::PERM_LOGGED, - 'getLv' => self::PERM_LOGGED + 'getLv' => self::PERM_LOGGED, + 'getLeEvents' => self::PERM_LOGGED, + 'getLvEvents' => self::PERM_LOGGED, ]); $this->load->library('LogLib'); @@ -54,6 +56,12 @@ class LvPlan extends FHCAPI_Controller )); $this->load->library('form_validation'); + $this->load->library('PhrasesLib'); + $this->loadPhrases( + array( + 'ui' + ) + ); } //------------------------------------------------------------------------------------------------------------------ @@ -145,6 +153,39 @@ class LvPlan extends FHCAPI_Controller )); } + public function getLeEvents($le_id = null, $start_date = null, $end_date = null, $stundenplan = 'stundenplandev') + { + + if (is_null($le_id) || is_null($start_date) || is_null($end_date)) + $this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL); + + if ($stundenplan !== 'stundenplandev' && $stundenplan !== 'stundenplan') + $this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL); + + $this->load->library('StundenplanLib'); + + $result = $this->stundenplanlib->getEventsByLE($le_id, $start_date, $end_date, $stundenplan); + $lvplanEvents = $this->getDataOrTerminateWithError($result); + + $this->terminateWithSuccess($lvplanEvents); + } + + public function getLvEvents($lv_id = null, $start_date = null, $end_date = null, $stundenplan = 'stundenplandev') + { + if (is_null($lv_id) || is_null($start_date) || is_null($end_date)) + $this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL); + + if ($stundenplan !== 'stundenplandev' && $stundenplan !== 'stundenplan') + $this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL); + + $this->load->library('StundenplanLib'); + + $result = $this->stundenplanlib->getEventsByLV($lv_id, $start_date, $end_date, $stundenplan); + $lvplanEvents = $this->getDataOrTerminateWithError($result); + + $this->terminateWithSuccess($lvplanEvents); + } + //TODO: delete this function if we don't use the old calendar export endpoints anymore public function studiensemesterDateInterval($date){ $this->load->model('organisation/Studiensemester_model','StudiensemesterModel'); diff --git a/application/controllers/api/frontend/v1/lv/Setup.php b/application/controllers/api/frontend/v1/lv/Setup.php index a2c167dd6..77ab0edda 100644 --- a/application/controllers/api/frontend/v1/lv/Setup.php +++ b/application/controllers/api/frontend/v1/lv/Setup.php @@ -28,6 +28,7 @@ class Setup extends FHCAPI_Controller { parent::__construct([ 'getTabs' => ['admin:r', 'assistenz:r'], + 'getTab' => ['admin:r', 'assistenz:r'], 'getStudiensemester' => ['admin:r', 'assistenz:r'], 'getSprache' => ['admin:r', 'assistenz:r'], 'getRaumtyp' => ['admin:r', 'assistenz:r'], @@ -60,6 +61,11 @@ class Setup extends FHCAPI_Controller 'component' => APP_ROOT . 'public/js/components/LVVerwaltung/Tabs/Lektor.js', 'config' => [] ); + $tabs['termine'] = array ( + 'title' => 'Termine', + 'component' => APP_ROOT . 'public/js/components/LVVerwaltung/Tabs/Termine.js', + 'config' => [] + ); $tabs['notiz'] = array ( 'title' => 'Notizen', 'component' => APP_ROOT . 'public/js/components/LVVerwaltung/Tabs/Notiz.js', @@ -68,6 +74,16 @@ class Setup extends FHCAPI_Controller $this->terminateWithSuccess($tabs); } + public function getTab() + { + $tabs['termine'] = array ( + 'title' => 'Termine', + 'component' => APP_ROOT . 'public/js/components/LVVerwaltung/Tabs/LVTermine.js', + 'config' => [] + ); + $this->terminateWithSuccess($tabs); + } + public function getStudiensemester() { $this->_ci->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); diff --git a/application/controllers/api/frontend/v1/stv/LvTermine.php b/application/controllers/api/frontend/v1/stv/LvTermine.php index c29f56964..b9e23e77d 100644 --- a/application/controllers/api/frontend/v1/stv/LvTermine.php +++ b/application/controllers/api/frontend/v1/stv/LvTermine.php @@ -34,7 +34,7 @@ class LvTermine extends FHCAPI_Controller //TODO Build own lib or combine with Controller Stundenplan.php //here use of logic of Stundenplan.php, extended with parameters uid, grouping, and used dbTable - public function getStundenplan($uid, $start_date = null, $end_date = null, $groupConsecutiveHours = false, $dbStundenplanTable = "stundenplan") + public function getStundenplan($uid, $start_date = null, $end_date = null, $dbStundenplanTable = "stundenplan", $groupConsecutiveHours = false) { $student_uid = $uid; $semester_range = $this->studienSemesterErmitteln($start_date, $end_date); @@ -80,13 +80,6 @@ class LvTermine extends FHCAPI_Controller $stundenplan_data = $this->getDataOrTerminateWithError($stundenplan_data) ?? []; $this->terminateWithSuccess($stundenplan_data); - - $this->expand_object_information($stundenplan_data); - - $this->returnObj['$stundenplan_query'] = $stundenplan_query; - $this->returnObj['$student_lehrverband'] = $student_lehrverband; - $this->returnObj['$benutzer_gruppen'] = $benutzer_gruppen; - $this->terminateWithSuccess($stundenplan_data); } public function getStudiensemester() diff --git a/application/libraries/StundenplanLib.php b/application/libraries/StundenplanLib.php index 7ed64da2c..b65922633 100644 --- a/application/libraries/StundenplanLib.php +++ b/application/libraries/StundenplanLib.php @@ -181,6 +181,21 @@ class StundenplanLib return success($stundenplan_data); } + public function getEventsByLE($lehreinheit_id, $start, $end, $stundenplan) + { + $this->_ci =& get_instance(); + + $this->_ci->load->model('ressource/Stundenplan_model', 'StundenplanModel'); + return $this->_ci->StundenplanModel->getStundenplanLE($lehreinheit_id, $start, $end, $stundenplan); + } + + public function getEventsByLV($lehrveranstaltung_id, $start, $end, $stundenplan) + { + $this->_ci =& get_instance(); + + $this->_ci->load->model('ressource/Stundenplan_model', 'StundenplanModel'); + return $this->_ci->StundenplanModel->getStundenplanLV($lehrveranstaltung_id, $start, $end, $stundenplan); + } /** * Get stundenplan for a room * diff --git a/application/models/ressource/Stundenplan_model.php b/application/models/ressource/Stundenplan_model.php index 389be582d..6e20a3bc2 100644 --- a/application/models/ressource/Stundenplan_model.php +++ b/application/models/ressource/Stundenplan_model.php @@ -333,6 +333,64 @@ class Stundenplan_model extends DB_Model ", [$start_date, $end_date, $lv_id]); } + public function getStundenplanLE($lehreinheit, $start_date, $end_date, $stundenplan) + { + $qry = " + WITH lehreinheiten AS ( + SELECT lehreinheit_id FROM lehre.tbl_lehreinheit WHERE lehreinheit_id = ? + ), " . $this->getStundenplanCTE($stundenplan) . " + SELECT * + FROM stundenplanentries + "; + + return $this->execReadOnlyQuery($qry, array($lehreinheit, $start_date, $end_date)); + } + + public function getStundenplanLV($lehrveranstaltung_id, $start_date, $end_date, $stundenplan) + { + $qry = " + WITH lehreinheiten AS ( + SELECT lehreinheit_id FROM lehre.tbl_lehreinheit WHERE lehrveranstaltung_id = ? + ), " . $this->getStundenplanCTE($stundenplan) . " + SELECT * + FROM stundenplanentries + "; + + return $this->execReadOnlyQuery($qry, array($lehrveranstaltung_id, $start_date, $end_date)); + } + + private function getStundenplanCTE($stundenplan) + { + return "entries AS ( + SELECT + datum, min(stunde) as stunde_beginn, max(stunde) as stunde_ende, + array_agg(DISTINCT( + CASE WHEN gruppe_kurzbz is not null THEN gruppe_kurzbz + ELSE (UPPER(stg_typ || stg_kurzbz) || COALESCE(semester,'0') || COALESCE(verband,'') || COALESCE(gruppe,'')) + END)) as gruppen_kuerzel, + array_agg(DISTINCT CONCAT(vorname || ' ' || nachname)) as lektorname, + array_agg(DISTINCT stundenplan.ort_kurzbz) as ort_kurzbz, + array_agg(DISTINCT titel) as titel, + lehrfach_bez, stundenplan.lehreinheit_id, lehrveranstaltung_id + FROM lehre.vw_$stundenplan as stundenplan + JOIN public.tbl_mitarbeiter ON stundenplan.uid = tbl_mitarbeiter.mitarbeiter_uid + JOIN tbl_benutzer ON tbl_mitarbeiter.mitarbeiter_uid = tbl_benutzer.uid + JOIN tbl_person USING(person_id) + JOIN lehreinheiten ON stundenplan.lehreinheit_id = lehreinheiten.lehreinheit_id + WHERE datum >= ? AND datum <= ? + GROUP BY datum, unr, stundenplan.lehreinheit_id, lehrveranstaltung_id, lehrfach_bez, lehrfach_bez + ORDER BY datum, min(stunde), unr, lehreinheit_id + ), + stundenplanentries AS ( + SELECT + entries.*, + stundeb.beginn AS beginn, + stundee.ende AS ende + FROM entries + JOIN lehre.tbl_stunde stundeb ON stundeb.stunde = entries.stunde_beginn + JOIN lehre.tbl_stunde stundee ON stundee.stunde = entries.stunde_ende + )"; + } /** * queries Stundenplan and filters by assigned ma_kurzbz, very similar to get by LVA * diff --git a/public/js/api/factory/studiensemester.js b/public/js/api/factory/studiensemester.js new file mode 100644 index 000000000..7e4bf7515 --- /dev/null +++ b/public/js/api/factory/studiensemester.js @@ -0,0 +1,8 @@ +export default { + getStudiensemester(){ + return { + method: 'get', + url: 'api/frontend/v1/stv/LvTermine/getStudiensemester/' + }; + }, +}; diff --git a/public/js/api/factory/stv/coursedates.js b/public/js/api/factory/stv/coursedates.js index 71ded7285..987e65750 100644 --- a/public/js/api/factory/stv/coursedates.js +++ b/public/js/api/factory/stv/coursedates.js @@ -16,20 +16,18 @@ */ export default { - getCourselist(params) { + getCourselist(student_uid, start_date, end_date, stundenplan) { return { method: 'get', - url: 'api/frontend/v1/stv/LvTermine/getStundenplan/' + params.student_uid + '/' - + params.start_date + '/' - + params.end_date + '/' - + params.group_consecutiveHours + '/' - + params.dbStundenplanTable + url: 'api/frontend/v1/stv/LvTermine/getStundenplan/' + encodeURIComponent(student_uid) + '/' + + encodeURIComponent(start_date) + '/' + + encodeURIComponent(end_date) + '/' + + encodeURIComponent(stundenplan) + '/' + + encodeURIComponent(true) }; }, - getStudiensemester(){ - return { - method: 'get', - url: 'api/frontend/v1/stv/LvTermine/getStudiensemester/' - }; + 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); }, } \ No newline at end of file diff --git a/public/js/api/lehrveranstaltung/letermine.js b/public/js/api/lehrveranstaltung/letermine.js new file mode 100644 index 000000000..8cdb51070 --- /dev/null +++ b/public/js/api/lehrveranstaltung/letermine.js @@ -0,0 +1,13 @@ +export default { + getCourselist(le_id, start_date, end_date, stundenplan) + { + return { + method: 'get', + url: '/api/frontend/v1/lvPlan/getLeEvents/' + encodeURIComponent(le_id) + "/" + encodeURIComponent(start_date) + "/" + encodeURIComponent(end_date) + "/" + encodeURIComponent(stundenplan), + }; + }, + exportCalendar(le_id, stundenplan) + { + return FHC_JS_DATA_STORAGE_OBJECT.app_root + 'content/statistik/termine.xls.php?lehreinheit_id=' + encodeURIComponent(le_id) + '&db_stpl_table='+encodeURIComponent(stundenplan); + } +}; diff --git a/public/js/api/lehrveranstaltung/lvtermine.js b/public/js/api/lehrveranstaltung/lvtermine.js new file mode 100644 index 000000000..f199ee4b0 --- /dev/null +++ b/public/js/api/lehrveranstaltung/lvtermine.js @@ -0,0 +1,13 @@ +export default { + getCourselist(lv_id, start_date, end_date, stundenplan) + { + return { + method: 'get', + url: '/api/frontend/v1/lvPlan/getLvEvents/' + encodeURIComponent(lv_id) + "/" + encodeURIComponent(start_date) + "/" + encodeURIComponent(end_date) + "/" + encodeURIComponent(stundenplan), + }; + }, + exportCalendar(lv_id, stundenplan) + { + return FHC_JS_DATA_STORAGE_OBJECT.app_root + 'content/statistik/termine.xls.php?lehrveranstaltung_id=' + encodeURIComponent(lv_id) + '&db_stpl_table='+encodeURIComponent(stundenplan); + } +}; diff --git a/public/js/api/lehrveranstaltung/setup.js b/public/js/api/lehrveranstaltung/setup.js index 78f78b05b..e6b0cd645 100644 --- a/public/js/api/lehrveranstaltung/setup.js +++ b/public/js/api/lehrveranstaltung/setup.js @@ -6,4 +6,11 @@ export default { url: '/api/frontend/v1/lv/setup/getTabs/' }; }, + getTab() + { + return { + method: 'get', + url: '/api/frontend/v1/lv/setup/getTab/' + }; + }, } diff --git a/public/js/components/LVVerwaltung/LVVerwaltung.js b/public/js/components/LVVerwaltung/LVVerwaltung.js index 42c50bdfa..e9c1da205 100644 --- a/public/js/components/LVVerwaltung/LVVerwaltung.js +++ b/public/js/components/LVVerwaltung/LVVerwaltung.js @@ -8,7 +8,6 @@ import LvTabs from "./Setup/Tabs.js"; import ApiDetails from "../../api/lehrveranstaltung/details.js"; import ApiLektor from "../../api/lehrveranstaltung/lektor.js"; -import ApiGruppe from "../../api/lehrveranstaltung/gruppe.js"; import ApiStudiengangTree from "../../api/lehrveranstaltung/studiengangtree.js"; import ApiSearchbar from "../../api/factory/searchbar.js"; diff --git a/public/js/components/LVVerwaltung/Setup/Table.js b/public/js/components/LVVerwaltung/Setup/Table.js index 830cfc9ea..e0153a612 100644 --- a/public/js/components/LVVerwaltung/Setup/Table.js +++ b/public/js/components/LVVerwaltung/Setup/Table.js @@ -367,14 +367,13 @@ export default { if (data[0]?.lehreinheit_id !== undefined && this.selectedColumnValues.length === 1) { - this.$emit('update:selected', [data[0]]); this.lv_info = false } else if (data[0]?.lehrveranstaltung_id) { - this.$emit('update:selected', {}); this.getLVInfos(data[0]); } + this.$emit('update:selected', [data[0]]); }, getLVInfos(data) { diff --git a/public/js/components/LVVerwaltung/Setup/Tabs.js b/public/js/components/LVVerwaltung/Setup/Tabs.js index 62c5bbc31..1a2c87f9d 100644 --- a/public/js/components/LVVerwaltung/Setup/Tabs.js +++ b/public/js/components/LVVerwaltung/Setup/Tabs.js @@ -9,6 +9,7 @@ export default { data() { return { configLVTabs: {}, + configLVTab: {}, }; }, props: { @@ -37,21 +38,34 @@ export default { }) .catch(this.$fhcAlert.handleSystemError); + this.$api.call(Setup.getTab()) + .then(result => { + this.configLVTab = result.data; + }) + .catch(this.$fhcAlert.handleSystemError); }, template: `
Bitte eine Lehreinheit auswählen!
-
+
+
Loading... diff --git a/public/js/components/LVVerwaltung/Tabs/LVTermine.js b/public/js/components/LVVerwaltung/Tabs/LVTermine.js new file mode 100644 index 000000000..b3ce8d2f6 --- /dev/null +++ b/public/js/components/LVVerwaltung/Tabs/LVTermine.js @@ -0,0 +1,21 @@ +import TableLvList from "../../Stv/Studentenverwaltung/Details/Lehrveranstaltungstermine/ListLehrveranstaltungstermine.js"; +import ApiLVTermine from "../../../api/lehrveranstaltung/lvtermine.js"; + +export default { + name: "TabCourseList", + components: { + TableLvList + }, + props: { + modelValue: Object, + }, + data() { + return { + endpoint: ApiLVTermine + }; + }, + template: ` +
+ +
` +}; \ No newline at end of file diff --git a/public/js/components/LVVerwaltung/Tabs/Termine.js b/public/js/components/LVVerwaltung/Tabs/Termine.js new file mode 100644 index 000000000..b262eabb6 --- /dev/null +++ b/public/js/components/LVVerwaltung/Tabs/Termine.js @@ -0,0 +1,21 @@ +import TableLvList from "../../Stv/Studentenverwaltung/Details/Lehrveranstaltungstermine/ListLehrveranstaltungstermine.js"; +import ApiLETermine from "../../../api/lehrveranstaltung/letermine.js"; + +export default { + name: "TabCourseList", + components: { + TableLvList + }, + props: { + modelValue: Object, + }, + data() { + return { + endpoint: ApiLETermine + }; + }, + template: ` +
+ +
` +}; \ No newline at end of file diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Lehrveranstaltungstermine.js b/public/js/components/Stv/Studentenverwaltung/Details/Lehrveranstaltungstermine.js index 6845613ab..a41ce90bc 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Lehrveranstaltungstermine.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Lehrveranstaltungstermine.js @@ -1,4 +1,6 @@ import TableLvList from "./Lehrveranstaltungstermine/ListLehrveranstaltungstermine.js"; +import ApiStvCoursedates from "../../../../api/factory/stv/coursedates.js"; + export default { name: "TabCourseList", @@ -8,11 +10,13 @@ export default { props: { modelValue: Object, }, - data(){ - return {} + data() { + return { + endpoint: ApiStvCoursedates + }; }, template: `
- +
` }; \ No newline at end of file diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Lehrveranstaltungstermine/ListLehrveranstaltungstermine.js b/public/js/components/Stv/Studentenverwaltung/Details/Lehrveranstaltungstermine/ListLehrveranstaltungstermine.js index 20cb95fbd..bc3bf4bc7 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Lehrveranstaltungstermine/ListLehrveranstaltungstermine.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Lehrveranstaltungstermine/ListLehrveranstaltungstermine.js @@ -2,7 +2,7 @@ import {CoreFilterCmpt} from "../../../../filter/Filter.js"; import FormInput from "../../../../Form/Input.js"; import FormForm from '../../../../Form/Form.js'; -import ApiStvCoursedates from "../../../../../api/factory/stv/coursedates.js"; +import ApiStudiensemester from "../../../../../api/factory/studiensemester.js"; export default { name: "TblCourseList", @@ -12,17 +12,6 @@ export default { FormForm }, computed: { - downloadLink: function(){ - if(!this.dataSem.start || !this.dataSem.ende || !this.student.uid) return; - let start = new Date(this.dataSem.start); - start = Math.floor(start.getTime()/1000); - let ende = new Date(this.dataSem.ende); - ende = Math.floor(ende.getTime() / 1000); - - let link = - FHC_JS_DATA_STORAGE_OBJECT.app_root + "cis/private/lvplan/stpl_kalender.php?type=student&pers_uid=" + this.student.uid + "&begin=" + start + "&ende= " +ende + "&format=excel"; - return link; - }, dbStundenplanTable: function (){ return this.showStundenplanDev ? 'stundenplandev' : 'stundenplan'; } @@ -33,7 +22,14 @@ export default { }, }, props: { - student: Object + id: { + type: [Number, String], + required: true + }, + endpoint: { + type: Object, + required: true + }, }, data(){ return { @@ -48,14 +44,7 @@ export default { initTabulatorOptions(){ this.tabulatorOptions = { ajaxURL: 'dummy', - ajaxRequestFunc: () => this.$api.call( - ApiStvCoursedates.getCourselist({ - student_uid: this.student.uid, - start_date: this.dataSem.start, - end_date: this.dataSem.ende, - group_consecutiveHours: true, - dbStundenplanTable: this.dbStundenplanTable}) - ), + ajaxRequestFunc: () => this.$api.call(this.endpoint.getCourselist(this.id, this.dataSem.start, this.dataSem.ende, this.dbStundenplanTable)), ajaxResponse: (url, params, response) => { return response.data; }, @@ -137,7 +126,7 @@ export default { this.dataSem = this.listStudiensemester.find(item => item.studiensemester_kurzbz === studiensemester_kurzbz); }, exportToExcel(){ - window.open(this.downloadLink, '_blank'); + window.open(this.endpoint.exportCalendar(this.id, this.dbStundenplanTable), '_blank'); }, reload() { this.$refs.table.reloadTable(); @@ -151,10 +140,13 @@ export default { currentSemester(newVal, oldVal) { this.getDatesOfSemester(newVal); }, + id() { + this.reload(); + } }, created(){ this.$api - .call(ApiStvCoursedates.getStudiensemester()) + .call(ApiStudiensemester.getStudiensemester()) .then(result => { this.listStudiensemester = result.data; this.getDatesOfSemester(this.currentSemester);