Raumvorschlag bei bereits verplanten Stunden angepasst damit direkte

Gruppen nicht kollidieren
This commit is contained in:
Andreas Österreicher
2019-01-29 18:24:44 +01:00
parent de598c1ded
commit 1ed020dab9
2 changed files with 34 additions and 8 deletions
+33 -7
View File
@@ -1725,17 +1725,32 @@ class wochenplan extends basis_db
$leids='';
for ($i=0;$i<$num_rows_stpl;$i++)
{
$direktinskription = false;
$row=$this->db_fetch_object(null,$i);
if ($row->gruppe_kurzbz!=null)
{
$gruppe[]=$row->gruppe_kurzbz;
// Bei direkten Gruppen wird kein Lehrverband hinzugefuegt da diese nicht kollidieren
$grp_obj = new gruppe();
$grp_obj->load($row->gruppe_kurzbz);
if($grp_obj->direktinskription)
$direktinskription = true;
}
else
{
$gruppe[]='';
if (!isset($lehrverband[$i]))
$lehrverband[$i]= new stdClass();
$lehrverband[$i]->stg_kz=$row->studiengang_kz;
$lehrverband[$i]->sem=$row->semester;
$lehrverband[$i]->ver=$row->verband;
$lehrverband[$i]->grp=$row->gruppe;
}
if (!$direktinskription)
{
if (!isset($lehrverband[$i]))
$lehrverband[$i]= new stdClass();
$lehrverband[$i]->stg_kz=$row->studiengang_kz;
$lehrverband[$i]->sem=$row->semester;
$lehrverband[$i]->ver=$row->verband;
$lehrverband[$i]->grp=$row->gruppe;
}
$leids.="$row->lehreinheit_id,";
$lektor[$i]=$row->uid;
$unr=$row->unr;
@@ -1764,6 +1779,10 @@ class wochenplan extends basis_db
foreach ($lektor as $l)
$lkt.=" OR uid=".$this->db_add_param($l);
$lkt=mb_substr($lkt,3);
// Kollisionsfreie User ausnehmen
$lkt="(($lkt) AND uid not in (".$this->db_implode4SQL(unserialize(KOLLISIONSFREIE_USER))."))";
// Einheiten
$gruppe=array_unique($gruppe);
$gruppen='';
@@ -1801,10 +1820,17 @@ class wochenplan extends basis_db
$raster[$t][$s]->kollision=false;
}
}
if($lvb!='')
$lvbor = "OR ($lvb)";
else
$lvbor = '';
// Stundenplanabfrage bauen (Wo ist Kollision?)
$sql_query="SELECT DISTINCT datum, stunde FROM $stpl_view
WHERE datum>=".$this->db_add_param($this->datum_begin)." AND datum<".$this->db_add_param($this->datum_end)." AND
($lkt $gruppen OR ($lvb) ) AND unr!=".$this->db_add_param($unr);
($lkt $gruppen $lvbor ) AND unr!=".$this->db_add_param($unr);
$sql_query.=" AND NOT EXISTS(SELECT 1 FROM public.tbl_gruppe g WHERE g.gruppe_kurzbz=$stpl_view.gruppe_kurzbz AND direktinskription=true)";
if (!$this->db_query($sql_query))
die($this->db_last_error());