diff --git a/application/controllers/api/frontend/v1/Stundenplan.php b/application/controllers/api/frontend/v1/Stundenplan.php index 019a8ab4a..d746990be 100644 --- a/application/controllers/api/frontend/v1/Stundenplan.php +++ b/application/controllers/api/frontend/v1/Stundenplan.php @@ -143,8 +143,8 @@ class Stundenplan extends FHCAPI_Controller $result = $this->getDataOrTerminateWithError($result); $this->terminateWithSuccess($result); - // loop over the days - $day_events = $this->filterEventsIntoAssociativeDateArray($result, $start_date, $end_date); + // imperative approach + /* $day_events = $this->filterEventsIntoAssociativeDateArray($result, $start_date, $end_date); $final_reservierungen = array(); foreach($day_events as $date => $day_eventArray){ @@ -203,7 +203,7 @@ class Stundenplan extends FHCAPI_Controller } } - $this->terminateWithSuccess($final_reservierungen); + $this->terminateWithSuccess($final_reservierungen); */ } private function filterEventsIntoAssociativeDateArray($events, $start_date, $end_date){ diff --git a/application/models/ressource/Reservierung_model.php b/application/models/ressource/Reservierung_model.php index c06fce206..b4fedba5e 100755 --- a/application/models/ressource/Reservierung_model.php +++ b/application/models/ressource/Reservierung_model.php @@ -22,21 +22,26 @@ class Reservierung_model extends DB_Model { $raum_reservierungen= $this->execReadOnlyQuery(" - SELECT ort_kurzbz, studiengang_kz, array_agg(uid) as lektor, stunde, datum, titel, beschreibung, gruppe, gruppe_kurzbz, stg_kurzbz, stg + SELECT + + array_agg(DISTINCT uid) as lektor, + array_agg(DISTINCT (gruppe,verband,semester,studiengang_kz,gruppen_kuerzel)) as gruppe, + COALESCE(titel, beschreibung) as topic, + ort_kurzbz, studiengang_kz, reservierungen.stunde, datum, beginn, ende + FROM ( - SELECT res.* , + SELECT res.*, beginn, ende, CASE - WHEN res.verband IS NOT NULL OR res.semester IS NOT NULL THEN - CONCAT(UPPER(studg.typ),UPPER(studg.kurzbz),'-',res.verband,res.semester) - ELSE - CONCAT(UPPER(studg.typ),UPPER(studg.kurzbz)) - END AS stg + 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 <= ? ) AS reservierungen - GROUP BY ort_kurzbz, studiengang_kz, stunde, datum, titel, beschreibung, gruppe, stg, gruppe_kurzbz, stg_kurzbz + GROUP BY ort_kurzbz, studiengang_kz, reservierungen.stunde, datum, titel, beschreibung, beginn, ende ", [$ort_kurzbz, $start_date, $end_date]); if(isError($raum_reservierungen)){ @@ -46,19 +51,48 @@ class Reservierung_model extends DB_Model $raum_reservierungen = getData($raum_reservierungen) ?? []; $this->load->model("ressrouce/Mitarbeiter_model","MitarbeiterModel"); + foreach($raum_reservierungen as $reservierung){ - $lektoren_array = array(); - foreach($reservierung->lektor as $lektor){ + + $lektor_obj_array = array(); + $gruppe_obj_array = array(); + + // load lektor object + foreach ($reservierung->lektor as $lektor) { $this->MitarbeiterModel->addLimit(1); - $lektor_obj= $this->MitarbeiterModel->load($lektor); - if(isError($lektor_obj)){ - show_error(getError($lektor_obj)); + $lektor_object = $this->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_obj = current(getData($lektor_obj)); - $lektoren_array[] = $lektor_obj; + $lektor_object = current(getData($lektor_object)); + // only provide needed information of the mitarbeiter object + $lektor_obj_array[] = $lektor_object; } - $reservierung->lektor = $lektoren_array; + // 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; } return success($raum_reservierungen); diff --git a/application/models/ressource/Stundenplan_model.php b/application/models/ressource/Stundenplan_model.php index 6b1ed4ef0..482e1a30a 100755 --- a/application/models/ressource/Stundenplan_model.php +++ b/application/models/ressource/Stundenplan_model.php @@ -145,12 +145,11 @@ class Stundenplan_model extends DB_Model $gruppierteEvents = $this->execReadOnlyQuery(" SELECT - unr,datum, sp.stunde, CONCAT(lehrfach,'-',lehrform) as topic, array_agg(DISTINCT (gruppe,verband,semester,studiengang_kz,gruppen_kuerzel)) as gruppe, array_agg(DISTINCT lektor) as lektor, - ort_kurzbz, titel, lehrfach, lehrform, lehrfach_bez, beginn, ende + unr,datum, sp.stunde, ort_kurzbz, titel, lehrfach, lehrform, lehrfach_bez, beginn, ende FROM ( diff --git a/public/js/components/Cis/Mylv/RoomInformation.js b/public/js/components/Cis/Mylv/RoomInformation.js index 877869fa3..4be66938b 100644 --- a/public/js/components/Cis/Mylv/RoomInformation.js +++ b/public/js/components/Cis/Mylv/RoomInformation.js @@ -100,6 +100,9 @@ export default{ el.start = new Date(el.datum + ' ' + this.stunden[el.stunde].beginn); el.end = new Date(el.datum + ' ' + this.stunden[el.stunde].ende); + if(el.titel){ + + } el.title = el.lehrfach; if (el.lehrform) el.title += '-' + el.lehrform; @@ -130,7 +133,7 @@ export default{ {{event.orig.topic}} - {{gruppe_kurzbz}} + {{gruppe.kuerzel}} {{lektor.kurzbz}}