From e5f9b52c8ead7b8fa10f54458df20535ce92dcae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 12 Oct 2021 14:02:00 +0200 Subject: [PATCH] Stipendienanfragen angepasst wenn eine Person mehrere Studien besucht oder nach einem Abbruch das selbe Studium erneut besucht --- soap/stip.class.php | 67 +++++++++++++++++++++++++++++++++++---------- soap/stip.soap.php | 6 ++-- 2 files changed, 55 insertions(+), 18 deletions(-) diff --git a/soap/stip.class.php b/soap/stip.class.php index 2787dfac3..2c17ad77f 100644 --- a/soap/stip.class.php +++ b/soap/stip.class.php @@ -173,7 +173,7 @@ class stip extends basis_db * Suche Studenten anhand PersonKz * @param $PersonKz */ - function searchMatrikelnummerStg($Matrikelnummer, $StgKz) + function searchMatrikelnummerStg($Matrikelnummer, $StgKz, $studSemester) { $qry = "SELECT prestudent_id, vorname, nachname, svnr, matrikelnr, student.studiengang_kz, person.matr_nr @@ -183,20 +183,35 @@ class stip extends basis_db JOIN public.tbl_person person using(person_id) WHERE person.matr_nr = ".$this->db_add_param($Matrikelnummer)." - AND student.studiengang_kz=".$this->db_add_param(ltrim($StgKz,0)).";"; + AND student.studiengang_kz=".$this->db_add_param(ltrim($StgKz,0))." + AND EXISTS( + SELECT 1 FROM public.tbl_prestudentstatus + WHERE + prestudent_id=student.prestudent_id + AND studiensemester_kurzbz=".$this->db_add_param($studSemester)." + );"; if($this->db_query($qry)) { - if($row = $this->db_fetch_object()) + // wenn mehr als 1 Datensatz gefunden wird --> Fehler + if($this->db_num_rows() == 1 ) { - $this->Vorname_Antwort = $row->vorname; - $this->Familienname_Antwort = $row->nachname; - $this->SVNR_Antwort = $row->svnr; - $this->PersKz_Antwort = trim($row->matrikelnr); - $this->StgKz_Antwort = str_pad($row->studiengang_kz, 4,'0', STR_PAD_LEFT); - $this->Matrikelnummer_Antwort = $row->matr_nr; - $this->AntwortStatusCode = 1; - return $row->prestudent_id; + if($row = $this->db_fetch_object()) + { + $this->Vorname_Antwort = $row->vorname; + $this->Familienname_Antwort = $row->nachname; + $this->SVNR_Antwort = $row->svnr; + $this->PersKz_Antwort = trim($row->matrikelnr); + $this->StgKz_Antwort = str_pad($row->studiengang_kz, 4,'0', STR_PAD_LEFT); + $this->Matrikelnummer_Antwort = $row->matr_nr; + $this->AntwortStatusCode = 1; + return $row->prestudent_id; + } + else + { + $this->AntwortStatusCode = 2; + return false; + } } else { @@ -215,7 +230,7 @@ class stip extends basis_db * Suche Studenten anhand Sozialversicherungsnummer * @param $Svnr */ - function searchSvnr($Svnr) + function searchSvnr($Svnr, $StgKz, $studSemester) { $qry = "SELECT prestudent_id, vorname, nachname, svnr, matrikelnr, student.studiengang_kz, person.matr_nr @@ -223,7 +238,18 @@ class stip extends basis_db public.tbl_student student JOIN public.tbl_benutzer benutzer on(benutzer.uid=student.student_uid) JOIN public.tbl_person person using(person_id) - WHERE person.svnr = ".$this->db_add_param($Svnr).";"; + WHERE person.svnr = ".$this->db_add_param($Svnr); + + if ($StgKz != '') + $qry.=" AND student.studiengang_kz=".$this->db_add_param($StgKz); + + if ($studSemester != '') + $qry.=" AND EXISTS( + SELECT 1 FROM public.tbl_prestudentstatus + WHERE + prestudent_id=student.prestudent_id + AND studiensemester_kurzbz=".$this->db_add_param($studSemester)." + )"; if($this->db_query($qry)) { @@ -266,7 +292,7 @@ class stip extends basis_db * Suche Studenten anhand Vor- und Nachname * @param $Svnr */ - function searchVorNachname($Vorname, $Nachname) + function searchVorNachname($Vorname, $Nachname, $StgKz, $studSemester) { $qry = "SELECT prestudent_id, vorname, nachname, svnr, matrikelnr, student.studiengang_kz, person.matr_nr @@ -276,7 +302,18 @@ class stip extends basis_db JOIN public.tbl_person person using(person_id) WHERE person.vorname = ".$this->db_add_param($Vorname)." - AND person.nachname = ".$this->db_add_param($Nachname).";"; + AND person.nachname = ".$this->db_add_param($Nachname); + + if ($StgKz != '') + $qry.=" AND student.studiengang_kz=".$this->db_add_param($StgKz); + + if ($studSemester != '') + $qry.=" AND EXISTS( + SELECT 1 FROM public.tbl_prestudentstatus + WHERE + prestudent_id=student.prestudent_id + AND studiensemester_kurzbz=".$this->db_add_param($studSemester)." + )"; if($this->db_query($qry)) { diff --git a/soap/stip.soap.php b/soap/stip.soap.php index c2ae5eeea..8962dc103 100644 --- a/soap/stip.soap.php +++ b/soap/stip.soap.php @@ -117,11 +117,11 @@ function GetStipendienbezieherStip($parameters) if(!$prestudentID = $StipBezieher->searchPersonKz($BezieherStip->PersKz)) { - if(!$prestudentID = $StipBezieher->searchMatrikelnummerStg($BezieherStip->Matrikelnummer, $BezieherStip->StgKz)) + if(!$prestudentID = $StipBezieher->searchMatrikelnummerStg($BezieherStip->Matrikelnummer, $BezieherStip->StgKz, $studSemester)) { - if(!$prestudentID = $StipBezieher->searchSvnr($BezieherStip->SVNR)) + if(!$prestudentID = $StipBezieher->searchSvnr($BezieherStip->SVNR, $BezieherStip->StgKz, $studSemester)) { - $prestudentID = $StipBezieher->searchVorNachname($BezieherStip->Vorname, $BezieherStip->Familienname); + $prestudentID = $StipBezieher->searchVorNachname($BezieherStip->Vorname, $BezieherStip->Familienname, $BezieherStip->StgKz, $studSemester); } } }