mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-16 06:22:18 +00:00
splits the multiple stg into different rows if there are more than one stg in one lv
This commit is contained in:
@@ -94,9 +94,7 @@ class Stundenplan extends FHCAPI_Controller
|
||||
|
||||
$result = $this->StundenplanModel->getRoomDataOnDay($ort_kurzbz,$start_date,$end_date);
|
||||
|
||||
$this->loglib->logErrorDB(print_r($result,true),"this is an entry of a reservierung");
|
||||
|
||||
return;
|
||||
|
||||
|
||||
if(isError($result)){
|
||||
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
||||
@@ -111,6 +109,53 @@ class Stundenplan extends FHCAPI_Controller
|
||||
$this->loglib->logInfoDB($event->datum,"NEW DATE");
|
||||
} */
|
||||
|
||||
//TODO: also implement the following algorithm to block the lectures that are together over different stunden
|
||||
/* $blockcontinue=false;
|
||||
if (isset($blocked[$this->std_plan[$i][$j][$idx]->unr]) && $blocked[$this->std_plan[$i][$j][$idx]->unr]>0)
|
||||
{
|
||||
$blocked[$this->std_plan[$i][$j][$idx]->unr]--;
|
||||
$blockcontinue=true;
|
||||
}
|
||||
|
||||
if (!$blockcontinue)
|
||||
{
|
||||
// Blockungen ueber mehrere Stunden erkennen
|
||||
|
||||
$blockflag=false;
|
||||
for ($blockstunden=1;$blockstunden<=$num_rows_stunde;$blockstunden++)
|
||||
{
|
||||
if (isset($this->std_plan[$i][$j+$blockstunden][$idx]) && isset($this->std_plan[$i][$j+$blockstunden][$idx]->stundenplan_id)
|
||||
&& ($this->std_plan[$i][$j][$idx]->unr == $this->std_plan[$i][$j+$blockstunden][$idx]->unr)
|
||||
&& $this->std_plan[$i][$j][$idx]!='0' && $k<($num_rows_stunde-$blockstunden)
|
||||
&& !($this->std_plan[$i][$j][$idx]->reservierung && $this->std_plan[$i][$j][$idx]->lektor!=$this->std_plan[$i][$j+$blockstunden][$idx]->lektor))
|
||||
{
|
||||
|
||||
if (isset($blocked[$this->std_plan[$i][$j][$idx]->unr]))
|
||||
$blocked[$this->std_plan[$i][$j][$idx]->unr]++;
|
||||
else
|
||||
$blocked[$this->std_plan[$i][$j][$idx]->unr]=1;
|
||||
$row = $this->db_fetch_object($this->stunde, ($k+$blockstunden));
|
||||
$stunden_arr[]=$row->stunde;
|
||||
$end_time=$row->ende;
|
||||
$blockflag=true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!$blockflag)
|
||||
{
|
||||
$row = $this->db_fetch_object($this->stunde, $k);
|
||||
$stunden_arr[]=$row->stunde;
|
||||
$end_time=$row->ende;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} */
|
||||
|
||||
$testStartDate = new DateTime($start_date);
|
||||
$testEndDate = new DateTime($end_date);
|
||||
$count =0;
|
||||
@@ -215,7 +260,7 @@ class Stundenplan extends FHCAPI_Controller
|
||||
//Lehrverband
|
||||
if(!mb_strstr($lehrverband_array[$event_key],$lehrverband_array[$compare_key])){
|
||||
$this->loglib->logErrorDB($stunden_event->datum ."-". $stunden_event->stunde,"entered gruppe - third if");
|
||||
$lehrverband_array[$event_key] .= ' \ ' . $lehrverband_array[$compare_key];
|
||||
$lehrverband_array[$event_key] .= ' / ' . $lehrverband_array[$compare_key];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -21,49 +21,22 @@ class Stundenplan_model extends DB_Model
|
||||
public function getRoomDataOnDay($ort_kurzbz='EDV_A2.06',$start_date,$end_date){
|
||||
|
||||
|
||||
//$this->addSelect(['*',"CONCAT(UPPER(sp.stg_typ),UPPER(sp.stg_kurzbz),'-',COALESCE(CAST(sp.semester AS varchar),'/'),COALESCE(CAST(sp.verband AS varchar),'/')) as stg","lektor","CONCAT(lehrfach,'-',lehrform) as lv_info" ]);
|
||||
$result = $this->execReadOnlyQuery("
|
||||
|
||||
SELECT 'stundenplan_eintrag' as eintrags_type, CONCAT(UPPER(sp.stg_typ),UPPER(sp.stg_kurzbz),'-',COALESCE(CAST(sp.semester AS varchar),'/'),COALESCE(CAST(sp.verband AS varchar),'/')) AS stg, lektor, CONCAT(lehrfach,'-',lehrform) AS lv_info, ort_kurzbz , * FROM lehre.vw_stundenplan sp
|
||||
//TODO alternative query version that unions the reservierungen into the stundenplan with different 'eintrags_type' column
|
||||
/*"
|
||||
-- merging all reservierungs information with the stundenplan information but with different types
|
||||
SELECT 'stundenplan_eintrag' as eintrags_type, ort_kurzbz, studiengang_kz, uid, stunde, datum, titel, semester, verband, gruppe, gruppe_kurzbz, stg_kurzbz, CONCAT(UPPER(sp.stg_typ),UPPER(sp.stg_kurzbz),'-',COALESCE(CAST(sp.semester AS varchar),'/'),COALESCE(CAST(sp.verband AS varchar),'/')) AS stg, CONCAT(lehrfach,'-',lehrform) AS lv_info, * FROM lehre.vw_stundenplan sp
|
||||
WHERE ort_kurzbz = ? AND datum >= ? AND datum <= ?
|
||||
UNION ALL
|
||||
SELECT 'reservierungs_eintrag' as eintrags_type, titel, uid, NULL, ort_kurzbz FROM lehre.vw_reservierung res
|
||||
SELECT 'reservierungs_eintrag' as eintrags_type, ort_kurzbz, studiengang_kz, uid, stunde, datum, titel, semester, verband, gruppe, gruppe_kurzbz, stg_kurzbz, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL FROM lehre.vw_reservierung res
|
||||
WHERE ort_kurzbz = ? AND datum >= ? AND datum <= ?
|
||||
|
||||
", [$ort_kurzbz, $start_date, $end_date,$ort_kurzbz, $start_date, $end_date]);
|
||||
return $result;
|
||||
"*/
|
||||
|
||||
$raum_stundenplan= $this->execReadOnlyQuery("
|
||||
SELECT 'stundenplan_eintrag' as eintrags_type, ort_kurzbz, studiengang_kz, uid, stunde, datum, titel, semester, verband, gruppe, gruppe_kurzbz, stg_kurzbz, CONCAT(UPPER(sp.stg_typ),UPPER(sp.stg_kurzbz),'-',COALESCE(CAST(sp.semester AS varchar),'/'),COALESCE(CAST(sp.verband AS varchar),'/')) AS stg, CONCAT(lehrfach,'-',lehrform) AS lv_info, * FROM lehre.vw_stundenplan sp
|
||||
WHERE ort_kurzbz = ? AND datum >= ? AND datum <= ?
|
||||
", [$ort_kurzbz, $start_date, $end_date]);
|
||||
|
||||
/*
|
||||
"SELECT 'stundenplan_eintrag' as eintrags_type ort_kurzbz studiengang_kz uid stunde datum titel NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL"
|
||||
"SELECT 'reservierungs_eintrag' as eintrags_type, ort_kurzbz studiengang_kz uid stunde datum titel NULL NULL NULL NULL NULL"
|
||||
|
||||
*/
|
||||
//to add reservierungen to the query, we have to join the table vw_reservierung to the vw_stundenplan and use the datum/stunde/ort_kurzbz keys
|
||||
|
||||
|
||||
/* $this->addSelect(["lehre.tbl_stundenplan.*","CONCAT(UPPER(sg.typ),UPPER(sg.kurzbz),'-',lehre.tbl_stundenplan.semester,lehre.tbl_stundenplan.verband) as simml"]);
|
||||
$this->addJoin("public.tbl_lehrverband as lv","lv.studiengang_kz=lehre.tbl_stundenplan.studiengang_kz AND lv.gruppe=lehre.tbl_stundenplan.gruppe AND lv.verband=lehre.tbl_stundenplan.verband AND lv.semester=lehre.tbl_stundenplan.semester","LEFT");
|
||||
$this->addJoin("public.tbl_studiengang as sg","sg.studiengang_kz=lehre.tbl_stundenplan.studiengang_kz","LEFT");
|
||||
$res = $this->loadWhere(['ort_kurzbz'=>$ort_kurzbz,'datum'=>$date]);
|
||||
$res = hasData($res) ? getData($res): null;
|
||||
return $res; */
|
||||
$this->db->where('ort_kurzbz',$ort_kurzbz,true);
|
||||
$this->db->where('datum >=',$start_date,true);
|
||||
$this->db->where('datum <=',$end_date,true);
|
||||
|
||||
$query = $this->db->get_compiled_select('lehre.vw_stundenplan sp');
|
||||
|
||||
$raum_stundenplan= $this->execQuery($query, [$ort_kurzbz, $start_date, $end_date]);
|
||||
|
||||
// reseting the query and query reservierungen information
|
||||
$this->resetQuery();
|
||||
$this->db->where('ort_kurzbz',$ort_kurzbz,true);
|
||||
$this->db->where('datum >=',$start_date,true);
|
||||
$this->db->where('datum <=',$end_date,true);
|
||||
$query = $this->db->get_compiled_select('lehre.vw_reservierung res');
|
||||
return $this->execQuery($query, [$ort_kurzbz, $start_date, $end_date]);
|
||||
|
||||
return $raum_stundenplan;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -64,7 +64,7 @@ const app = Vue.createApp({
|
||||
<fhc-calendar v-slot="{event}" :initialDate="currentDate" :events="events" initial-mode="week" show-weeks>
|
||||
<div class="d-flex flex-column align-items-center justify-content-evenly h-100">
|
||||
<span>{{event.orig.lv_info}}</span>
|
||||
<span>{{event.orig.stg}}</span>
|
||||
<span v-for="(item, index) in event.orig.stg.split('/')" :key="index">{{item}}</span>
|
||||
<span>{{event.orig.lektor}}</span>
|
||||
</div>
|
||||
</fhc-calendar>
|
||||
|
||||
Reference in New Issue
Block a user