From fb2f8d5c530b38f63d0b16dbb6fe61272373571a Mon Sep 17 00:00:00 2001 From: Alexei Karpenko Date: Thu, 20 Mar 2025 14:41:28 +0100 Subject: [PATCH 01/13] added function for getting UHSTAT1 person data (centralizing...) --- .../models/codex/Uhstat1daten_model.php | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/application/models/codex/Uhstat1daten_model.php b/application/models/codex/Uhstat1daten_model.php index 9bca44b58..5bffb5c06 100644 --- a/application/models/codex/Uhstat1daten_model.php +++ b/application/models/codex/Uhstat1daten_model.php @@ -11,4 +11,42 @@ class Uhstat1daten_model extends DB_Model $this->dbTable = 'bis.tbl_uhstat1daten'; $this->pk = 'uhstat1daten_id'; } + + /** + * Gets person data needed for sending as UHSTAT1 data. + * @param array $person_id_arr + * @param string $studiensemester + * @param array $status_kurzbz + * @return object success with prestudents or error + */ + public function getUHSTAT1PersonData($person_id_arr) + { + $params = array($person_id_arr); + + $prstQry = "SELECT + DISTINCT ON (pers.person_id) + pers.person_id, uhstat_daten.uhstat1daten_id, pers.svnr, pers.ersatzkennzeichen, pers.geburtsnation, + uhstat_daten.mutter_geburtsstaat, uhstat_daten.mutter_bildungsstaat, uhstat_daten.mutter_geburtsjahr, + uhstat_daten.mutter_bildungmax, uhstat_daten.vater_geburtsstaat, uhstat_daten.vater_bildungsstaat, + uhstat_daten.vater_geburtsjahr, uhstat_daten.vater_bildungmax, + kzVbpkAs.inhalt AS \"vbpkAs\", kzVbpkBf.inhalt AS \"vbpkBf\" + FROM + public.tbl_person pers + JOIN public.tbl_prestudent ps USING (person_id) + JOIN public.tbl_studiengang stg USING (studiengang_kz) + JOIN bis.tbl_uhstat1daten uhstat_daten USING (person_id) + LEFT JOIN public.tbl_kennzeichen kzVbpkAs ON kzVbpkAs.kennzeichentyp_kurzbz = 'vbpkAs'AND kzVbpkAs.person_id = pers.person_id AND kzVbpkAs.aktiv + LEFT JOIN public.tbl_kennzeichen kzVbpkBf ON kzVbpkBf.kennzeichentyp_kurzbz = 'vbpkBf'AND kzVbpkBf.person_id = pers.person_id AND kzVbpkBf.aktiv + WHERE + ps.bismelden + AND stg.melderelevant + AND pers.person_id IN ? + ORDER BY + pers.person_id"; + + return $this->execReadOnlyQuery( + $prstQry, + $params + ); + } } From a3e22da63319e7a9e0dbf49d6b559d128162c78a Mon Sep 17 00:00:00 2001 From: Johann Hoffmann Date: Thu, 20 Mar 2025 17:21:42 +0100 Subject: [PATCH 02/13] calcEntschuldigungen minDate as workdays in config; updatevon/um anwCheckIn; Orgform dual in sancho mail; zusatz (d.d.i)/(d.d.o) & (o) auch wenn bis datum leer ist aber von bereits eingetragen --- include/lehrelisthelper.class.php | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/include/lehrelisthelper.class.php b/include/lehrelisthelper.class.php index d6ceaf918..b1821391f 100644 --- a/include/lehrelisthelper.class.php +++ b/include/lehrelisthelper.class.php @@ -200,7 +200,7 @@ class LehreListHelper //Studierende der LV laden und in ein Array schreiben $qry = 'SELECT - distinct on(nachname, vorname, person_id) vorname, nachname, wahlname, matrikelnr, public.tbl_student.student_uid, + distinct on(nachname, vorname, public.tbl_benutzer.person_id) vorname, nachname, wahlname, matrikelnr, public.tbl_student.student_uid, tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe, (SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id @@ -209,7 +209,8 @@ class LehreListHelper tbl_note.lkt_ueberschreibbar, tbl_note.anmerkung, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_person.geschlecht, tbl_studiengang.kurzbzlang, tbl_mobilitaet.mobilitaetstyp_kurzbz, tbl_zeugnisnote.note, (CASE WHEN bis.tbl_mobilitaet.studiensemester_kurzbz = vw_student_lehrveranstaltung.studiensemester_kurzbz THEN 1 ELSE 0 END) as doubledegree, - (tbl_bisio.bis::timestamp - tbl_bisio.von::timestamp) as daysout + (tbl_bisio.bis::timestamp - tbl_bisio.von::timestamp) as daysout, + public.tbl_prestudent.gsstudientyp_kurzbz as ddtype FROM campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid) @@ -223,6 +224,7 @@ class LehreListHelper LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid) LEFT JOIN public.tbl_studiengang ON(tbl_student.studiengang_kz=tbl_studiengang.studiengang_kz) LEFT JOIN bis.tbl_mobilitaet USING(prestudent_id) + LEFT JOIN public.tbl_prestudent USING(prestudent_id) WHERE vw_student_lehrveranstaltung.lehrveranstaltung_id='.$this->db->db_add_param($this->lvid, FHC_INTEGER).' AND vw_student_lehrveranstaltung.studiensemester_kurzbz='.$this->db->db_add_param($this->studiensemester); @@ -231,7 +233,7 @@ class LehreListHelper if($this->lehreinheit!='') $qry.=' AND vw_student_lehrveranstaltung.lehreinheit_id='.$this->db->db_add_param($this->lehreinheit, FHC_INTEGER); - $qry.=' ORDER BY nachname, vorname, person_id, daysout DESC, doubledegree DESC'; + $qry.=' ORDER BY nachname, vorname, public.tbl_benutzer.person_id, daysout DESC, doubledegree DESC'; $stsem_obj = new studiensemester(); $stsem_obj->load($this->studiensemester); @@ -263,8 +265,13 @@ class LehreListHelper //Outgoing if($row->bisio_id != '' && $row->status != 'Incoming' && ($row->bis > $stsemdatumvon || $row->bis == '') - && $row->von < $stsemdatumbis && (anzahlTage($row->von, $row->bis) >= 30)) + && $row->von < $stsemdatumbis && (anzahlTage($row->von, $row->bis) >= 30)) { $zusatz .= '(o)(ab '.$datum->formatDatum($row->von, 'd.m.Y').')'; + } else if ($row->bisio_id != '' && $row->status != 'Incoming' && ($row->von > $stsemdatumvon || $row->von == '')) { + // if bis datum is not yet known but von is available already + $zusatz .= '(o)(ab '.$datum->formatDatum($row->von, 'd.m.Y').')'; + } + if($row->lkt_ueberschreibbar == 'f') // angerechnet / intern angerechnet / nicht zugelassen $zusatz.= '('. $row->anmerkung. ')'; @@ -275,8 +282,13 @@ class LehreListHelper if($row->stg_kz_student==$a_o_kz) //Außerordentliche Studierende $zusatz.='(a.o.)'; - if(($row->mobilitaetstyp_kurzbz != '') && ($row->doubledegree == 1)) //Double Degree Student - $zusatz .= '(d.d.)'; + if(($row->mobilitaetstyp_kurzbz != '') && ($row->doubledegree == 1)) { + //Double Degree Student + $zusatz .= '(d.d.'; + if($row->ddtype == 'Intern') $zusatz .= 'i.)'; + else if ($row->ddtype == 'Extern') $zusatz .='o.)'; + else $zusatz .= ')'; + } if(($row->wahlname != '')) { From ba806c13fb046f9cfd76f115606279b38d203898 Mon Sep 17 00:00:00 2001 From: Johann Hoffmann Date: Thu, 27 Mar 2025 17:15:37 +0100 Subject: [PATCH 03/13] assistenz edit entschuldigung modal for editing von/bis date (on open excuse notes) & textarea for notiz - which is still limited to 255 characters; added student semester column to assistenz table; removed column width constraints & layout changed to fitData, persistence option is TRUE now; WIP von/bis/uplaoddate headerfilter; automatically send email to students on entschuldigungn status changed; added minimum time range for Kontrolle to be at least the length of 1 teaching unit(per config) - currently 45minutes; start new kontrolle modal more clearly shows when time & date values have been read from stundenplan; increased qr degeneration timer from 200 to 5000ms to avoid "missed" checkins due to network time; lektor can retrieve all entschuldigungen ranges & statuses of students when hovering their row; lektor can show anw qr window seperately now; into externalzuordnung admin/person_id fix in deleteEntschuldigung; moved fetch semesterinfo into global setup; fixed some vue template warnings; --- public/js/components/Bootstrap/Modal.js | 1 + system/phrasesupdate.php | 106 +++++++++++++++++++++++- 2 files changed, 104 insertions(+), 3 deletions(-) diff --git a/public/js/components/Bootstrap/Modal.js b/public/js/components/Bootstrap/Modal.js index e390319e8..e94579d89 100644 --- a/public/js/components/Bootstrap/Modal.js +++ b/public/js/components/Bootstrap/Modal.js @@ -114,6 +114,7 @@ export default {