diff --git a/application/controllers/components/Antrag/Leitung.php b/application/controllers/components/Antrag/Leitung.php index 4c99fcca1..8d333d5b8 100644 --- a/application/controllers/components/Antrag/Leitung.php +++ b/application/controllers/components/Antrag/Leitung.php @@ -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) diff --git a/application/models/education/Studierendenantrag_model.php b/application/models/education/Studierendenantrag_model.php index 3d688eb82..0eda91886 100644 --- a/application/models/education/Studierendenantrag_model.php +++ b/application/models/education/Studierendenantrag_model.php @@ -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'); diff --git a/public/js/components/Studierendenantrag/Leitung.js b/public/js/components/Studierendenantrag/Leitung.js index 0db2cc2c0..a56e23725 100644 --- a/public/js/components/Studierendenantrag/Leitung.js +++ b/public/js/components/Studierendenantrag/Leitung.js @@ -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); });