Merge branch 'master' into permissions

This commit is contained in:
Paolo
2018-05-14 13:44:03 +02:00
76 changed files with 3348 additions and 2290 deletions
@@ -15,39 +15,20 @@ class Kostenstelle_model extends DB_Model
/**
* Gets all active Kostenstellen for a geschaeftsjahr, as determined by the geschaeftsjahrvon and bis fields
* Gets Kostenstellen of current Geschaeftsjahr if Geschaeftsjahr not specified
* Only the Kostenstellen for which a permission exists are returned!
* @param $geschaeftsjahr
* @return array|null
* @return array|null Kostenstellen or empty array if no geschaeftsjahr found
*/
public function getActiveKostenstellenForGeschaeftsjahr($geschaeftsjahr = null)
{
$this->load->model('organisation/geschaeftsjahr_model', 'GeschaeftsjahrModel');
if ($geschaeftsjahr === null)
$gj = $this->_getGeschaeftsjahr($geschaeftsjahr);
if (hasData($gj))
{
$lgj = $this->GeschaeftsjahrModel->getCurrGeschaeftsjahr();
$gjstart = $gj->retval[0]->start;
if ($lgj->error)
return error($lgj->retval);
if (count($lgj->retval) < 1)
return success(array());
$geschaeftsjahr = $lgj->retval[0]->geschaeftsjahr_kurzbz;
}
$this->GeschaeftsjahrModel->addSelect('start, ende');
$gj = $this->GeschaeftsjahrModel->load($geschaeftsjahr);
if ($gj->error)
return error($gj->retval);
if (count($gj->retval) < 1)
return success(array());
$gjstart = $gj->retval[0]->start;
$query = 'SELECT kostenstelle_id, kurzbz, wawi.tbl_kostenstelle.bezeichnung, wawi.tbl_kostenstelle.aktiv
$query = 'SELECT kostenstelle_id, kurzbz, wawi.tbl_kostenstelle.bezeichnung, wawi.tbl_kostenstelle.aktiv, wawi.tbl_kostenstelle.oe_kurzbz
FROM wawi.tbl_kostenstelle
LEFT JOIN public.tbl_geschaeftsjahr kgjvon on wawi.tbl_kostenstelle.geschaeftsjahrvon = kgjvon.geschaeftsjahr_kurzbz
LEFT JOIN public.tbl_geschaeftsjahr kgjbis on wawi.tbl_kostenstelle.geschaeftsjahrbis = kgjbis.geschaeftsjahr_kurzbz
@@ -57,6 +38,96 @@ class Kostenstelle_model extends DB_Model
(DATE ? < kgjbis.ende OR wawi.tbl_kostenstelle.geschaeftsjahrbis IS NULL)
ORDER BY wawi.tbl_kostenstelle.bezeichnung';
return $this->execQuery($query, array($gjstart, $gjstart));
return $this->execQuery($query, array($gjstart, $gjstart));
}
else
{
return success(array());
}
}
/**
* Gets all active Kostenstellen for a geschaeftsjahr, as determined by the geschaeftsjahrvon and bis fields, together with their oe,
* hierarchally sorted, gets Kostenstellen of current Geschaeftsjahr if Geschaeftsjahr not specified
* @param null $geschaeftsjahr
* @return array|null
*/
public function getActiveKostenstellenForGeschaeftsjahrWithOe($geschaeftsjahr = null)
{
$this->load->model('organisation/geschaeftsjahr_model', 'GeschaeftsjahrModel');
$gj = $this->_getGeschaeftsjahr($geschaeftsjahr);
if (hasData($gj))
{
$gjstart = $gj->retval[0]->start;
$query = "WITH RECURSIVE tree (oe_kurzbz, bezeichnung, path, level, organisationseinheittyp_kurzbz) AS (
SELECT oe_kurzbz,
bezeichnung || ' (' || organisationseinheittyp_kurzbz || ')' AS bezeichnung,
oe_kurzbz || '|' AS path, 0 AS level,
organisationseinheittyp_kurzbz
FROM tbl_organisationseinheit
WHERE oe_parent_kurzbz IS NULL
AND aktiv = true
UNION ALL
SELECT oe.oe_kurzbz,
oe.bezeichnung || ' (' || oe.organisationseinheittyp_kurzbz || ')' AS bezeichnung,
tree.path || oe.oe_kurzbz || '|' AS path, tree.level + 1 AS level,
oe.organisationseinheittyp_kurzbz
FROM tree JOIN tbl_organisationseinheit oe ON (tree.oe_kurzbz = oe.oe_parent_kurzbz)
)
SELECT oe_kurzbz,
SUBSTRING(REGEXP_REPLACE(path, '[A-z]+\|', '-', 'g') || rec.bezeichnung, 2) AS oe_description,
level,
kst.kostenstelle_id as kostenstelle_id,
kst.kurzbz as kostenstelle_kurzbz,
kst.bezeichnung as kostenstelle_bezeichnung,
kst.aktiv as kostenstelle_aktiv
FROM tree rec
JOIN (
SELECT kostenstelle_id, kurzbz, wawi.tbl_kostenstelle.bezeichnung, wawi.tbl_kostenstelle.aktiv, wawi.tbl_kostenstelle.oe_kurzbz as kstoe
FROM wawi.tbl_kostenstelle
LEFT JOIN public.tbl_geschaeftsjahr kgjvon on wawi.tbl_kostenstelle.geschaeftsjahrvon = kgjvon.geschaeftsjahr_kurzbz
LEFT JOIN public.tbl_geschaeftsjahr kgjbis on wawi.tbl_kostenstelle.geschaeftsjahrbis = kgjbis.geschaeftsjahr_kurzbz
WHERE
(DATE ? >= kgjvon.start OR wawi.tbl_kostenstelle.geschaeftsjahrvon IS NULL)
AND
(DATE ? < kgjbis.ende OR wawi.tbl_kostenstelle.geschaeftsjahrbis IS NULL)
ORDER BY wawi.tbl_kostenstelle.bezeichnung)
kst on kst.kstoe = rec.oe_kurzbz
ORDER BY level";
return $this->execQuery($query, array($gjstart, $gjstart));
}
else
{
return success(array());
}
}
/**
* Gets either given Geschaeftsjahr, current Geschaeftsjahr if not given, or chronologically last Geschaeftsjahr if there is no current
* @param $geschaeftsjahr
* @return mixed
*/
protected function _getGeschaeftsjahr($geschaeftsjahr)
{
if ($geschaeftsjahr === null)
{
$gj = $this->GeschaeftsjahrModel->getCurrGeschaeftsjahr();
if (!hasData($gj))
{
$this->GeschaeftsjahrModel->addSelect('geschaeftsjahr_kurzbz, start, ende');
$this->GeschaeftsjahrModel->addOrder('start', 'DESC');
$gj = $this->GeschaeftsjahrModel->load();
}
}
else
{
$this->GeschaeftsjahrModel->addSelect('geschaeftsjahr_kurzbz, start, ende');
$gj = $this->GeschaeftsjahrModel->load($geschaeftsjahr);
}
return $gj;
}
}
@@ -221,10 +221,34 @@ class Prestudent_model extends DB_Model
{
$this->load->model('system/sprache_model', 'SpracheModel');
$language = $this->SpracheModel->load($lastStatus->retval[0]->sprache);
if ($language->error)
return error($language->retval);
if (count($language->retval) > 0)
$lastStatus->retval[0]->sprachedetails = $language->retval[0];
//get Bewerbungsfrist
$this->load->model('crm/bewerbungstermine_model', 'BewerbungstermineModel');
$this->BewerbungstermineModel->addSelect('ende, nachfrist_ende');
$this->BewerbungstermineModel->addOrder('ende', 'DESC');
$this->BewerbungstermineModel->addLimit(1);
$bewerbungstermin = $this->BewerbungstermineModel->loadWhere(
array(
'studienplan_id' => $lastStatus->retval[0]->studienplan_id,
'studiensemester_kurzbz' => $lastStatus->retval[0]->studiensemester_kurzbz,
'studiengang_kz' => $prestudent->retval[0]->studiengang_kz
)
);
if ($bewerbungstermin->error)
return error($bewerbungstermin->retval);
if (count($bewerbungstermin->retval) > 0)
{
$lastStatus->retval[0]->bewerbungstermin = $bewerbungstermin->retval[0]->ende;
$lastStatus->retval[0]->bewerbungsnachfrist = $bewerbungstermin->retval[0]->nachfrist_ende;
}
$prestudent->retval[0]->prestudentstatus = $lastStatus->retval[0];
}
@@ -107,4 +107,40 @@ class Prestudentstatus_model extends DB_Model
return $this->execQuery($query, $parametersArray);
}
/**
* Gets Studienordnung for last status of Prestudent
* @param $prestudent_id
* @return array
*/
public function getStudienordnungWithZgvText($prestudent_id)
{
$lastStatus = $this->getLastStatus($prestudent_id);
if ($lastStatus->error)
{
return error($lastStatus->retval);
}
if (count($lastStatus->retval) > 0)
{
$lastStatus = $lastStatus->retval[0];
$this->addJoin('lehre.tbl_studienplan', 'studienplan_id');
$this->addJoin('lehre.tbl_studienordnung', 'studienordnung_id');
$this->addJoin('addon.tbl_stgv_zugangsvoraussetzung', 'studienordnung_id');
return $this->loadWhere(
array(
'public.tbl_prestudentstatus.prestudent_id' => $lastStatus->prestudent_id,
'public.tbl_prestudentstatus.status_kurzbz' => $lastStatus->status_kurzbz,
'public.tbl_prestudentstatus.studiensemester_kurzbz' => $lastStatus->studiensemester_kurzbz,
'public.tbl_prestudentstatus.ausbildungssemester' => $lastStatus->ausbildungssemester
)
);
}
else
{
return sucess(array());
}
}
}
@@ -0,0 +1,15 @@
<?php
class RtStudienplan_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = "public.tbl_rt_studienplan";
$this->pk = array("rt_id", "studienplan_id");
$this->hasSequence = false;
}
}
@@ -115,4 +115,52 @@ class Organisationseinheit_model extends DB_Model
return $this->execQuery($query, array($oe_kurzbz));
}
/**
* Liefert die ChildNodes einer Organisationseinheit
* @param $oe_kurzbz
* @param bool $includeinactive - wether to include inactive parent oes
* @return array mit den Childs inkl dem Uebergebenen Element
*/
public function getChilds($oe_kurzbz, $includeinactive = false)
{
$query = "
WITH RECURSIVE oes(oe_kurzbz, oe_parent_kurzbz) as
(
SELECT oe_kurzbz, oe_parent_kurzbz FROM public.tbl_organisationseinheit
WHERE oe_kurzbz=? %s
UNION ALL
SELECT o.oe_kurzbz, o.oe_parent_kurzbz FROM public.tbl_organisationseinheit o, oes
WHERE o.oe_parent_kurzbz=oes.oe_kurzbz
)
SELECT oe_kurzbz
FROM oes
GROUP BY oe_kurzbz;";
return $this->execQuery(sprintf($query, $includeinactive === true ? "" : "AND aktiv = true"), array($oe_kurzbz));
}
/**
* Liefert die OEs die im Tree ueberhalb der uebergebene OE liegen
* @param $oe_kurzbz
* @param bool $includeinactive - wether to include inactive parent oes
* @return array|null
*/
public function getParents($oe_kurzbz, $includeinactive = false)
{
$query=
"WITH RECURSIVE oes(oe_kurzbz, oe_parent_kurzbz) as
(
SELECT oe_kurzbz, oe_parent_kurzbz FROM public.tbl_organisationseinheit
WHERE oe_kurzbz=? %s
UNION ALL
SELECT o.oe_kurzbz, o.oe_parent_kurzbz FROM public.tbl_organisationseinheit o, oes
WHERE o.oe_kurzbz=oes.oe_parent_kurzbz and aktiv = true
)
SELECT oe_kurzbz
FROM oes";
return $this->execQuery(sprintf($query, $includeinactive === true ? "" : "AND aktiv = true"), array($oe_kurzbz));
}
}