diff --git a/application/controllers/api/frontend/v1/stv/Projektarbeit.php b/application/controllers/api/frontend/v1/stv/Projektarbeit.php index 9cc604184..168472b62 100644 --- a/application/controllers/api/frontend/v1/stv/Projektarbeit.php +++ b/application/controllers/api/frontend/v1/stv/Projektarbeit.php @@ -17,7 +17,8 @@ class Projektarbeit extends FHCAPI_Controller 'getTypenProjektarbeit' => ['admin:r', 'assistenz:r'], 'getFirmen' => ['admin:r', 'assistenz:r'], 'getLehrveranstaltungen' => ['admin:r', 'assistenz:r'], - 'getNoten' => ['admin:r', 'assistenz:r'] + 'getNoten' => ['admin:r', 'assistenz:r'], + 'getStudiensemester' => ['admin:r', 'assistenz:r'] ]); // Load Libraries @@ -40,6 +41,7 @@ class Projektarbeit extends FHCAPI_Controller $this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel'); $this->load->model('education/Note_model', 'NoteModel'); $this->load->model('education/Projektbetreuer_model', 'BetreuerModel'); + $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); // load libraries $this->load->library('PermissionLib'); @@ -259,6 +261,16 @@ class Projektarbeit extends FHCAPI_Controller return $this->terminateWithSuccess(hasData($result) ? getData($result) : []); } + public function getStudiensemester() + { + $this->StudiensemesterModel->addOrder('start', 'DESC'); + $result = $this->StudiensemesterModel->load(); + + if (isError($result)) return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); + + return $this->terminateWithSuccess(hasData($result) ? getData($result) : []); + } + /** * * @param diff --git a/public/js/api/factory/stv/projektarbeit.js b/public/js/api/factory/stv/projektarbeit.js index 4412f1842..e9b3e7efc 100644 --- a/public/js/api/factory/stv/projektarbeit.js +++ b/public/js/api/factory/stv/projektarbeit.js @@ -49,6 +49,12 @@ export default { url: 'api/frontend/v1/stv/projektarbeit/getNoten' }; }, + getStudiensemester() { + return { + method: 'get', + url: 'api/frontend/v1/stv/projektarbeit/getStudiensemester' + }; + }, loadProjektarbeit(projektarbeit_id) { return { method: 'get', diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Details.js b/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Details.js index 63b80ba37..d14f618e1 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Details.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Details.js @@ -69,10 +69,13 @@ export default { final: true, anmerkung: null }, + studiensemester: null, arrTypen: [], arrFirmen: [], arrLvs: [], arrNoten: [], + arrStudiensemester: [], + additional_lehrveranstaltung_id: null, filteredFirmen: [], abortController: { firma: null @@ -103,7 +106,11 @@ export default { this.formData.anmerkung = null; this.$refs.formDetails.clearValidation(); }, - getFormData(statusNew, studiensemester_kurzbz, additional_lehrveranstaltung_id) { + getFormData(newProjektarbeit, studiensemester_kurzbz, additional_lehrveranstaltung_id) { + + this.additional_lehrveranstaltung_id = additional_lehrveranstaltung_id; + this.studiensemester = studiensemester_kurzbz || this.defaultSemester; + this.newProjektarbeit = newProjektarbeit; this.$api .call(ApiStvProjektarbeit.getTypenProjektarbeit()) @@ -112,18 +119,7 @@ export default { }) .catch(this.$fhcAlert.handleSystemError); - this.$api - .call(ApiStvProjektarbeit.getLehrveranstaltungen( - this.student.uid, - statusNew ? this.student.studiengang_kz : null, - studiensemester_kurzbz ?? this.defaultSemester, - additional_lehrveranstaltung_id - )) - .then(result => { - this.arrLvs = result.data - } - ) - .catch(this.$fhcAlert.handleSystemError); + this.getLehrveranstaltungen(); this.$api .call(ApiStvProjektarbeit.getNoten()) @@ -132,7 +128,14 @@ export default { }) .catch(this.$fhcAlert.handleSystemError); - if (statusNew) this.resetForm(); + this.$api + .call(ApiStvProjektarbeit.getStudiensemester()) + .then(result => { + this.arrStudiensemester = result.data; + }) + .catch(this.$fhcAlert.handleSystemError); + + if (this.newProjektarbeit) this.resetForm(); }, loadProjektarbeit(projektarbeit_id) { @@ -178,6 +181,24 @@ export default { this.filteredFirmen = result.data; }); }, + getLehrveranstaltungen() { + return this.$api + .call(ApiStvProjektarbeit.getLehrveranstaltungen( + this.student.uid, + this.newProjektarbeit ? this.student.studiengang_kz : null, + this.studiensemester, + this.additional_lehrveranstaltung_id + )) + .then(result => { + this.arrLvs = result.data + } + ) + .catch(this.$fhcAlert.handleSystemError); + }, + studiensemesterChanged() { + this.formData.lehreinheit_id = null; + this.getLehrveranstaltungen(); + }, lvChanged(event) { this.formData.lehreinheit_id = null; }, @@ -281,7 +302,7 @@ export default {