mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-21 08:52:21 +00:00
adds a sql query for the grouping algorithm
This commit is contained in:
@@ -90,16 +90,22 @@ class Stundenplan extends FHCAPI_Controller
|
||||
|
||||
$stunden = getData($stunden);
|
||||
|
||||
$result = $this->StundenplanModel->getRoomDataOnDay($ort_kurzbz,$start_date,$end_date);
|
||||
|
||||
if(isError($result)){
|
||||
$result = $this->StundenplanModel->groupedRoomPlanning($ort_kurzbz,$start_date,$end_date);
|
||||
//$this->loglib->logErrorDB(print_r($result,TRUE),"this is the result of the grouped query");
|
||||
|
||||
if(isError($result)){
|
||||
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
|
||||
$result = hasData($result) ? getData($result) : [];
|
||||
$this->loglib->logInfoDB(print_r(count($result),true),"this is the count of the result");
|
||||
|
||||
|
||||
|
||||
foreach($result as $entry){
|
||||
if(COUNT($entry->lektor)>1){
|
||||
// gruppierung hat stattgefunden und das array muss in einem String konvertiert werden
|
||||
}
|
||||
}
|
||||
/*
|
||||
$final_events = array();
|
||||
$grouped = array();
|
||||
$associative_day_events = $this->filterEventsIntoAssociativeDateArray($result, $start_date, $end_date);
|
||||
@@ -196,9 +202,9 @@ class Stundenplan extends FHCAPI_Controller
|
||||
$final_events[] = $stunden_events[$event_key];
|
||||
}
|
||||
}
|
||||
}
|
||||
} */
|
||||
|
||||
$this->terminateWithSuccess($final_events);
|
||||
$this->terminateWithSuccess($result);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ class Stundenplan_model extends DB_Model
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function getRoomDataOnDay($ort_kurzbz,$start_date,$end_date){
|
||||
public function getRoomDataOnInterval($ort_kurzbz,$start_date,$end_date){
|
||||
|
||||
|
||||
|
||||
@@ -41,6 +41,98 @@ class Stundenplan_model extends DB_Model
|
||||
return $raum_stundenplan;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $ort_kurzbz The room to query the planning for
|
||||
* @param string $start_date The start date of the query interval
|
||||
* @param string $end_date The end date of the query interval
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function groupedRoomPlanning($ort_kurzbz,$start_date,$end_date){
|
||||
|
||||
|
||||
$gruppierteRaumVerplannung= $this->execReadOnlyQuery("
|
||||
SELECT
|
||||
|
||||
'reservierung' as type,
|
||||
NULL as unr,datum, stunde,
|
||||
titel AS topic,
|
||||
beschreibung as beschreibung,
|
||||
string_agg(DISTINCT gruppe, '/') as gruppe,
|
||||
string_agg(DISTINCT lektor, '/') as lektor,
|
||||
res.ort_kurzbz,res.studiengang_kz, res.titel, res.beschreibung,NULL as lehreinheit_id,NULL as lehrfach_id,NULL as anmerkung, NULL as fix,NULL as lehrveranstaltung_id,NULL as stg_kurzbzlang,NULL as stg_bezeichnung,NULL as stg_typ, NULL as fachbereich_kurzbz,NULL as lehrfach,NULL as lehrfach_bez,NULL as farbe,NULL as lehrform, NULL as anmerkung_lehreinheit
|
||||
|
||||
FROM
|
||||
|
||||
(
|
||||
SELECT
|
||||
NULL as unr,datum, stunde,
|
||||
CASE
|
||||
WHEN gruppe_kurzbz IS NOT NULL THEN gruppe_kurzbz
|
||||
ELSE CONCAT(UPPER(studg.typ),UPPER(res.stg_kurzbz),'-',COALESCE(CAST(res.semester AS varchar),'/'),COALESCE(CAST(res.verband AS varchar),'/'))
|
||||
END as gruppe,
|
||||
CASE
|
||||
WHEN mit.kurzbz IS NOT NULL THEN mit.kurzbz
|
||||
ELSE uid
|
||||
END as lektor,
|
||||
res.ort_kurzbz,res.studiengang_kz, res.titel, res.beschreibung,NULL as lehreinheit_id,NULL as lehrfach_id,NULL as anmerkung, NULL as fix,NULL as lehrveranstaltung_id,NULL as stg_kurzbzlang,NULL as stg_bezeichnung,NULL as stg_typ, NULL as fachbereich_kurzbz,NULL as lehrfach,NULL as lehrfach_bez,NULL as farbe,NULL as lehrform, NULL as anmerkung_lehreinheit
|
||||
FROM lehre.vw_reservierung res
|
||||
|
||||
LEFT JOIN public.tbl_mitarbeiter mit ON mit.mitarbeiter_uid=uid
|
||||
JOIN public.tbl_studiengang studg ON studg.studiengang_kz=res.studiengang_kz
|
||||
|
||||
WHERE
|
||||
res.ort_kurzbz = ?
|
||||
AND res.datum >= ?
|
||||
AND res.datum <= ?
|
||||
) as res
|
||||
|
||||
GROUP BY res.ort_kurzbz,res.studiengang_kz, res.datum, res.stunde, res.titel, res.beschreibung
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
|
||||
'stundenplan' as type,
|
||||
unr,datum, stunde,
|
||||
CONCAT(lehrfach,'-',lehrform) as topic,
|
||||
'' as beschreibung,
|
||||
string_agg(DISTINCT gruppe, '/') as gruppe,
|
||||
string_agg(DISTINCT lektor, '/') as lektor,
|
||||
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
|
||||
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
unr,datum, stunde,
|
||||
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,
|
||||
CASE
|
||||
WHEN sp.mitarbeiter_kurzbz IS NOT NULL THEN sp.mitarbeiter_kurzbz
|
||||
ELSE lektor
|
||||
END as lektor,
|
||||
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
|
||||
|
||||
FROM lehre.vw_stundenplan sp
|
||||
|
||||
WHERE ort_kurzbz = ?
|
||||
AND datum >= ?
|
||||
AND datum <= ?
|
||||
|
||||
) as sp
|
||||
|
||||
GROUP BY
|
||||
|
||||
ort_kurzbz,unr, datum, stunde, lehreinheit_id, lehrfach_id,studiengang_kz,titel,anmerkung,fix,lehrveranstaltung_id,stg_kurzbzlang,stg_bezeichnung,stg_typ,fachbereich_kurzbz,lehrfach,lehrfach_bez,farbe,lehrform,anmerkung_lehreinheit
|
||||
|
||||
ORDER BY datum, stunde
|
||||
", [$ort_kurzbz, $start_date, $end_date, $ort_kurzbz, $start_date, $end_date]);
|
||||
|
||||
return $gruppierteRaumVerplannung;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $uid
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user