diff --git a/application/config/stv.php b/application/config/stv.php new file mode 100644 index 000000000..e69de29bb diff --git a/application/controllers/components/stv/Prestudent.php b/application/controllers/components/stv/Prestudent.php index c045a4be2..2b08b549c 100644 --- a/application/controllers/components/stv/Prestudent.php +++ b/application/controllers/components/stv/Prestudent.php @@ -38,6 +38,114 @@ class Prestudent extends FHC_Controller } } + public function updatePrestudent($prestudent_id) + { + $this->load->library('form_validation'); + $this->load->model('crm/Prestudent_model', 'PrestudentModel'); + +/* $result = $this->PrestudentModel->loadWhere(['prestudent_id' =>$prestudent_id]); + if (isError($result)) { + $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); + return $this->outputJson(getError($result)); + } elseif (!hasData($result)) { + return $this->outputJson(getError($result)); + } else { + $prestudentData = current(getData($result)); + } + + var_dump($prestudentData);*/ + + $_POST = json_decode(utf8_encode($this->input->raw_input_stream), true); + $deltaData = $_POST[0]; + + if(!$prestudent_id) + { + return $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); + } + + //Todo(manu) updateamum, updatevon ergänzen + $uid = getAuthUID(); + + $array_allowed_props_prestudent = [ + 'aufmerksamdurch_kurzbz', + 'studiengang_kz', + 'gsstudientyp_kurzbz', + 'person_id', + 'berufstaetigkeit_code', + 'ausbildungcode', + 'zgv_code', + 'zgvort', + 'zgvdatum', + 'zgvnation', + 'zgvmas_code', + 'zgvmaort', + 'zgvmadatum', + 'zgvmanation', + 'facheinschlberuf', + 'bismelden', + 'anmerkung', + 'dual', + 'zgvdoktor_code', //Todo(Manu) tabelle leer? db zum testen + 'zgvdoktorort', + 'zgvdoktordatum', + 'zgvdoktornation', + 'aufnahmegruppe_kurzbz', + 'priorisierung', + 'foerderrelevant', + 'zgv_erfuellt', + 'zgvmas_erfuellt', + 'zgvdoktor_erfuellt', + 'mentor', + 'aufnahmeschluessel', + 'standort_code' + ]; + +/* foreach ($array_allowed_props_prestudent as $prop) + { + + + }*/ + +/* "insertamum": "2021-05-27 13:03:08", + "insertvon": "online", + "updateamum": "2022-10-10 15:37:31.903056", + "updatevon": "poeckl", "ext_id": null,*/ + + $update_prestudent = array(); + foreach ($array_allowed_props_prestudent as $prop) + { + $val = isset($deltaData[$prop]) ? $deltaData[$prop] : null; + if ($val !== null) { + $update_prestudent[$prop] = $val; + } + } +/* + var_dump("update Array"); + var_dump($update_prestudent);*/ + + + + if (count($update_prestudent) && $prestudent_id === null) { + $this->output->set_status_header(REST_Controller::HTTP_BAD_REQUEST); + // TODO(manu): phrase + return $this->outputJson("Kein/e PrestudentIn vorhanden!"); + } + + if (count($update_prestudent)) + { + $result = $this->PrestudentModel->update( + $prestudent_id, + $update_prestudent + ); + if (isError($result)) { + $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); + return $this->outputJson(getError($result)); + } + return $this->outputJsonSuccess(true); + } + + } + public function getBezeichnungZgv(){ $this->load->model('codex/Zgv_model', 'ZgvModel'); @@ -50,6 +158,30 @@ class Prestudent extends FHC_Controller $this->outputJson($result); } + public function getBezeichnungDZgv(){ + $this->load->model('codex/Zgvdoktor_model', 'ZgvdoktorModel'); + + $this->ZgvdoktorModel->addOrder('zgvdoktor_code'); + + $result = $this->ZgvdoktorModel->load(); + if (isError($result)) { + $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); + } + $this->outputJson($result); + } + + public function getBezeichnungMZgv(){ + $this->load->model('codex/Zgvmaster_model', 'ZgvmasterModel'); + + $this->ZgvmasterModel->addOrder('zgvmas_code'); + + $result = $this->ZgvmasterModel->load(); + if (isError($result)) { + $this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR); + } + $this->outputJson($result); + } + public function getAusbildung(){ $this->load->model('codex/Ausbildung_model', 'AusbildungModel'); @@ -87,6 +219,7 @@ class Prestudent extends FHC_Controller } public function getTypenStg(){ + //TODO(manu) hier soll bis.tbl_gsstudientyp herangezogen werden $this->load->model('organisation/Studiengangstyp_model', 'StudiengangstypModel'); $this->StudiengangstypModel->addOrder('typ'); diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js index e1c6a1ccd..7c79bf6b2 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js @@ -18,46 +18,89 @@ export default { }, data(){ return { + config: {}, data: [], listZgvs: [], + listZgvsmaster: [], + listZgvsdoktor: [], listStgs: [], listAusbildung: [], listAufmerksamdurch: [], listBerufe: [], listStgTyp: [], - listFoerderrelevant: [] + listFoerderrelevant: [], + initialFormData: {}, + deltaArray: [], + actionUpdate: false }; }, + watch: { + }, + methods: { - loadData(prestudent_id){ - console.log("prestudent_id: " + prestudent_id); - return CoreRESTClient.get('components/stv/Zusatzfelder/loadData/' + prestudent_id) - .then( - result => { - if(result) - this.data = result.data.retval; - else - { - this.data = []; - this.$fhcAlert.alertError('Keine Prestudent_id ' + prestudent_id + ' gefunden'); - } - return result; - } - ); - }, - updatePrestudent() { + loadPrestudent() { CoreRESTClient .get('components/stv/Prestudent/get/' + this.modelValue.prestudent_id) .then(result => result.data) .then(result => { this.data = result; - console.log(result); + //neue DataVariable um ein Delta der vorgenommenen Änderungen berechnen zu können + this.initialFormData = {...this.data}; }) .catch(this.$fhcAlert.handleSystemError); }, + updatePrestudent(){ + this.detectChanges(); + +/* this.$nextTick(() => { + + if (this.actionUpdate) { + console.log("Action");*/ + //todo(manu) checken, ob überhaupt eine Änderung vorgenommen wurde + CoreRESTClient.post('components/stv/Prestudent/updatePrestudent/' + this.modelValue.prestudent_id, + this.deltaArray + ).then(response => { + if (!response.data.error) { + this.$fhcAlert.alertSuccess('Speichern erfolgreich'); + this.deltaArray = []; + this.actionUpdate = false; + } else { + const errorData = response.data.retval; + Object.entries(errorData).forEach(entry => { + const [key, value] = entry; + this.$fhcAlert.alertError(value); + }); + } + }).catch(error => { + this.statusMsg = 'Error in Catch'; + this.$fhcAlert.alertError('Fehler bei Speicherroutine aufgetreten'); + }).finally(() => { + window.scrollTo(0, 0); + }); + +/* } else { + console.log("no action"); + } + });*/ + + + + }, + detectChanges() { + const delta = {}; + for (const key in this.data) { + if (this.data[key] !== this.initialFormData[key]) { + delta[key] = this.data[key]; + this.actionUpdate = true; + } + } + this.deltaArray.push(delta); + }, }, created() { - this.updatePrestudent(); + this.loadPrestudent(); + //initiale Daten nach dem Laden + //this.initialFormData = {...this.data}; CoreRESTClient .get('components/stv/Prestudent/getBezeichnungZGV') .then(result => CoreRESTClient.getData(result.data) || []) @@ -65,6 +108,20 @@ export default { this.listZgvs = result; }) .catch(this.$fhcAlert.handleSystemError); + CoreRESTClient + .get('components/stv/Prestudent/getBezeichnungMZGV') + .then(result => CoreRESTClient.getData(result.data) || []) + .then(result => { + this.listZgvsmaster = result; + }) + .catch(this.$fhcAlert.handleSystemError); + CoreRESTClient + .get('components/stv/Prestudent/getBezeichnungDZGV') + .then(result => CoreRESTClient.getData(result.data) || []) + .then(result => { + this.listZgvsdoktor = result; + }) + .catch(this.$fhcAlert.handleSystemError); CoreRESTClient .get('components/stv/Lists/getStgs') .then(result => CoreRESTClient.getData(result.data) || []) @@ -101,9 +158,21 @@ export default { }) .catch(this.$fhcAlert.handleSystemError); }, + mounted(){ + fetch('config/stv') + .then(result => result.json()) + .then(result => { + this.config = result; + console.log('Konfiguration geladen:', this.config); + }) + .catch(error => console.error('Fehler beim Laden der Konfiguration:', error)); + }, template: `
- + +
+ +
Zugangsvoraussetzungen für {{modelValue.nachname}} {{modelValue.vorname}} @@ -175,11 +244,11 @@ export default { - + {{nation.kurztext}}
+ +
+ + + + + + + + + + + +
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
@@ -249,6 +398,40 @@ export default { +
+ + + +
+ + +
+ + + + + +
+
- - - - - + +
+ + + +
+ + +
+ + +

- {{modelValue}} + + + + `