From c127c0900ec62842c095b046582c83dfcba461d7 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Wed, 25 Feb 2026 14:28:41 +0100 Subject: [PATCH] refactor dropdown for pruefer, add localStorage for formVariables, add multiactions for adding new finalexam --- .../api/frontend/v1/stv/Abschlusspruefung.php | 16 -- .../js/api/factory/stv/abschlusspruefung.js | 7 - public/js/api/stv/abschlusspruefung.js | 3 - .../Abschlusspruefung/Abschlusspruefung.js | 185 +++++++++++++----- 4 files changed, 139 insertions(+), 72 deletions(-) diff --git a/application/controllers/api/frontend/v1/stv/Abschlusspruefung.php b/application/controllers/api/frontend/v1/stv/Abschlusspruefung.php index def4f6502..f77de7021 100644 --- a/application/controllers/api/frontend/v1/stv/Abschlusspruefung.php +++ b/application/controllers/api/frontend/v1/stv/Abschlusspruefung.php @@ -20,7 +20,6 @@ class Abschlusspruefung extends FHCAPI_Controller 'getBeurteilungen' => ['admin:rw', 'assistenz:rw'], 'getAkadGrade' => ['admin:rw', 'assistenz:rw'], 'getMitarbeiter' => ['admin:rw', 'assistenz:rw'], - 'getPruefer' => ['admin:rw', 'assistenz:rw'], 'getTypStudiengang' => ['admin:rw', 'assistenz:rw'], 'checkForExistingExams' => ['admin:rw', 'assistenz:rw'], ]); @@ -242,21 +241,6 @@ class Abschlusspruefung extends FHCAPI_Controller $this->terminateWithSuccess($result ?: []); } - public function getPruefer() - { - $searchString = $this->input->get('searchString') ?? ''; - - $this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel'); - - $result = $this->MitarbeiterModel->searchMitarbeiter($searchString, 'ohneMaUid'); - - if (isError($result)) { - $this->terminateWithError($result, self::ERROR_TYPE_GENERAL); - } - - $this->terminateWithSuccess($result ?: []); - } - public function getNoten() { $this->load->model('education/Note_model', 'NoteModel'); diff --git a/public/js/api/factory/stv/abschlusspruefung.js b/public/js/api/factory/stv/abschlusspruefung.js index dcba61887..7a1a088ea 100644 --- a/public/js/api/factory/stv/abschlusspruefung.js +++ b/public/js/api/factory/stv/abschlusspruefung.js @@ -90,13 +90,6 @@ export default { params: { searchString } }; }, - getPruefer(searchString) { - return { - method: 'get', - url: 'api/frontend/v1/stv/abschlusspruefung/getPruefer', - params: { searchString } - }; - }, getNoten() { return { method: 'get', diff --git a/public/js/api/stv/abschlusspruefung.js b/public/js/api/stv/abschlusspruefung.js index dccc10085..26d9c17ab 100644 --- a/public/js/api/stv/abschlusspruefung.js +++ b/public/js/api/stv/abschlusspruefung.js @@ -35,9 +35,6 @@ export default { getMitarbeiter(searchString){ return this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/' + searchString); }, - getPruefer(searchString){ - return this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getPruefer/' + searchString); - }, getNoten(){ return this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getNoten/'); }, diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js b/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js index d46e1f299..444bf1097 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js @@ -42,6 +42,16 @@ export default { } return this.student.map(e => e.uid); }, + studentNames() { + if (this.student.uid) + { + return [this.student.vorname + ' ' + this.student.nachname]; + } + + const array = this.student.map(e => ' ' + e.vorname + ' ' + e.nachname + '(' + e.uid +')'); + + return array.toString(); + }, studentKzs(){ if (this.student.uid) { @@ -60,7 +70,7 @@ export default { } let retval = this.isBerechtigtDocAndOdt.includes(this.stgInfo.oe_kurzbz); return retval; - } + }, }, props: { student: Object @@ -260,7 +270,6 @@ export default { arrNoten: [], selectedVorsitz: null, filteredMitarbeiter: [], - filteredPersons: [], selectedPruefer1: null, selectedPruefer2: null, selectedPruefer3: null, @@ -300,10 +309,50 @@ export default { .catch(this.$fhcAlert.handleSystemError); }, actionNewAbschlusspruefung() { - this.resetForm(); - this.statusNew = true; - this.$refs.finalexamModal.show(); this.setDefaultFormData(); + this.statusNew = true; + + //prepare local Storage + let STORAGE_KEY = 'finalExamDefaultData'; + const id = '20260224_01'; + const stored = JSON.parse(localStorage.getItem(STORAGE_KEY)) || {}; + + if (stored[id]) { + const data = stored[id]; + + this.formData.pruefungstyp_kurzbz = data.pruefungstyp_kurzbz; + this.formData.datum = data.datum; + this.formData.sponsion = data.sponsion; + this.formData.akadgrad_id = data.akadgrad_id; + + if (data.vorsitz_uid) { + this.selectedVorsitz = { + mitarbeiter_uid: data.vorsitz_uid, + person_id: data.vorsitz_person_id, + label: data.vorsitz_label + }; + } + + if (data.pruefer1_person_id) { + this.selectedPruefer1 = { + person_id: data.pruefer1_person_id, + label: data.pruefer1_label + }; + } + if (data.pruefer2_person_id) { + this.selectedPruefer2 = { + person_id: data.pruefer2_person_id, + label: data.pruefer2_label + }; + } + if (data.pruefer3_person_id) { + this.selectedPruefer3 = { + person_id: data.pruefer3_person_id, + label: data.pruefer3_label + }; + } + } + this.$refs.finalexamModal.show(); }, actionEditAbschlusspruefung(abschlusspruefung_id) { this.resetForm(); @@ -350,6 +399,29 @@ export default { .then(this.deleteAbschlusspruefung) .catch(this.$fhcAlert.handleSystemError); }, + saveOrUpdateLocalStorage(){ + let STORAGE_KEY = 'finalExamDefaultData'; + + const id = '20260224_01'; + const stored = JSON.parse(localStorage.getItem(STORAGE_KEY)) || {}; + + stored[id] = { + pruefungstyp_kurzbz: this.formData.pruefungstyp_kurzbz, + vorsitz_uid: this.selectedVorsitz?.mitarbeiter_uid || null, + vorsitz_person_id: this.selectedVorsitz?.person_id || null, + vorsitz_label: this.selectedVorsitz?.label || null, + pruefer1_person_id: this.selectedPruefer1?.person_id || null, + pruefer1_label: this.selectedPruefer1?.label || null, + pruefer2_person_id: this.selectedPruefer2?.person_id || null, + pruefer2_label: this.selectedPruefer2?.label || null, + pruefer3_person_id: this.selectedPruefer3?.person_id || null, + pruefer3_label: this.selectedPruefer3?.label || null, + akadgrad_id: this.formData.akadgrad_id, + datum: this.formData.datum, + sponsion: this.formData.sponsion + }; + localStorage.setItem(STORAGE_KEY, JSON.stringify(stored)); + }, addNewAbschlusspruefung() { const dataToSend = { uid: this.student.uid, @@ -360,6 +432,8 @@ export default { .call(ApiStvAbschlusspruefung.addNewAbschlusspruefung(dataToSend)) .then(response => { this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave')); + //save formData fields in LocalStorage + this.saveOrUpdateLocalStorage(); this.hideModal('finalexamModal'); this.resetForm(); }) @@ -368,6 +442,26 @@ export default { this.reload(); }); }, + async addNewAbschlusspruefungMulti(){ + try { + for (const student of this.studentUids) { + + await this.$refs.formFinalExam.call( + ApiStvAbschlusspruefung.addNewAbschlusspruefung({ + uid: student, + formData: this.formData + }) + ); + } + this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave')); + //save formData fields in LocalStorage + this.saveOrUpdateLocalStorage(); + this.hideModal('finalexamModal'); + this.resetForm(); + } catch (error) { + this.$fhcAlert.handleSystemError(error); + } + }, hideModal(modalRef){ this.$refs[modalRef].hide(); }, @@ -389,6 +483,9 @@ export default { id: abschlusspruefung_id, formData: this.formData }; + //uncomment if also save data in local storage for update + //this.saveOrUpdateLocalStorage(); + return this.$refs.formFinalExam .call(ApiStvAbschlusspruefung.updateAbschlusspruefung(dataToSend)) .then(response => { @@ -430,7 +527,6 @@ export default { this.selectedPruefer1 = null; this.selectedPruefer2 = null; this.selectedPruefer3 = null; - }, setDefaultFormData() { @@ -481,33 +577,6 @@ export default { } }); }, - searchPerson(event) { - if (this.abortController.persons) { - this.abortController.persons.abort(); - } - - this.abortController.persons = new AbortController(); - - return this.$api - .call(ApiStvAbschlusspruefung.getPruefer(event.query)) - .then(result => { - this.filteredPersons = []; - for (let person of result.data.retval) { - this.filteredPersons.push( - { - label: this.getPersonLabel( - person.titelpre, - person.nachname, - person.vorname, - person.titelpost, - person.person_uid - ), - person_id: person.person_id - } - ); - } - }); - }, }, created() { this.$api @@ -539,7 +608,7 @@ export default { .catch(this.$fhcAlert.handleSystemError); this.$api - .call(ApiStvAbschlusspruefung.getAkadGrade(this.student.studiengang_kz)) + .call(ApiStvAbschlusspruefung.getAkadGrade(this.stg_kz)) .then(result => { this.arrAkadGrad = result.data; }) @@ -560,7 +629,8 @@ export default {

{{this.$p.t('stv','tab_finalexam')}}

-
+
+

{{$p.t('abschlusspruefung', 'abschluessPruefungAnlegen')}}

{{$p.t('abschlusspruefung', 'abschluessPruefungBearbeiten')}}

+ {{studentNames}} - + {{this.$p.t('global','details')}}

[{{$p.t('ui', 'neu')}}]

+
- +
+ + @@ -735,6 +825,7 @@ export default { @@ -792,6 +883,7 @@ export default { >
-
+

{{$p.t('abschlusspruefung', 'zurBeurteilung')}}

@@ -820,8 +912,9 @@ export default {