added roomInfo to app routes & remove old views; stundenplan reservierungen for MA working WIP roomInformation/roomContent link from lvinfo event ort_kurzbz;

This commit is contained in:
Johann Hoffmann
2025-02-10 17:05:27 +01:00
parent fc06ffe0e5
commit 4936cfd61c
15 changed files with 187 additions and 122 deletions
+5 -5
View File
@@ -83,13 +83,13 @@ class Cms extends Auth_Controller
*/
public function news($infoscreen = false, $studiengang_kz = null, $semester = null, $mischen = true, $titel = '', $edit = false, $sichtbar = true)
{
// TODO: what are those parameters and what are they used for?
$this->load->view('CisRouterView/CisRouterView.php', ['route' => 'News']);
// $this->load->view('CisVue/Cms/Content', ['infoscreen' => $infoscreen, 'studiengang_kz' => $studiengang_kz, 'semester' => $semester, 'mischen' => $mischen, 'titel' => $titel, 'edit' => $edit, 'sichtbar' => $sichtbar]);
}
public function getRoomInformation($ort_kurzbz){
$this->load->view('CisVue/Cms/RoomInformation',['ort_kurzbz'=>$ort_kurzbz]);
$viewData = array(
'ort_kurzbz' => $ort_kurzbz
);
$this->load->view('CisRouterView/CisRouterView.php', ['viewData' => $viewData, 'route' => 'CmsRoom']);
}
}
@@ -117,7 +117,7 @@ class Stundenplan extends FHCAPI_Controller
* @access public
*
*/
//TODO: getStundenplan fuer Mitarbeiter anpassen
public function getStundenplan(){
$this->load->model('ressource/Mitarbeiter_model','MitarbeiterModel');
@@ -160,27 +160,34 @@ class Stundenplan extends FHCAPI_Controller
$is_mitarbeiter = getData($this->MitarbeiterModel->isMitarbeiter($student_uid));
if($is_mitarbeiter)
{
$this->terminateWithError("Not possible to look at the Student Calendar as a Mitarbeiter");
$stundenplan_data = $this->StundenplanModel->getStundenplanMitarbeiter($start_date, $end_date, $student_uid);
$stundenplan_data = $this->getDataOrTerminateWithError($stundenplan_data) ?? [];
$this->expand_object_information($stundenplan_data);
$this->terminateWithSuccess($stundenplan_data);
} else {
// getting the gruppen_kurzbz of the student in the different studiensemester
$benutzer_gruppen = $this->fetchBenutzerGruppenFromStudiensemester($semester_range);
// getting the student_lehrverbaende of the student in the different studiensemester
$student_lehrverband = $this->fetchStudentlehrverbandFromStudiensemester($semester_range);
$stundenplan_query = $this->StundenplanModel->getStundenplanQuery($start_date, $end_date, $semester_range, $benutzer_gruppen, $student_lehrverband);
if(!$stundenplan_query)
{
$this->terminateWithSuccess([]);
}
$stundenplan_data = $this->StundenplanModel->stundenplanGruppierung($stundenplan_query);
$stundenplan_data = $this->getDataOrTerminateWithError($stundenplan_data) ?? [];
$this->expand_object_information($stundenplan_data);
$this->returnObj['$stundenplan_query'] = $stundenplan_query;
$this->returnObj['$student_lehrverband'] = $student_lehrverband;
$this->returnObj['$benutzer_gruppen'] = $benutzer_gruppen;
$this->terminateWithSuccess($stundenplan_data);
}
// getting the gruppen_kurzbz of the student in the different studiensemester
$benutzer_gruppen = $this->fetchBenutzerGruppenFromStudiensemester($semester_range);
// getting the student_lehrverbaende of the student in the different studiensemester
$student_lehrverband = $this->fetchStudentlehrverbandFromStudiensemester($semester_range);
$stundenplan_query = $this->StundenplanModel->getStundenplanQuery($start_date, $end_date, $semester_range, $benutzer_gruppen, $student_lehrverband);
if(!$stundenplan_query)
{
$this->terminateWithSuccess([]);
}
$stundenplan_data = $this->StundenplanModel->stundenplanGruppierung($stundenplan_query);
$stundenplan_data = $this->getDataOrTerminateWithError($stundenplan_data) ?? [];
$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
@@ -193,19 +200,25 @@ class Stundenplan extends FHCAPI_Controller
$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
$this->load->model('ressource/Mitarbeiter_model','MitarbeiterModel');
// 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) ?? [];
$is_mitarbeiter = getData($this->MitarbeiterModel->isMitarbeiter(getAuthUID()));
if($is_mitarbeiter)
{
$reservierungen = $this->ReservierungModel->getReservierungenMitarbeiter($start_date, $end_date, $ort_kurzbz);
} else {
// 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);
}
public function getLehreinheitStudiensemester($lehreinheit_id){
@@ -71,6 +71,51 @@ class Reservierung_model extends DB_Model
return $query_result;
}
/**
* @param $uid
*
* @return stdClass
*/
public function getReservierungenMitarbeiter($start_date, $end_date, $ort_kurzbz = null)
{
$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 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.uid = ? AND datum >= ? AND datum <= ?";
// $subquery = is_null($ort_kurzbz)? $stundenplan_reservierungen_query:$raum_reservierungen_query;
$subquery = $raum_reservierungen_query;
$query_result= $this->execReadOnlyQuery("
SELECT
'reservierung' as type, beginn, ende, datum,
COALESCE(titel, beschreibung) as topic,
array_agg(DISTINCT mitarbeiter_kurzbz) as lektor,
array_agg(DISTINCT (gruppe,verband,semester,studiengang_kz,gruppen_kuerzel)) as gruppe,
ort_kurzbz, 'FFFFFF' as farbe
FROM
(
". $subquery ."
) AS subquery
GROUP BY datum, beginn, ende, ort_kurzbz, titel, beschreibung
ORDER BY datum, beginn
", [getAuthUID(), $start_date, $end_date]);
return $query_result;
}
/**
* @param $uid
*
@@ -232,7 +232,7 @@ class Stundenplan_model extends DB_Model
AND sp.datum <= ? AND sp.lehrveranstaltung_id = ?
) sp
JOIN lehre.tbl_stunde ON lehre.tbl_stunde.stunde = sp.stunde
) as subquery
GROUP BY unr, datum, beginn, ende, ort_kurzbz, titel, lehrform, lehrfach, lehrfach_bez, organisationseinheit, farbe, lehrveranstaltung_id
@@ -240,6 +240,62 @@ class Stundenplan_model extends DB_Model
ORDER BY datum, beginn
", [$start_date, $end_date, $lv_id]);
}
/**
* queries Stundenplan and filters by assigned ma_kurzbz, very similar to get by LVA
*
* @return void
*/
public function getStundenplanMitarbeiter($start_date, $end_date, $ma_uid) {
return $this->execReadOnlyQuery("
SELECT
'lehreinheit' as type, beginn, ende, datum,
CONCAT(lehrfach,'-',lehrform) as topic,
array_agg(DISTINCT lektor) as lektor,
array_agg(DISTINCT (gruppe,verband,semester,studiengang_kz,gruppen_kuerzel)) as gruppe,
string_agg(DISTINCT ort_kurzbz, '/') as ort_kurzbz,
array_agg(DISTINCT lehreinheit_id) as lehreinheit_id,
titel, lehrfach, lehrform, lehrfach_bez, organisationseinheit, farbe, lehrveranstaltung_id
FROM
(
SELECT unr,datum,beginn, ende,
CASE
WHEN sp.mitarbeiter_kurzbz IS NOT NULL THEN sp.mitarbeiter_kurzbz
ELSE sp.lektor
END as lektor,
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 gruppen_kuerzel,
(SELECT bezeichnung
FROM public.tbl_organisationseinheit
WHERE oe_kurzbz IN(
SELECT oe_kurzbz
FROM lehre.tbl_lehrveranstaltung
WHERE lehrveranstaltung_id = sp.lehrveranstaltung_id
)) as organisationseinheit,
sp.ort_kurzbz, sp.studiengang_kz, sp.titel,sp.lehreinheit_id,sp.lehrfach_id,sp.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 (
SELECT sp.*
FROM lehre.vw_stundenplan sp
WHERE
sp.datum >= ?
AND sp.datum <= ?
) sp
JOIN lehre.tbl_stunde ON lehre.tbl_stunde.stunde = sp.stunde
JOIN public.tbl_mitarbeiter ON public.tbl_mitarbeiter.kurzbz = sp.mitarbeiter_kurzbz
WHERE mitarbeiter_uid = ?
) as subquery
GROUP BY unr, datum, beginn, ende, ort_kurzbz, titel, lehrform, lehrfach, lehrfach_bez, organisationseinheit, farbe, lehrveranstaltung_id
ORDER BY datum, beginn", [$start_date, $end_date, $ma_uid]);
}
/**
* NO STANDALONE FUNCTION - Generates a SQL query string to fetch 'stundenplan' events for a specific student within the current semester.
-32
View File
@@ -1,32 +0,0 @@
<?php
$includesArray = array(
'customJSModules' => ['public/js/apps/Cis/Cms.js'],
'primevue3'=>true,
'customCSSs' => [
'public/css/Cis4/Cms.css',
#'skin/style.css.php'
]
);
// adds the tabulator5 dependency for all templates to replace the tablesorter
$includesArray['tabulator5'] = true;
if(defined('CIS4')){
$this->load->view('templates/CISVUE-Header', $includesArray);
}else{
$this->load->view('templates/FHC-Header', $includesArray);
}
?>
<div ref="cmsContainer" id="cms">
<?php echo (isset($content_id) ? '<router-view ref="cms" :content_id="'.$content_id.'" :version="'.$version.'" :sprache="'.$sprache.'" :sichtbar="'.$sichtbar.'" />' : '<router-view ref="cms" />'); ?>
</div>
<?php
if (defined('CIS4')) {
$this->load->view('templates/CISVUE-Footer', $includesArray);
} else {
$this->load->view('templates/FHC-Footer', $includesArray);
}
?>
@@ -1,20 +0,0 @@
<?php
$includesArray = array(
'title' => 'RoomInformation',
'customJSModules' => ['public/js/apps/Cis/RoomInformation.js'],
'customCSSs' => ['public/css/components/calendar.css']
);
$this->load->view('templates/CISVUE-Header', $includesArray);
?>
<div >
<h2>Room Information: <?php echo $ort_kurzbz ?></h2>
<hr>
<div id="content">
<room-information ort_kurzbz="<?php echo $ort_kurzbz ?>"></room-information>
</div>
</div>
<?php $this->load->view('templates/CISVUE-Footer', $includesArray); ?>
@@ -34,4 +34,4 @@ $this->load->view('templates/FHC-Header', $includesArray);
></cis-menu>
</header>
<main id="cis-main" class="flex-grow-1 p-4">
<main id="cis-main" class="flex-grow-1 p-4 pt-2">