From f2a57f85a8c13cda9ad04e24f0e9dc08e446906a Mon Sep 17 00:00:00 2001 From: SimonGschnell Date: Wed, 11 Sep 2024 10:19:46 +0200 Subject: [PATCH] fixes the errors with the stundenplan/reservierungen data query --- .../api/frontend/v1/Stundenplan.php | 132 ++++++------------ .../models/ressource/Reservierung_model.php | 4 +- public/js/apps/Cis/Stundenplan.js | 4 +- .../js/components/Cis/Mylv/RoomInformation.js | 2 +- 4 files changed, 50 insertions(+), 92 deletions(-) diff --git a/application/controllers/api/frontend/v1/Stundenplan.php b/application/controllers/api/frontend/v1/Stundenplan.php index 54c6a50e8..398b4e4cc 100644 --- a/application/controllers/api/frontend/v1/Stundenplan.php +++ b/application/controllers/api/frontend/v1/Stundenplan.php @@ -44,6 +44,12 @@ class Stundenplan extends FHCAPI_Controller )); $this->load->library('form_validation'); + + //load models + $this->load->model('ressource/Stundenplan_model', 'StundenplanModel'); + $this->load->model('ressource/Reservierung_model', 'ReservierungModel'); + + } //------------------------------------------------------------------------------------------------------------------ @@ -72,10 +78,6 @@ class Stundenplan extends FHCAPI_Controller */ public function getRoomplan() { - - $this->load->model('ressource/Stundenplan_model', 'StundenplanModel'); - $this->load->model('ressource/Stunde_model', 'StundeModel'); - // form validation $this->load->library('form_validation'); $this->form_validation->set_data($_GET); @@ -89,11 +91,13 @@ class Stundenplan extends FHCAPI_Controller $start_date = $this->input->get('start_date', TRUE); $end_date = $this->input->get('end_date', TRUE); - $result = $this->StundenplanModel->stundenplanGruppierung($this->StundenplanModel->getRoomQuery($ort_kurzbz, $start_date, $end_date)); + $roomplan_data = $this->StundenplanModel->stundenplanGruppierung($this->StundenplanModel->getRoomQuery($ort_kurzbz, $start_date, $end_date)); - $result = $this->getDataOrTerminateWithError($result); + $roomplan_data = $this->getDataOrTerminateWithError($roomplan_data); - $this->terminateWithSuccess($result); + $this->expand_object_information($roomplan_data); + + $this->terminateWithSuccess($roomplan_data); } @@ -104,12 +108,6 @@ class Stundenplan extends FHCAPI_Controller */ public function getStundenplan(){ - $this->load->model('ressource/Stundenplan_model', 'StundenplanModel'); - $this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel'); - $this->load->model('organisation/Lehrverband_model', 'LehrverbandModel'); - $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); - $this->load->model('person/Benutzer_model', 'BenutzerModel'); - // form validation $this->load->library('form_validation'); $this->form_validation->set_data($_GET); @@ -126,8 +124,39 @@ class Stundenplan extends FHCAPI_Controller $stundenplan_data = $this->StundenplanModel->stundenplanGruppierung($this->StundenplanModel->getStundenplanQuery(get_uid(),$start_date,$end_date)); $stundenplan_data = $this->getDataOrTerminateWithError($stundenplan_data) ?? []; - // get the benutzer object for the lektor of the lv - foreach ($stundenplan_data as $item) { + $this->expand_object_information($stundenplan_data); + + $this->terminateWithSuccess($stundenplan_data); + } + + // gets the reservierungen of a room if the ort_kurzbz parameter is supplied otherwise gets the reservierungen of the stundenplan of a student + public function Reservierungen($ort_kurzbz = null) + { + //form validation + $this->load->library('form_validation'); + $this->form_validation->set_data($_GET); + $this->form_validation->set_rules('start_date', "StartDate", "required"); + $this->form_validation->set_rules('end_date', "EndDate", "required"); + if($this->form_validation->run() == FALSE) $this->terminateWithValidationErrors($this->form_validation->error_array()); + + // storing the get parameter in local variables + $start_date = $this->input->get('start_date', TRUE); + $end_date = $this->input->get('end_date', TRUE); + + // querying the reservierungen + $reservierungen = $this->ReservierungModel->getReservierungen($start_date, $end_date, $ort_kurzbz); + + $reservierungen = $this->getDataOrTerminateWithError($reservierungen) ?? []; + + $this->expand_object_information($reservierungen); + + $this->terminateWithSuccess($reservierungen); + + } + + private function expand_object_information($data){ + foreach ($data as $item) { + $lektor_obj_array = array(); $gruppe_obj_array = array(); @@ -164,81 +193,10 @@ class Stundenplan extends FHCAPI_Controller $gruppe_obj_array[] = $lv_gruppe_object; } - $item->lektor = $lektor_obj_array; $item->gruppe = $gruppe_obj_array; - } - - $this->terminateWithSuccess($stundenplan_data); - } - - // gets the reservierungen of a room if the ort_kurzbz parameter is supplied otherwise gets the reservierungen of the stundenplan of a student - public function Reservierungen($ort_kurzbz = null) - { - $this->load->model('ressource/Reservierung_model', 'ReservierungModel'); - $this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel'); - - //form validation - $this->load->library('form_validation'); - $this->form_validation->set_data($_GET); - $this->form_validation->set_rules('start_date', "StartDate", "required"); - $this->form_validation->set_rules('end_date', "EndDate", "required"); - if($this->form_validation->run() == FALSE) $this->terminateWithValidationErrors($this->form_validation->error_array()); - - // storing the get parameter in local variables - $start_date = $this->input->get('start_date', TRUE); - $end_date = $this->input->get('end_date', TRUE); - - // querying the reservierungen - $reservierungen = $this->ReservierungModel->getReservierungen($start_date, $end_date, $ort_kurzbz); - - $reservierungen = $this->getDataOrTerminateWithError($reservierungen) ?? []; - - foreach ($reservierungen as $reservierung) { - - $lektor_obj_array = array(); - $gruppe_obj_array = array(); - - // load lektor object - foreach ($reservierung->lektor as $lektor) { - $this->MitarbeiterModel->addLimit(1); - $lektor_object = $this->MitarbeiterModel->execReadOnlyQuery(" - SELECT mitarbeiter_uid, vorname, nachname, kurzbz - FROM public.tbl_mitarbeiter - JOIN public.tbl_benutzer benutzer ON benutzer.uid = mitarbeiter_uid - JOIN public.tbl_person person ON person.person_id = benutzer.person_id - WHERE mitarbeiter_uid = ?", [$lektor]); - if (isError($lektor_object)) { - $this->show_error(getError($lektor_object)); - } - $lektor_object = current(getData($lektor_object)); - // only provide needed information of the mitarbeiter object - $lektor_obj_array[] = $lektor_object; - } - - // load gruppe object - foreach ($reservierung->gruppe as $lv_gruppe) { - $lv_gruppe = strtr($lv_gruppe, ['(' => '', ')' => '', '"' => '']); - $lv_gruppe_array = explode(",", $lv_gruppe); - list($gruppe, $verband, $semester, $studiengang_kz, $gruppen_kuerzel) = $lv_gruppe_array; - - $lv_gruppe_object = new stdClass(); - $lv_gruppe_object->gruppe = $gruppe; - $lv_gruppe_object->verband = $verband; - $lv_gruppe_object->semester = $semester; - $lv_gruppe_object->studiengang_kz = $studiengang_kz; - $lv_gruppe_object->kuerzel = $gruppen_kuerzel; - - $gruppe_obj_array[] = $lv_gruppe_object; - } - - - $reservierung->gruppe = $gruppe_obj_array; - $reservierung->lektor = $lektor_obj_array; + $item->lektor = $lektor_obj_array; } - - $this->terminateWithSuccess($reservierungen); - } diff --git a/application/models/ressource/Reservierung_model.php b/application/models/ressource/Reservierung_model.php index 3247b173f..fdfc9926b 100755 --- a/application/models/ressource/Reservierung_model.php +++ b/application/models/ressource/Reservierung_model.php @@ -41,7 +41,7 @@ class Reservierung_model extends DB_Model WHEN res.gruppe_kurzbz IS NOT NULL THEN res.gruppe_kurzbz ELSE CONCAT(UPPER(studg.typ),UPPER(studg.kurzbz),'-',COALESCE(CAST(res.semester AS varchar),'/'),COALESCE(CAST(res.verband AS varchar),'/')) END as gruppen_kuerzel - FROM lehre.vw_reservierung res + FROM campus.vw_reservierung res JOIN public.tbl_studiengang studg ON studg.studiengang_kz=res.studiengang_kz JOIN lehre.tbl_stunde ON lehre.tbl_stunde.stunde = res.stunde WHERE res.ort_kurzbz = ? AND datum >= ? AND datum <= ?"; @@ -52,7 +52,7 @@ class Reservierung_model extends DB_Model SELECT 'reservierung' as type, beginn, ende, datum, COALESCE(titel, beschreibung) as topic, - array_agg(DISTINCT uid) as lektor, + array_agg(DISTINCT mitarbeiter_kurzbz) as lektor, array_agg(DISTINCT (gruppe,verband,semester,studiengang_kz,gruppen_kuerzel)) as gruppe, ort_kurzbz, 'FFFFFF' as farbe diff --git a/public/js/apps/Cis/Stundenplan.js b/public/js/apps/Cis/Stundenplan.js index 13315abb6..a38208275 100755 --- a/public/js/apps/Cis/Stundenplan.js +++ b/public/js/apps/Cis/Stundenplan.js @@ -76,8 +76,8 @@ const app = Vue.createApp({

Stundenplan


-
- {{event.orig.title}} +
+ {{event.orig.topic}} {{lektor.kurzbz}} {{event.orig.ort_kurzbz}}
diff --git a/public/js/components/Cis/Mylv/RoomInformation.js b/public/js/components/Cis/Mylv/RoomInformation.js index 1c5ab31e0..236b84efd 100644 --- a/public/js/components/Cis/Mylv/RoomInformation.js +++ b/public/js/components/Cis/Mylv/RoomInformation.js @@ -87,7 +87,7 @@ export default{
-
+
{{event.orig.topic}}