From 3318147ba00955827b057fc06b56a4db66698c13 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Wed, 27 Nov 2024 12:52:03 +0100 Subject: [PATCH] Start tab Abschlusspruefung, Table and Form with Dropdowns and default data --- .../api/frontend/v1/stv/Abschlusspruefung.php | 169 ++++++ .../api/frontend/v1/stv/Config.php | 4 + .../education/Abschlusspruefung_model.php | 57 ++ .../models/education/Akadgrad_model.php | 14 + application/models/education/Note_model.php | 14 + .../education/Pruefungsantritt_model.php | 14 + .../models/ressource/Mitarbeiter_model.php | 22 +- public/js/api/stv.js | 2 + public/js/api/stv/abschlusspruefung.js | 46 ++ .../Details/Abschlusspruefung.js | 18 + .../AbschlusspruefungList.js | 528 ++++++++++++++++++ system/phrasesupdate.php | 66 ++- 12 files changed, 950 insertions(+), 4 deletions(-) create mode 100644 application/controllers/api/frontend/v1/stv/Abschlusspruefung.php create mode 100644 application/models/education/Akadgrad_model.php create mode 100644 application/models/education/Note_model.php create mode 100644 application/models/education/Pruefungsantritt_model.php create mode 100644 public/js/api/stv/abschlusspruefung.js create mode 100644 public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung.js create mode 100644 public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/AbschlusspruefungList.js diff --git a/application/controllers/api/frontend/v1/stv/Abschlusspruefung.php b/application/controllers/api/frontend/v1/stv/Abschlusspruefung.php new file mode 100644 index 000000000..be9206f16 --- /dev/null +++ b/application/controllers/api/frontend/v1/stv/Abschlusspruefung.php @@ -0,0 +1,169 @@ + ['admin:r', 'assistenz:r'], + 'loadAbschlusspruefung' => ['admin:r', 'assistenz:r'], + 'addNewAbschlusspruefung' => ['admin:rw', 'assistenz:rw'], + 'updateAbschlusspruefung' => ['admin:rw', 'assistenz:rw'], + 'deleteAbschlusspruefung' => ['admin:rw', 'assistenz:rw'], + 'getTypenAbschlusspruefung' => ['admin:rw', 'assistenz:rw'], + 'getNoten' => ['admin:rw', 'assistenz:rw'], + 'getTypenAntritte' => ['admin:rw', 'assistenz:rw'], + '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'], + + ]); + + // Load Libraries + $this->load->library('VariableLib', ['uid' => getAuthUID()]); + $this->load->library('form_validation'); + + // Load language phrases + $this->loadPhrases([ + 'ui', + 'person', + 'abschlusspruefung' + ]); + + // Load models + $this->load->model('education/Abschlusspruefung_model', 'AbschlusspruefungModel'); + } + + public function getAbschlusspruefung($student_uid) + { + $result = $this->AbschlusspruefungModel->getAbschlusspruefungForPrestudent($student_uid); + + if (isError($result)) { + $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); + } + + $this->terminateWithSuccess((getData($result) ?: [])); + } + + public function loadAbschlusspruefung() + { + $abschlusspruefung_id = $this->input->post('id'); + $result = $this->AbschlusspruefungModel->loadWhere( + array('abschlusspruefung_id' => $abschlusspruefung_id) + ); + + if (isError($result)) { + $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); + } + + $this->terminateWithSuccess((getData($result) ?: [])); + } + + public function getTypenAbschlusspruefung() + { + $this->load->model('education/Pruefungstyp_model', 'PruefungstypModel'); + + $result = $this->PruefungstypModel->loadWhere( + array('abschluss' => true) + ); + $data = $this->getDataOrTerminateWithError($result); + + $this->terminateWithSuccess($data); + } + + public function getTypenAntritte() + { + $this->load->model('education/Pruefungsantritt_model', 'PruefungsantrittModel'); + + $result = $this->PruefungsantrittModel->load(); + $data = $this->getDataOrTerminateWithError($result); + + $this->terminateWithSuccess($data); + } + + public function getBeurteilungen() + { + $this->load->model('education/Abschlussbeurteilung_model', 'AbschlussbeurteilungModel'); + + $result = $this->AbschlussbeurteilungModel->load(); + $data = $this->getDataOrTerminateWithError($result); + + $this->terminateWithSuccess($data); + } + + public function getAkadGrade() + { + $studiengang_kz= $this->input->post('studiengang_kz'); + + + $this->load->model('education/Akadgrad_model', 'AkadgradModel'); + + $result = $this->AkadgradModel->loadWhere( + array('studiengang_kz' => $studiengang_kz) + ); + $data = $this->getDataOrTerminateWithError($result); + + $this->terminateWithSuccess($data); + } + + public function getTypStudiengang() + { + $studiengang_kz= $this->input->post('studiengang_kz'); + + + $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); + + $result = $this->StudiengangModel->loadWhere( + array('studiengang_kz' => $studiengang_kz) + ); + $data = $this->getDataOrTerminateWithError($result); + + $typStudiengang = current($data)->typ; + + $this->terminateWithSuccess($typStudiengang); + } + + public function getMitarbeiter($searchString) + { + $this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel'); + + $result = $this->MitarbeiterModel->searchMitarbeiter($searchString, 'mitAkadGrad'); + + if (isError($result)) { + $this->terminateWithError($result, self::ERROR_TYPE_GENERAL); + } + $this->terminateWithSuccess($result ?: []); + } + + public function getPruefer($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'); + + $this->NoteModel->addOrder('note', 'ASC'); + $result = $this->NoteModel->load(); + + if (isError($result)) { + $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL); + } + return $this->terminateWithSuccess(getData($result) ?: []); + } + +} diff --git a/application/controllers/api/frontend/v1/stv/Config.php b/application/controllers/api/frontend/v1/stv/Config.php index c28c49485..72058f001 100644 --- a/application/controllers/api/frontend/v1/stv/Config.php +++ b/application/controllers/api/frontend/v1/stv/Config.php @@ -97,6 +97,10 @@ class Config extends FHCAPI_Controller 'component' => './Stv/Studentenverwaltung/Details/Noten.js' ]; */ + $result['finalexam'] = [ + 'title' => $this->p->t('stv', 'tab_finalexam'), + 'component' => './Stv/Studentenverwaltung/Details/Abschlusspruefung.js' + ]; Events::trigger('stv_conf_student', function & () use (&$result) { return $result; diff --git a/application/models/education/Abschlusspruefung_model.php b/application/models/education/Abschlusspruefung_model.php index 268e786cb..d783e5a34 100644 --- a/application/models/education/Abschlusspruefung_model.php +++ b/application/models/education/Abschlusspruefung_model.php @@ -113,4 +113,61 @@ class Abschlusspruefung_model extends DB_Model return success($abschlusspruefungdata); } + + /** + * Gets data of an Abschlusspruefung + * @param $student_uid + * @return object + */ + public function getAbschlusspruefungForPrestudent($student_uid) + { + $qry = " + SELECT + exam.*, + CONCAT( + person_pruefer1.nachname || ' ', + person_pruefer1.vorname, + COALESCE(' ' || person_pruefer1.titelpre) + ) AS person_pruefer1, + CONCAT( + person_pruefer2.nachname || ' ', + person_pruefer2.vorname, + COALESCE(' ' || person_pruefer2.titelpre) + ) AS person_pruefer2, + CONCAT( + person_pruefer3.nachname || ' ', + person_pruefer3.vorname, + COALESCE(' ' || person_pruefer3.titelpre) + ) AS person_pruefer3, + CONCAT( + person_vorsitzender.nachname || ' ', + person_vorsitzender.vorname, + COALESCE(' ' || person_vorsitzender.titelpre) + ) AS person_vorsitzender, + TO_CHAR(datum::timestamp, 'DD.MM.YYYY') AS format_datum, + TO_CHAR(freigabedatum::timestamp, 'DD.MM.YYYY') AS format_freigabedatum, + TO_CHAR(sponsion::timestamp, 'DD.MM.YYYY') AS format_sponsion, + person_pruefer1.nachname as p1_nachname, + person_pruefer2.nachname as p2_nachname, + person_pruefer3.nachname as p3_nachname, + person_vorsitzender.nachname as vorsitz_nachname, + beurteilung.bezeichnung as beurteilung_bezeichnung + FROM + lehre.tbl_abschlusspruefung exam + JOIN lehre.tbl_pruefungstyp USING (pruefungstyp_kurzbz) + JOIN public.tbl_benutzer ben_vorsitzender ON (ben_vorsitzender.uid = vorsitz) + JOIN public.tbl_person person_vorsitzender ON (ben_vorsitzender.person_id = person_vorsitzender.person_id) + JOIN public.tbl_person person_pruefer1 ON (person_pruefer1.person_id = pruefer1) + LEFT JOIN public.tbl_person person_pruefer2 ON (person_pruefer2.person_id = pruefer2) + LEFT JOIN public.tbl_person person_pruefer3 ON (person_pruefer3.person_id = pruefer3) + JOIN lehre.tbl_abschlussbeurteilung beurteilung USING (abschlussbeurteilung_kurzbz) + WHERE student_uid = ? + ORDER BY datum DESC + "; + + return $this->execQuery($qry, array('student_uid' => $student_uid)); + + + } + } diff --git a/application/models/education/Akadgrad_model.php b/application/models/education/Akadgrad_model.php new file mode 100644 index 000000000..92762a525 --- /dev/null +++ b/application/models/education/Akadgrad_model.php @@ -0,0 +1,14 @@ +dbTable = 'lehre.tbl_akadgrad'; + $this->pk = 'akadgrad_id'; + } +} \ No newline at end of file diff --git a/application/models/education/Note_model.php b/application/models/education/Note_model.php new file mode 100644 index 000000000..80b454398 --- /dev/null +++ b/application/models/education/Note_model.php @@ -0,0 +1,14 @@ +dbTable = 'lehre.tbl_note'; + $this->pk = 'note'; + } +} \ No newline at end of file diff --git a/application/models/education/Pruefungsantritt_model.php b/application/models/education/Pruefungsantritt_model.php new file mode 100644 index 000000000..f22633117 --- /dev/null +++ b/application/models/education/Pruefungsantritt_model.php @@ -0,0 +1,14 @@ +dbTable = 'lehre.tbl_abschlusspruefung_antritt'; + $this->pk = 'pruefungsantritt_kurzbz'; + } +} \ No newline at end of file diff --git a/application/models/ressource/Mitarbeiter_model.php b/application/models/ressource/Mitarbeiter_model.php index c38fcf054..40496f2ec 100644 --- a/application/models/ressource/Mitarbeiter_model.php +++ b/application/models/ressource/Mitarbeiter_model.php @@ -217,12 +217,28 @@ class Mitarbeiter_model extends DB_Model return success($kurzbz); } - public function searchMitarbeiter($filter) + /** + * Search function for mitarbeiter + * @param $filter searchstring: searches for nachname, vorname, mitarbeiter_uid + * $param $mode gives the resultobject in different version: + * null : "[mitarbeiter_uid], Nachname, Vorname, (mitarbeiter_uid)" + * 'mitAkadGrad': "[mitarbeiter_uid], Nachname, Vorname, Titelpre, Titelpost (mitarbeiter_uid)" + * 'ohneMaUid' : "[mitarbeiter_uid], Nachname, Vorname, Titelpre, Titelpost" + * @return object in 3 versions + */ + public function searchMitarbeiter($filter, $mode=null) { $filter = strtoLower($filter); + + if ($mode == "mitAkadGrad") + $returnwert = "ma.mitarbeiter_uid, CONCAT(p.nachname, ' ', p.vorname, ' ', p.titelpost, ' ', p.titelpre, ' (', ma.mitarbeiter_uid , ')') as mitarbeiter"; + elseif ($mode == "ohneMaUid") + $returnwert = "ma.mitarbeiter_uid, CONCAT(p.nachname, ' ', p.vorname, ' ', p.titelpost, ' ', p.titelpre) as mitarbeiter"; + else + $returnwert = "ma.mitarbeiter_uid, CONCAT(p.nachname, ' ', p.vorname, ' (', ma.mitarbeiter_uid , ')') as mitarbeiter"; + $qry = " - SELECT - ma.mitarbeiter_uid, CONCAT(p.nachname, ' ', p.vorname, ' (', ma.mitarbeiter_uid , ')') as mitarbeiter + SELECT " . $returnwert . " FROM public.tbl_mitarbeiter ma JOIN diff --git a/public/js/api/stv.js b/public/js/api/stv.js index 14fcc6661..801282164 100644 --- a/public/js/api/stv.js +++ b/public/js/api/stv.js @@ -2,12 +2,14 @@ import verband from './stv/verband.js'; import students from './stv/students.js'; import filter from './stv/filter.js'; import konto from './stv/konto.js'; +import abschlusspruefung from './stv/abschlusspruefung.js'; export default { verband, students, filter, konto, + abschlusspruefung, configStudent() { return this.$fhcApi.get('api/frontend/v1/stv/config/student'); }, diff --git a/public/js/api/stv/abschlusspruefung.js b/public/js/api/stv/abschlusspruefung.js new file mode 100644 index 000000000..dfba86bf1 --- /dev/null +++ b/public/js/api/stv/abschlusspruefung.js @@ -0,0 +1,46 @@ +export default { + + getAbschlusspruefung (url, config, params){ + return this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/' + params.id); + }, + addNewAbschlusspruefung(id, data) { + return this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/addNewAbschlusspruefung/' + id, + data + ); + }, + loadAbschlusspruefung(id){ + return this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/', {id}); + }, + updateAbschlusspruefung(id, data) { + return this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/' + id, + data + ); + }, + deleteAbschlusspruefung(id){ + return this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/', {id}); + }, + getTypenAbschlusspruefung(){ + return this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/'); + }, + getTypenAntritte(){ + return this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/'); + }, + getBeurteilungen(){ + return this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/'); + }, + getAkadGrade(studiengang_kz){ + return this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getAkadGrade/', {studiengang_kz}); + }, + getTypStudiengang(studiengang_kz){ + return this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/', {studiengang_kz}); + }, + 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/'); + }, +} \ No newline at end of file diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung.js b/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung.js new file mode 100644 index 000000000..ef6635660 --- /dev/null +++ b/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung.js @@ -0,0 +1,18 @@ +import AbschlusspruefungList from "./Abschlusspruefung/AbschlusspruefungList.js"; + +export default { + components: { + AbschlusspruefungList + }, + props: { + modelValue: Object + }, + data(){ + return {} + }, + template: ` +
+ + +
` +}; \ No newline at end of file diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/AbschlusspruefungList.js b/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/AbschlusspruefungList.js new file mode 100644 index 000000000..750aaaa6c --- /dev/null +++ b/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/AbschlusspruefungList.js @@ -0,0 +1,528 @@ +import {CoreFilterCmpt} from "../../../../filter/Filter.js"; +import BsModal from "../../../../Bootstrap/Modal.js"; +import FormForm from '../../../../Form/Form.js'; +import FormInput from '../../../../Form/Input.js'; +import PvAutoComplete from "../../../../../../../index.ci.php/public/js/components/primevue/autocomplete/autocomplete.esm.min.js"; + + +export default { + components: { + CoreFilterCmpt, + BsModal, + FormForm, + FormInput, + PvAutoComplete + }, + props: { + student: Object + }, + data() { + return { + tabulatorOptions: { + ajaxURL: 'dummy', + ajaxRequestFunc: this.$fhcApi.factory.stv.abschlusspruefung.getAbschlusspruefung, + ajaxParams: () => { + return { + id: this.student.uid + }; + }, + ajaxResponse: (url, params, response) => response.data, + columns: [ + {title: "vorsitz", field: "vorsitz_nachname"}, + {title: "abschlussbeurteilung", field: "beurteilung_bezeichnung"}, + {title: "prueferIn1", field: "p1_nachname", visible: false}, + {title: "prueferIn2", field: "p2_nachname", visible: false}, + {title: "prueferIn3", field: "p3_nachname", visible: false}, + {title: "datum", field: "format_datum"}, + {title: "uhrzeit", field: "uhrzeit"}, + {title: "freigabe", field: "format_freigabedatum"}, + {title: "pruefungsantritt", field: "pruefungsantritt_kurzbz"}, + {title: "sponsion", field: "format_sponsion"}, + {title: "anmerkung", field: "anmerkung"}, + {title: "abschlusspruefung_id", field: "abschlusspruefung_id", visible: false}, + {title: "typ", field: "pruefungstyp_kurzbz", visible: false}, + + { + title: 'Aktionen', field: 'actions', + minWidth: 150, // Ensures Action-buttons will be always fully displayed + formatter: (cell, formatterParams, onRendered) => { + let container = document.createElement('div'); + container.className = "d-flex gap-2"; + + let button = document.createElement('button'); + button.className = 'btn btn-outline-secondary btn-action'; + button.innerHTML = ''; + button.title = this.$p.t('ui', 'bearbeiten'); + button.addEventListener('click', (event) => + this.actionEditAbschlusspruefung(cell.getData().abschlusspruefung_id) + ); + container.append(button); + + button = document.createElement('button'); + button.className = 'btn btn-outline-secondary btn-action'; + button.innerHTML = ''; + button.title = this.$p.t('ui', 'delete'); + button.addEventListener('click', () => + this.actionDeleteAbschlusspruefung(cell.getData().abschlusspruefung_id) + ); + container.append(button); + + //TODO(Manu) umbau auf dropdown? + //Prüfungsprotokoll, -zeugnis, -urkunde jeweils Deutsch und English + button = document.createElement('button'); + button.className = 'btn btn-outline-secondary btn-action'; + button.innerHTML = ''; + button.title = "Drucken"; + button.addEventListener('click', () => + this.actionPrintAbschlusspruefung(cell.getData().abschlusspruefung_id) + ); + container.append(button); + + return container; + }, + frozen: true + }, + ], + layout: 'fitDataFill', + layoutColumnsOnNewData: false, + height: 'auto', + selectable: true, + index: 'abschlusspruefung_id', + persistenceID: 'stv-details-finalexam' + }, + tabulatorEvents: [ + { + /* event: 'tableBuilt', + handler: async() => { + await this.$p.loadCategory(['global','person']); + + let cm = this.$refs.table.tabulator.columnManager; + + cm.getColumnByField('name').component.updateDefinition({ + title: this.$p.t('global', 'name') + }); + + cm.getColumnByField('typ').component.updateDefinition({ + title: this.$p.t('global', 'typ') + }); + cm.getColumnByField('anschrift').component.updateDefinition({ + title: this.$p.t('person', 'anschrift') + }); + cm.getColumnByField('kontonr').component.updateDefinition({ + title: this.$p.t('person', 'kontonr') + }); + cm.getColumnByField('blz').component.updateDefinition({ + title: this.$p.t('person', 'blz') + }); + cm.getColumnByField('verrechnung').component.updateDefinition({ + title: this.$p.t('person', 'verrechnung') + }); + cm.getColumnByField('person_id').component.updateDefinition({ + title: this.$p.t('person', 'person_id') + }); + cm.getColumnByField('abschlusspruefung_id').component.updateDefinition({ + title: this.$p.t('ui', 'abschlusspruefung_id') + });*/ + /* cm.getColumnByField('actions').component.updateDefinition({ + title: this.$p.t('global', 'aktionen') + });*/ + } + ], + lastSelected: null, + formData: { + typStg: null, + pruefungstyp_kurzbz: null, + akadgrad_id: null + }, + statusNew: true, + arrTypen: [], + arrAntritte: [], + arrBeurteilungen: [], + arrAkadGrad: [], + arrNoten: [], + filteredMitarbeiter: [], + filteredPruefer: [], + abortController: { + mitarbeiter: null, + pruefer: null + } + } + }, + methods: { + actionNewAbschlusspruefung() { + this.resetForm(); + this.statusNew = false; + }, + actionEditAbschlusspruefung(abschlusspruefung_id) { + this.statusNew = false; + console.log("action edit: ", abschlusspruefung_id); + this.loadAbschlusspruefung(abschlusspruefung_id).then(() => { + if (this.formData.abschlusspruefung_id){ + console.log("activate form?"); + } + }); + }, + actionDeleteAbschlusspruefung(abschlusspruefung_id) { + this.$fhcAlert + .confirmDelete() + .then(result => result + ? abschlusspruefung_id + : Promise.reject({handled: true})) + .then(this.deleteAbschlusspruefung) + .catch(this.$fhcAlert.handleSystemError); + }, + addNewAbschlusspruefung(formData) { + this.formData.plz = this.formData.address.plz; + return this.$refs.formData.factory.stv.abschlusspruefung.addNewAbschlusspruefung(this.uid, this.formData) + .then(response => { + this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave')); + this.resetForm(); + }).catch(this.$fhcAlert.handleSystemError) + .finally(() => { + //window.scrollTo(0, 0); + this.reload(); + }); + }, + reload() { + this.$refs.table.reloadTable(); + }, + loadAbschlusspruefung(abschlusspruefung_id) { + this.statusNew = false; + return this.$fhcApi.factory.stv.abschlusspruefung.loadAbschlusspruefung(abschlusspruefung_id) + .then(result => { + this.formData = result.data; + return result; + }) + .catch(this.$fhcAlert.handleSystemError); + }, + updateAbschlusspruefung(abschlusspruefung_id) { + this.formData.plz = this.formData.address.plz; + return this.$refs.formData.factory.stv.abschlusspruefung.updateAbschlusspruefung(abschlusspruefung_id, + this.formData + ).then(response => { + this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave')); + this.hideModal('adressModal'); + this.resetForm(); + }).catch(this.$fhcAlert.handleSystemError) + .finally(() => { + //window.scrollTo(0, 0); + this.reload(); + }); + }, + deleteAbschlusspruefung(abschlusspruefung_id) { + return this.$fhcApi.factory.stv.abschlusspruefung.deleteAbschlusspruefung(abschlusspruefung_id) + .then(response => { + this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete')); + }).catch(this.$fhcAlert.handleSystemError) + .finally(()=> { + window.scrollTo(0, 0); + this.reload(); + }); + }, + resetForm() { + this.formData = {}; + this.statusNew = true; + }, + search(event) { + if (this.abortController.mitarbeiter) { + this.abortController.mitarbeiter.abort(); + } + this.abortController.mitarbeiter = new AbortController(); + + return this.$refs.formData.factory.stv.abschlusspruefung.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.$refs.formData.factory.stv.abschlusspruefung.getPruefer(event.query) + .then(result => { + this.filteredPruefer = result.data.retval; + }); + }, + setDefaultFormData(){ + + //TODO(Manu) check why phrasen not working + //check lg: if no prüfungsnotizen + if (this.formData.typStg === 'b') + { + this.formData.pruefungstyp_kurzbz = 'Bachelor'; + this.formData.protokoll = this.$p.t('abschlusspruefung', 'pruefungsnotizenBachelor'); + this.formData.protokoll = this.$p.t('ui', 'pruefungsnotizenMaster'); + } + if (this.formData.typStg === 'd'){ + this.formData.pruefungstyp_kurzbz = 'Diplom'; + this.formData.protokoll = this.$p.t('abschlusspruefung', 'pruefungsnotizenBachelor'); + } + if (this.formData.typStg === 'lg') + { + this.formData.pruefungstyp_kurzbz = 'lgabschluss'; + } + // else + // console.log("no Typ??"); + + if (!this.formData.akadgrad_id && this.arrAkadGrad.length > 0) { + console.log("in here"); + this.formData.akadgrad_id = this.arrAkadGrad[0].akadgrad_id; + } + } + }, + created() { + this.$fhcApi.factory.stv.abschlusspruefung.getTypenAbschlusspruefung() + .then(result => { + this.arrTypen = result.data; + }) + .catch(this.$fhcAlert.handleSystemError); + this.$fhcApi.factory.stv.abschlusspruefung.getTypenAntritte() + .then(result => { + this.arrAntritte = result.data; + }) + .catch(this.$fhcAlert.handleSystemError); + this.$fhcApi.factory.stv.abschlusspruefung.getBeurteilungen() + .then(result => { + this.arrBeurteilungen = result.data; + }) + .catch(this.$fhcAlert.handleSystemError); + this.$fhcApi.factory.stv.abschlusspruefung.getNoten() + .then(result => { + this.arrNoten = result.data; + }) + .catch(this.$fhcAlert.handleSystemError); + this.$fhcApi.factory.stv.abschlusspruefung.getAkadGrade(this.student.studiengang_kz) + .then(result => { + this.arrAkadGrad = result.data; + }) + .catch(this.$fhcAlert.handleSystemError); + this.$fhcApi.factory.stv.abschlusspruefung.getTypStudiengang(this.student.studiengang_kz) + .then(result => { + this.formData.typStg = result.data; + this.setDefaultFormData(); + }) + .catch(this.$fhcAlert.handleSystemError); + }, + template: ` +
+

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

