Client für FÖBisAktive, Bug Fixes, Performance Verbesserungen

This commit is contained in:
Werner Masik
2014-07-24 05:24:48 +00:00
parent 4670cac3f5
commit 49ce61d9b5
3 changed files with 333 additions and 1 deletions
+51 -1
View File
@@ -24,6 +24,7 @@
* Werner Masik <werner@gefi.at>
*/
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
@@ -0,0 +1,133 @@
<?php
/*
* AqaClientTest.php
*
* Copyright 2014 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*
* Authors: Werner Masik <werner.masik@gefi.at>
*
*/
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 '<code>' . nl2br(htmlspecialchars($requestHeaders, true)) . '</code>';
echo highlight_string($request, true) . "<br/>\n";
echo '<code>' . nl2br(htmlspecialchars($responseHeaders, true)) . '</code>' . "<br/>\n";
echo highlight_string($response, true) . "<br/>\n";
}
}
?>
@@ -0,0 +1,149 @@
<?php
/*
* AqaFoebisStgTest.php
*
* Copyright 2014 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*
* Authors: Werner Masik <werner.masik@gefi.at>
*
*/
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);
}
}
?>