From 521004f6a42185bfbfc25d6da31bde226558e182 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Wed, 29 Aug 2018 11:30:46 +0200 Subject: [PATCH] BugFix Personen_Wartung MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Wenn zwei gleiche rt_person Einträge vorhanden sind, wird ein Fehler ausgegeben und abgebrochen - Check, ob Radiobuttons ausgewählt wurden - Neue Funktion checkPersonRtStudienplanExists in reihungstest.class --- include/reihungstest.class.php | 31 ++++++++++++++ vilesci/stammdaten/personen_wartung.php | 56 +++++++++++++++---------- 2 files changed, 66 insertions(+), 21 deletions(-) diff --git a/include/reihungstest.class.php b/include/reihungstest.class.php index aff458aa0..35032a8ef 100644 --- a/include/reihungstest.class.php +++ b/include/reihungstest.class.php @@ -1259,4 +1259,35 @@ class reihungstest extends basis_db return false; } } + + /** + * Prueft ob eine Person-Reihungstest-Studienplan zuteilung existiert (Muss in der DB unique sein) + * @param int $person_id ID der Person. + * @param int $rt_id ID des Reihungstests. + * @param int $studienplan_id Studienplan ID. + * @return boolean true wenn vorhanden, false wenn nicht oder im Fehlerfall + */ + public function checkPersonRtStudienplanExists($person_id, $rt_id, $studienplan_id) + { + $qry = "SELECT + * + FROM + public.tbl_rt_person + WHERE + tbl_rt_person.person_id=".$this->db_add_param($person_id)." + AND tbl_rt_person.rt_id=".$this->db_add_param($rt_id)." + AND tbl_rt_person.studienplan_id=".$this->db_add_param($studienplan_id); + if($result = $this->db_query($qry)) + { + if($this->db_num_rows($result) > 0) + return true; + else + return false; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } } diff --git a/vilesci/stammdaten/personen_wartung.php b/vilesci/stammdaten/personen_wartung.php index 2aca71d66..6a6d7628c 100644 --- a/vilesci/stammdaten/personen_wartung.php +++ b/vilesci/stammdaten/personen_wartung.php @@ -136,6 +136,8 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p $personToDelete_obj = new person(); if ($personToDelete_obj->load($personToDelete)) { + $error = false; + $sql_query_upd1 = "BEGIN;"; $personToKeep_obj = new person(); $personToKeep_obj->load($personToKeep); @@ -145,10 +147,32 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p { $msg_error[] = 'Beide Personen haben eine Sozialversicherungsnummer oder ein Ersatzkennzeichen und können nicht zusammengelegt werden.
Bitte wenden Sie sich an einen Administrator.'; + $error = true; } - else + + // Wenn zwei gleiche rt_person Einträge vorhanden sind, wird ein Fehler ausgegeben und abgebrochen + $reihungstest_personToKeep = new reihungstest(); + $reihungstest_personToKeep->getReihungstestPerson($personToKeep); + $doppelteReihungstestzuordnung = false; + + foreach ($reihungstest_personToKeep->result as $row) + { + $rt_doppelt = new reihungstest(); + if ($rt_doppelt->checkPersonRtStudienplanExists($personToDelete, $row->reihungstest_id, $row->studienplan_id)) + { + $doppelteReihungstestzuordnung = true; + $msg_error[] = "Die Person ".$personToDelete." hat schon eine Reihungstestzuordnung + zu Reihungstest ID ".$row->reihungstest_id." im Studienplan ".$row->studienplan_id.".
+ Sie müssen die Datensätze manuell bereinigen, bevor Sie die Personen zusammenlegen können."; + $error = true; + break; + } + } + if ($doppelteReihungstestzuordnung === false) + $sql_query_upd1 .= "UPDATE public.tbl_rt_person SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; + + if ($error == false) { - $sql_query_upd1 = "BEGIN;"; // Wenn bei einer der Personen das Foto gesperrt ist, dann die Sperre uebernehmen if ($personToDelete_obj->foto_sperre) $sql_query_upd1 .= "UPDATE public.tbl_person SET foto_sperre=true WHERE person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . ";"; @@ -218,8 +242,8 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p } // Bild in tbl_person auf 240x320 skalieren - //$base64_src = resize($base64foto, 240, 320); Auskommentiert bis das auch im Echtsystem geht - $base64_src = $base64foto; + $base64_src = resize($base64foto, 240, 320); + $sql_query_upd1 .= "UPDATE public.tbl_person SET foto=" . $db->db_add_param($base64_src) . " WHERE person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . ";"; } @@ -260,23 +284,6 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p else $zugangscode = $personToKeep_obj->zugangscode; - // Check ob rt_person-zuordnung schon vorhanden ist - // Wenn ja, wird der Eintrag der zu löschenden Person ebenfalls gelöscht - $reihungstest_person = new reihungstest(); - - - //if (!$reihungstest_person->getReihungstestPerson($personToKeep)) - $sql_query_upd1 .= "UPDATE public.tbl_rt_person SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; - /*else - { - $sql_query_upd1 .= "DELETE FROM public.tbl_rt_person WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; - $reihungstest = new reihungstest($reihungstest_person->result[0]->reihungstest_id); - $msg_warning[] = "Das verbliebene Person ".$personToKeep." hat schon eine Reihungstestzuordnung - zu Reihungstest ID".$reihungstest->reihungstest_id." am ".$reihungstest->datum." - für das ".$reihungstest->studiensemester_kurzbz." im Studiengang ".$reihungstest->studiengang_kz." (Studienplan ".$reihungstest_person->result[0]->studienplan_id.")
- Die Reihungstestzuordnung von ".$personToDelete." wurde gelöscht"; - }*/ - $sql_query_upd1 .= "UPDATE addon.tbl_kompetenz SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= "UPDATE lehre.tbl_abschlusspruefung SET pruefer1=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE pruefer1=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; $sql_query_upd1 .= "UPDATE lehre.tbl_abschlusspruefung SET pruefer2=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE pruefer2=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";"; @@ -928,6 +935,13 @@ function resize($base64, $width, $height) // 828 x 1104 -> 240 x 320 } function checkPersonen() { + // Check, ob jeweils ein Radiobutton ausgewählt wurde + if(!$('input[type=radio][name=radio_1]').is(':checked') || !$('input[type=radio][name=radio_2]').is(':checked')) + { + alert('Bitte wählen Sie auf beiden Seiten einen Radio-Button aus'); + return false; + } + // Wenn die Personen zu unterschiedlich sind, Warnung ausgeben // Prüfen auf Vorname, Nachname, Geburtsdatum var nachnameLinks = $('input[type=radio][name=radio_1]:checked').closest('tr').find('.nachname').text().toLowerCase();