+ + + + + + {{this.$p.t('global','details')}} +
+ + + + + + +
+ +
+ + + + +
+ +
+ + + + +
+ +
+ + + + + + +
+ +
+ + + + + +
+ +
+ + + + +
+ +
+ + + + +
+ +
+ + +
+ +
+ +
+ + + +`} \ No newline at end of file diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index d9a72eaac..d53cc54aa 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -9031,6 +9031,50 @@ Question(s) to open the examination interview Reasons for failing OR any possible explanatory notes on a passing grade << Please fill out >> +Any unusual occurrences +<< Please fill out >>', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'ui', + 'phrase' => 'pruefungsnotizenBachelor2', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Prüfungsteil/e in Englisch (Optional - entsprechend der Vorgabe des Studiengangs): +<< Nichtzutreffendes löschen >> +* Präsentation der Bachelorarbeit +* Prüfungsgespräch über die Bachelorarbeit + +Fragen zur Eröffnung des Prüfungsgesprächs +<< Bitte ausfüllen >> + +Gründe für negative Beurteilung ODER allfällige Anmerkungen bei positiver Beurteilung +<< Bitte ausfüllen >> + +Allfällige besondere Vorkommnisse +<< Bitte ausfüllen >>', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Parts of the examination held in English (Optional - in line with the degree program\'s guidelines): +<< Delete as appropriate >> +* Presentation of the Bachelor Paper +* Examination interview on the Bachelor Paper + +Question(s) to open the examination interview +<< Please fill out >> + +Reasons for failing OR any possible explanatory notes on a passing grade +<< Please fill out >> + Any unusual occurrences << Please fill out >>', 'description' => '', @@ -31165,7 +31209,27 @@ array( 'insertvon' => 'system' ) ) - ) + ), + array( + 'app' => 'core', + 'category' => 'stv', + 'phrase' => 'tab_finalexam', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Abschlussprüfung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Final exam', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), );