From fa97116ec45e0d4042b500310a693f51aec51bdd Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Wed, 30 Jul 2025 18:08:04 +0200 Subject: [PATCH] replace backend var semester_aktuell with api parameter in grades, student and status endpoints, adapt old and new js api definitions, adapt frontend, add validation method to studiensemester_model --- .../api/frontend/v1/stv/Grades.php | 46 ++++++++++++------- .../api/frontend/v1/stv/Status.php | 11 +++-- .../api/frontend/v1/stv/Student.php | 20 +++++--- application/libraries/PrestudentLib.php | 9 +--- .../organisation/Studiensemester_model.php | 6 +++ public/js/api/factory/stv/details.js | 14 ++++-- public/js/api/factory/stv/grades.js | 35 +++++++++----- public/js/api/factory/stv/prestudent.js | 7 ++- public/js/api/stv/details.js | 18 +++++--- public/js/api/stv/grades.js | 38 ++++++++++----- public/js/api/stv/prestudent.js | 9 +++- .../Studentenverwaltung/Details/Details.js | 12 ++++- .../Details/Noten/Repeater.js | 8 +++- .../Details/Noten/Teacher.js | 8 +++- .../Details/Noten/Zeugnis.js | 19 ++++++-- .../Details/Noten/Zeugnis/Actions.js | 17 +++++-- .../Details/Noten/Zeugnis/Documents.js | 1 + .../Studentenverwaltung/Details/Prestudent.js | 7 +-- .../Details/Status/Dropdown.js | 5 ++ 19 files changed, 205 insertions(+), 85 deletions(-) diff --git a/application/controllers/api/frontend/v1/stv/Grades.php b/application/controllers/api/frontend/v1/stv/Grades.php index 61d797495..dd8f53a27 100644 --- a/application/controllers/api/frontend/v1/stv/Grades.php +++ b/application/controllers/api/frontend/v1/stv/Grades.php @@ -74,14 +74,15 @@ class Grades extends FHCAPI_Controller * (Entries in lehre.tbl_zeugnisnote) * * @param string $prestudent_id - * @param string|null $all (optional) If null only the current semesters grades will be loaded, otherwise all semesters grades will be loaded. + * @param string|null $studiensemester_kurzbz If studiensemester_kurzbz only this semesters grades will be loaded, otherwise all semesters grades will be loaded. * * @return void */ - public function getCertificate($prestudent_id, $all = null) + public function getCertificate($prestudent_id, $studiensemester_kurzbz = null) { $this->load->model('crm/Student_model', 'StudentModel'); $this->load->model('education/Zeugnisnote_model', 'ZeugnisnoteModel'); + $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); $result = $this->StudentModel->loadWhere([ 'prestudent_id' => $prestudent_id @@ -91,12 +92,13 @@ class Grades extends FHCAPI_Controller if (!$student) $this->terminateWithSuccess([]); - $student_uid = current($student)->student_uid; - $studiensemester_kurzbz = ($all === null) ? $this->variablelib->getVar('semester_aktuell') : null; + if ($studiensemester_kurzbz !== null && !$this->StudiensemesterModel->isValidStudiensemester($studiensemester_kurzbz)) + { + $this->terminateWithError($studiensemester_kurzbz . ' - ' . $this->p->t('lehre', 'error_noStudiensemester')); + } - $result = $this->ZeugnisnoteModel->getZeugnisnoten($student_uid, $studiensemester_kurzbz); $grades = $this->getDataOrTerminateWithError($result); @@ -109,14 +111,15 @@ class Grades extends FHCAPI_Controller * (Entries in campus.tbl_lvgesamtnote) * * @param string $prestudent_id - * @param string|null $all (optional) If null only the current semesters grades will be loaded, otherwise all semesters grades will be loaded. + * @param string|null $studiensemester_kurzbz If studiensemester_kurzbz only this semesters grades will be loaded, otherwise all semesters grades will be loaded. * * @return void */ - public function getTeacherProposal($prestudent_id, $all = null) + public function getTeacherProposal($prestudent_id, $studiensemester_kurzbz = null) { $this->load->model('crm/Student_model', 'StudentModel'); $this->load->model('education/Lvgesamtnote_model', 'LvgesamtnoteModel'); + $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); $result = $this->StudentModel->loadWhere([ 'prestudent_id' => $prestudent_id @@ -129,9 +132,11 @@ class Grades extends FHCAPI_Controller $student_uid = current($student)->student_uid; - $studiensemester_kurzbz = ($all === null) ? $this->variablelib->getVar('semester_aktuell') : null; + if ($studiensemester_kurzbz !== null && !$this->StudiensemesterModel->isValidStudiensemester($studiensemester_kurzbz)) + { + $this->terminateWithError($studiensemester_kurzbz . ' - ' . $this->p->t('lehre', 'error_noStudiensemester')); + } - $result = $this->LvgesamtnoteModel->getLvGesamtNoten(null, $student_uid, $studiensemester_kurzbz); $grades = $this->getDataOrTerminateWithError($result); @@ -144,17 +149,20 @@ class Grades extends FHCAPI_Controller * or as not allowed because of the repeating of a semester. * * @param string $prestudent_id - * @param string|null $all (optional) If null only the current semesters grades will be loaded, otherwise all semesters grades will be loaded. + * @param string|false $studiensemester_kurzbz If studiensemester_kurzbz only this semesters grades will be loaded, otherwise all semesters grades will be loaded. * * @return void */ - public function getRepeaterGrades($prestudent_id, $all = null) + public function getRepeaterGrades($prestudent_id, $studiensemester_kurzbz = false) { + $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); $this->load->library('AntragLib'); - $studiensemester_kurzbz = ($all === null) ? $this->variablelib->getVar('semester_aktuell') : false; + if ($studiensemester_kurzbz !== false && !$this->StudiensemesterModel->isValidStudiensemester($studiensemester_kurzbz)) + { + $this->terminateWithError($studiensemester_kurzbz . ' - ' . $this->p->t('lehre', 'error_noStudiensemester')); + } - $result = $this->antraglib->getLvsForPrestudent($prestudent_id, $studiensemester_kurzbz); $grades = $this->getDataOrTerminateWithError($result); @@ -456,13 +464,19 @@ class Grades extends FHCAPI_Controller $this->form_validation->set_rules("lehrveranstaltung_id", $this->p->t('lehre', 'lehrveranstaltung'), "required|integer"); $this->form_validation->set_rules("points", $this->p->t("stv", "grades_points"), "required|numeric"); + $this->form_validation->set_rules("studiensemester_kurzbz", $this->p->t("lehre", "studiensemester"), "required|regex_match[/^[WS]S[0-9]{4}$/]"); if (!$this->form_validation->run()) $this->terminateWithValidationErrors($this->form_validation->error_array()); - - $this->load->model('education/Notenschluesselaufteilung_model', 'NotenschluesselaufteilungModel'); - $studiensemester_kurzbz = $this->variablelib->getVar('semester_aktuell'); + $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); + $studiensemester_kurzbz = $this->input->post('studiensemester_kurzbz'); + if (!$this->StudiensemesterModel->isValidStudiensemester($studiensemester_kurzbz)) + { + $this->terminateWithError($studiensemester_kurzbz . ' - ' . $this->p->t('lehre', 'error_noStudiensemester')); + } + + $this->load->model('education/Notenschluesselaufteilung_model', 'NotenschluesselaufteilungModel'); $result = $this->NotenschluesselaufteilungModel->getNote( $this->input->post('points'), diff --git a/application/controllers/api/frontend/v1/stv/Status.php b/application/controllers/api/frontend/v1/stv/Status.php index fcc8007cd..629d5512a 100644 --- a/application/controllers/api/frontend/v1/stv/Status.php +++ b/application/controllers/api/frontend/v1/stv/Status.php @@ -30,6 +30,7 @@ class Status extends FHCAPI_Controller //Load Models $this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel'); $this->load->model('person/Person_model', 'PersonModel'); + $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); // Load Libraries $this->load->library('VariableLib', ['uid' => getAuthUID()]); @@ -189,9 +190,13 @@ class Status extends FHCAPI_Controller $studiensemester_kurzbz = $lastStatusData->studiensemester_kurzbz; if ($status_kurzbz == Prestudentstatus_model::STATUS_ABSOLVENT || $status_kurzbz == Prestudentstatus_model::STATUS_DIPLOMAND - ) { - $this->load->library('VariableLib', ['uid' => getAuthUID()]); - $studiensemester_kurzbz = $this->variablelib->getVar('semester_aktuell'); + ) + { + $studiensemester_kurzbz = $this->input->post('currentSemester'); + if (!$this->StudiensemesterModel->isValidStudiensemester($studiensemester_kurzbz)) + { + $this->terminateWithError($studiensemester_kurzbz . ' - ' . $this->p->t('lehre', 'error_noStudiensemester')); + } } $ausbildungssemester = $lastStatusData->ausbildungssemester; diff --git a/application/controllers/api/frontend/v1/stv/Student.php b/application/controllers/api/frontend/v1/stv/Student.php index deafb7762..784227ae0 100644 --- a/application/controllers/api/frontend/v1/stv/Student.php +++ b/application/controllers/api/frontend/v1/stv/Student.php @@ -68,12 +68,14 @@ class Student extends FHCAPI_Controller * @param string $prestudent_id * @return void */ - public function get($prestudent_id) + public function get($prestudent_id, $studiensemester_kurzbz) { - $studiensemester_kurzbz = $this->variablelib->getVar('semester_aktuell'); - - $this->load->model('crm/Prestudent_model', 'PrestudentModel'); + $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); + if (!$this->StudiensemesterModel->isValidStudiensemester($studiensemester_kurzbz)) + { + $this->terminateWithError($studiensemester_kurzbz . ' - ' . $this->p->t('lehre', 'error_noStudiensemester')); + } $this->PrestudentModel->addSelect('p.person_id'); $this->PrestudentModel->addSelect('p.titelpre'); @@ -163,21 +165,25 @@ class Student extends FHCAPI_Controller * @param string $prestudent_id * @return void */ - public function save($prestudent_id) + public function save($prestudent_id, $studiensemester_kurzbz) { $this->load->model('person/Person_model', 'PersonModel'); $this->load->model('person/Benutzer_model', 'BenutzerModel'); $this->load->model('crm/Student_model', 'StudentModel'); $this->load->model('crm/Prestudent_model', 'PrestudentModel'); $this->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel'); + $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); $this->load->library('form_validation'); + if (!$this->StudiensemesterModel->isValidStudiensemester($studiensemester_kurzbz)) + { + $this->terminateWithError($studiensemester_kurzbz . ' - ' . $this->p->t('lehre', 'error_noStudiensemester')); + } + $authuid = getAuthUID(); $now = date('c'); - $studiensemester_kurzbz = $this->variablelib->getVar('semester_aktuell'); - $this->form_validation->set_rules('gebdatum', 'Geburtsdatum', 'is_valid_date'); $this->form_validation->set_rules('semester', 'Semester', 'integer'); diff --git a/application/libraries/PrestudentLib.php b/application/libraries/PrestudentLib.php index ef5e2e3a9..2d795369f 100644 --- a/application/libraries/PrestudentLib.php +++ b/application/libraries/PrestudentLib.php @@ -500,11 +500,6 @@ class PrestudentLib $student = current(getData($result)); - - $this->_ci->load->library('VariableLib', ['uid' => $authUID]); - $semester_aktuell = $this->_ci->variablelib->getVar('semester_aktuell'); - - // Update Aktionen // Status updaten @@ -545,8 +540,8 @@ class PrestudentLib // Studentlehrverband updaten $result = $this->_ci->StudentlehrverbandModel->update([ 'student_uid' => $student->student_uid, - 'studiensemester_kurzbz' => $semester_aktuell - ], [ + 'studiensemester_kurzbz' => $studiensemester_kurzbz + ], [ 'semester' => $ausbildungssemester, 'verband' => '', 'gruppe' => '', diff --git a/application/models/organisation/Studiensemester_model.php b/application/models/organisation/Studiensemester_model.php index f29ab223c..5fa6ffb14 100644 --- a/application/models/organisation/Studiensemester_model.php +++ b/application/models/organisation/Studiensemester_model.php @@ -341,4 +341,10 @@ class Studiensemester_model extends DB_Model WHERE studiensemester_kurzbz = ?",[$studiensemester_kurzbz]); } + + public function isValidStudiensemester($studiensemester_kurzbz) + { + $result = $this->load($studiensemester_kurzbz); + return hasData($result); + } } diff --git a/public/js/api/factory/stv/details.js b/public/js/api/factory/stv/details.js index 282b0003e..1077de22d 100644 --- a/public/js/api/factory/stv/details.js +++ b/public/js/api/factory/stv/details.js @@ -16,16 +16,22 @@ */ export default { - get(prestudent_id) { + get(prestudent_id, studiensemester_kurzbz) { return { method: 'post', - url: 'api/frontend/v1/stv/student/get/' + prestudent_id + url: 'api/frontend/v1/stv/student/get/' + + encodeURIComponent(prestudent_id) + + '/' + + encodeURIComponent(studiensemester_kurzbz) }; }, - save(prestudent_id, params) { + save(prestudent_id, studiensemester_kurzbz, params) { return { method: 'post', - url: 'api/frontend/v1/stv/student/save/' + prestudent_id, + url: 'api/frontend/v1/stv/student/save/' + + encodeURIComponent(prestudent_id) + + '/' + + encodeURIComponent(studiensemester_kurzbz), params }; }, diff --git a/public/js/api/factory/stv/grades.js b/public/js/api/factory/stv/grades.js index ea0d025eb..c42d202e3 100644 --- a/public/js/api/factory/stv/grades.js +++ b/public/js/api/factory/stv/grades.js @@ -22,25 +22,34 @@ export default { url: 'api/frontend/v1/stv/grades/list' }; }, - getCertificate(prestudent_id, all) { - all = all ? '/all' : ''; + getCertificate(prestudent_id, studiensemester_kurzbz) { + let url = 'api/frontend/v1/stv/grades/getCertificate/' + encodeURIComponent(prestudent_id); + if (!!studiensemester_kurzbz) { + url = url + '/' + encodeURIComponent(studiensemester_kurzbz); + } return { method: 'get', - url: 'api/frontend/v1/stv/grades/getCertificate/' + prestudent_id + all + url: url }; }, - getTeacherProposal(prestudent_id, all) { - all = all ? '/all' : ''; + getTeacherProposal(prestudent_id, studiensemester_kurzbz) { + let url = 'api/frontend/v1/stv/grades/getTeacherProposal/' + encodeURIComponent(prestudent_id); + if (!!studiensemester_kurzbz) { + url = url + '/' + encodeURIComponent(studiensemester_kurzbz); + } return { method: 'get', - url: 'api/frontend/v1/stv/grades/getTeacherProposal/' + prestudent_id + all + url: url }; }, - getRepeaterGrades(prestudent_id, all) { - all = all ? '/all' : ''; + getRepeaterGrades(prestudent_id, studiensemester_kurzbz) { + let url = 'api/frontend/v1/stv/grades/getRepeaterGrades/' + encodeURIComponent(prestudent_id); + if (!!studiensemester_kurzbz) { + url = url + '/' + encodeURIComponent(studiensemester_kurzbz); + } return { method: 'get', - url: 'api/frontend/v1/stv/grades/getRepeaterGrades/' + prestudent_id + all + url: url }; }, updateCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, note, lehrveranstaltung_bezeichnung}) { @@ -86,11 +95,15 @@ export default { } }; }, - getGradeFromPoints(points, lehrveranstaltung_id) { + getGradeFromPoints(points, lehrveranstaltung_id, studiensemester_kurzbz) { return { method: 'post', url: 'api/frontend/v1/stv/grades/getGradeFromPoints', - params: { points, lehrveranstaltung_id } + params: { + "points": points, + "lehrveranstaltung_id": lehrveranstaltung_id, + "studiensemester_kurzbz": studiensemester_kurzbz + } }; } }; \ No newline at end of file diff --git a/public/js/api/factory/stv/prestudent.js b/public/js/api/factory/stv/prestudent.js index a49dd1d7a..0112ff49b 100644 --- a/public/js/api/factory/stv/prestudent.js +++ b/public/js/api/factory/stv/prestudent.js @@ -17,10 +17,13 @@ export default { //------------- Prestudent.js------------------------------------------------------ - get(prestudent_id) { + get(prestudent_id, studiensemester_kurzbz) { return { method: 'post', - url: 'api/frontend/v1/stv/prestudent/get/' + prestudent_id + url: 'api/frontend/v1/stv/prestudent/get/' + + encodeURIComponent(prestudent_id) + + '/' + + encodeURIComponent(studiensemester_kurzbz) }; }, updatePrestudent(prestudent_id, params) { diff --git a/public/js/api/stv/details.js b/public/js/api/stv/details.js index a56de9494..501204c08 100644 --- a/public/js/api/stv/details.js +++ b/public/js/api/stv/details.js @@ -1,10 +1,16 @@ export default { - get(prestudent_id) { - return this.$fhcApi.post('api/frontend/v1/stv/student/get/' + prestudent_id); + get(prestudent_id, studiensemester_kurzbz) { + let url = 'api/frontend/v1/stv/student/get/' + + encodeURIComponent(prestudent_id) + + '/' + + encodeURIComponent(studiensemester_kurzbz); + return this.$fhcApi.post(url); }, - save(form, prestudent_id, data) { - return this.$fhcApi.post(form, 'api/frontend/v1/stv/student/save/' + prestudent_id, - data - ); + save(form, prestudent_id, studiensemester_kurzbz, data) { + let url = 'api/frontend/v1/stv/student/save/' + + encodeURIComponent(prestudent_id) + + '/' + + encodeURIComponent(studiensemester_kurzbz); + return this.$fhcApi.post(form, url, data); }, } diff --git a/public/js/api/stv/grades.js b/public/js/api/stv/grades.js index 135cd836c..625c3f8e3 100644 --- a/public/js/api/stv/grades.js +++ b/public/js/api/stv/grades.js @@ -2,17 +2,26 @@ export default { list() { return this.$fhcApi.get('api/frontend/v1/stv/grades/list'); }, - getCertificate(prestudent_id, all) { - all = all ? '/all' : ''; - return this.$fhcApi.get('api/frontend/v1/stv/grades/getCertificate/' + prestudent_id + all); + getCertificate(prestudent_id, studiensemester_kurzbz) { + let url = 'api/frontend/v1/stv/grades/getCertificate/' + encodeURIComponent(prestudent_id); + if (!!studiensemester_kurzbz) { + url = url + '/' + encodeURIComponent(studiensemester_kurzbz); + } + return this.$fhcApi.get(url); }, - getTeacherProposal(prestudent_id, all) { - all = all ? '/all' : ''; - return this.$fhcApi.get('api/frontend/v1/stv/grades/getTeacherProposal/' + prestudent_id + all); + getTeacherProposal(prestudent_id, studiensemester_kurzbz) { + let url = 'api/frontend/v1/stv/grades/getTeacherProposal/' + encodeURIComponent(prestudent_id); + if (!!studiensemester_kurzbz) { + url = url + '/' + encodeURIComponent(studiensemester_kurzbz); + } + return this.$fhcApi.get(url); }, - getRepeaterGrades(prestudent_id, all) { - all = all ? '/all' : ''; - return this.$fhcApi.get('api/frontend/v1/stv/grades/getRepeaterGrades/' + prestudent_id + all); + getRepeaterGrades(prestudent_id, studiensemester_kurzbz) { + let url = 'api/frontend/v1/stv/grades/getRepeaterGrades/' + encodeURIComponent(prestudent_id); + if (!!studiensemester_kurzbz) { + url = url + '/' + encodeURIComponent(studiensemester_kurzbz); + } + return this.$fhcApi.get(url); }, updateCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, note, lehrveranstaltung_bezeichnung}) { return this.$fhcApi.post( @@ -65,8 +74,15 @@ export default { } ); }, - getGradeFromPoints(points, lehrveranstaltung_id, manualErrorHandling) { + getGradeFromPoints(points, lehrveranstaltung_id, studiensemester_kurzbz, manualErrorHandling) { const config = manualErrorHandling ? {errorHandling: false} : {}; - return this.$fhcApi.post('api/frontend/v1/stv/grades/getGradeFromPoints', {points, lehrveranstaltung_id}, config); + return this.$fhcApi.post('api/frontend/v1/stv/grades/getGradeFromPoints', + { + "points": points, + "lehrveranstaltung_id": lehrveranstaltung_id, + "studiensemester_kurzbz": studiensemester_kurzbz + }, + config + ); } } \ No newline at end of file diff --git a/public/js/api/stv/prestudent.js b/public/js/api/stv/prestudent.js index 25b4c85ad..8b2a5255b 100644 --- a/public/js/api/stv/prestudent.js +++ b/public/js/api/stv/prestudent.js @@ -2,8 +2,13 @@ export default { //------------- Prestudent.js------------------------------------------------------ - get(prestudent_id){ - return this.$fhcApi.post('api/frontend/v1/stv/prestudent/get/' + prestudent_id); + get(prestudent_id, studiensemester_kurzbz) { + return this.$fhcApi.post( + 'api/frontend/v1/stv/prestudent/get/' + + encodeURIComponent(prestudent_id) + + '/' + + encodeURIComponent(studiensemester_kurzbz) + ); }, updatePrestudent(form, prestudent_id, data){ return this.$fhcApi.post(form, 'api/frontend/v1/stv/prestudent/updatePrestudent/' + prestudent_id, diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Details.js b/public/js/components/Stv/Studentenverwaltung/Details/Details.js index eacabccc0..45ee3bdd5 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Details.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Details.js @@ -41,6 +41,10 @@ export default { $reloadList: { from: '$reloadList', required: true + }, + currentSemester: { + from: 'currentSemester', + required: true } }, props: { @@ -101,7 +105,7 @@ export default { methods: { updateStudent(n) { return this.$api - .call(ApiStvDetails.get(n.prestudent_id)) + .call(ApiStvDetails.get(n.prestudent_id, this.currentSemester)) .then(result => { this.data = result.data; if (!this.data.familienstand) @@ -116,7 +120,11 @@ export default { this.$refs.form.clearValidation(); return this.$refs.form - .call(ApiStvDetails.save(this.modelValue.prestudent_id, this.changed)) + .call(ApiStvDetails.save( + this.modelValue.prestudent_id, + this.currentSemester, + this.changed + )) .then(result => { this.original = {...this.data}; this.changed = {}; diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Noten/Repeater.js b/public/js/components/Stv/Studentenverwaltung/Details/Noten/Repeater.js index ee70a721c..a4cfeaafb 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Noten/Repeater.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Noten/Repeater.js @@ -9,6 +9,12 @@ export default { emits: [ "copied" ], + inject: { + currentSemester: { + from: 'currentSemester', + required: true + } + }, props: { student: Object, allSemester: Boolean @@ -24,7 +30,7 @@ export default { ajaxURL: 'dummy', ajaxRequestFunc: () => this.$api.call(ApiStvGrades.getRepeaterGrades( this.student.prestudent_id, - this.allSemester + (!this.allSemester ? this.currentSemester : null) )), ajaxResponse: (url, params, response) => { return response.data || []; diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Noten/Teacher.js b/public/js/components/Stv/Studentenverwaltung/Details/Noten/Teacher.js index 171202163..4b0df9686 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Noten/Teacher.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Noten/Teacher.js @@ -9,6 +9,12 @@ export default { emits: [ "copied" ], + inject: { + currentSemester: { + from: 'currentSemester', + required: true + } + }, props: { student: Object, allSemester: Boolean @@ -24,7 +30,7 @@ export default { ajaxURL: 'dummy', ajaxRequestFunc: () => this.$api.call(ApiStvGrades.getTeacherProposal( this.student.prestudent_id, - this.allSemester + (!this.allSemester ? this.currentSemester : null) )), ajaxResponse: (url, params, response) => { return response.data || []; diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Noten/Zeugnis.js b/public/js/components/Stv/Studentenverwaltung/Details/Noten/Zeugnis.js index 81745897d..6ee4d0386 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Noten/Zeugnis.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Noten/Zeugnis.js @@ -5,14 +5,22 @@ import ZeugnisDocuments from './Zeugnis/Documents.js'; import ApiStvGrades from '../../../../../api/factory/stv/grades.js'; export default { + name: 'Zeugnis', components: { CoreFilterCmpt, ZeugnisActions, ZeugnisDocuments }, - inject: [ - 'config' - ], + inject: { + config: { + from: 'config', + required: true + }, + currentSemester: { + from: 'currentSemester', + required: true + } + }, props: { student: Object, allSemester: Boolean @@ -103,7 +111,8 @@ export default { .call( ApiStvGrades.getGradeFromPoints( filterTerm, - cell.getData().lehrveranstaltung_id + cell.getData().lehrveranstaltung_id, + this.currentSemester ), { errorHandling: false } ) @@ -201,7 +210,7 @@ export default { ajaxURL: 'dummy', ajaxRequestFunc: () => this.$api.call(ApiStvGrades.getCertificate( this.student.prestudent_id, - this.allSemester + (!this.allSemester ? this.currentSemester : null) )), ajaxResponse: (url, params, response) => { return response.data || []; diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Noten/Zeugnis/Actions.js b/public/js/components/Stv/Studentenverwaltung/Details/Noten/Zeugnis/Actions.js index 303098cf9..1ffa47a30 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Noten/Zeugnis/Actions.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Noten/Zeugnis/Actions.js @@ -5,6 +5,7 @@ import ZeugnisDocuments from './Documents.js'; import ApiStvGrades from '../../../../../../api/factory/stv/grades.js'; export default { + name: 'ZeugnisActions', components: { CoreForm, FormInput, @@ -14,9 +15,16 @@ export default { 'setGrade', 'deleteGrade' ], - inject: [ - 'config' - ], + inject: { + config: { + from: 'config', + required: true + }, + currentSemester: { + from: 'currentSemester', + required: true + } + }, props: { selected: Array }, @@ -66,7 +74,8 @@ export default { this.$refs.points .call(ApiStvGrades.getGradeFromPoints( query, - this.selected.find(Boolean)?.lehrveranstaltung_id + this.selected.find(Boolean)?.lehrveranstaltung_id, + this.currentSemester )) .then(result => { if (result.data === null) { diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Noten/Zeugnis/Documents.js b/public/js/components/Stv/Studentenverwaltung/Details/Noten/Zeugnis/Documents.js index ed27dc283..121efddbf 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Noten/Zeugnis/Documents.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Noten/Zeugnis/Documents.js @@ -8,6 +8,7 @@ async function callPermissionUrl($api, url) { } export default { + name: 'ZeugnisDocuments', components: { PvTieredMenu: primevue.tieredmenu }, diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js index a36b355b1..b73d2effc 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent.js @@ -30,8 +30,9 @@ export default { from: 'hasAdminPermission', default: false }, - defaultSemester: { - from: 'defaultSemester', + currentSemester: { + from: 'currentSemester', + required: true } }, props: { @@ -107,7 +108,7 @@ export default { methods: { loadPrestudent() { return this.$api - .call(ApiStvPrestudent.get(this.modelValue.prestudent_id)) + .call(ApiStvPrestudent.get(this.modelValue.prestudent_id, this.currentSemester)) .then(result => result.data) .then(result => { this.data = result; diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Status/Dropdown.js b/public/js/components/Stv/Studentenverwaltung/Details/Status/Dropdown.js index ab8f83fab..d72c36b7c 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Status/Dropdown.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Status/Dropdown.js @@ -14,6 +14,10 @@ export default { $reloadList: { from: '$reloadList', required: true + }, + currentSemester: { + from: 'currentSemester', + required: true } }, emits: [ @@ -242,6 +246,7 @@ export default { return askForSemester(); }, changeStatus(data) { + data.currentSemester = this.currentSemester; Promise .allSettled( this.prestudentIds.map(prestudent_id => this.$api.call(