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();