From 1ff3f7b66dc3832b18b8e168748fa1955aada225 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Wed, 16 Jul 2025 11:41:23 +0200 Subject: [PATCH] Display current semester status in Detail Header - adapt function get - adapt functions getPrestudents, get Students, get Prestudent, getStudent, get Person - add Phrase Student auswaehlen --- .../api/frontend/v1/stv/Student.php | 17 ++++- .../api/frontend/v1/stv/Students.php | 68 ++++++++++++++++++- .../components/DetailHeader/DetailHeader.js | 4 +- .../Stv/Studentenverwaltung/Details.js | 2 +- system/phrasesupdate.php | 20 ++++++ 5 files changed, 105 insertions(+), 6 deletions(-) diff --git a/application/controllers/api/frontend/v1/stv/Student.php b/application/controllers/api/frontend/v1/stv/Student.php index d56736541..cb7dd9446 100644 --- a/application/controllers/api/frontend/v1/stv/Student.php +++ b/application/controllers/api/frontend/v1/stv/Student.php @@ -72,6 +72,7 @@ class Student extends FHCAPI_Controller { $studiensemester_kurzbz = $this->variablelib->getVar('semester_aktuell'); + $this->load->model('crm/Prestudent_model', 'PrestudentModel'); $this->PrestudentModel->addSelect('p.person_id'); @@ -109,6 +110,16 @@ class Student extends FHCAPI_Controller false ); } + $this->PrestudentModel->addSelect( + "( + SELECT status_kurzbz + FROM public.tbl_prestudentstatus pss + WHERE pss.prestudent_id = public.tbl_prestudent.prestudent_id + AND pss.studiensemester_kurzbz = " . $this->PrestudentModel->escape($studiensemester_kurzbz) . " + ORDER BY GREATEST(pss.datum, '0001-01-01') DESC + LIMIT 1 + ) AS statusofsemester" + ); $this->PrestudentModel->addJoin('public.tbl_student s', 'prestudent_id', 'LEFT'); $this->PrestudentModel->addJoin('public.tbl_benutzer b', 'student_uid = uid', 'LEFT'); @@ -118,14 +129,18 @@ class Student extends FHCAPI_Controller 'LEFT' ); $this->PrestudentModel->addJoin('public.tbl_person p', 'p.person_id = tbl_prestudent.person_id'); +/* $this->PrestudentModel->addJoin('public.tbl_prestudentstatus pss', 'pss.prestudent_id = tbl_prestudent.prestudent_id + AND pss.studiensemester_kurzbz = ' . $this->PrestudentModel->escape($studiensemester_kurzbz), + 'LEFT');*/ - $result = $this->PrestudentModel->loadWhere(['prestudent_id' => $prestudent_id]); + $result = $this->PrestudentModel->loadWhere(['tbl_prestudent.prestudent_id' => $prestudent_id]); $student = $this->getDataOrTerminateWithError($result); if (!$student) return show_404(); + $this->terminateWithSuccess(current($student)); } diff --git a/application/controllers/api/frontend/v1/stv/Students.php b/application/controllers/api/frontend/v1/stv/Students.php index 41c5fc613..13f69647e 100644 --- a/application/controllers/api/frontend/v1/stv/Students.php +++ b/application/controllers/api/frontend/v1/stv/Students.php @@ -70,7 +70,7 @@ class Students extends FHCAPI_Controller * /(studiengang_kz)/(org_form)/(semester)/(verband) => getStudents * /(studiengang_kz)/(org_form)/(semester)/(verband)/(gruppe) * => getStudents - * /uid/(student_uid) => getStudent + * /student/(student_uid) => getStudent * /prestudent/(prestudent_id) => getPrestudent * /person/(person_id) => getPerson * @@ -358,6 +358,18 @@ class Students extends FHCAPI_Controller $this->PrestudentModel->addSelect("'' AS gruppe"); $this->addSelectPrioRel(); + //add status per semester + $this->PrestudentModel->addSelect( + "( + SELECT status_kurzbz + FROM public.tbl_prestudentstatus pss + WHERE pss.prestudent_id = public.tbl_prestudent.prestudent_id + AND pss.studiensemester_kurzbz = " . $this->PrestudentModel->escape($studiensemester_kurzbz) . " + ORDER BY GREATEST(pss.datum, '0001-01-01') DESC + LIMIT 1 + ) AS statusofsemester" + ); + $this->addFilter($studiensemester_kurzbz); $result = $this->PrestudentModel->loadWhere($where); @@ -380,7 +392,6 @@ class Students extends FHCAPI_Controller protected function getStudents($studiengang_kz, $semester = null, $verband = null, $gruppe = null, $gruppe_kurzbz = null, $orgform_kurzbz = null) { $studiensemester_kurzbz = $this->variablelib->getVar('semester_aktuell'); - $this->load->model('crm/Prestudent_model', 'PrestudentModel'); @@ -406,6 +417,18 @@ class Students extends FHCAPI_Controller $this->PrestudentModel->addSelect('v.gruppe'); $this->PrestudentModel->addSelect("'' AS priorisierung_relativ"); + //add status per semester + $this->PrestudentModel->addSelect( + "( + SELECT status_kurzbz + FROM public.tbl_prestudentstatus pss + WHERE pss.prestudent_id = public.tbl_prestudent.prestudent_id + AND pss.studiensemester_kurzbz = " . $this->PrestudentModel->escape($studiensemester_kurzbz) . " + ORDER BY GREATEST(pss.datum, '0001-01-01') DESC + LIMIT 1 + ) AS statusofsemester" + ); + $where = []; @@ -482,6 +505,19 @@ class Students extends FHCAPI_Controller $this->PrestudentModel->addSelect("COALESCE(v.semester::text, CASE WHEN public.get_rolle_prestudent(tbl_prestudent.prestudent_id, NULL) IN ('Aufgenommener', 'Bewerber', 'Wartender', 'interessent') THEN public.get_absem_prestudent(tbl_prestudent.prestudent_id, NULL)::text ELSE ''::text END) AS semester", false); $this->PrestudentModel->addSelect('v.verband'); $this->PrestudentModel->addSelect('v.gruppe'); + + //add status per semester + $this->PrestudentModel->addSelect( + "( + SELECT status_kurzbz + FROM public.tbl_prestudentstatus pss + WHERE pss.prestudent_id = public.tbl_prestudent.prestudent_id + AND pss.studiensemester_kurzbz = " . $this->PrestudentModel->escape($studiensemester_kurzbz) . " + ORDER BY GREATEST(pss.datum, '0001-01-01') DESC + LIMIT 1 + ) AS statusofsemester" + ); + $this->addSelectPrioRel(); $this->addFilter($studiensemester_kurzbz); @@ -527,8 +563,23 @@ class Students extends FHCAPI_Controller $this->PrestudentModel->addSelect('v.semester'); $this->PrestudentModel->addSelect('v.verband'); $this->PrestudentModel->addSelect('v.gruppe'); + + //add status per semester + $this->PrestudentModel->addSelect( + "( + SELECT status_kurzbz + FROM public.tbl_prestudentstatus pss + WHERE pss.prestudent_id = public.tbl_prestudent.prestudent_id + AND pss.studiensemester_kurzbz = " . $this->PrestudentModel->escape($studiensemester_kurzbz) . " + ORDER BY GREATEST(pss.datum, '0001-01-01') DESC + LIMIT 1 + ) AS statusofsemester" + ); + $this->addSelectPrioRel(); + + $this->addFilter($studiensemester_kurzbz); $result = $this->PrestudentModel->loadWhere([ @@ -565,6 +616,19 @@ class Students extends FHCAPI_Controller $this->PrestudentModel->addSelect('v.semester'); $this->PrestudentModel->addSelect('v.verband'); $this->PrestudentModel->addSelect('v.gruppe'); + + //add status per semester + $this->PrestudentModel->addSelect( + "( + SELECT status_kurzbz + FROM public.tbl_prestudentstatus pss + WHERE pss.prestudent_id = public.tbl_prestudent.prestudent_id + AND pss.studiensemester_kurzbz = " . $this->PrestudentModel->escape($studiensemester_kurzbz) . " + ORDER BY GREATEST(pss.datum, '0001-01-01') DESC + LIMIT 1 + ) AS statusofsemester" + ); + $this->addSelectPrioRel(); $this->addFilter($studiensemester_kurzbz); diff --git a/public/js/components/DetailHeader/DetailHeader.js b/public/js/components/DetailHeader/DetailHeader.js index 6014faadd..aa0bb549d 100644 --- a/public/js/components/DetailHeader/DetailHeader.js +++ b/public/js/components/DetailHeader/DetailHeader.js @@ -155,8 +155,8 @@ export default { {{headerData[0].mail_intern}} - | Status - {{headerData[0].status}} + | Status + {{headerData[0].statusofsemester}} | {{$p.t('person', 'matrikelnummer')}} {{headerData[0].matr_nr}} diff --git a/public/js/components/Stv/Studentenverwaltung/Details.js b/public/js/components/Stv/Studentenverwaltung/Details.js index 8d6a9a7a1..8222d637e 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details.js +++ b/public/js/components/Stv/Studentenverwaltung/Details.js @@ -60,7 +60,7 @@ export default { template: `
- Bitte StudentIn auswählen! + {{$p.t('ui', 'chooseStudent')}}
'core', + 'category' => 'ui', + 'phrase' => 'chooseStudent', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Bitte StudentIn auswählen!', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Please select a student!', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), // FHC-4 Studierendenverwaltung FHC-ALERTS END );