mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-20 00:12:15 +00:00
Client für FÖBisAktive, Bug Fixes, Performance Verbesserungen
This commit is contained in:
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user