Merge branch 'feature-15391/Positive_Zeitsperre'

This commit is contained in:
Harald Bamberger
2022-04-19 13:46:38 +02:00
35 changed files with 3330 additions and 632 deletions
@@ -13,6 +13,20 @@ class Studiensemester_model extends DB_Model
$this->hasSequence = false;
}
/**
* Get actual Studiensemester.
*
* @return array
*/
public function getAkt()
{
return $this->loadWhere(array(
'start <= ' => 'NOW()',
'ende >= ' => 'NOW()'
)
);
}
// Get next study semester
public function getNext()
{
@@ -167,15 +181,13 @@ class Studiensemester_model extends DB_Model
if (date_format(date_create($from), 'Y-m-d') > (date_format(date_create($to), 'Y-m-d')))
return success(array());
$query = "SELECT *
FROM public.tbl_studiensemester
WHERE
(ende > ?::date AND start < ?::date)
OR start = ?::date
OR ende = ?::date
ORDER BY start DESC";
$query = "
SELECT *
FROM public.tbl_studiensemester
WHERE ( ?::date < ende AND ?::date > start )
ORDER BY start DESC";
return $this->execQuery($query, array($from, $to, $from, $to));
return $this->execQuery($query, array($from, $to));
}
/**
@@ -61,4 +61,98 @@ class Stundenplandev_model extends DB_Model
return $this->execQuery($qry, $parametersArray);
}
/**
* Get Stundenplan data.
*
* @param null $lehrveranstaltung_id
* @param null $studiensemester_kurzbz
* @param null $lehreinheit_id
* @param null $mitarbeiter_uid
* @param null $student_uid
* @param false $nurBevorstehende If true, only future data is retrieved.
* @return array|false|stdClass|null
*/
public function getStundenplanData($lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null, $nurBevorstehende = false)
{
$params = array();
$qry = "SELECT
stpl.datum, min(stpl.stunde) as stundevon, max(stpl.stunde) as stundebis,
stpl.lehreinheit_id, lehrfach.bezeichnung as lehrfach_bezeichnung,
array_agg(
CASE WHEN gruppe_kurzbz is not null THEN gruppe_kurzbz
ELSE (SELECT UPPER(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=stpl.studiengang_kz) || COALESCE(stpl.semester,'0') || COALESCE(stpl.verband,'') || COALESCE(stpl.gruppe,'')
END) as gruppen, array_agg(mitarbeiter_uid) as lektoren,
array_agg(ort_kurzbz) as orte,
array_agg(titel) as titel
FROM
lehre.tbl_stundenplandev as stpl
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id)
WHERE ";
if ($lehrveranstaltung_id != '')
{
$qry.="
lehreinheit_id IN (
SELECT lehreinheit_id FROM lehre.tbl_lehreinheit
WHERE lehrveranstaltung_id = ?
AND studiensemester_kurzbz = ?
)";
$params[]= $lehrveranstaltung_id;
$params[]= $studiensemester_kurzbz;
}
elseif ($lehreinheit_id!='')
{
$qry.=" lehreinheit_id = ?";
$params[]= $lehreinheit_id;
}
elseif ($mitarbeiter_uid != '')
{
$qry.= "
mitarbeiter_uid = ?
AND lehreinheit_id IN (
SELECT lehreinheit_id
FROM lehre.tbl_lehreinheitmitarbeiter
JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
WHERE mitarbeiter_uid = ?
AND studiensemester_kurzbz IN ( ? )
)";
$params[] = $mitarbeiter_uid;
$params[] = $mitarbeiter_uid;
$params[] = $studiensemester_kurzbz;
}
elseif ($student_uid != '')
{
$qry.="
lehreinheit_id IN (
SELECT lehreinheit_id
FROM campus.vw_student_lehrveranstaltung
WHERE uid = ?
AND studiensemester_kurzbz = ?
)";
$params[] = $student_uid;
$params[] = $studiensemester_kurzbz;
}
else
return false;
if($nurBevorstehende)
{
$qry.= " AND stpl.datum >= NOW()::date ";
}
$qry.= "
GROUP BY stpl.datum, stpl.unr, stpl.lehreinheit_id, lehrfach.bezeichnung
ORDER BY stpl.datum, min(stpl.stunde), stpl.unr, stpl.lehreinheit_id
";
return $this->execQuery($qry, $params);
}
}
@@ -12,6 +12,47 @@ class Zeitsperre_model extends DB_Model
$this->pk = 'zeitsperre_id';
}
/**
* Save or update Zeitsperre.
*
* @param $zeitsperretyp_kurzbz
* @param $mitarbeiter_uid
* @param $vonDatum
* @param $bisDatum
* @param null $vonStunde
* @param null $bisStunde
* @param null $bezeichnung
* @param null $vertretung_uid
* @param null $erreichbarkeit_kurzbz
* @param null $freigabeamum
* @param null $freigabevon
* @return array
*/
public function save($zeitsperretyp_kurzbz, $mitarbeiter_uid, $vonDatum, $bisDatum,
$vonStunde = null, $bisStunde = null, $bezeichnung = null, $vertretung_uid = null,
$erreichbarkeit_kurzbz = null, $freigabeamum = null, $freigabevon = null)
{
return $this->insert(array(
'zeitsperretyp_kurzbz' => $zeitsperretyp_kurzbz,
'mitarbeiter_uid' => $mitarbeiter_uid,
'vondatum' => $vonDatum,
'bisdatum' => $bisDatum,
'vonstunde' => $vonStunde,
'bisstunde' => $bisStunde,
'bezeichnung' => $bezeichnung,
'vertretung_uid' => $vertretung_uid,
'insertvon' => getAuthUID(),
'insertamum' => (new DateTime())->format('Y-m-d H:i:s'),
'erreichbarkeit_kurzbz' => $erreichbarkeit_kurzbz,
'freigabeamum' => $freigabeamum,
'freigabevon' => $freigabevon
));
}
/**
* Delete Zeitsperre.
* @return array|stdClass|null
*/
public function deleteEntriesForCurrentDay()
{
$today = date('Y-m-d');
@@ -0,0 +1,14 @@
<?php
class Zeitwunsch_gueltigkeit_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'campus.tbl_zeitwunsch_gueltigkeit';
$this->pk = 'zeitwunsch_gueltigkeit_id';
}
}