mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
Merge branch 'feature-35411/Studstatus_Query_Performance'
This commit is contained in:
@@ -33,46 +33,14 @@ class Leitung extends FHC_Controller
|
|||||||
|
|
||||||
public function getActiveStgs()
|
public function getActiveStgs()
|
||||||
{
|
{
|
||||||
$studiengaenge = $this->permissionlib->getSTG_isEntitledFor('student/antragfreigabe');
|
$studiengaenge = $this->permissionlib->getSTG_isEntitledFor('student/antragfreigabe') ?: [];
|
||||||
$stgsNeuanlage = $this->permissionlib->getSTG_isEntitledFor('student/studierendenantrag');
|
$studiengaenge = array_merge($studiengaenge, $this->permissionlib->getSTG_isEntitledFor('student/studierendenantrag') ?: []);
|
||||||
|
|
||||||
$stgs = [];
|
$result = $this->StudierendenantragModel->loadStgsWithAntraege($studiengaenge);
|
||||||
|
if (isError($result)) {
|
||||||
if ($studiengaenge) {
|
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
|
||||||
$result = $this->StudierendenantragModel->loadForStudiengaenge($studiengaenge);
|
|
||||||
|
|
||||||
if (isError($result))
|
|
||||||
return $this->outputJson($result);
|
|
||||||
$antraege = getData($result) ?: [];
|
|
||||||
|
|
||||||
foreach ($antraege as $antrag) {
|
|
||||||
if (!isset($stgs[$antrag->studiengang_kz])) {
|
|
||||||
$stgs[$antrag->studiengang_kz] = new stdClass();
|
|
||||||
$stgs[$antrag->studiengang_kz]->bezeichnung = $antrag->bezeichnung;
|
|
||||||
$stgs[$antrag->studiengang_kz]->orgform = $antrag->orgform;
|
|
||||||
$stgs[$antrag->studiengang_kz]->studiengang_kz = $antrag->studiengang_kz;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
$this->outputJson($result);
|
||||||
if ($stgsNeuanlage) {
|
|
||||||
$result = $this->StudierendenantragModel->loadForStudiengaenge($stgsNeuanlage);
|
|
||||||
|
|
||||||
if (isError($result))
|
|
||||||
return $this->outputJson($result);
|
|
||||||
$antraege = getData($result) ?: [];
|
|
||||||
|
|
||||||
foreach ($antraege as $antrag) {
|
|
||||||
if (!isset($stgs[$antrag->studiengang_kz])) {
|
|
||||||
$stgs[$antrag->studiengang_kz] = new stdClass();
|
|
||||||
$stgs[$antrag->studiengang_kz]->bezeichnung = $antrag->bezeichnung;
|
|
||||||
$stgs[$antrag->studiengang_kz]->orgform = $antrag->orgform;
|
|
||||||
$stgs[$antrag->studiengang_kz]->studiengang_kz = $antrag->studiengang_kz;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->outputJsonSuccess($stgs);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getAntraege($studiengang = null, $extra = null)
|
public function getAntraege($studiengang = null, $extra = null)
|
||||||
|
|||||||
@@ -74,7 +74,8 @@ class Studierendenantrag_model extends DB_Model
|
|||||||
return $this->loadWhere($where);
|
return $this->loadWhere($where);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function loadActiveForStudiengaenge($studiengaenge) {
|
public function loadActiveForStudiengaenge($studiengaenge)
|
||||||
|
{
|
||||||
// NOTE(chris): get language before changing things in the global db object because getUserLanguage() might use it and it should not have been tampered with
|
// NOTE(chris): get language before changing things in the global db object because getUserLanguage() might use it and it should not have been tampered with
|
||||||
$sql = "SELECT index FROM public.tbl_sprache WHERE sprache='" . getUserLanguage() . "' LIMIT 1";
|
$sql = "SELECT index FROM public.tbl_sprache WHERE sprache='" . getUserLanguage() . "' LIMIT 1";
|
||||||
|
|
||||||
@@ -94,6 +95,22 @@ class Studierendenantrag_model extends DB_Model
|
|||||||
return $this->loadForStudiengaenge($studiengaenge, null, null, $sql);
|
return $this->loadForStudiengaenge($studiengaenge, null, null, $sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function loadStgsWithAntraege($studiengaenge)
|
||||||
|
{
|
||||||
|
$this->addDistinct();
|
||||||
|
$this->addSelect('UPPER(stg.typ) || UPPER(stg.kurzbz) || \' \' || stg.bezeichnung AS bezeichnung');
|
||||||
|
$this->addSelect('p.studiengang_kz');
|
||||||
|
|
||||||
|
$this->addJoin('public.tbl_prestudent p', 'prestudent_id');
|
||||||
|
$this->addJoin('public.tbl_studiengang stg', 'p.studiengang_kz=stg.studiengang_kz');
|
||||||
|
|
||||||
|
$this->addOrder('UPPER(stg.typ) || UPPER(stg.kurzbz) || \' \' || stg.bezeichnung');
|
||||||
|
|
||||||
|
$this->db->where_in('p.studiengang_kz', $studiengaenge);
|
||||||
|
|
||||||
|
return $this->load();
|
||||||
|
}
|
||||||
|
|
||||||
public function isInStudiengang($studierendenantrag_id, $studiengaenge)
|
public function isInStudiengang($studierendenantrag_id, $studiengaenge)
|
||||||
{
|
{
|
||||||
$this->addJoin('public.tbl_prestudent', 'prestudent_id');
|
$this->addJoin('public.tbl_prestudent', 'prestudent_id');
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ export default {
|
|||||||
FHC_JS_DATA_STORAGE_OBJECT.ci_router +
|
FHC_JS_DATA_STORAGE_OBJECT.ci_router +
|
||||||
'/components/Antrag/Leitung/getActiveStgs'
|
'/components/Antrag/Leitung/getActiveStgs'
|
||||||
).then(result => {
|
).then(result => {
|
||||||
this.stgs = Object.values(result.data.retval).sort((a,b) => a.bezeichnung == b.bezeichnung ? (a.orgform == b.orgform ? 0 : (a.orgform > b.orgform ? 1 : -1)) : (a.bezeichnung > b.bezeichnung ? 1 : -1));
|
this.stgs = result.data.retval;
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -170,9 +170,12 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$result = @$db->db_query("SELECT campus.get_status_studierendenantrag(0)")) {
|
if (!$result = @$db->db_query("SELECT campus.get_status_studierendenantrag(0)"))
|
||||||
|
{
|
||||||
$qry = 'CREATE FUNCTION campus.get_status_studierendenantrag(integer) RETURNS character varying
|
$qry = 'CREATE FUNCTION campus.get_status_studierendenantrag(integer) RETURNS character varying
|
||||||
LANGUAGE plpgsql
|
LANGUAGE plpgsql
|
||||||
|
STABLE
|
||||||
|
RETURNS NULL ON NULL INPUT
|
||||||
AS $_$
|
AS $_$
|
||||||
DECLARE i_studierendenantrag_id ALIAS FOR $1;
|
DECLARE i_studierendenantrag_id ALIAS FOR $1;
|
||||||
DECLARE rec RECORD;
|
DECLARE rec RECORD;
|
||||||
@@ -194,10 +197,25 @@ if (!$result = @$db->db_query("SELECT campus.get_status_studierendenantrag(0)"))
|
|||||||
else
|
else
|
||||||
echo '<br>campus.get_status_studierendenantrag(integer): function created';
|
echo '<br>campus.get_status_studierendenantrag(integer): function created';
|
||||||
}
|
}
|
||||||
|
elseif ($result = @$db->db_query("SELECT 1 FROM pg_proc WHERE proname='get_status_studierendenantrag' AND provolatile='s'"))
|
||||||
|
{
|
||||||
|
if ($db->db_num_rows($result) == 0) {
|
||||||
|
$qry = 'ALTER FUNCTION campus.get_status_studierendenantrag(integer) STABLE;';
|
||||||
|
$qry .= 'ALTER FUNCTION campus.get_status_studierendenantrag(integer) RETURNS NULL ON NULL INPUT;';
|
||||||
|
|
||||||
if (!$result = @$db->db_query("SELECT campus.get_status_id_studierendenantrag(0)")) {
|
if(!$db->db_query($qry))
|
||||||
|
echo '<strong>campus.get_status_studierendenantrag(integer): '.$db->db_last_error().'</strong><br>';
|
||||||
|
else
|
||||||
|
echo '<br>campus.get_status_studierendenantrag(integer): function updated';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$result = @$db->db_query("SELECT campus.get_status_id_studierendenantrag(0)"))
|
||||||
|
{
|
||||||
$qry = 'CREATE FUNCTION campus.get_status_id_studierendenantrag(integer) RETURNS integer
|
$qry = 'CREATE FUNCTION campus.get_status_id_studierendenantrag(integer) RETURNS integer
|
||||||
LANGUAGE plpgsql
|
LANGUAGE plpgsql
|
||||||
|
STABLE
|
||||||
|
RETURNS NULL ON NULL INPUT
|
||||||
AS $_$
|
AS $_$
|
||||||
DECLARE i_studierendenantrag_id ALIAS FOR $1;
|
DECLARE i_studierendenantrag_id ALIAS FOR $1;
|
||||||
DECLARE rec RECORD;
|
DECLARE rec RECORD;
|
||||||
@@ -219,10 +237,24 @@ if (!$result = @$db->db_query("SELECT campus.get_status_id_studierendenantrag(0)
|
|||||||
else
|
else
|
||||||
echo '<br>campus.get_status_id_studierendenantrag(integer): function created';
|
echo '<br>campus.get_status_id_studierendenantrag(integer): function created';
|
||||||
}
|
}
|
||||||
|
elseif ($result = @$db->db_query("SELECT 1 FROM pg_proc WHERE proname='get_status_id_studierendenantrag' AND provolatile='s'"))
|
||||||
|
{
|
||||||
|
if ($db->db_num_rows($result) == 0) {
|
||||||
|
$qry = 'ALTER FUNCTION campus.get_status_id_studierendenantrag(integer) STABLE;';
|
||||||
|
$qry .= 'ALTER FUNCTION campus.get_status_id_studierendenantrag(integer) RETURNS NULL ON NULL INPUT;';
|
||||||
|
|
||||||
if (!$result = @$db->db_query("SELECT public.get_absem_prestudent(0, null)")) {
|
if(!$db->db_query($qry))
|
||||||
|
echo '<strong>campus.get_status_id_studierendenantrag(integer): '.$db->db_last_error().'</strong><br>';
|
||||||
|
else
|
||||||
|
echo '<br>campus.get_status_id_studierendenantrag(integer): function updated';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$result = @$db->db_query("SELECT public.get_absem_prestudent(0, null)"))
|
||||||
|
{
|
||||||
$qry = 'CREATE FUNCTION public.get_absem_prestudent(integer, character varying) RETURNS integer
|
$qry = 'CREATE FUNCTION public.get_absem_prestudent(integer, character varying) RETURNS integer
|
||||||
LANGUAGE plpgsql
|
LANGUAGE plpgsql
|
||||||
|
STABLE
|
||||||
AS $_$
|
AS $_$
|
||||||
DECLARE i_prestudent_id ALIAS FOR $1;
|
DECLARE i_prestudent_id ALIAS FOR $1;
|
||||||
DECLARE cv_studiensemester_kurzbz ALIAS FOR $2;
|
DECLARE cv_studiensemester_kurzbz ALIAS FOR $2;
|
||||||
@@ -253,9 +285,22 @@ if (!$result = @$db->db_query("SELECT public.get_absem_prestudent(0, null)")) {
|
|||||||
else
|
else
|
||||||
echo '<br>public.get_absem_prestudent(integer, character varying): function created';
|
echo '<br>public.get_absem_prestudent(integer, character varying): function created';
|
||||||
}
|
}
|
||||||
if (!$result = @$db->db_query("SELECT public.get_stdsem_prestudent(0, null)")) {
|
elseif ($result = @$db->db_query("SELECT 1 FROM pg_proc WHERE proname='get_absem_prestudent' AND provolatile='s'"))
|
||||||
|
{
|
||||||
|
if ($db->db_num_rows($result) == 0) {
|
||||||
|
$qry = 'ALTER FUNCTION public.get_absem_prestudent(integer, character varying) STABLE;';
|
||||||
|
|
||||||
|
if(!$db->db_query($qry))
|
||||||
|
echo '<strong>public.get_absem_prestudent(integer, character varying): '.$db->db_last_error().'</strong><br>';
|
||||||
|
else
|
||||||
|
echo '<br>public.get_absem_prestudent(integer, character varying): function updated';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!$result = @$db->db_query("SELECT public.get_stdsem_prestudent(0, null)"))
|
||||||
|
{
|
||||||
$qry = 'CREATE FUNCTION public.get_stdsem_prestudent(integer, character varying) RETURNS character varying
|
$qry = 'CREATE FUNCTION public.get_stdsem_prestudent(integer, character varying) RETURNS character varying
|
||||||
LANGUAGE plpgsql
|
LANGUAGE plpgsql
|
||||||
|
STABLE
|
||||||
AS $_$
|
AS $_$
|
||||||
DECLARE i_prestudent_id ALIAS FOR $1;
|
DECLARE i_prestudent_id ALIAS FOR $1;
|
||||||
DECLARE cv_studiensemester_kurzbz ALIAS FOR $2;
|
DECLARE cv_studiensemester_kurzbz ALIAS FOR $2;
|
||||||
@@ -286,6 +331,17 @@ if (!$result = @$db->db_query("SELECT public.get_stdsem_prestudent(0, null)")) {
|
|||||||
else
|
else
|
||||||
echo '<br>public.get_stdsem_prestudent(integer, character varying): function created';
|
echo '<br>public.get_stdsem_prestudent(integer, character varying): function created';
|
||||||
}
|
}
|
||||||
|
elseif ($result = @$db->db_query("SELECT 1 FROM pg_proc WHERE proname='get_stdsem_prestudent' AND provolatile='s'"))
|
||||||
|
{
|
||||||
|
if ($db->db_num_rows($result) == 0) {
|
||||||
|
$qry = 'ALTER FUNCTION public.get_stdsem_prestudent(integer, character varying) STABLE;';
|
||||||
|
|
||||||
|
if(!$db->db_query($qry))
|
||||||
|
echo '<strong>public.get_stdsem_prestudent(integer, character varying): '.$db->db_last_error().'</strong><br>';
|
||||||
|
else
|
||||||
|
echo '<br>public.get_stdsem_prestudent(integer, character varying): function updated';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if($result = @$db->db_query("SELECT 1 FROM public.tbl_status_grund WHERE statusgrund_kurzbz = 'abbrecherStgl';"))
|
if($result = @$db->db_query("SELECT 1 FROM public.tbl_status_grund WHERE statusgrund_kurzbz = 'abbrecherStgl';"))
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user