From 9220e1f85f2b84edc91155689bfb034c962a225e Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Mon, 17 Jun 2024 11:07:55 +0200 Subject: [PATCH] Cleanup Verband & list --- .../api/frontend/v1/stv/Students.php | 48 ++++++++++++++----- .../api/frontend/v1/stv/Verband.php | 32 +++++++++++-- .../Stv/Studentenverwaltung/List.js | 9 +++- 3 files changed, 71 insertions(+), 18 deletions(-) diff --git a/application/controllers/api/frontend/v1/stv/Students.php b/application/controllers/api/frontend/v1/stv/Students.php index 697f44e31..852c1bc6a 100644 --- a/application/controllers/api/frontend/v1/stv/Students.php +++ b/application/controllers/api/frontend/v1/stv/Students.php @@ -183,13 +183,15 @@ class Students extends FHCAPI_Controller */ protected function getPrestudents($studiengang_kz, $studiensemester_kurzbz = null, $filter = null, $orgform_kurzbz = null) { - // TODO(chris): @see: prestudent.class::loadInteressentenUndBewerber - // TODO(chris): IMPLEMENT! $this->load->model('crm/Prestudent_model', 'PrestudentModel'); - $stdsemEsc = $this->PrestudentModel->escape($studiensemester_kurzbz); + $stdsemEsc = $studiensemester_kurzbz ? $this->PrestudentModel->escape($studiensemester_kurzbz) : 'NULL'; + + $selectRT = 'SELECT 1 FROM public.tbl_rt_person JOIN public.tbl_reihungstest r ON (rt_id = reihungstest_id) WHERE person_id=p.person_id AND studienplan_id IN (SELECT studienplan_id FROM lehre.tbl_studienplan JOIN lehre.tbl_studienordnung o USING(studienordnung_id) WHERE o.studiengang_kz=tbl_prestudent.studiengang_kz) AND r.studiensemester_kurzbz=' . $stdsemEsc; + - $where = []; + $where = ['studiengang_kz' => $studiengang_kz]; + if ($orgform_kurzbz) { $where['ps.orgform_kurzbz'] = $orgform_kurzbz; } @@ -214,12 +216,12 @@ class Students extends FHCAPI_Controller case "statusbestaetigtrtnichtangemeldet": $where['ps.status_kurzbz'] = 'Interessent'; $where['bestaetigtam IS NOT NULL'] = null; - $this->PrestudentModel->db->where('NOT EXISTS(SELECT 1 FROM public.tbl_rt_person JOIN public.tbl_reihungstest r ON (rt_id = reihungstest_id) WHERE person_id=p.person_id AND studienplan_id IN (SELECT studienplan_id FROM lehre.tbl_studienplan JOIN lehre.tbl_studienordnung o USING(studienordnung_id) WHERE o.studiengang_kz=tbl_prestudent.studiengang_kz) AND r.studiensemester_kurzbz=' . $stdsemEsc . ')', null, false); + $this->PrestudentModel->db->where('NOT EXISTS(' . $selectRT . ')', null, false); break; case "statusbestaetigtrtangemeldet": $where['ps.status_kurzbz'] = 'Interessent'; $where['bestaetigtam IS NOT NULL'] = null; - $this->PrestudentModel->db->where('EXISTS(SELECT 1 FROM public.tbl_rt_person JOIN public.tbl_reihungstest r ON (rt_id = reihungstest_id) WHERE person_id=p.person_id AND studienplan_id IN (SELECT studienplan_id FROM lehre.tbl_studienplan JOIN lehre.tbl_studienordnung o USING(studienordnung_id) WHERE o.studiengang_kz=tbl_prestudent.studiengang_kz) AND r.studiensemester_kurzbz=' . $stdsemEsc . ')', null, false); + $this->PrestudentModel->db->where('EXISTS(' . $selectRT . ')', null, false); break; case "zgv": $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); @@ -249,15 +251,33 @@ class Students extends FHCAPI_Controller break; case "reihungstestangemeldet": $where['ps.status_kurzbz'] = 'Interessent'; - $this->PrestudentModel->db->where('EXISTS(SELECT 1 FROM public.tbl_rt_person JOIN public.tbl_reihungstest r ON (rt_id = reihungstest_id) WHERE person_id=p.person_id AND studienplan_id IN (SELECT studienplan_id FROM lehre.tbl_studienplan JOIN lehre.tbl_studienordnung o USING(studienordnung_id) WHERE o.studiengang_kz=tbl_prestudent.studiengang_kz) AND r.studiensemester_kurzbz=' . $stdsemEsc . ')', null, false); + $this->PrestudentModel->db->where('EXISTS(' . $selectRT . ')', null, false); break; case "reihungstestnichtangemeldet": $where['ps.status_kurzbz'] = 'Interessent'; - $this->PrestudentModel->db->where('NOT EXISTS(SELECT 1 FROM public.tbl_rt_person JOIN public.tbl_reihungstest r ON (rt_id = reihungstest_id) WHERE person_id=p.person_id AND studienplan_id IN (SELECT studienplan_id FROM lehre.tbl_studienplan JOIN lehre.tbl_studienordnung o USING(studienordnung_id) WHERE o.studiengang_kz=tbl_prestudent.studiengang_kz) AND r.studiensemester_kurzbz=' . $stdsemEsc . ')', null, false); + $this->PrestudentModel->db->where('NOT EXISTS(' . $selectRT . ')', null, false); break; case "bewerber": $where['ps.status_kurzbz'] = 'Bewerber'; break; + case "bewerberrtnichtangemeldet": + $where['ps.status_kurzbz'] = 'Bewerber'; + $this->PrestudentModel->db->where('NOT EXISTS(' . $selectRT . ')', null, false); + break; + case "bewerberrtangemeldet": + $where['ps.status_kurzbz'] = 'Bewerber'; + $this->PrestudentModel->db->where('EXISTS(' . $selectRT . ')', null, false); + break; + case "bewerberrtangemeldetteilgenommen": + $where['ps.status_kurzbz'] = 'Bewerber'; + $this->PrestudentModel->db->where('EXISTS(' . $selectRT . ')', null, false); + $where['reihungstestangetreten'] = true; + break; + case "bewerberrtangemeldetnichtteilgenommen": + $where['ps.status_kurzbz'] = 'Bewerber'; + $this->PrestudentModel->db->where('EXISTS(' . $selectRT . ')', null, false); + $where['reihungstestangetreten'] = false; + break; case "aufgenommen": $where['ps.status_kurzbz'] = 'Aufgenommener'; break; @@ -267,6 +287,10 @@ class Students extends FHCAPI_Controller case "absage": $where['ps.status_kurzbz'] = 'Abgewiesener'; break; + case "incoming": + // NOTE(chris): in FAS it was not filtered for studiengang_kz + $where['ps.status_kurzbz'] = 'Incoming'; + break; case "absolvent": $where['ps.status_kurzbz'] = 'Absolvent'; break; @@ -275,8 +299,6 @@ class Students extends FHCAPI_Controller break; default: if (!$studiensemester_kurzbz) { - // TODO(chris): should work ... needs testing - // we want all prestudents without status? $where['ps.status_kurzbz'] = null; } else { $this->PrestudentModel->db->where_in('ps.status_kurzbz', [ @@ -315,7 +337,7 @@ class Students extends FHCAPI_Controller $this->PrestudentModel->addSelect('tbl_prestudent.studiengang_kz'); $this->PrestudentModel->addSelect('aufmerksamdurch_kurzbz'); $this->PrestudentModel->addSelect('mentor'); - $this->PrestudentModel->addSelect('FALSE AS bnaktiv', false); + $this->PrestudentModel->addSelect('NULL AS bnaktiv', false); $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 @@ -333,12 +355,12 @@ class Students extends FHCAPI_Controller $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); - + $result = $this->PrestudentModel->loadWhere($where); $data = $this->getDataOrTerminateWithError($result); diff --git a/application/controllers/api/frontend/v1/stv/Verband.php b/application/controllers/api/frontend/v1/stv/Verband.php index 109fc9e3a..efdf25a12 100644 --- a/application/controllers/api/frontend/v1/stv/Verband.php +++ b/application/controllers/api/frontend/v1/stv/Verband.php @@ -393,12 +393,12 @@ class Verband extends FHCAPI_Controller 'children' => [ [ 'name' => 'Nicht zum Reihungstest angemeldet', - 'link' => $intlink . '/statusbestaetigt/reihungstestnichtangemeldet', + 'link' => $intlink . '/statusbestaetigtrtnichtangemeldet', 'leaf' => true ], [ 'name' => 'Reihungstest angemeldet', - 'link' => $intlink . '/statusbestaetigt/reihungstestangemeldet', + 'link' => $intlink . '/statusbestaetigtrtangemeldet', 'leaf' => true ] ] @@ -421,7 +421,33 @@ class Verband extends FHCAPI_Controller 'name' => 'Bewerber', 'link' => $semlink . '/bewerber', 'stg_kz' => $studiengang_kz, - 'leaf' => true + 'children' => [ + [ + 'name' => 'Nicht zum Reihungstest angemeldet', + 'link' => $intlink . '/bewerberrtnichtangemeldet', + 'stg_kz' => $studiengang_kz, + 'leaf' => true + ], + [ + 'name' => 'Reihungstest angemeldet', + 'link' => $intlink . '/bewerberrtangemeldet', + 'stg_kz' => $studiengang_kz, + 'children' => [ + [ + 'name' => 'Teilgenommen', + 'link' => $intlink . '/bewerberrtangemeldetteilgenommen', + 'stg_kz' => $studiengang_kz, + 'leaf' => true + ], + [ + 'name' => 'Nicht teilgenommen', + 'link' => $intlink . '/bewerberrtangemeldetnichtteilgenommen', + 'stg_kz' => $studiengang_kz, + 'leaf' => true + ] + ] + ] + ] ], [ 'name' => 'Aufgenommen', diff --git a/public/js/components/Stv/Studentenverwaltung/List.js b/public/js/components/Stv/Studentenverwaltung/List.js index 24e2571a3..d7be85a4d 100644 --- a/public/js/components/Stv/Studentenverwaltung/List.js +++ b/public/js/components/Stv/Studentenverwaltung/List.js @@ -32,7 +32,7 @@ export default { {title:"TitelPost", field:"titelpost"}, {title:"SVNR", field:"svnr"}, {title:"Ersatzkennzeichen", field:"ersatzkennzeichen"}, - {title:"Geburtsdatum", field:"geburtsdatum_iso"}, + {title:"Geburtsdatum", field:"gebdatum"}, {title:"Geschlecht", field:"geschlecht"}, {title:"Sem.", field:"semester"}, {title:"Verb.", field:"verband"}, @@ -60,9 +60,14 @@ export default { {title:"PreStudentInnenID", field:"prestudent_id"}, {title:"Priorität", field:"priorisierung_realtiv"}, {title:"Mentor", field:"mentor", visible:false}, - {title:"Aktiv", field:"aktiv", visible:false}, + {title:"Aktiv", field:"bnaktiv", visible:false}, {title:"GeburtsdatumISO", field:"geburtsdatum_iso", visible:false}, ], + rowFormatter(row) { + if (row.getData().bnaktiv === false) { + row.getElement().classList.add('text-muted'); + } + }, ajaxResponse: (url, params, response) => response.data,