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()
|
||||
{
|
||||
$studiengaenge = $this->permissionlib->getSTG_isEntitledFor('student/antragfreigabe');
|
||||
$stgsNeuanlage = $this->permissionlib->getSTG_isEntitledFor('student/studierendenantrag');
|
||||
|
||||
$stgs = [];
|
||||
|
||||
if ($studiengaenge) {
|
||||
$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;
|
||||
}
|
||||
}
|
||||
$studiengaenge = $this->permissionlib->getSTG_isEntitledFor('student/antragfreigabe') ?: [];
|
||||
$studiengaenge = array_merge($studiengaenge, $this->permissionlib->getSTG_isEntitledFor('student/studierendenantrag') ?: []);
|
||||
|
||||
$result = $this->StudierendenantragModel->loadStgsWithAntraege($studiengaenge);
|
||||
if (isError($result)) {
|
||||
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
|
||||
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);
|
||||
$this->outputJson($result);
|
||||
}
|
||||
|
||||
public function getAntraege($studiengang = null, $extra = null)
|
||||
|
||||
@@ -74,7 +74,8 @@ class Studierendenantrag_model extends DB_Model
|
||||
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
|
||||
$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);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
$this->addJoin('public.tbl_prestudent', 'prestudent_id');
|
||||
|
||||
@@ -44,7 +44,7 @@ export default {
|
||||
FHC_JS_DATA_STORAGE_OBJECT.ci_router +
|
||||
'/components/Antrag/Leitung/getActiveStgs'
|
||||
).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 => {
|
||||
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
|
||||
LANGUAGE plpgsql
|
||||
STABLE
|
||||
RETURNS NULL ON NULL INPUT
|
||||
AS $_$
|
||||
DECLARE i_studierendenantrag_id ALIAS FOR $1;
|
||||
DECLARE rec RECORD;
|
||||
@@ -194,10 +197,25 @@ if (!$result = @$db->db_query("SELECT campus.get_status_studierendenantrag(0)"))
|
||||
else
|
||||
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
|
||||
LANGUAGE plpgsql
|
||||
STABLE
|
||||
RETURNS NULL ON NULL INPUT
|
||||
AS $_$
|
||||
DECLARE i_studierendenantrag_id ALIAS FOR $1;
|
||||
DECLARE rec RECORD;
|
||||
@@ -219,10 +237,24 @@ if (!$result = @$db->db_query("SELECT campus.get_status_id_studierendenantrag(0)
|
||||
else
|
||||
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
|
||||
LANGUAGE plpgsql
|
||||
STABLE
|
||||
AS $_$
|
||||
DECLARE i_prestudent_id ALIAS FOR $1;
|
||||
DECLARE cv_studiensemester_kurzbz ALIAS FOR $2;
|
||||
@@ -253,9 +285,22 @@ if (!$result = @$db->db_query("SELECT public.get_absem_prestudent(0, null)")) {
|
||||
else
|
||||
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
|
||||
LANGUAGE plpgsql
|
||||
STABLE
|
||||
AS $_$
|
||||
DECLARE i_prestudent_id ALIAS FOR $1;
|
||||
DECLARE cv_studiensemester_kurzbz ALIAS FOR $2;
|
||||
@@ -286,6 +331,17 @@ if (!$result = @$db->db_query("SELECT public.get_stdsem_prestudent(0, null)")) {
|
||||
else
|
||||
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';"))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user