From 49ce61d9b51c330d7d4c10227ee19376eb186b52 Mon Sep 17 00:00:00 2001 From: Werner Masik Date: Thu, 24 Jul 2014 05:24:48 +0000 Subject: [PATCH] =?UTF-8?q?Client=20f=C3=BCr=20F=C3=96BisAktive,=20Bug=20F?= =?UTF-8?q?ixes,=20Performance=20Verbesserungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/studienplatz.class.php | 52 +++++- .../studienplatzverwaltung/AqaClientTest.php | 133 ++++++++++++++++ .../AqaFoebisStgTest.php | 149 ++++++++++++++++++ 3 files changed, 333 insertions(+), 1 deletion(-) create mode 100644 system/UnitTests/addons/studienplatzverwaltung/AqaClientTest.php create mode 100644 system/UnitTests/addons/studienplatzverwaltung/AqaFoebisStgTest.php diff --git a/include/studienplatz.class.php b/include/studienplatz.class.php index f5ae7fc0d..4194c7729 100644 --- a/include/studienplatz.class.php +++ b/include/studienplatz.class.php @@ -24,6 +24,7 @@ * Werner Masik */ require_once(dirname(__FILE__).'/basis_db.class.php'); +require_once(__DIR__ .'/functions.inc.php'); class studienplatz extends basis_db { @@ -167,7 +168,7 @@ class studienplatz extends basis_db //Pruefen ob $studiengang_kz eine gueltige Zahl ist if(!is_numeric($studiengang_kz) || $studiengang_kz == '') { - $this->errormsg = '$studiengang_kz muss eine gültige Zahl sein'; + $this->errormsg = 'studiengang_kz muss eine gültige Zahl sein'; return false; } @@ -194,6 +195,55 @@ class studienplatz extends basis_db } + /** + * Liefert Array mit GPZ und NPZ für die FÖBis relevanten Orgformen (BB, VZ, VBB). + * Dient als Ersatz für load_studiengang_studiensemester_orgform weil hiermit + * alle Daten mit einer Abfrage geholt werden können. + * @param type $studienjahr z.B: 2013 + * @param type $zeitraum z.B: 10 [Semester] + * @return boolean|array false bei Fehler + */ + public function getAnzahlAlleOrgformen($studienjahr, $zeitraum) + { + + // Semesterliste für where klausel erzeugen: + $startSemester= 'WS'.substr($studienjahr,0,4); + $semesterList = generateSemesterList($startSemester,($zeitraum*2)-1); + $semesterList_comma_separated = "'".join("','",$semesterList)."'"; + + //Lesen der Daten aus der Datenbank + $qry = "SELECT studiensemester_kurzbz,studiengang_kz, + sum(case when orgform_kurzbz='VZ' then npz else 0 end) as npz_vz, + sum(case when orgform_kurzbz='BB' then npz else 0 end) as npz_bb, + sum(case when orgform_kurzbz='VBB' then npz else 0 end) as npz_vbb, + sum(npz) as npz_gesamt, + sum(case when orgform_kurzbz='VZ' then npz else 0 end) as gpz_vz, + sum(case when orgform_kurzbz='BB' then npz else 0 end) as gpz_bb, + sum(case when orgform_kurzbz='VBB' then npz else 0 end) as gpz_vbb, + sum(gpz) as gpz_gesamt + FROM lehre.tbl_studienplatz + WHERE ausbildungssemester is null and studiensemester_kurzbz IN ($semesterList_comma_separated) + group by studiensemester_kurzbz,studiengang_kz"; + $this->result = array(); + if(!$this->db_query($qry)) + { + return false; + } + $result = array(); + while($row = $this->db_fetch_object()) + { + $result[$row->studiensemester_kurzbz][$row->studiengang_kz]['BB']['NPZ'] = $row->npz_bb; + $result[$row->studiensemester_kurzbz][$row->studiengang_kz]['VZ']['NPZ'] = $row->npz_vz; + $result[$row->studiensemester_kurzbz][$row->studiengang_kz]['VBB']['NPZ'] = $row->npz_vbb; + $result[$row->studiensemester_kurzbz][$row->studiengang_kz]['gesamt']['NPZ'] = $row->npz_gesamt; + $result[$row->studiensemester_kurzbz][$row->studiengang_kz]['BB']['GPZ'] = $row->npz_bb; + $result[$row->studiensemester_kurzbz][$row->studiengang_kz]['VZ']['GPZ'] = $row->gpz_vz; + $result[$row->studiensemester_kurzbz][$row->studiengang_kz]['VBB']['GPZ'] = $row->gpz_vbb; + $result[$row->studiensemester_kurzbz][$row->studiengang_kz]['gesamt']['GPZ'] = $row->gpz_gesamt; + } + return $result; + } + /** * Prueft die Variablen auf Gueltigkeit diff --git a/system/UnitTests/addons/studienplatzverwaltung/AqaClientTest.php b/system/UnitTests/addons/studienplatzverwaltung/AqaClientTest.php new file mode 100644 index 000000000..1f15a4004 --- /dev/null +++ b/system/UnitTests/addons/studienplatzverwaltung/AqaClientTest.php @@ -0,0 +1,133 @@ + + * + */ +require_once('../../../../config/system.config.inc.php'); +require_once('../../../../include/appdaten.class.php'); +require_once('../../../../include/benutzer.class.php'); +require_once('../../../../addons/studienplatzverwaltung/vilesci/StudienplatzverwaltungAPI.class.php'); +require_once('../../../../addons/studienplatzverwaltung/studienplatzverwaltung.config.inc.php'); +require_once('../../../../addons/studienplatzverwaltung/soap/AqaFoebisClient.php'); + + +class AqaClientTest extends PHPUnit_Framework_TestCase +{ + protected $benutzer; + protected $uid = 'unittest'; + + public function setUp() + { + /* + $this->benutzer = new benutzer(); + $this->benutzer->new = true; + $this->benutzer->uid = $this->uid; + $this->benutzer->alias = 'Unit Test Benutzer'; + $this->benutzer->aktiv = true; + $this->benutzer->nachname = 'Unit'; + $this->benutzer->geschlecht = 'm'; + $result = $this->benutzer->save(); + if (!$result) { + echo 'Fehler: '.$this->benutzer->errormsg; + } + $this->assertTrue($result); + */ + } + + public function tearDown() + { +/* if ($this->benutzer) { + // Benutzer löschen + $this->assertTrue( + $this->benutzer->deleteBenutzer($this->uid)); + // Person löschen + $this->assertTrue( + $this->benutzer->delete($this->benutzer->person_id)); + // benutzer hat On Delete Cascade zu den appdaten!!! + }*/ + } + + + public function testPing() { + $params->userName = AQA_USERNAME; + $params->passWord = AQA_PASSWORD; + $params->stgKz = '0256'; + $params->studJahrCode = '20'; + $params->runde = '2'; + + $client = new SoapClient(AQA_ERHALTERSERVICE,array( + 'trace' => 1, + 'exceptions' => 0 + )); + $result = $client->ListFoebisAbrechnungStudiengang($params); + $this->soapDebug($client); + $this->assertNotNull($result); + $xml = simplexml_load_string($this->removeNamespace($result->ListFoebisAbrechnungStudiengangResult->any)); + $details = $xml->Tablix1->Group1_Collection->Group1->Details_Collection->Details; + foreach ($details as $detail) + { + var_dump($detail); + } + } + + public function testClient() { + $stgKz = '0256'; + $studjahrCode = 2013; + $runde = 2; + $client = new AqaFoebisClient(); + $result = $client->listFoebisAbrechnungStudiengang($stgKz,$studjahrCode,$runde); + } + + public function testSyncAll() { + + $client = StudienplatzverwaltungAPI::init(); + $result = $client->syncFoebisStg(); + $this->assertTrue($result); + } + + + function removeNamespace($xml_string) { + // Gets rid of all namespace definitions + $xml_string = preg_replace('/xmlns[^=]*="[^"]*"/i', '', $xml_string); + + // Gets rid of all namespace references + $xml_string = preg_replace('/[a-zA-Z]+:([a-zA-Z]+[=>])/', '$1', $xml_string); + return $xml_string; + } + + function soapDebug($client){ + + $requestHeaders = $client->__getLastRequestHeaders(); + $request = $client->__getLastRequest(); + $responseHeaders = $client->__getLastResponseHeaders(); + $response = $client->__getLastResponse(); + + echo '' . nl2br(htmlspecialchars($requestHeaders, true)) . ''; + echo highlight_string($request, true) . "
\n"; + + echo '' . nl2br(htmlspecialchars($responseHeaders, true)) . '' . "
\n"; + echo highlight_string($response, true) . "
\n"; + } + +} + +?> diff --git a/system/UnitTests/addons/studienplatzverwaltung/AqaFoebisStgTest.php b/system/UnitTests/addons/studienplatzverwaltung/AqaFoebisStgTest.php new file mode 100644 index 000000000..34601f517 --- /dev/null +++ b/system/UnitTests/addons/studienplatzverwaltung/AqaFoebisStgTest.php @@ -0,0 +1,149 @@ + + * + */ +require_once('../../../../config/system.config.inc.php'); +require_once('../../../../include/studienplatz.class.php'); +require_once('../../../../include/benutzer.class.php'); +require_once('../../../../addons/studienplatzverwaltung/include/aqa_foebis_stg.class.php'); + +class AqaFoebisStgTest extends PHPUnit_Framework_TestCase +{ + protected $benutzer; + protected $uid = 'unittest'; + + public function setUp() + { + $this->benutzer = new benutzer(); + $this->benutzer->new = true; + $this->benutzer->uid = $this->uid; + $this->benutzer->alias = 'Unit Test Benutzer'; + $this->benutzer->aktiv = true; + $this->benutzer->nachname = 'Unit'; + $this->benutzer->geschlecht = 'm'; + $result = $this->benutzer->save(); + if (!$result) { + echo 'Fehler: '.$this->benutzer->errormsg; + } + $this->assertTrue($result); + } + + public function tearDown() + { + if ($this->benutzer) { + // Benutzer löschen + $this->assertTrue( + $this->benutzer->deleteBenutzer($this->uid)); + // Person löschen + $this->assertTrue( + $this->benutzer->delete($this->benutzer->person_id)); + // benutzer hat On Delete Restrict zu den appdaten!!! + } + } + + public function testCRUD() + { + $studiengang_kz = '120'; // 120 = dummy + $studiensemester_kurzbz = 'WS2014'; + $orgform_kurzbz = 'BB'; + $stgartbez = "m"; + $regelstudiendauer = 5; + $jahr = 2014; + $monat = 11; + $runde = 1; + $npz = 200; + $aq = 18; + $foerdergruppe = 'technisch'; + $r1_plaetze_bezahlt = 201; + $r2_plaetze_bezahlt = 202; + $r3_plaetze_bezahlt = 203; + $r2_foebisaktive = 206; + $r3_foebisaktive = 207; + $r2r1_foebisaktive_korr = 4; + $r3r2_foebisaktive_korr = 5; + $foebisaktive = 163; + $insertvon = 'unittest'; + + // Create + $foebis = new aqa_foebis_stg(); + $foebis->studiengang_kz = $studiengang_kz; + $foebis->studiensemester_kurzbz = $studiensemester_kurzbz; + $foebis->orgform_kurzbz = $orgform_kurzbz; + $foebis->regelstudiendauer = $regelstudiendauer; + $foebis->stgartbez = $stgartbez; + $foebis->foebisaktive = $foebisaktive; + $foebis->jahr = $jahr; + $foebis->monat = $monat; + $foebis->runde = $runde; + $foebis->npz = $npz; + $foebis->aq = $aq; + $foebis->foerdergruppe = $foerdergruppe; + $foebis->r1_plaetze_bezahlt = $r1_plaetze_bezahlt; + $foebis->r2_plaetze_bezahlt = $r2_plaetze_bezahlt; + $foebis->r3_plaetze_bezahlt = $r3_plaetze_bezahlt; + $foebis->r2_foebisaktive = $r2_foebisaktive; + $foebis->r3_foebisaktive = $r3_foebisaktive; + $foebis->r2r1_foebisaktive_korr = $r2r1_foebisaktive_korr; + $foebis->r3r2_foebisaktive_korr = $r3r2_foebisaktive_korr; + + $foebis->insertvon = $insertvon; + $foebis_stg_id = $foebis->save(); + $this->assertNotEquals($foebis_stg_id, false); + + // load + $this->assertTrue($foebis->load_foebis($foebis_stg_id)); + $this->assertEquals($studiensemester_kurzbz,$foebis->studiensemester_kurzbz); + $this->assertEquals($orgform_kurzbz,$foebis->orgform_kurzbz); + $this->assertEquals($studiengang_kz,$foebis->studiengang_kz); + $this->assertEquals($regelstudiendauer,$foebis->regelstudiendauer); + $this->assertEquals($jahr,$foebis->jahr); + $this->assertEquals($monat,$foebis->monat); + $this->assertEquals($runde,$foebis->runde); + $this->assertEquals($npz,$foebis->npz); + $this->assertEquals($aq,$foebis->aq); + $this->assertEquals($foerdergruppe,$foebis->foerdergruppe); + $this->assertEquals($r1_plaetze_bezahlt, $foebis->r1_plaetze_bezahlt); + $this->assertEquals($r2_plaetze_bezahlt,$foebis->r2_plaetze_bezahlt); + $this->assertEquals($r3_plaetze_bezahlt,$foebis->r3_plaetze_bezahlt); + $this->assertEquals($r2_foebisaktive,$foebis->r2_foebisaktive); + $this->assertEquals($r3_foebisaktive,$foebis->r3_foebisaktive); + $this->assertEquals($r2r1_foebisaktive_korr,$foebis->r2r1_foebisaktive_korr); + $this->assertEquals($r3r2_foebisaktive_korr,$foebis->r3r2_foebisaktive_korr); + + $npzNeu = 205; + + $foebis->npz = $npzNeu; + $foebis->save(); + $this->assertTrue($foebis->load_foebis($foebis_stg_id)); + $this->assertEquals($npzNeu,$foebis->npz); + + // test delete + cleanup test data + $this->assertNotEquals($foebis->delete($foebis_stg_id), false); + + } + + + +} +?> +