From 7d095b499899ad8baf0fc54f8b2743a6beaee0b7 Mon Sep 17 00:00:00 2001 From: SimonGschnell Date: Wed, 7 May 2025 11:03:12 +0200 Subject: [PATCH] feature(Studium LvModal): checks whether the lv has stundenplan entries and disables menu option if not/ checks the lvevaluierung information and adds it to the lvmodal information --- .../controllers/api/frontend/v1/Studium.php | 14 ++++++++ .../api/frontend/v1/Stundenplan.php | 19 ++++++++--- public/js/api/studium.js | 15 ++++++++ public/js/components/Cis/Mylv/LvMenu.js | 8 +++++ public/js/components/Cis/Mylv/LvUebersicht.js | 34 ++++++++++++++++--- public/js/components/Cis/Studium/Studium.js | 14 ++++++-- 6 files changed, 93 insertions(+), 11 deletions(-) diff --git a/application/controllers/api/frontend/v1/Studium.php b/application/controllers/api/frontend/v1/Studium.php index c50915ced..ecaf72918 100644 --- a/application/controllers/api/frontend/v1/Studium.php +++ b/application/controllers/api/frontend/v1/Studium.php @@ -17,6 +17,9 @@ */ if (! defined('BASEPATH')) exit('No direct script access allowed'); + +use CI3_Events as Events; + class Studium extends FHCAPI_Controller { @@ -29,6 +32,7 @@ class Studium extends FHCAPI_Controller 'getStudienAllSemester'=> self::PERM_LOGGED, 'getStudiengaengeForStudienSemester'=> self::PERM_LOGGED, 'getStudienplaeneBySemester'=> self::PERM_LOGGED, + 'getLvEvaluierungInfo'=> self::PERM_LOGGED, ]); $this->load->model('crm/Student_model', 'StudentModel'); @@ -173,6 +177,14 @@ class Studium extends FHCAPI_Controller $this->terminateWithSuccess($result); } + public function getLvEvaluierungInfo($studiensemester_kurzbz, $lehrveranstaltung_id){ + $result = []; + Events::trigger('lvEvaluierungsInfo', function & () use (&$result) { + return $result; + },$lehrveranstaltung_id, $studiensemester_kurzbz); + $this->terminateWithSuccess($result); + } + public function getStudiengaengeForStudienSemester($studiensemester){ $studiengaenge = $this->computeStudiengaenge($studiensemester); $this->terminateWithSuccess($studiengaenge); @@ -259,6 +271,8 @@ class Studium extends FHCAPI_Controller },$lektoren); return $lektoren; } + + } diff --git a/application/controllers/api/frontend/v1/Stundenplan.php b/application/controllers/api/frontend/v1/Stundenplan.php index f957ccff6..4e1ed5778 100644 --- a/application/controllers/api/frontend/v1/Stundenplan.php +++ b/application/controllers/api/frontend/v1/Stundenplan.php @@ -36,6 +36,7 @@ class Stundenplan extends FHCAPI_Controller 'StundenplanEvents' => self::PERM_LOGGED, 'getLehreinheitStudiensemester' => self::PERM_LOGGED, 'studiensemesterDateInterval' => self::PERM_LOGGED, + 'getLvStundenplanForStudiensemester' => self::PERM_LOGGED, ]); $this->load->library('LogLib'); @@ -85,11 +86,6 @@ class Stundenplan extends FHCAPI_Controller { $stundenplan_events = array(); } - else - { - $stundenplan_events = $this->getDataOrTerminateWithError($stundenplan_events); - } - // fetching moodle events $moodle_start_date = new DateTime($start_date); $moodle_start_date = $moodle_start_date->getTimestamp(); @@ -154,6 +150,19 @@ class Stundenplan extends FHCAPI_Controller $studiensemester =current($this->getDataOrTerminateWithError($studiensemester)); $this->terminateWithSuccess($studiensemester); } + + public function getLvStundenplanForStudiensemester($studiensemester,$lvid){ + $this->load->library('StundenplanLib'); + $this->load->model('organisation/Studiensemester_model','StudiensemesterModel'); + + $studiensemester_result = $this->StudiensemesterModel->loadWhere(["studiensemester_kurzbz"=>$studiensemester]); + $studiensemester_result = current($this->getDataOrTerminateWithError($studiensemester_result)); + $timespan_start = new DateTime($studiensemester_result->start); + $timespan_ende = new DateTime($studiensemester_result->ende); + $stundenplan = $this->stundenplanlib->getStundenplan(date_format($timespan_start, 'Y-m-d'),date_format($timespan_ende, 'Y-m-d'), $lvid); + $this->terminateWithSuccess($stundenplan); + + } /** diff --git a/public/js/api/studium.js b/public/js/api/studium.js index cb59482e7..92bb58698 100644 --- a/public/js/api/studium.js +++ b/public/js/api/studium.js @@ -29,4 +29,19 @@ export default { } ); }, + getLvStundenplanForStudiensemester: function (studiensemester, lvid) { + return this.$fhcApi.get( + `/api/frontend/v1/Stundenplan/getLvStundenplanForStudiensemester/${studiensemester}/${lvid}`, + { + } + ); + }, + getLvEvaluierungInfo: function (studiensemester_kurzbz, lvid) { + return this.$fhcApi.get( + `/api/frontend/v1/Studium/getLvEvaluierungInfo/${studiensemester_kurzbz}/${lvid}`, + { + } + ); + }, + } \ No newline at end of file diff --git a/public/js/components/Cis/Mylv/LvMenu.js b/public/js/components/Cis/Mylv/LvMenu.js index fc6a3a723..6c2577793 100644 --- a/public/js/components/Cis/Mylv/LvMenu.js +++ b/public/js/components/Cis/Mylv/LvMenu.js @@ -7,6 +7,11 @@ export default { }, containerStyles: Array, rowStyles: Array, + hasLvStundenplanEintraege: { + required:false, + default:true, + type:Boolean, + }, }, data(){ return{ @@ -18,6 +23,9 @@ export default { if (!this.c4_link(menuItem) && !menuItem.c4_moodle_links?.length) { return true; } + if (menuItem.id == "addon_fhtw_menu_lvplan_lva" && !this.hasLvStundenplanEintraege){ + return true; + } return null; }, c4_target: function (menuItem) { diff --git a/public/js/components/Cis/Mylv/LvUebersicht.js b/public/js/components/Cis/Mylv/LvUebersicht.js index dcab9acf5..e5162730c 100644 --- a/public/js/components/Cis/Mylv/LvUebersicht.js +++ b/public/js/components/Cis/Mylv/LvUebersicht.js @@ -33,7 +33,8 @@ export default { result: false, menu: [], isMenuSelected:false, - + hasLvStundenplanEintraege: true, + lvEvaluierungMessage: "", } }, mixins:[BsModal], @@ -41,6 +42,7 @@ export default { BsModal, LvMenu, }, + inject: ["studium_studiensemester"], methods:{ hiddenModal: function(){ @@ -58,9 +60,32 @@ export default { } else { this.isMenuSelected = true; } + + // check lv evaluierung info + if (this.studium_studiensemester) { + this.$fhcApi.factory.studium.getLvEvaluierungInfo(this.studium_studiensemester, this.event.lehreinheit_id ?? this.event.lehrveranstaltung_id) + .then(data => data.data) + .then(res => { + this.lvEvaluierungMessage = res.message; + }) + } + + // check if the lv has stundenplan entries for this studiensemester + if (this.studiensemester && this.event) { + return this.$fhcApi.factory.studium.getLvStundenplanForStudiensemester(this.studiensemester, this.event.lehreinheit_id ?? this.event.lehrveranstaltung_id) + .then(data => data.data) + .then(res => { + if (Array.isArray(res) && res.length > 0) { + this.hasLvStundenplanEintraege = true; + } else { + this.hasLvStundenplanEintraege = false; + } + }); + } + }, }, - mounted(){ + mounted(){ this.modal = this.$refs.modalContainer; }, beforeUnmount(){ @@ -68,7 +93,7 @@ export default { }, template:/*html*/` - +