mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
Datenverbund
- Die Namenssuche vergleicht automatisch auf Übereinstimmung und uebernimmt die Daten wenn eine vollständige Übereinstimmung gegeben ist
This commit is contained in:
+63
-11
@@ -122,6 +122,30 @@ class dvb extends basis_db
|
||||
return ErrorHandler::error();
|
||||
}
|
||||
|
||||
// Wenn nicht gefunden, wird zusaetzlich noch eine Namenssuche gestartet
|
||||
if ($matrikelnummer == false || $matrikelnummer == '')
|
||||
{
|
||||
$this->debug('Keine Matrikelnummer gefunden -> Suche per Nachname');
|
||||
$nachnameresult = $this->existsByNachname($person_id);
|
||||
if (ErrorHandler::isSuccess($nachnameresult))
|
||||
{
|
||||
if (ErrorHandler::hasData($nachnameresult)
|
||||
&& isset($nachnameresult->retval->matrikelnummer)
|
||||
&& $nachnameresult->retval->matrikelnummer != '')
|
||||
{
|
||||
$this->debug('Nachnamensuche erfolgreich');
|
||||
$matrikelnummer = $nachnameresult->retval->matrikelnummer;
|
||||
if(isset($nachnameresult->retval->bpk))
|
||||
$bpk = $nachnameresult->retval->bpk;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Namenssuche ergab nicht eindeutige Treffer -> manuelle Pruefung ist erforderlich';
|
||||
return ErrorHandler::error();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($matrikelnummer !== false && $matrikelnummer != '')
|
||||
{
|
||||
// Matrikelnummer wurde gefunden
|
||||
@@ -142,12 +166,6 @@ class dvb extends basis_db
|
||||
}
|
||||
else
|
||||
{
|
||||
if($this->existsByName($person_id))
|
||||
{
|
||||
$this->errormsg = 'Namenssuche ergab Treffer -> manuelle Pruefung erforderlich';
|
||||
return ErrorHandler::error();
|
||||
}
|
||||
|
||||
if($softrun == true)
|
||||
{
|
||||
$this->errormsg = 'Nicht gefunden Softrun enabled keine Meldung';
|
||||
@@ -1220,7 +1238,13 @@ class dvb extends basis_db
|
||||
}
|
||||
}
|
||||
|
||||
public function existsByName($person_id)
|
||||
/**
|
||||
* Prueft ob eine Person aufgrund Nachname und Geburtsdatum gefunden wird
|
||||
* @param $person_id PersonID der gesuchten Person.
|
||||
* @return Success wenn gefunden, error wenn nicht gefunden. Hat die Person 100% Uebereinstimmung der Daten
|
||||
* dann wird auch MatrNr und BPK als Retrun geliefert.
|
||||
*/
|
||||
public function existsByNachname($person_id)
|
||||
{
|
||||
$person = new person();
|
||||
if($person->load($person_id))
|
||||
@@ -1236,18 +1260,46 @@ class dvb extends basis_db
|
||||
{
|
||||
if(isset($row->vorname) && isset($row->nachname))
|
||||
{
|
||||
$this->debug('Eintrag gefunden -> Pruefe Eindeutigkeit');
|
||||
// Vorpruefung des Datenverbund
|
||||
if(mb_substr(mb_strtolower($row->vorname),0,5) == mb_substr(mb_strtolower($person->vorname),0,5)
|
||||
&& mb_substr(mb_strtolower($row->nachname),0,10) == mb_substr(mb_strtolower($person->nachname),0,10))
|
||||
{
|
||||
return true;
|
||||
// Bei 100% eindeutiger Uebereinstimmung werden die Daten zurueckgeliefert
|
||||
if (mb_strtolower($row->geschlecht) == mb_strtolower($person->geschlecht)
|
||||
&& $row->staatsangehoerigkeit == $person->staatsbuergerschaft
|
||||
&& mb_strtolower($row->nachname) == mb_strtolower($person->nachname)
|
||||
&& (
|
||||
mb_strtolower($row->vorname) == mb_strtolower($person->vorname)
|
||||
||
|
||||
mb_strtolower($row->vorname) == mb_strtolower($person->vorname.' '.$person->vornamen)
|
||||
)
|
||||
&& $row->matrikelnummer != ''
|
||||
&& count($result->retval->data) == 1
|
||||
)
|
||||
{
|
||||
$this->debug('Uebereinstimmung gefunden');
|
||||
$retval = new stdClass();
|
||||
if(isset($row->bpk) && $row->bpk!='')
|
||||
$retval->bpk = $row->bpk;
|
||||
$retval->matrikelnummer = $row->matrikelnummer;
|
||||
return ErrorHandler::success($retval);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->debug('keine 100% Eindeutigkeit gegeben:'.print_r($result->retval->data,true));
|
||||
// Uebereinstimmung gefunden aber nicht 100% eindeutig
|
||||
return ErrorHandler::success();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
$this->debug('Keine Uebereinstimmung per Namenssuche');
|
||||
return ErrorHandler::error();
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
return ErrorHandler::error();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1338,7 +1390,7 @@ class dvb extends basis_db
|
||||
foreach ($domnodes_matrikelnummer as $row)
|
||||
{
|
||||
// MatrikelNr Found
|
||||
$data->matrikelnr = $row->textContent;
|
||||
$data->matrikelnummer = $row->textContent;
|
||||
break;
|
||||
}
|
||||
$domnodes_bpk = $row_student->getElementsByTagNameNS($namespace, 'personenkennzeichen');
|
||||
|
||||
Reference in New Issue
Block a user