diff --git a/application/controllers/api/frontend/v1/organisation/Studienplan.php b/application/controllers/api/frontend/v1/organisation/Studienplan.php new file mode 100644 index 000000000..c5a69fdee --- /dev/null +++ b/application/controllers/api/frontend/v1/organisation/Studienplan.php @@ -0,0 +1,69 @@ + self::PERM_LOGGED + ]); + } + + public function getBySemester() + { + $this->load->model('organisation/Studienplan_model', 'StudienplanModel'); + + $studiengang_kz = $this->input->get('studiengang_kz'); + $studiensemester_kurzbz = $this->input->get('studiensemester_kurzbz'); + $ausbildungssemester = $this->input->get('ausbildungssemester') ?: null; + $orgform_kurzbz = $this->input->get('orgform_kurzbz') ?: null; + + if (!$studiengang_kz || !is_numeric($studiengang_kz)) + return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Studiengangskennzahl']), self::ERROR_TYPE_GENERAL); + + if (!$studiensemester_kurzbz) + return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Studiensemester']), self::ERROR_TYPE_GENERAL); + + if (isset($ausbildungssemester) && !is_numeric($ausbildungssemester)) + return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Ausbildungssemester']), self::ERROR_TYPE_GENERAL); + + + //~ $this->load->library('form_validation'); + + //~ $this->form_validation->set_rules('studiengang_kz', 'StudiengangKz', 'required|numeric'); + //~ $this->form_validation->set_rules('studiensemester_kurzbz', 'StudiensemesterKurbz', 'required'); + //~ $this->form_validation->set_rules('ausbildungssemester', 'Ausbildungssemester', 'numeric'); + + //~ if (!$this->form_validation->run()) + //~ { + //~ $this->addMeta('fail2', 'fail2'); + //~ return $this->terminateWithValidationErrors($this->form_validation->error_array()); + //~ } + + + $this->addMeta('stg_kz', $studiengang_kz); + $this->addMeta('sem', $studiensemester_kurzbz); + $this->addMeta('sem2', $ausbildungssemester); + $this->addMeta('org', $orgform_kurzbz); + + $result = $this->StudienplanModel->getStudienplaeneBySemester($studiengang_kz, $studiensemester_kurzbz, $ausbildungssemester, $orgform_kurzbz); + if (isError($result)) $this->terminateWithError(getError($result), self::ERROR_TYPE_DB); + + $this->terminateWithSuccess(hasData($result) ? getData($result) : []); + } +} diff --git a/public/js/api/factory/studienplan.js b/public/js/api/factory/studienplan.js new file mode 100644 index 000000000..550a5211c --- /dev/null +++ b/public/js/api/factory/studienplan.js @@ -0,0 +1,11 @@ +export default { + + getStudienplaeneBySemester(studiengang_kz, studiensemester_kurzbz, ausbildungssemester, orgform_kurzbz) + { + return { + method: 'get', + url: 'api/frontend/v1/organisation/studienplan/getBySemester', + params: { studiengang_kz, studiensemester_kurzbz, ausbildungssemester, orgform_kurzbz }, + }; + } +} \ No newline at end of file diff --git a/public/js/api/factory/studiensemester.js b/public/js/api/factory/studiensemester.js new file mode 100644 index 000000000..367ec9558 --- /dev/null +++ b/public/js/api/factory/studiensemester.js @@ -0,0 +1,11 @@ +export default { + + getAll(order = null, start = null) + { + return { + method: 'get', + url: 'api/frontend/v1/organisation/studiensemester/getAll', + params: { order, start } + }; + } +} \ No newline at end of file diff --git a/public/js/components/Stv/Studentenverwaltung/List/New.js b/public/js/components/Stv/Studentenverwaltung/List/New.js index 211bb9dd3..27afb103c 100644 --- a/public/js/components/Stv/Studentenverwaltung/List/New.js +++ b/public/js/components/Stv/Studentenverwaltung/List/New.js @@ -7,6 +7,8 @@ import accessibility from '../../../../directives/accessibility.js'; import ApiStvStudents from '../../../../api/factory/stv/students.js'; import ApiStvAddress from '../../../../api/factory/stv/kontakt/address.js'; +import ApiStudiensemester from '../../../../api/factory/studiensemester.js'; +import ApiStudienplan from '../../../../api/factory/studienplan.js'; var _uuid = 0; const FORMDATA_DEFAULT = { @@ -157,15 +159,15 @@ export default { }); }, loadStudienplaene() { - if (this.formDataStg) - CoreRESTClient - .post('components/stv/studienplan/get', { - studiengang_kz: this.formDataStg, - studiensemester_kurzbz: this.formDataSem, - ausbildungssemester: this.formData.ausbildungssemester, - orgform_kurzbz: this.formData.orgform_kurzbz - }) - .then(result => CoreRESTClient.getData(result.data) || []) + if (this.formDataStg) { + this.$api + .call(ApiStudienplan.getStudienplaeneBySemester( + this.formDataStg, + this.formDataSem, + this.formData.ausbildungssemester, + this.formData.orgform_kurzbz + )) + .then(result => result.data || []) .then(result => { this.studienplaene = result; if (this.formData.studienplan_id !== '' && !this.studienplaene.filter(plan => plan.studienplan_id == this.formData.studienplan_id).length) @@ -179,6 +181,7 @@ export default { if (error.code != "ERR_CANCELED") window.setTimeout(this.loadStudienplaene, 100); }) + } }, changeAddressNation(e) { if (this.formData['geburtsnation'] == this.formData['address']['nation']) @@ -218,13 +221,12 @@ export default { }, created() { this.uuid = _uuid++; - CoreRESTClient - .get('components/stv/Studiensemester') - .then(result => CoreRESTClient.getData(result.data) || []) - .then(result => { - this.semester = result; - }) - .catch(this.$fhcAlert.handleSystemError); + this.$api.call(ApiStudiensemester.getAll()) + .then(result => result.data || []) + .then(result => { + this.semester = result; + }) + .catch(this.$fhcAlert.handleSystemError); }, template: ` @@ -642,7 +644,7 @@ export default { name="ausbildungssemester" v-model="formData['ausbildungssemester']" :disabled="formData['incoming']" - @input="loadStudienplaene" + @change="loadStudienplaene" > @@ -656,7 +658,7 @@ export default { id="stv-list-new-orgform_kurzbz" name="orgform_kurzbz" v-model="formData['orgform_kurzbz']" - @input="loadStudienplaene" + @change="loadStudienplaene" >