diff --git a/include/dvb.class.php b/include/dvb.class.php
index d3faffa9f..79aeb6027 100644
--- a/include/dvb.class.php
+++ b/include/dvb.class.php
@@ -37,6 +37,8 @@ class dvb extends basis_db
const DVB_URL_WEBSERVICE_SVNR = DVB_PORTAL.'/rws/0.2/simpleStudentBySozialVersicherungsnummer.xml';
const DVB_URL_WEBSERVICE_ERSATZKZ = DVB_PORTAL.'/rws/0.2/simpleStudentByErsatzKennzeichen.xml';
const DVB_URL_WEBSERVICE_NACHNAME = DVB_PORTAL.'/rws/0.2/simpleStudentByNachname.xml';
+ const DVB_URL_WEBSERVICE_NAME = DVB_PORTAL.'/rws/0.2/simpleStudentByName.xml';
+ const DVB_URL_WEBSERVICE_MATRIKELNUMMER = DVB_PORTAL.'/rws/0.2/simpleStudentByMatrikelnummer.xml';
const DVB_URL_WEBSERVICE_RESERVIERUNG = DVB_PORTAL.'/dvb/matrikelnummern/1.0/reservierung.xml';
const DVB_URL_WEBSERVICE_MELDUNG = DVB_PORTAL.'/dvb/matrikelnummern/1.0/meldung.xml';
const DVB_URL_WEBSERVICE_BPK = DVB_PORTAL.'/rws/0.2/pruefeBpk.xml';
@@ -964,8 +966,11 @@ class dvb extends basis_db
* Bei Fehlernummer ED10065 wurde die Matrikelnummer korrekt gesetzt.
* Das BPK wurde vom Datenverbund versucht zu ermitteln und wird in der Fehlermeldung
* zurückgeliefert. Dieses sollte dann gespeichert werden.
+ * Es muss eine erneute Vergabemeldung mit korrigierten Daten vorgenommen werden um die Daten im
+ * DVB zu aktualisieren
+ * Dies gilt nur, wenn ED10065 alleine geliefert wird und keine sonstigen Fehler auftreten
*/
- if ($fehlernummer->length>0 && $fehlernummer->item(0)->textContent == 'ED10065')
+ if ($fehlernummer->length == 1 && $fehlernummer->item(0)->textContent == 'ED10065')
{
$this->debug('ED10065 Response');
$domnodes_feldinhalt = $row->getElementsByTagName('feldinhalt');
@@ -975,8 +980,13 @@ class dvb extends basis_db
$retval = new stdClass();
$retval->matrikelnummer = $person->matrikelnummer;
$retval->bpk = $bpk;
+
$this->errormsg .= 'ED10065 Response';
+ $this->errormsg .= 'Eine Personendatenprüfung ist erforderlich';
+ $this->errormsg .= 'Danach muss eine erneute Vergabemeldung mit dieser Matrikelnummer erfolgen.';
$this->debug('BPK:'.$bpk);
+ $this->debug('MatrNr:'.$person->matrikelnummer);
+
return ErrorHandler::success($retval);
}
}
@@ -1299,6 +1309,12 @@ class dvb extends basis_db
return ErrorHandler::success();
}
}
+ else
+ {
+ $this->debug('keine 100% Eindeutigkeit beim Namen gegeben:'.print_r($result->retval->data,true));
+ // Uebereinstimmung gefunden aber nicht 100% eindeutig
+ return ErrorHandler::success();
+ }
}
}
$this->debug('Keine Uebereinstimmung per Namenssuche');
@@ -1434,6 +1450,250 @@ class dvb extends basis_db
}
}
+ /**
+ * Get Matrikelnummer by Name
+ * @param string $nachname Surname of Person.
+ * @param string $vorname Firstname of Person.
+ * @param string $geburtsdatum Date of Birth
+ * @return Matrikelnummer or false on error.
+ */
+ public function getMatrikelnrByName($nachname, $vorname, $geburtsdatum)
+ {
+ if ($this->tokenIsExpired())
+ {
+ $result = $this->authenticate();
+ if (ErrorHandler::isError($result))
+ return ErrorHandler::error();
+ }
+
+ $this->debug('getMatrikelnrByName');
+
+ $curl = curl_init();
+
+ $geburtsdatum = str_replace("-", "", $geburtsdatum);
+
+ $url = self::DVB_URL_WEBSERVICE_NAME;
+ $url .= '?nachName='.curl_escape($curl, $nachname);
+ $url .= '&vorName='.curl_escape($curl, $vorname);
+ $url .= '&geburtsDatum='.curl_escape($curl, $geburtsdatum);
+
+ curl_setopt($curl, CURLOPT_URL, $url);
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
+ curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
+
+ $headers = array(
+ 'Accept: application/json',
+ 'Authorization: Bearer '.$this->authentication->access_token,
+ 'User-Agent: FHComplete',
+ 'Connection: Keep-Alive',
+ 'Expect:',
+ 'Content-Length: 0'
+ );
+ curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
+
+ $this->debug('Sending Request to '.$url);
+
+ $response = curl_exec($curl);
+ $curl_info = curl_getinfo($curl);
+ curl_close($curl);
+
+ $this->debug('ResponseCode: '.$curl_info['http_code']);
+ $this->debug('ResponseData: '.print_r($response, true));
+
+ if ($curl_info['http_code'] == '200')
+ {
+ /* Example Response:
+
+
+ 12345678
+ Max
+ sdfaASDAFasdfads+asasdffd=
+ Mustermann
+ M
+ 1999-02-19
+ A
+
+
+ */
+ $dom = new DOMDocument();
+ $dom->loadXML($response);
+ $namespace = 'http://www.brz.gv.at/datenverbund-unis';
+ $domnodes_student = $dom->getElementsByTagNameNS($namespace, 'student');
+
+ $retval = new stdClass();
+ $retval->data = array();
+
+ foreach ($domnodes_student as $row_student)
+ {
+ // Wenn nicht gesperrt und fix vergeben
+ $ingesamtpool = $row_student->getAttribute('inGesamtPool');
+ $gesperrt = $row_student->getAttribute('gesperrt');
+
+ if ($ingesamtpool == 'true' && $gesperrt == 'false')
+ {
+ $data = new stdClass();
+
+ $domnodes_matrikelnummer = $row_student->getElementsByTagNameNS($namespace, 'matrikelNummer');
+ foreach ($domnodes_matrikelnummer as $row)
+ {
+ // MatrikelNr Found
+ $data->matrikelnummer = $row->textContent;
+ break;
+ }
+ $domnodes_bpk = $row_student->getElementsByTagNameNS($namespace, 'personenkennzeichen');
+ foreach ($domnodes_bpk as $row)
+ {
+ // BPK Found
+ $data->bpk = $row->textContent;
+ break;
+ }
+ $domnodes = $row_student->getElementsByTagNameNS($namespace, 'vorName');
+ if ($domnodes->length>0)
+ $data->vorname = $domnodes->item(0)->textContent;
+ $domnodes = $row_student->getElementsByTagNameNS($namespace, 'nachName');
+ if ($domnodes->length>0)
+ $data->nachname = $domnodes->item(0)->textContent;
+ $domnodes = $row_student->getElementsByTagNameNS($namespace, 'geschlecht');
+ if ($domnodes->length>0)
+ $data->geschlecht = $domnodes->item(0)->textContent;
+ $domnodes = $row_student->getElementsByTagNameNS($namespace, 'staatsAngehoerigkeit');
+ if ($domnodes->length > 0)
+ $data->staatsangehoerigkeit = $domnodes->item(0)->textContent;
+
+ $retval->data[] = $data;
+ }
+
+ }
+
+ return ErrorHandler::success($retval);
+ }
+ else
+ {
+ $errormsg = 'Request Failed with HTTP Code:'.$curl_info['http_code'].' and Response:'.$response;
+ return ErrorHandler::error($errormsg);
+ }
+ }
+
+ /**
+ * Get Persondata by Matrikelnummer
+ * @param string $matrikelnr Matrikelnummer of Person.
+ * @return Matrikelnummer or false on error.
+ */
+ public function getDataByMatrikelnr($matrikelnr)
+ {
+ if ($this->tokenIsExpired())
+ {
+ $result = $this->authenticate();
+ if (ErrorHandler::isError($result))
+ return ErrorHandler::error();
+ }
+
+ $this->debug('getDataByMatrikelnr');
+
+ $curl = curl_init();
+
+ $url = self::DVB_URL_WEBSERVICE_MATRIKELNUMMER;
+ $url .= '?matrikelNummer='.curl_escape($curl, $matrikelnr);
+
+ curl_setopt($curl, CURLOPT_URL, $url);
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
+ curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
+
+ $headers = array(
+ 'Accept: application/json',
+ 'Authorization: Bearer '.$this->authentication->access_token,
+ 'User-Agent: FHComplete',
+ 'Connection: Keep-Alive',
+ 'Expect:',
+ 'Content-Length: 0'
+ );
+ curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
+
+ $this->debug('Sending Request to '.$url);
+
+ $response = curl_exec($curl);
+ $curl_info = curl_getinfo($curl);
+ curl_close($curl);
+
+ $this->debug('ResponseCode: '.$curl_info['http_code']);
+ $this->debug('ResponseData: '.print_r($response, true));
+
+ if ($curl_info['http_code'] == '200')
+ {
+ /* Example Response:
+
+
+ 12345678
+ Max
+ sdfaASDAFasdfads+asasdffd=
+ Mustermann
+ M
+ 1999-02-19
+ A
+
+
+ */
+ $dom = new DOMDocument();
+ $dom->loadXML($response);
+ $namespace = 'http://www.brz.gv.at/datenverbund-unis';
+ $domnodes_student = $dom->getElementsByTagNameNS($namespace, 'student');
+
+ $retval = new stdClass();
+ $retval->data = array();
+
+ foreach ($domnodes_student as $row_student)
+ {
+ // Wenn nicht gesperrt und fix vergeben
+ $ingesamtpool = $row_student->getAttribute('inGesamtPool');
+ $gesperrt = $row_student->getAttribute('gesperrt');
+
+ if ($ingesamtpool == 'true' && $gesperrt == 'false')
+ {
+ $data = new stdClass();
+
+ $domnodes_matrikelnummer = $row_student->getElementsByTagNameNS($namespace, 'matrikelNummer');
+ foreach ($domnodes_matrikelnummer as $row)
+ {
+ // MatrikelNr Found
+ $data->matrikelnummer = $row->textContent;
+ break;
+ }
+ $domnodes_bpk = $row_student->getElementsByTagNameNS($namespace, 'personenkennzeichen');
+ foreach ($domnodes_bpk as $row)
+ {
+ // BPK Found
+ $data->bpk = $row->textContent;
+ break;
+ }
+ $domnodes = $row_student->getElementsByTagNameNS($namespace, 'vorName');
+ if ($domnodes->length>0)
+ $data->vorname = $domnodes->item(0)->textContent;
+ $domnodes = $row_student->getElementsByTagNameNS($namespace, 'nachName');
+ if ($domnodes->length>0)
+ $data->nachname = $domnodes->item(0)->textContent;
+ $domnodes = $row_student->getElementsByTagNameNS($namespace, 'geschlecht');
+ if ($domnodes->length>0)
+ $data->geschlecht = $domnodes->item(0)->textContent;
+ $domnodes = $row_student->getElementsByTagNameNS($namespace, 'staatsAngehoerigkeit');
+ if ($domnodes->length > 0)
+ $data->staatsangehoerigkeit = $domnodes->item(0)->textContent;
+
+ $retval->data[] = $data;
+ }
+
+ }
+
+ return ErrorHandler::success($retval);
+ }
+ else
+ {
+ $errormsg = 'Request Failed with HTTP Code:'.$curl_info['http_code'].' and Response:'.$response;
+ return ErrorHandler::error($errormsg);
+ }
+ }
+
/**
* Generiert eine eindeutige UUID
* @return uuid
diff --git a/soap/datenverbund_client.php b/soap/datenverbund_client.php
index a5f141cd1..36f0fb9e0 100644
--- a/soap/datenverbund_client.php
+++ b/soap/datenverbund_client.php
@@ -74,6 +74,8 @@ $strasse = filter_input(INPUT_POST, 'strasse');
Matrikelnummer nach Nachname suchen
+ Matrikelnummer nach Nachname, Vorname, Geburtsdatum suchen
+ Personendaten anhand der Matrikelnummer suchen
Matrikelnummer Reservierungen anzeigen
Matrikelnummer Kontingent anfordern
Matrikelnummer Vergabe melden
@@ -128,7 +130,14 @@ $strasse = filter_input(INPUT_POST, 'strasse');
printrow('nachname', 'Nachname', $nachname);
printrow('geburtsdatum', 'Geburtsdatum', $geburtsdatum, ' (Format: YYYYMMDD)', 8);
break;
-
+ case 'getByName':
+ printrow('nachname', 'Nachname', $nachname);
+ printrow('vorname', 'Vorname', $vorname);
+ printrow('geburtsdatum', 'Geburtsdatum', $geburtsdatum, ' (Format: YYYYMMDD)', 8);
+ break;
+ case 'getByMatrikelnummer':
+ printrow('matrikelnummer', 'Matrikelnummer', $matrikelnr);
+ break;
case 'getReservations':
case 'getKontingent':
printrow('studienjahr', 'Studienjahr', $studienjahr, 'zB 2016 (für WS2016 und SS2017)', 4);
@@ -226,6 +235,46 @@ if (isset($_REQUEST['submit']))
case 'getByNachname':
$data = $dvb->getMatrikelnrByNachname($_POST['nachname'], $_POST['geburtsdatum']);
+ if(ErrorHandler::isSuccess($data) && ErrorHandler::hasData($data))
+ {
+ if(isset($data->retval->data) && is_array($data->retval->data) && count($data->retval->data)>0)
+ {
+ echo '
Daten gefunden: ';
+ var_dump($data->retval);
+ }
+ else
+ {
+ echo 'keine Einträge gefunden';
+ }
+ }
+ else
+ {
+ echo '
Matrikelnummer nicht vorhanden:'.$data->errormsg;
+ }
+ break;
+ case 'getByName':
+ $data = $dvb->getMatrikelnrByName($_POST['nachname'], $_POST['vorname'], $_POST['geburtsdatum']);
+
+ if(ErrorHandler::isSuccess($data) && ErrorHandler::hasData($data))
+ {
+ if(isset($data->retval->data) && is_array($data->retval->data) && count($data->retval->data)>0)
+ {
+ echo '
Daten gefunden: ';
+ var_dump($data->retval);
+ }
+ else
+ {
+ echo 'keine Einträge gefunden';
+ }
+ }
+ else
+ {
+ echo '
Matrikelnummer nicht vorhanden:'.$data->errormsg;
+ }
+ break;
+ case 'getByMatrikelnummer':
+ $data = $dvb->getDataByMatrikelnr($_POST['matrikelnummer']);
+
if(ErrorHandler::isSuccess($data) && ErrorHandler::hasData($data))
{
if(isset($data->retval->data) && is_array($data->retval->data) && count($data->retval->data)>0)