From 3ed2bb4d787f5f9c5bfe42e958756f5053b5d2c3 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Mon, 14 Jul 2025 15:16:21 +0200 Subject: [PATCH] add uid@DOMAIN to emails result for prestudent and student, mergedperson render student only results, add searchresult_inaktiv css class to inactive users --- application/config/search.php | 13 ++++--- .../js/components/Stv/Studentenverwaltung.js | 10 +++++- .../searchbar/result/mergedperson.js | 34 ++++++++++++++++--- 3 files changed, 47 insertions(+), 10 deletions(-) diff --git a/application/config/search.php b/application/config/search.php index bf98d3e93..b4fd4a42b 100644 --- a/application/config/search.php +++ b/application/config/search.php @@ -197,11 +197,12 @@ $config['student'] = [ "s.matrikelnr", "p.person_id", "(p.vorname || ' ' || p.nachname) AS name", - "ARRAY( SELECT kontakt FROM public.tbl_kontakt WHERE kontakttyp = 'email' AND person_id=p.person_id ) AS email", + "(s.student_uid || '@" . DOMAIN . "') || ARRAY( SELECT kontakt FROM public.tbl_kontakt WHERE kontakttyp = 'email' AND person_id=p.person_id ) AS email", "CASE WHEN p.foto IS NOT NULL THEN 'data:image/jpeg' || CONVERT_FROM(DECODE('3b','hex'), 'UTF8') || 'base64,' || p.foto ELSE NULL END - AS photo_url" + AS photo_url", + "b.aktiv" ], 'resultjoin' => " JOIN public.tbl_student s USING (student_uid) @@ -220,7 +221,8 @@ $config['studentcis']['resultfields'] = [ "CASE WHEN p.foto IS NOT NULL THEN 'data:image/jpeg' || CONVERT_FROM(DECODE('3b','hex'), 'UTF8') || 'base64,' || p.foto ELSE NULL END - AS photo_url" + AS photo_url", + "b.aktiv" ]; $config['prestudent'] = [ @@ -311,7 +313,7 @@ $config['prestudent'] = [ "p.person_id", "b.uid", "(p.vorname || ' ' || p.nachname) AS name", - "ARRAY( SELECT kontakt FROM public.tbl_kontakt WHERE kontakttyp = 'email' AND person_id=p.person_id ) AS email", + "(b.uid || '@" . DOMAIN . "') || ARRAY( SELECT kontakt FROM public.tbl_kontakt WHERE kontakttyp = 'email' AND person_id=p.person_id ) AS email", "CASE WHEN p.foto IS NOT NULL THEN 'data:image/jpeg' || CONVERT_FROM(DECODE('3b','hex'), 'UTF8') || 'base64,' || p.foto ELSE NULL END @@ -334,7 +336,8 @@ $config['prestudent'] = [ LIMIT 1 ), sg.orgform_kurzbz - ) AS orgform" + ) AS orgform", + "b.aktiv" ], 'resultjoin' => " LEFT JOIN public.tbl_prestudent ps USING (prestudent_id) diff --git a/public/js/components/Stv/Studentenverwaltung.js b/public/js/components/Stv/Studentenverwaltung.js index 6cd472ea8..13a0369ba 100644 --- a/public/js/components/Stv/Studentenverwaltung.js +++ b/public/js/components/Stv/Studentenverwaltung.js @@ -107,7 +107,15 @@ export default { }, defaultactionstudent: { type: "link", - action: data => this.$fhcApi.getUri('/studentenverwaltung/prestudent/' + data.prestudent_id) + action: data => { + if (data.prestudent_id) { + return this.$fhcApi.getUri('/studentenverwaltung/prestudent/' + data.prestudent_id); + } else if (data.uid) { + return this.$fhcApi.getUri('/studentenverwaltung/student/' + data.uid); + } else { + return this.$fhcApi.getUri('/studentenverwaltung/person/' + data.person_id); + } + } }, childactions: [] } diff --git a/public/js/components/searchbar/result/mergedperson.js b/public/js/components/searchbar/result/mergedperson.js index f02febf6f..0f6f3f0ee 100644 --- a/public/js/components/searchbar/result/mergedperson.js +++ b/public/js/components/searchbar/result/mergedperson.js @@ -45,7 +45,26 @@ export default { ].includes(item.type)) || null; }, students() { - const students = this.res.list.filter(item => item.type == 'prestudent'); + const students = this.res.list.filter(item => [ + 'student', + 'prestudent', + 'studentcis', + 'studentStv' + ].includes(item.type)) + .filter((item, idx, arr) => { + if (item.type === 'prestudent') { + return true; + } + + let prestudentwithsameuidexists = arr.some(tmpitem => { + return tmpitem.uid === item.uid && tmpitem.type === 'prestudent'; + }); + + if (prestudentwithsameuidexists) { + return false; + } + return true; + }); return students.length ? students : null; }, emails() { @@ -54,11 +73,15 @@ export default { }, telurl() { return 'tel:' + this.employee?.phone; + }, + inaktiv() { + return this.res.list.some(item => item?.aktiv === false); } }, template: ` {{ student.studiengang_kz }} -