diff --git a/application/controllers/components/Antrag/Leitung.php b/application/controllers/components/Antrag/Leitung.php index c107fbb63..54e5b65e6 100644 --- a/application/controllers/components/Antrag/Leitung.php +++ b/application/controllers/components/Antrag/Leitung.php @@ -29,6 +29,50 @@ class Leitung extends FHC_Controller //------------------------------------------------------------------------------------------------------------------ // Public methods + 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; + } + } + } + + 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) { diff --git a/application/controllers/lehre/Studierendenantrag.php b/application/controllers/lehre/Studierendenantrag.php index f27350e9a..c0ac284b3 100644 --- a/application/controllers/lehre/Studierendenantrag.php +++ b/application/controllers/lehre/Studierendenantrag.php @@ -82,7 +82,7 @@ class Studierendenantrag extends FHC_Controller $stgL = []; if ($studiengaenge) { - $result = $this->StudierendenantragModel->loadForStudiengaenge($studiengaenge); + $result = $this->StudiengangModel->loadWithOrgform($studiengaenge); if (isError($result)) return show_error(getError($result)); $antraege = getData($result) ?: []; @@ -99,7 +99,7 @@ class Studierendenantrag extends FHC_Controller $stgA = []; if ($stgsNeuanlage) { - $result = $this->StudierendenantragModel->loadForStudiengaenge($stgsNeuanlage); + $result = $this->StudiengangModel->loadWithOrgform($stgsNeuanlage); if (isError($result)) return show_error(getError($result)); $antraege = getData($result) ?: []; diff --git a/application/models/organisation/Studiengang_model.php b/application/models/organisation/Studiengang_model.php index 0d2328b14..1fb733d04 100644 --- a/application/models/organisation/Studiengang_model.php +++ b/application/models/organisation/Studiengang_model.php @@ -525,6 +525,20 @@ class Studiengang_model extends DB_Model return $this->execQuery($query, $params); } + public function loadWithOrgform($studiengang_kzs) + { + $sql = "SELECT index FROM public.tbl_sprache WHERE sprache='" . getUserLanguage() . "' LIMIT 1"; + + $this->addSelect($this->dbTable . '.*'); + $this->addSelect('o.bezeichnung_mehrsprachig[(' . $sql . ')] AS orgform'); + + $this->addJoin('bis.tbl_orgform o', 'orgform_kurzbz'); + + $this->db->where_in($this->dbTable . '.studiengang_kz', $studiengang_kzs); + + return $this->load(); + } + /** * @param array $studiengang_kzs * @param array $not_antrag_typ (optional) If the prestudent has an antrag with one of the specified types it will be excluded from the result diff --git a/public/js/components/Studierendenantrag/Leitung.js b/public/js/components/Studierendenantrag/Leitung.js index f08da3879..ba7af0a2c 100644 --- a/public/js/components/Studierendenantrag/Leitung.js +++ b/public/js/components/Studierendenantrag/Leitung.js @@ -23,45 +23,41 @@ export default { return { filter: undefined, selectedData: [], - columns: [] + columns: [], + stgs: [] } }, computed: { - stgs(){ - if(!this.stgL || !this.stgA) - return[]; - let undesiredOutput = [...this.stgL, ...this.stgA]; - let desiredOutput = undesiredOutput.reduce( - (accumulator, currentValue)=> - { - accumulator[currentValue.studiengang_kz] = currentValue; - return accumulator; - }, - {} - ); - return Object.values(desiredOutput); - - }, - stgkzL() - { + stgkzL() { if (!this.stgL) return []; return this.stgL.map(stg => stg.studiengang_kz); }, - stgkzA() - { + stgkzA() { if (!this.stgA) return []; return this.stgA.map(stg => stg.studiengang_kz); } }, methods: { + loadFilter() { + axios.get( + FHC_JS_DATA_STORAGE_OBJECT.app_root + + 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)); + }).catch(error => { + console.error(error); + }); + }, changeFilter(evt) { this.filter = evt.target.value || undefined; this.reload(); }, reload() { this.$refs.table.reload(this.filter); + this.loadFilter(); }, download() { this.$refs.table.download(); @@ -270,6 +266,9 @@ export default { BsAlert.popup(msg, {dialogClass: 'alert alert-danger'}); } }, + created() { + this.loadFilter(); + }, template: `