From eae44bc6345245db9402c54948575463549cefee Mon Sep 17 00:00:00 2001 From: SimonGschnell Date: Fri, 2 May 2025 11:23:39 +0200 Subject: [PATCH] update(Studium): loads lehrmodule and lehrveranstaltungen for studienplan and displays the ui with the lvModal --- .../controllers/api/frontend/v1/Studium.php | 41 ++++++++++++++++++- public/js/components/Cis/Mylv/LvInfo.js | 6 +-- public/js/components/Cis/Mylv/LvModal.js | 2 +- public/js/components/Cis/Studium/Studium.js | 41 ++++++++++++++++++- 4 files changed, 83 insertions(+), 7 deletions(-) diff --git a/application/controllers/api/frontend/v1/Studium.php b/application/controllers/api/frontend/v1/Studium.php index 7541a823b..b14a852a6 100644 --- a/application/controllers/api/frontend/v1/Studium.php +++ b/application/controllers/api/frontend/v1/Studium.php @@ -132,6 +132,14 @@ class Studium extends FHCAPI_Controller $aktuelles_studienplan = $parameter_studienplan ; } + // fetch studienplan lehrveranstaltungen + if($aktuelles_studienplan){ + $lehrveranstaltungen = $this->computeStudienplanLehrveranstaltungen($aktuelles_studienplan->studienplan_id, $aktuelles_semester); + $aktuelles_lehrveranstaltungen = $lehrveranstaltungen; + }else{ + $aktuelles_lehrveranstaltungen = []; + } + // result object $result = new stdClass(); $result->studienSemester = []; @@ -142,7 +150,8 @@ class Studium extends FHCAPI_Controller $result->semester["all"] =$semester; $result->semester["preselected"] =$aktuelles_semester; $result->studienplan["all"]=$semester_studienplan; - $result->studienplan["preselected"]=$aktuelles_studienplan; + $result->studienplan["preselected"]=$aktuelles_studienplan; + $result->lehrveranstaltungen=$aktuelles_lehrveranstaltungen; $result->test1=$test1; $result->test2=$test2; $result->test3=$test3; @@ -201,6 +210,36 @@ class Studium extends FHCAPI_Controller return $studienplaene; } + private function computeStudienplanLehrveranstaltungen($studienplan_id, $semester){ + $lehrveranstaltungen = $this->StudienplanModel->getStudienplanLehrveranstaltung($studienplan_id, $semester); + $lehrveranstaltungen = $this->getDataOrTerminateWithError($lehrveranstaltungen); + usort($lehrveranstaltungen, function($a, $b){ + if($a->lehrtyp_kurzbz == "modul"){ + return -1; + } + else if($b->lehrtyp_kurzbz == "modul"){ + return 1; + } + return 0; + }); + $lehrveranstaltungen= array_reduce($lehrveranstaltungen,function($carry, $lehrv){ + if($lehrv->lehrtyp_kurzbz == "modul"){ + array_push($carry, $lehrv); + } + else{ + $parent =array_filter($carry, function($item)use($lehrv){ + return $item->studienplan_lehrveranstaltung_id == $lehrv->studienplan_lehrveranstaltung_id_parent; + }); + $parent = current($parent); + if($parent){ + $parent->lehrveranstaltungen[] = $lehrv; + } + } + return $carry; + }, []); + return $lehrveranstaltungen; + } + private function computeStudiengaenge($studiensemester){ $studiengang_studiensemester_result = $this->StudiengangModel->getStudiengaengeByStudiensemester($studiensemester); $studiengang_studiensemester_result = $this->getDataOrTerminateWithError($studiengang_studiensemester_result); diff --git a/public/js/components/Cis/Mylv/LvInfo.js b/public/js/components/Cis/Mylv/LvInfo.js index 514e34779..e248f523f 100644 --- a/public/js/components/Cis/Mylv/LvInfo.js +++ b/public/js/components/Cis/Mylv/LvInfo.js @@ -58,13 +58,13 @@ export default {