diff --git a/application/controllers/api/frontend/v1/LvMenu.php b/application/controllers/api/frontend/v1/LvMenu.php index 328ef194d..393c4d5c3 100644 --- a/application/controllers/api/frontend/v1/LvMenu.php +++ b/application/controllers/api/frontend/v1/LvMenu.php @@ -58,6 +58,22 @@ class LvMenu extends FHCAPI_Controller //------------------------------------------------------------------------------------------------------------------ // Public methods + + /** + * alternative function to get multiple lvMenus with a single http request + */ + public function getMultipleLvMenu($lvMenuOptionList){ + $result =[]; + foreach($lvMenuOptionList as $lvMenuOptions){ + $lvMenu = $this->getLvMenu($lvMenuOptions['lvid'],$lvMenuOptions['studiensemester_kurzbz']); + if(isError($lvMenu)){ + // TODO: some lvMenu threw an error, handle error here + } + $result[$lvMenuOptions['lvid']]=$lvMenu; + } + $this->terminateWithSuccess($result); + } + /** * */ @@ -91,20 +107,24 @@ class LvMenu extends FHCAPI_Controller $lvres = $this->Lehrveranstaltung_model->load($lvid); if(!hasData($lvres)) { - $this->terminateWithError('LV ' . $lvid . ' not found.'); + $this->terminateWithError('LV ' . $lvid . ' not found.'); } $lv = (getData($lvres))[0]; - + $this->addMeta('lvInfo',$lv); // define studiengang_kz / semester / lehrverzeichnis $studiengang_kz = $lv->studiengang_kz; $semester = $lv->semester; $short = $lv->lehreverzeichnis; + // return empty menu for studiengang_kz = 0 + if($studiengang_kz == 0){ + $this->terminateWithSuccess("organisatorische_einheit"); + } // load studiengang - $stgres = $this->Studiengang_model->load($lv->studiengang_kz); + $stgres = $this->Studiengang_model->load(strval($studiengang_kz)); if(!hasData($stgres)) { - $this->terminateWithError('Stg ' . $lv->studiengang_kz . ' nof found.'); + $this->terminateWithError('Stg ' . $lv->studiengang_kz . ' not found.'); } $stg = (getData($stgres))[0]; $kurzbz = strtoupper($stg->typ . $stg->kurzbz); diff --git a/public/js/components/Cis/Mylv/Semester/Studiengang/Lv.js b/public/js/components/Cis/Mylv/Semester/Studiengang/Lv.js index 832b0c0e7..147062f62 100644 --- a/public/js/components/Cis/Mylv/Semester/Studiengang/Lv.js +++ b/public/js/components/Cis/Mylv/Semester/Studiengang/Lv.js @@ -39,6 +39,12 @@ export default { } }, computed: { + is_organisatorische_einheit(){ + return this.menu == "organisatorische_einheit"; + }, + emptyMenu(){ + return !this.menu || !Array.isArray(this.menu) || Array.isArray(this.menu) && this.menu.length == 0; + }, bodyStyle() {return {}; const bodyStyle = {}; if (this.farbe) @@ -53,6 +59,17 @@ export default { }, }, methods: { + fetchMenu(lehrveranstaltung_id = this.lehrveranstaltung_id, studien_semester = this.studien_semester){ + return this.$fhcApi.factory.addons.getLvMenu(lehrveranstaltung_id, studien_semester) + .then(res => { + this.menu = res.data; + }) + .catch((error) => { + this.$fhcAlert.handleSystemError(error); + this.menu = []; + }); + }, + c4_link(menuItem) { if (!menuItem) return null; if (Array.isArray(menuItem.c4_moodle_links) && menuItem.c4_moodle_links.length) { @@ -103,11 +120,7 @@ export default { }, watch:{ studien_semester(newValue){ - this.$fhcApi.factory.addons.getLvMenu(this.lehrveranstaltung_id, newValue) - .then(res => { - this.menu = res.data; - }) - .catch((error) => this.$fhcAlert.handleSystemError); + this.fetchMenu(this.lehrveranstaltung_id, newValue); } }, created(){ @@ -119,14 +132,7 @@ export default { }, mounted() { - this.$fhcApi.factory.addons.getLvMenu(this.lehrveranstaltung_id, this.studien_semester) - .then(res => { - this.menu = res.data; - }) - .catch((error) => { - this.$fhcAlert.handleSystemError(error); - this.menu = []; - }); + this.fetchMenu(this.lehrveranstaltung_id, this.studien_semester); }, template: /*html*/`
-
+
-
{{bezeichnung}}
+
Organisatorische Einheit:
+
{{bezeichnung}}
-
+
-