also adds the stundenplan information as object in the response of the endpoint

This commit is contained in:
SimonGschnell
2024-09-03 12:07:13 +02:00
parent f19c1b4eaf
commit 87f82b7f5d
4 changed files with 24 additions and 27 deletions
@@ -47,32 +47,36 @@ class Stundenplan extends Auth_Controller
foreach($res as $item){
$lektor_obj_array = array();
$gruppe_obj_array = array();
// load lektor object
foreach($item->lektor as $lv_lektor){
$this->MitarbeiterModel->addLimit(1);
$lektor_obj = $this->MitarbeiterModel->loadWhere(["kurzbz"=>$lv_lektor]);
if (isError($lektor_obj)) {
$this->outputJsonError(getError($lektor_obj));
}
$lektor_obj = getData($lektor_obj);
$lektor_obj = current(getData($lektor_obj));
$lektor_obj_array[] = $lektor_obj;
}
// load gruppe object
foreach ($item->gruppe as $lv_gruppe) {
$lv_gruppe = str_replace("(","",$lv_gruppe);
$lv_gruppe = str_replace(")", "", $lv_gruppe);
$lv_gruppe = strtr($lv_gruppe,['('=>'',')'=>'','"'=>'']);
$lv_gruppe_array = explode(",",$lv_gruppe);
$gruppe = str_replace("\"","",$lv_gruppe_array[0]);
$verband = $lv_gruppe_array[1];
$semester = $lv_gruppe_array[2];
$studiengang_kz = $lv_gruppe_array[3];
list($gruppe,$verband, $semester,$studiengang_kz) = $lv_gruppe_array;
$this->LehrverbandModel->addLimit(1);
$lehrverband_obj = $this->LehrverbandModel->loadWhere(["gruppe" => $gruppe, "verband" => $verband, "semester" => $semester, "studiengang_kz" => $studiengang_kz]);
if (isError($lehrverband_obj)) {
$this->outputJsonError(getError($lehrverband_obj));
}
$lehrverband_obj = getData($lehrverband_obj);
$lehrverband_obj = current(getData($lehrverband_obj));
$gruppe_obj_array[] = $lehrverband_obj;
}
//replace the array of lektor strings with the objects of lektor information
// studiengangs object
$this->load->model('organisation/Studiengang_model','StudiengangModel');
$this->StudiengangModel->addLimit(1);
$studiengang_object = $this->StudiengangModel->load($item->studiengang_kz);
$studiengang_object = current(getData($studiengang_object));
$item->studiengang = $studiengang_object;
$item->lektor = $lektor_obj_array;
//replace the array of gruppen string with the lehrverband object information
$item->gruppe = $gruppe_obj_array;
}
@@ -142,23 +142,16 @@ class Stundenplan_model extends DB_Model
*/
public function stundenplanGruppierung($stundenplanViewQuery)
{
/* CASE
WHEN gruppe_kurzbz IS NOT NULL THEN gruppe_kurzbz
ELSE CONCAT(UPPER(sp.stg_typ),UPPER(sp.stg_kurzbz),'-',COALESCE(CAST(sp.semester AS varchar),'/'),COALESCE(CAST(sp.verband AS varchar),'/'))
END as gruppe, */
$gruppierteEvents = $this->execReadOnlyQuery("
SELECT
'stundenplan' as type,
unr,datum, stunde,
CONCAT(lehrfach,'-',lehrform) as topic,
'' as beschreibung,
array_agg(DISTINCT gruppen_kurzbz) as gruppen_kurzbz,
array_agg(DISTINCT (gruppe,verband,semester,studiengang_kz)) as gruppe,
array_agg(DISTINCT gruppe_bezeichnung) as gruppe_bezeichnung,
array_agg(DISTINCT lektor) as lektor,
array_agg(DISTINCT lektor) as lektor,
ort_kurzbz, studiengang_kz, titel, lehrform, lehrfach, semester, verband
ort_kurzbz, studiengang_kz, titel, lehrfach, lehrform, lehrfach_bez
FROM
(
@@ -172,8 +165,8 @@ class Stundenplan_model extends DB_Model
CASE
WHEN gruppe_kurzbz IS NOT NULL THEN gruppe_kurzbz
ELSE CONCAT(UPPER(sp.stg_typ),UPPER(sp.stg_kurzbz),'-',COALESCE(CAST(sp.semester AS varchar),'/'),COALESCE(CAST(sp.verband AS varchar),'/'))
END as gruppe_bezeichnung,
ort_kurzbz, studiengang_kz, titel,'' as beschreibung,lehreinheit_id,lehrfach_id,anmerkung,fix,lehrveranstaltung_id,stg_kurzbzlang,stg_bezeichnung,stg_typ,fachbereich_kurzbz,lehrfach,lehrfach_bez,farbe,lehrform,anmerkung_lehreinheit,gruppe, verband, semester
END as gruppen_kurzbz,
ort_kurzbz, studiengang_kz, titel,lehreinheit_id,lehrfach_id,anmerkung,fix,lehrveranstaltung_id,stg_kurzbzlang,stg_bezeichnung,stg_typ,fachbereich_kurzbz,lehrfach,lehrfach_bez,farbe,lehrform,anmerkung_lehreinheit,gruppe, verband, semester,stg_kurzbz
FROM (".$stundenplanViewQuery.") sp
@@ -181,7 +174,7 @@ class Stundenplan_model extends DB_Model
GROUP BY
unr, datum, stunde, lehrfach, lehrform, ort_kurzbz, titel, studiengang_kz, lehrform, lehrfach, semester, verband
unr, datum, stunde, ort_kurzbz, titel, studiengang_kz, lehrform, lehrfach, lehrfach_bez
ORDER BY datum, stunde
");
+1 -2
View File
@@ -54,10 +54,9 @@ const app = Vue.createApp({
<hr>
<fhc-calendar v-slot="{event, day}" :events="events" initial-mode="week" show-weeks>
<div class="d-flex flex-column align-items-center justify-content-evenly h-100">
<!--<span>{{JSON.stringify(event.orig,null,2)}}</span>-->
<span>{{event.orig.title}}</span>
<span v-for="lektor in event.orig.lektor">{{lektor.kurzbz}}</span>
<span>{{event.orig.ort_kurzbz}}</span>
<span>{{event.orig.lektor}}</span>
</div>
</fhc-calendar>
`
@@ -55,7 +55,8 @@ export default {
template: /*html*/ `
<bs-modal ref="modalContainer" v-bind="$props" body-class="" dialog-class="modal-lg" class="bootstrap-alert" backdrop="false" >
<template v-slot:title>
{{data.title + ' - ' + data.lehrfach_bez + ' [' + data.ort_kurzbz+']' }}
<template v-if="data.titel">{{ data.titel + ' - ' + data.lehrfach_bez + ' [' + data.ort_kurzbz+']'}}</template>
<template v-else>{{ data.lehrfach_bez + ' [' + data.ort_kurzbz+']'}}</template>
</template>
<template v-slot:default>
<div class="row">
@@ -72,7 +73,7 @@ export default {
</div>
<div class="row">
<div class="offset-3 col-4"><span>Lektor:</span></div>
<div class=" col"><span>{{data.lektor}}</span></div>
<div class=" col"><span>{{data.lektor.map(lektor=>lektor.kurzbz).join("/")}}</span></div>
</div>
<div class="row">
<div class="offset-3 col-4"><span>Zeitraum:</span></div>