diff --git a/application/controllers/components/Antrag/Leitung.php b/application/controllers/components/Antrag/Leitung.php index f6b184351..e46c0bc50 100644 --- a/application/controllers/components/Antrag/Leitung.php +++ b/application/controllers/components/Antrag/Leitung.php @@ -75,12 +75,18 @@ class Leitung extends FHC_Controller $this->outputJsonSuccess($stgs); } - public function getAntraege($studiengang = null) + public function getAntraege($studiengang = null, $extra = null) { + if ($studiengang && $studiengang == 'todo') { + $studiengang = $extra; + $extra = true; + } else { + $extra = false; + } - if($studiengang) + if ($studiengang) { $studiengaenge = [$studiengang]; - else { + } else { $studiengaenge =$this->permissionlib->getSTG_isEntitledFor('student/antragfreigabe'); if(!is_array($studiengaenge)) $studiengaenge = []; @@ -96,7 +102,21 @@ class Leitung extends FHC_Controller $antraege = []; if ($studiengaenge) { - $result = $this->StudierendenantragModel->loadForStudiengaenge($studiengaenge); + if ($extra) { + $this->StudierendenantragModel->db->group_start(); + $this->StudierendenantragModel->db->where_not_in('s.studierendenantrag_statustyp_kurzbz', [ + Studierendenantragstatus_model::STATUS_CANCELLED, + Studierendenantragstatus_model::STATUS_APPROVED, + Studierendenantragstatus_model::STATUS_REJECTED, + Studierendenantragstatus_model::STATUS_OBJECTION_DENIED + ]); + $this->StudierendenantragModel->db->or_group_start(); + $this->StudierendenantragModel->db->where('s.studierendenantrag_statustyp_kurzbz', Studierendenantragstatus_model::STATUS_APPROVED); + $this->StudierendenantragModel->db->where('tbl_studierendenantrag.typ', Studierendenantrag_model::TYP_ABMELDUNG_STGL); + $this->StudierendenantragModel->db->group_end(); + $this->StudierendenantragModel->db->group_end(); + } + $result = $this->StudierendenantragModel->loadForStudiengaenge($studiengaenge, null, null, true); if (isError($result)) { $this->output->set_status_header(500); return $this->outputJson('Internal Server Error'); diff --git a/public/js/components/Studierendenantrag/Leitung.js b/public/js/components/Studierendenantrag/Leitung.js index 95828e6cb..ab29ea770 100644 --- a/public/js/components/Studierendenantrag/Leitung.js +++ b/public/js/components/Studierendenantrag/Leitung.js @@ -49,8 +49,8 @@ export default { console.error(error); }); }, - changeFilter(evt) { - this.filter = evt.target.value || undefined; + changeFilter(filter) { + this.filter = filter || undefined; this.reload(); }, reload() { diff --git a/public/js/components/Studierendenantrag/Leitung/Header.js b/public/js/components/Studierendenantrag/Leitung/Header.js index 12bfcbe82..54950856b 100644 --- a/public/js/components/Studierendenantrag/Leitung/Header.js +++ b/public/js/components/Studierendenantrag/Leitung/Header.js @@ -1,3 +1,5 @@ +const LOCAL_STORAGE_ID = 'studierendenantrag_leitung_2023-11-14_header_filter'; + export default { props: { stgs: Array @@ -5,16 +7,60 @@ export default { emits: [ 'input' ], + data() { + return { + todo_value: '', + stg_value: '' + } + }, + computed: { + value() { + const a = []; + if (this.todo_value) + a.push(this.todo_value); + if (this.stg_value) + a.push(this.stg_value); + + return a.join('/'); + } + }, + watch: { + value(n) { + window.localStorage.setItem(LOCAL_STORAGE_ID, n); + this.$emit('input', n); + } + }, + created() { + const values = window.localStorage.getItem(LOCAL_STORAGE_ID).split('/'); + if (values.length) { + if (values.length == 1) { + if (values[0] == 'todo') + values.push(''); + else + values.unshift(''); + } + this.stg_value = values.pop(); + this.todo_value = values.pop(); + } + }, template: `