diff --git a/soap/stip.class.php b/soap/stip.class.php index a8d11bd85..669b8a1e1 100644 --- a/soap/stip.class.php +++ b/soap/stip.class.php @@ -1,6 +1,7 @@ db_query($qrystatus)) + { + if($this->db_num_rows($resultstatus)==0) + { + $stsem = new studiensemester(); + $psem = $stsem->getPreviousFrom($studiensemester_kurzbz); + + $qrystatus=" + SELECT * + FROM + public.tbl_prestudentstatus + WHERE + prestudent_id='$prestudent_id' + AND studiensemester_kurzbz='$psem'"; + if(!is_null($bisdatum)) + $qrystatus.=" AND (tbl_prestudentstatus.datum<'$bisdatum') "; + $qrystatus.=" ORDER BY datum desc, insertamum desc, ext_id desc;"; + + if(!$resultstatus = $this->db_query($qrystatus)) + { + $this->errormsg='Fehler beim Laden der Daten'; + return false; + } + } + } + if($rowstatus = $this->db_fetch_object($resultstatus)) + { + switch($rowstatus->status_kurzbz) + { + case 'Student': + case 'Incoming': + case 'Outgoing': + case 'Praktikant': + case 'Diplomand': + $status=1; + break; + case 'Unterbrecher': + $status=2; + break; + case 'Absolvent': + $status=3; + break; + case 'Abbrecher': + $status=4; + break; + default: + $this->errormsg='Fehlerhafter Status'; + break; + } + } + + return $status; + } + /** + * + * Ermittelt den SemesterCode + */ + public function getSemester($prestudent_id, $studiensemester_kurzbz, $bisdatum=null) + { + $qrystatus=" + SELECT + * + FROM + public.tbl_prestudentstatus + WHERE + prestudent_id='$prestudent_id' + AND studiensemester_kurzbz='$studiensemester_kurzbz'"; + if(!is_null($bisdatum)) + $qrystatus.=" AND (tbl_prestudentstatus.datum<'$bisdatum')"; + + $qrystatus.=" ORDER BY datum desc, insertamum desc, ext_id desc;"; + + if($resultstatus = $this->db_query($qrystatus)) + { + if($this->db_num_rows($resultstatus)==0) + { + $stsem = new studiensemester(); + $psem = $stsem->getPreviousFrom($studiensemester_kurzbz); + + $qrystatus=" + SELECT * + FROM + public.tbl_prestudentstatus + WHERE + prestudent_id='$prestudent_id' + AND studiensemester_kurzbz='$psem'"; + if(!is_null($bisdatum)) + $qrystatus.=" AND (tbl_prestudentstatus.datum<'$bisdatum') "; + $qrystatus.=" ORDER BY datum desc, insertamum desc, ext_id desc;"; + + if(!$resultstatus = $this->db_query($qrystatus)) + { + $this->errormsg='Fehler beim Laden der Daten'; + return false; + } + } + + if($rowstatus = $this->db_fetch_object($resultstatus)) + { + $qry1=" + SELECT count(*) AS dipl FROM public.tbl_prestudentstatus + WHERE + prestudent_id='$prestudent_id' + AND status_kurzbz='Diplomand'"; + if(!is_null($bisdatum)) + $qry1.=" AND (tbl_prestudentstatus.datum<'$bisdatum') "; + + if($result1 = $this->db_query($qry1)) + { + if($row1 = $this->db_fetch_object($result1)) + { + $sem=$rowstatus->ausbildungssemester; + + if($row1->dipl>1) + { + $sem=50; + } + if($row1->dipl>3) + { + $sem=60; + } + } + } + } + } + return $sem; + } + } class error diff --git a/soap/stip.soap.php b/soap/stip.soap.php index 28bb99686..8d644a2dc 100644 --- a/soap/stip.soap.php +++ b/soap/stip.soap.php @@ -25,6 +25,7 @@ require_once('../include/basis_db.class.php'); require_once('../include/prestudent.class.php'); require_once('../include/student.class.php'); require_once('../include/konto.class.php'); +require_once('../include/datum.class.php'); require_once('stip.class.php'); $SOAPServer = new SoapServer("stip.soap.wsdl"); @@ -36,7 +37,8 @@ function getStipDaten($ErhKz, $AnfragedatenID, $Bezieher) { $prestudentID; $studentUID; - $StipBezieher = new stip(); + $StipBezieher = new stip(); + $datum_obj = new datum(); if(validateStipDaten($ErhKz, $AnfragedatenID, $Bezieher)) { @@ -69,8 +71,12 @@ function getStipDaten($ErhKz, $AnfragedatenID, $Bezieher) if($Bezieher->Typ == "as" || $Bezieher->Typ == "AS") { $StipBezieher->Inskribiert ="j"; - $StipBezieher->Ausbildungssemester = $prestudent->ausbildungssemester; - $StipBezieher->StudStatusCode = $prestudent->status_kurzbz; + $StipBezieher->Ausbildungssemester = $StipBezieher->getSemester($prestudentID, 'SS2009'); + //return new SoapFault("Server", "Some error message"); + $StipBezieher->StudStatusCode = $StipBezieher->getStudStatusCode($prestudentID, 'SS2009'); + if($StipBezieher->StudStatusCode==3 || $StipBezieher->StudStatusCode==4) + $StipBezieher->BeendigungsDatum = $datum_obj->formatDatum($prestudent->datum,'dmY'); + if($konto->checkStudienbeitrag($studentUID, 'SS2009')) $StipBezieher->Studienbeitrag = 300; } diff --git a/soap/stip_client.php b/soap/stip_client.php index a6a7f9224..5bfcd8931 100644 --- a/soap/stip_client.php +++ b/soap/stip_client.php @@ -74,9 +74,15 @@ if(isset($_REQUEST['submit'])) $bezieher->Familienname= $_REQUEST['Familienname']; $bezieher->Vorname= $_REQUEST['Vorname']; $bezieher->Typ = $_REQUEST['Typ']; - - $response = $client->getStipDaten($ErhKz, $AnfragedatenID, $bezieher); - - echo var_dump($response); + try + { + $response = $client->getStipDaten($ErhKz, $AnfragedatenID, $bezieher); + echo var_dump($response); + } + catch(SoapFault $fault) + { + echo "SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR; + } + } ?> \ No newline at end of file