From 84013e42e76cd6b35ff14e2bfd4a348e97dc9deb Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Wed, 22 May 2024 12:46:05 +0200 Subject: [PATCH] Bugfixes: correct validation function, cast stg_kz to int, query order --- .../api/frontend/v1/stv/Student.php | 4 +- .../api/frontend/v1/stv/Verband.php | 2 + .../controllers/components/stv/Students.php | 98 +++++++++---------- 3 files changed, 52 insertions(+), 52 deletions(-) diff --git a/application/controllers/api/frontend/v1/stv/Student.php b/application/controllers/api/frontend/v1/stv/Student.php index 9649f4162..fbff10b58 100644 --- a/application/controllers/api/frontend/v1/stv/Student.php +++ b/application/controllers/api/frontend/v1/stv/Student.php @@ -259,9 +259,7 @@ class Student extends FHCAPI_Controller { $this->load->library('form_validation'); - $this->form_validation->set_rules('gebdatum', 'Geburtsdatum', 'isValidDate', [ - 'isValidDate' => $this->p->t('ui', 'error_invalid_date') - ]); + $this->form_validation->set_rules('gebdatum', 'Geburtsdatum', 'is_valid_date'); if (!$this->form_validation->run()) $this->terminateWithValidationErrors($this->form_validation->error_array()); diff --git a/application/controllers/api/frontend/v1/stv/Verband.php b/application/controllers/api/frontend/v1/stv/Verband.php index d74b24a0e..8600a1bf0 100644 --- a/application/controllers/api/frontend/v1/stv/Verband.php +++ b/application/controllers/api/frontend/v1/stv/Verband.php @@ -343,6 +343,8 @@ class Verband extends FHCAPI_Controller $studiensemester = $this->getDataOrTerminateWithError($result); $result = []; + $studiengang_kz = (int)$studiengang_kz; + foreach ($studiensemester as $sem) { $semlink = $link . $sem->studiensemester_kurzbz; $intlink = $semlink . '/interessenten'; diff --git a/application/controllers/components/stv/Students.php b/application/controllers/components/stv/Students.php index 475497141..e4ba9befd 100644 --- a/application/controllers/components/stv/Students.php +++ b/application/controllers/components/stv/Students.php @@ -168,55 +168,6 @@ class Students extends FHC_Controller $stdsemEsc = $this->PrestudentModel->escape($studiensemester_kurzbz); - $this->PrestudentModel->addJoin('public.tbl_person p', 'person_id'); - #$this->PrestudentModel->addJoin('public.tbl_prestudentstatus ps', 'ps.status_kurzbz=public.get_rolle_prestudent(tbl_prestudent.prestudent_id, ' . $this->PrestudentModel->escape($studiensemester_kurzbz) . ') AND ps.prestudent_id=tbl_prestudent.prestudent_id'); - $this->PrestudentModel->addJoin('public.tbl_prestudentstatus ps', 'ps.status_kurzbz=public.get_rolle_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ') AND ps.prestudent_id=tbl_prestudent.prestudent_id AND ps.studiensemester_kurzbz=public.get_stdsem_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ') AND ps.ausbildungssemester=public.get_absem_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ')', 'LEFT'); - // TODO(chris): check what functions are returning when no entry exists - - $this->PrestudentModel->addSelect('p.person_id'); - $this->PrestudentModel->addSelect('tbl_prestudent.prestudent_id'); - $this->PrestudentModel->addSelect("'' AS uid"); - $this->PrestudentModel->addSelect('titelpre'); - $this->PrestudentModel->addSelect('titelpost'); - $this->PrestudentModel->addSelect('vorname'); - $this->PrestudentModel->addSelect('wahlname'); - $this->PrestudentModel->addSelect('vornamen'); - $this->PrestudentModel->addSelect('geschlecht'); - $this->PrestudentModel->addSelect('nachname'); - $this->PrestudentModel->addSelect('gebdatum'); - $this->PrestudentModel->addSelect('tbl_prestudent.anmerkung'); - $this->PrestudentModel->addSelect('ersatzkennzeichen'); - $this->PrestudentModel->addSelect('svnr'); - $this->PrestudentModel->addSelect("'' AS matrikelnr"); - $this->PrestudentModel->addSelect('p.anmerkung AS anmerkungen'); - $this->PrestudentModel->addSelect("'' AS semester"); - $this->PrestudentModel->addSelect("'' AS verband"); - $this->PrestudentModel->addSelect("'' AS gruppe"); - $this->PrestudentModel->addSelect('tbl_prestudent.studiengang_kz'); - $this->PrestudentModel->addSelect('aufmerksamdurch_kurzbz'); - $this->PrestudentModel->addSelect('mentor'); - $this->PrestudentModel->addSelect('FALSE AS bnaktiv'); - $this->PrestudentModel->addSelect( - "(SELECT kontakt FROM public.tbl_kontakt WHERE kontakttyp='email' AND person_id=p.person_id AND zustellung LIMIT 1) AS email_privat", - false - ); - $this->PrestudentModel->addSelect( - "(SELECT rt_gesamtpunkte AS punkte FROM public.tbl_prestudent WHERE prestudent_id=s.prestudent_id) AS punkte", - false - ); - $this->PrestudentModel->addSelect('tbl_prestudent.dual'); - $this->PrestudentModel->addSelect('tbl_prestudent.reihungstest_id'); - $this->PrestudentModel->addSelect('tbl_prestudent.anmeldungreihungstest'); - $this->PrestudentModel->addSelect('p.matr_nr'); - $this->PrestudentModel->addSelect('tbl_prestudent.gsstudientyp_kurzbz'); - $this->PrestudentModel->addSelect('tbl_prestudent.aufnahmegruppe_kurzbz'); - $this->PrestudentModel->addSelect('tbl_prestudent.priorisierung'); - $this->PrestudentModel->addSelect('p.zugangscode'); - $this->PrestudentModel->addSelect('p.bpk'); - - $this->PrestudentModel->addOrder('nachname'); - $this->PrestudentModel->addOrder('vorname'); - $where = []; if ($orgform_kurzbz) { $where['ps.orgform_kurzbz'] = $orgform_kurzbz; @@ -322,6 +273,55 @@ class Students extends FHC_Controller break; } + $this->PrestudentModel->addJoin('public.tbl_person p', 'person_id'); + #$this->PrestudentModel->addJoin('public.tbl_prestudentstatus ps', 'ps.status_kurzbz=public.get_rolle_prestudent(tbl_prestudent.prestudent_id, ' . $this->PrestudentModel->escape($studiensemester_kurzbz) . ') AND ps.prestudent_id=tbl_prestudent.prestudent_id'); + $this->PrestudentModel->addJoin('public.tbl_prestudentstatus ps', 'ps.status_kurzbz=public.get_rolle_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ') AND ps.prestudent_id=tbl_prestudent.prestudent_id AND ps.studiensemester_kurzbz=public.get_stdsem_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ') AND ps.ausbildungssemester=public.get_absem_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ')', 'LEFT'); + // TODO(chris): check what functions are returning when no entry exists + + $this->PrestudentModel->addSelect('p.person_id'); + $this->PrestudentModel->addSelect('tbl_prestudent.prestudent_id'); + $this->PrestudentModel->addSelect("'' AS uid"); + $this->PrestudentModel->addSelect('titelpre'); + $this->PrestudentModel->addSelect('titelpost'); + $this->PrestudentModel->addSelect('vorname'); + $this->PrestudentModel->addSelect('wahlname'); + $this->PrestudentModel->addSelect('vornamen'); + $this->PrestudentModel->addSelect('geschlecht'); + $this->PrestudentModel->addSelect('nachname'); + $this->PrestudentModel->addSelect('gebdatum'); + $this->PrestudentModel->addSelect('tbl_prestudent.anmerkung'); + $this->PrestudentModel->addSelect('ersatzkennzeichen'); + $this->PrestudentModel->addSelect('svnr'); + $this->PrestudentModel->addSelect("'' AS matrikelnr"); + $this->PrestudentModel->addSelect('p.anmerkung AS anmerkungen'); + $this->PrestudentModel->addSelect("'' AS semester"); + $this->PrestudentModel->addSelect("'' AS verband"); + $this->PrestudentModel->addSelect("'' AS gruppe"); + $this->PrestudentModel->addSelect('tbl_prestudent.studiengang_kz'); + $this->PrestudentModel->addSelect('aufmerksamdurch_kurzbz'); + $this->PrestudentModel->addSelect('mentor'); + $this->PrestudentModel->addSelect('FALSE AS bnaktiv'); + $this->PrestudentModel->addSelect( + "(SELECT kontakt FROM public.tbl_kontakt WHERE kontakttyp='email' AND person_id=p.person_id AND zustellung LIMIT 1) AS email_privat", + false + ); + $this->PrestudentModel->addSelect( + "(SELECT rt_gesamtpunkte AS punkte FROM public.tbl_prestudent WHERE prestudent_id=s.prestudent_id) AS punkte", + false + ); + $this->PrestudentModel->addSelect('tbl_prestudent.dual'); + $this->PrestudentModel->addSelect('tbl_prestudent.reihungstest_id'); + $this->PrestudentModel->addSelect('tbl_prestudent.anmeldungreihungstest'); + $this->PrestudentModel->addSelect('p.matr_nr'); + $this->PrestudentModel->addSelect('tbl_prestudent.gsstudientyp_kurzbz'); + $this->PrestudentModel->addSelect('tbl_prestudent.aufnahmegruppe_kurzbz'); + $this->PrestudentModel->addSelect('tbl_prestudent.priorisierung'); + $this->PrestudentModel->addSelect('p.zugangscode'); + $this->PrestudentModel->addSelect('p.bpk'); + + $this->PrestudentModel->addOrder('nachname'); + $this->PrestudentModel->addOrder('vorname'); + $this->addFilter($studiensemester_kurzbz); $this->outputJson([]);