From 1de658ace6d3565cfbc99dc25cb6eccc3ca26628 Mon Sep 17 00:00:00 2001 From: SimonGschnell Date: Wed, 11 Sep 2024 09:32:28 +0200 Subject: [PATCH] fixes the query for the reservierungen in the stundenplan and in the raum informations --- .../api/frontend/v1/Stundenplan.php | 8 ++--- .../models/ressource/Reservierung_model.php | 30 +++++++++++-------- public/js/apps/Cis/Stundenplan.js | 1 - 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/application/controllers/api/frontend/v1/Stundenplan.php b/application/controllers/api/frontend/v1/Stundenplan.php index 61dc5233f..894fd6870 100644 --- a/application/controllers/api/frontend/v1/Stundenplan.php +++ b/application/controllers/api/frontend/v1/Stundenplan.php @@ -149,11 +149,9 @@ class Stundenplan extends FHCAPI_Controller $stunden = $this->getDataOrTerminateWithError($stunden); // querying the reservierungen - if(isset($ort_kurzbz)){ - $result = $this->ReservierungModel->getReservierungen($start_date, $end_date, $ort_kurzbz); - }else{ - $result = $this->ReservierungModel->getReservierungen($start_date, $end_date); - } + + $result = $this->ReservierungModel->getReservierungen($start_date, $end_date, $ort_kurzbz); + $result = $this->getDataOrTerminateWithError($result); $this->terminateWithSuccess($result); diff --git a/application/models/ressource/Reservierung_model.php b/application/models/ressource/Reservierung_model.php index 9a5bc6af0..727acb219 100755 --- a/application/models/ressource/Reservierung_model.php +++ b/application/models/ressource/Reservierung_model.php @@ -21,30 +21,34 @@ class Reservierung_model extends DB_Model public function getReservierungen($start_date, $end_date, $ort_kurzbz = null) { - $stundenplan_reservierungen="SELECT r.* , beginn, ende + $stundenplan_reservierungen_query="SELECT r.* , stund.beginn, stund.ende, + CASE + WHEN r.gruppe_kurzbz IS NOT NULL THEN r.gruppe_kurzbz + ELSE CONCAT(UPPER(studg.typ),UPPER(studg.kurzbz),'-',COALESCE(CAST(r.semester AS varchar),'/'),COALESCE(CAST(r.verband AS varchar),'/')) + END as gruppen_kuerzel FROM campus.vw_reservierung r + JOIN public.tbl_studiengang studg ON studg.studiengang_kz=r.studiengang_kz + JOIN lehre.tbl_stunde stund ON stund.stunde = r.stunde LEFT JOIN public.tbl_benutzergruppe bg ON r.gruppe_kurzbz=bg.gruppe_kurzbz AND bg.uid=? LEFT JOIN public.tbl_studiensemester ss1 ON bg.studiensemester_kurzbz=ss1.studiensemester_kurzbz AND ss1.start <= r.datum AND ss1.ende >= r.datum LEFT JOIN public.tbl_studentlehrverband slv ON r.studiengang_kz=slv.studiengang_kz AND slv.student_uid=? AND (slv.semester=r.semester OR r.semester IS NULL) AND (slv.verband=r.verband OR r.verband IS NULL OR r.verband='' OR r.verband='0') AND (slv.gruppe=r.gruppe OR r.gruppe IS NULL OR r.gruppe ='' OR r.gruppe ='0') AND r.gruppe_kurzbz IS NULL LEFT JOIN public.tbl_studiensemester ss2 ON slv.studiensemester_kurzbz = ss2.studiensemester_kurzbz AND ss2.start <=r.datum AND ss2.ende >= r.datum - JOIN lehre.tbl_stunde ON lehre.tbl_stunde.stunde = r.stunde WHERE datum >= ? AND datum <= ? AND (ss1.studiensemester_kurzbz IS NOT NULL OR ss2.studiensemester_kurzbz IS NOT NULL)"; - $raum_reservierungen = "SELECT res.*, beginn, ende, + $raum_reservierungen_query = "SELECT res.*, beginn, ende, CASE 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 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 <= ?"; - - - $raum_reservierungen= $this->execReadOnlyQuery(" + $subquery = is_null($ort_kurzbz)? $stundenplan_reservierungen_query:$raum_reservierungen_query; + + $query_result= $this->execReadOnlyQuery(" SELECT 'reservierung' as type, beginn, ende, datum, COALESCE(titel, beschreibung) as topic, @@ -55,7 +59,7 @@ class Reservierung_model extends DB_Model FROM ( - ". is_null($ort_kurzbz)? $stundenplan_reservierungen:$raum_reservierungen ." + ". $subquery ." ) AS subquery GROUP BY datum, beginn, ende, ort_kurzbz, titel, beschreibung @@ -63,15 +67,15 @@ class Reservierung_model extends DB_Model ORDER BY datum, beginn ", is_null($ort_kurzbz) ?[getAuthUID(), getAuthUID(),$start_date,$end_date]: [$ort_kurzbz, $start_date, $end_date]); - if(isError($raum_reservierungen)){ - show_error(getError($raum_reservierungen)); + if(isError($query_result)){ + show_error(getError($query_result)); } - $raum_reservierungen = getData($raum_reservierungen) ?? []; + $query_result = getData($query_result) ?? []; $this->load->model("ressrouce/Mitarbeiter_model","MitarbeiterModel"); - foreach($raum_reservierungen as $reservierung){ + foreach($query_result as $reservierung){ $lektor_obj_array = array(); $gruppe_obj_array = array(); @@ -114,7 +118,7 @@ class Reservierung_model extends DB_Model $reservierung->lektor = $lektor_obj_array; } - return success($raum_reservierungen); + return success($query_result); } /** diff --git a/public/js/apps/Cis/Stundenplan.js b/public/js/apps/Cis/Stundenplan.js index 88ed725c2..13315abb6 100755 --- a/public/js/apps/Cis/Stundenplan.js +++ b/public/js/apps/Cis/Stundenplan.js @@ -34,7 +34,6 @@ const app = Vue.createApp({ }, loadEvents: function(){ - console.log("this are the days with which i am testing", this.weekFirstDay, this.weekLastDay) Promise.allSettled([ this.$fhcApi.factory.stundenplan.getStundenplan(this.weekFirstDay, this.weekLastDay), this.$fhcApi.factory.stundenplan.getStundenplanReservierungen(this.weekFirstDay, this.weekLastDay)