diff --git a/application/controllers/api/frontend/v1/stv/Abschlusspruefung.php b/application/controllers/api/frontend/v1/stv/Abschlusspruefung.php index d7581c3d1..54a0e3278 100644 --- a/application/controllers/api/frontend/v1/stv/Abschlusspruefung.php +++ b/application/controllers/api/frontend/v1/stv/Abschlusspruefung.php @@ -20,6 +20,8 @@ class Abschlusspruefung extends FHCAPI_Controller 'getBeurteilungen' => ['admin:rw', 'assistenz:rw'], 'getAkadGrade' => ['admin:rw', 'assistenz:rw'], 'getMitarbeiter' => ['admin:rw', 'assistenz:rw'], + 'getAllMitarbeiter' => ['admin:rw', 'assistenz:rw'], + 'getAllPersons' => ['admin:rw', 'assistenz:rw'], 'getPruefer' => ['admin:rw', 'assistenz:rw'], 'getTypStudiengang' => ['admin:rw', 'assistenz:rw'], 'checkForExistingExams' => ['admin:rw', 'assistenz:rw'], @@ -149,16 +151,16 @@ class Abschlusspruefung extends FHCAPI_Controller { $studiengang_kz= $this->input->post('studiengang_kz'); -/* if (!$studiengang_kzs || !is_array($studiengang_kzs)) { - $this->load->library('form_validation'); + /* if (!$studiengang_kzs || !is_array($studiengang_kzs)) { + $this->load->library('form_validation'); - $this->form_validation->set_rules('studiengang_kzs', '', 'required|is_null', [ - 'is_null' => $this->p->t('ui', 'error_fieldMustBeArray') - ]); + $this->form_validation->set_rules('studiengang_kzs', '', 'required|is_null', [ + 'is_null' => $this->p->t('ui', 'error_fieldMustBeArray') + ]); - if (!$this->form_validation->run()) - $this->terminateWithValidationErrors($this->form_validation->error_array()); - }*/ + if (!$this->form_validation->run()) + $this->terminateWithValidationErrors($this->form_validation->error_array()); + }*/ $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); @@ -224,11 +226,6 @@ class Abschlusspruefung extends FHCAPI_Controller $formData = $this->input->post('formData'); - $vorsitz = isset($formData['vorsitz']['mitarbeiter_uid']) ? $formData['vorsitz']['mitarbeiter_uid'] : $formData['vorsitz']; - $pruefer1 = isset($formData['pruefer1']['person_id']) ? $formData['pruefer1']['person_id'] : $formData['pruefer1']; - $pruefer2 = isset($formData['pruefer2']['person_id']) ? $formData['pruefer2']['person_id'] : $formData['pruefer2']; - $pruefer3 = isset($formData['pruefer3']['person_id']) ? $formData['pruefer3']['person_id'] : $formData['pruefer3']; - $this->form_validation->set_data($formData); $this->form_validation->set_rules('pruefungstyp_kurzbz', 'Typ', 'required', [ @@ -256,14 +253,14 @@ class Abschlusspruefung extends FHCAPI_Controller 'student_uid' => $student_uid, 'pruefungstyp_kurzbz' => $formData['pruefungstyp_kurzbz'], 'akadgrad_id' => $formData['akadgrad_id'], - 'vorsitz' => $vorsitz, + 'vorsitz' => $formData['vorsitz'], 'pruefungsantritt_kurzbz' => $formData['pruefungsantritt_kurzbz'], 'abschlussbeurteilung_kurzbz' => $formData['abschlussbeurteilung_kurzbz'], 'datum' => $formData['datum'], //TODO(Manu) check if minute format like FAS 'sponsion' => $formData['sponsion'], - 'pruefer1' => $pruefer1, - 'pruefer2' => $pruefer2, - 'pruefer3' => $pruefer3, + 'pruefer1' => $formData['pruefer1'], + 'pruefer2' => $formData['pruefer2'], + 'pruefer3' => $formData['pruefer3'], 'protokoll' => $formData['protokoll'], 'note' => $formData['note'], 'anmerkung' => $formData['anmerkung'], @@ -298,7 +295,7 @@ class Abschlusspruefung extends FHCAPI_Controller $this->form_validation->set_rules('pruefungstyp_kurzbz', 'Typ', 'required', [ 'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Typ']) ]); - + $this->form_validation->set_rules('akadgrad_id', 'AkadGrad', 'required', [ 'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'AkadGrad']) ]); @@ -319,25 +316,25 @@ class Abschlusspruefung extends FHCAPI_Controller $result = $this->AbschlusspruefungModel->update( [ - 'abschlusspruefung_id' => $abschlusspruefung_id + 'abschlusspruefung_id' => $abschlusspruefung_id ], [ - 'student_uid' => $formData['student_uid'], - 'pruefungstyp_kurzbz' => $formData['pruefungstyp_kurzbz'], - 'akadgrad_id' => $formData['akadgrad_id'], - 'vorsitz' => $vorsitz, - 'pruefungsantritt_kurzbz' => $formData['pruefungsantritt_kurzbz'], - 'abschlussbeurteilung_kurzbz' => $formData['abschlussbeurteilung_kurzbz'], - 'datum' => $formData['datum'], - 'sponsion' => $formData['sponsion'], - 'pruefer1' => $pruefer1, - 'pruefer2' => $pruefer2, - 'pruefer3' => $pruefer3, - 'protokoll' => $formData['protokoll'], - 'note' => $formData['note'], - 'anmerkung' => $formData['anmerkung'], - 'insertamum' => date('c'), - 'insertvon' => getAuthUID() + 'student_uid' => $formData['student_uid'], + 'pruefungstyp_kurzbz' => $formData['pruefungstyp_kurzbz'], + 'akadgrad_id' => $formData['akadgrad_id'], + 'vorsitz' => $vorsitz, + 'pruefungsantritt_kurzbz' => $formData['pruefungsantritt_kurzbz'], + 'abschlussbeurteilung_kurzbz' => $formData['abschlussbeurteilung_kurzbz'], + 'datum' => $formData['datum'], + 'sponsion' => $formData['sponsion'], + 'pruefer1' => $pruefer1, + 'pruefer2' => $pruefer2, + 'pruefer3' => $pruefer3, + 'protokoll' => $formData['protokoll'], + 'note' => $formData['note'], + 'anmerkung' => $formData['anmerkung'], + 'insertamum' => date('c'), + 'insertvon' => getAuthUID() ] ); @@ -402,4 +399,58 @@ class Abschlusspruefung extends FHCAPI_Controller } $this->terminateWithSuccess('step3'); } + + /* + * returns list of all Mitarbeiter + * as key value list to be used in select or autocomplete + */ + public function getAllMitarbeiter() + { + $this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel'); + + $sql = " + SELECT + ma.mitarbeiter_uid as mitarbeiter_uid, + CONCAT(p.nachname, ' ', p.vorname, ' (', ma.mitarbeiter_uid, ')') as label + FROM + public.tbl_mitarbeiter ma + JOIN public.tbl_benutzer bn ON (bn.uid = ma.mitarbeiter_uid) + JOIN public.tbl_person p ON (p.person_id = bn.person_id) + ORDER BY + p.nachname ASC + "; + + $result = $this->MitarbeiterModel->execReadOnlyQuery($sql); + $data = $this->getDataOrTerminateWithError($result); + + $this->terminateWithSuccess($data); + } + + /* + * returns list of all Persons + * as key value list to be used in select or autocomplete + */ + public function getAllPersons() + { + $this->load->model('person/Person_model', 'PersonModel'); + + $sql = " + SELECT + p.vorname, p.nachname, p.person_id, + CONCAT(p.nachname, ' ', p.vorname) as label + FROM + public.tbl_person p + -- JOIN public.tbl_benutzer bn ON (p.person_id = bn.person_id) + -- and bn.aktiv = 'true' + ORDER BY + p.nachname ASC + "; + + //TODO(manu) check if filter active benutzer + + $result = $this->PersonModel->execReadOnlyQuery($sql); + $data = $this->getDataOrTerminateWithError($result); + + $this->terminateWithSuccess($data); + } } diff --git a/merge_FHC4_55354_55991_55992_60874_60875_61229_61230_61231_TabAbschlusspruefung b/merge_FHC4_55354_55991_55992_60874_60875_61229_61230_61231_TabAbschlusspruefung new file mode 100644 index 000000000..e69de29bb diff --git a/public/js/api/factory/stv/abschlusspruefung.js b/public/js/api/factory/stv/abschlusspruefung.js index 37e442b19..e318d0d37 100644 --- a/public/js/api/factory/stv/abschlusspruefung.js +++ b/public/js/api/factory/stv/abschlusspruefung.js @@ -107,5 +107,17 @@ export default { url: 'api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/', params: { uid } }; + }, + getAllMitarbeiter(){ + return { + method: 'get', + url: 'api/frontend/v1/stv/abschlusspruefung/getAllMitarbeiter/' + }; + }, + getAllPersons(){ + return { + method: 'get', + url: 'api/frontend/v1/stv/abschlusspruefung/getAllPersons/' + }; } }; \ No newline at end of file diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js b/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js index 76987aefc..ab9c5134a 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js @@ -7,6 +7,7 @@ import AbschlusspruefungDropdown from "./AbschlusspruefungDropdown.js"; import ApiStudiengang from '../../../../../api/factory/studiengang.js'; import ApiStvAbschlusspruefung from '../../../../../api/factory/stv/abschlusspruefung.js'; +import ApiStvAddress from "../../../../../api/factory/stv/kontakt/address.js"; export default { components: { @@ -78,7 +79,7 @@ export default { {title: "prueferIn2", field: "p2_nachname", visible: false}, {title: "prueferIn3", field: "p3_nachname", visible: false}, { - title: "datum", + title: "datum", field: "datum", formatter: function (cell) { const dateStr = cell.getValue(); @@ -95,7 +96,7 @@ export default { }, {title: "uhrzeit", field: "uhrzeit"}, { - title: "freigabe", + title: "freigabe", field: "freigabedatum", formatter: function (cell) { const dateStr = cell.getValue(); @@ -112,7 +113,7 @@ export default { }, {title: "pruefungsantritt", field: "antritt_bezeichnung"}, { - title: "sponsion", + title: "sponsion", field: "sponsion", formatter: function (cell) { const dateStr = cell.getValue(); @@ -259,12 +260,14 @@ export default { arrBeurteilungen: [], arrAkadGrad: [], arrNoten: [], - filteredMitarbeiter: [], - filteredPruefer: [], - abortController: { - mitarbeiter: null, - pruefer: null - }, + selectedVorsitz: null, + listeFilteredMitarbeiter: [], + listeAllMitarbeiter: [], + listeAllPersons: [], + selectedPruefer1: null, + selectedPruefer2: null, + selectedPruefer3: null, + listeFilteredPersons: [], stgInfo: { typ: '', oe_kurzbz: '' } } }, @@ -274,6 +277,19 @@ export default { this.$refs.table.reloadTable(); } this.getStudiengangByKz(); + }, + selectedVorsitz(newVal) { + this.formData.vorsitz = newVal?.mitarbeiter_uid || ''; + console.log("newVal: " + newVal.mitarbeiter_uid); + }, + selectedPruefer1(newVal) { + this.formData.pruefer1 = newVal?.person_id || ''; + }, + selectedPruefer2(newVal) { + this.formData.pruefer2 = newVal?.person_id || ''; + }, + selectedPruefer3(newVal) { + this.formData.pruefer3 = newVal?.person_id || ''; } }, methods: { @@ -293,8 +309,22 @@ export default { actionEditAbschlusspruefung(abschlusspruefung_id) { this.resetForm(); this.statusNew = false; + this.loadAbschlusspruefung(abschlusspruefung_id).then(() => { + //set selectedData to enable viewing label in primevue autocomplete fields + this.selectedVorsitz = this.listeAllMitarbeiter.find( + item => item.mitarbeiter_uid === this.formData.vorsitz + ); + this.selectedPruefer1 = this.listeAllPersons.find( + item => item.person_id === this.formData.pruefer1 + ); + this.selectedPruefer2= this.listeAllPersons.find( + item => item.person_id === this.formData.pruefer2 + ); + this.selectedPruefer3= this.listeAllPersons.find( + item => item.person_id === this.formData.pruefer3 + ); + }); this.$refs.finalexamModal.show(); - this.loadAbschlusspruefung(abschlusspruefung_id); }, actionDeleteAbschlusspruefung(abschlusspruefung_id) { this.$fhcAlert @@ -374,7 +404,7 @@ export default { this.formData.vorsitz = null; this.formData.pruefungsantritt_kurzbz = null; this.formData.abschlussbeurteilung_kurzbz = null; - this.formData.datum = null; //oder new Date(); + this.formData.datum = null; this.formData.sponsion = null; this.formData.pruefer1 = null; this.formData.pruefer2 = null; @@ -382,34 +412,11 @@ export default { this.formData.anmerkung = null; this.formData.protokoll = null; this.formData.note = null; - this.formData.p1 = null; - this.formData.p2 = null; - this.formData.p3 = null; - this.formData.pv = null; - }, - search(event) { - if (this.abortController.mitarbeiter) { - this.abortController.mitarbeiter.abort(); - } - this.abortController.mitarbeiter = new AbortController(); + this.selectedVorsitz = null; + this.selectedPruefer1 = null; + this.selectedPruefer2 = null; + this.selectedPruefer3 = null; - return this.$api - .call(ApiStvAbschlusspruefung.getMitarbeiter(event.query)) - .then(result => { - this.filteredMitarbeiter = result.data.retval; - }); - }, - searchNotAkad(event) { - if (this.abortController.pruefer) { - this.abortController.pruefer.abort(); - } - this.abortController.pruefer = new AbortController(); - - return this.$api - .call(ApiStvAbschlusspruefung.getPruefer(event.query)) - .then(result => { - this.filteredPruefer = result.data.retval; - }); }, setDefaultFormData() { @@ -434,6 +441,22 @@ export default { printDocument(link) { window.open(link, '_blank'); }, + filterMitarbeiter(event){ + const query = event?.query?.toLowerCase()?.trim() || ""; + + this.listeFilteredMitarbeiter = this.listeAllMitarbeiter.filter(item => { + const label = (item.label || "").toLowerCase(); + return label.includes(query); + }); + }, + filterPersons(event){ + const query = event?.query?.toLowerCase()?.trim() || ""; + + this.listeFilteredPersons = this.listeAllPersons.filter(item => { + const label = (item.label || "").toLowerCase(); + return label.includes(query); + }); + } }, created() { this.$api @@ -470,6 +493,21 @@ export default { this.arrAkadGrad = result.data; }) .catch(this.$fhcAlert.handleSystemError); + + this.$api + .call(ApiStvAbschlusspruefung.getAllMitarbeiter()) + .then(result => { + this.listeAllMitarbeiter = result.data; + }) + .catch(this.$fhcAlert.handleSystemError); + + this.$api + .call(ApiStvAbschlusspruefung.getAllPersons()) + .then(result => { + this.listeAllPersons = result.data; + }) + .catch(this.$fhcAlert.handleSystemError); + if (!this.student.length) { this.$api .call(ApiStudiengang.getStudiengangByKz(this.student.studiengang_kz)) @@ -484,7 +522,7 @@ export default { template: `