Studienplatzverwaltung benutzt nun Datenbank anstatt Testdaten.

This commit is contained in:
Werner Masik
2014-03-17 12:20:14 +00:00
parent f538ebc699
commit bf1031e395
8 changed files with 312 additions and 25 deletions
+65 -1
View File
@@ -96,6 +96,44 @@ class appdaten extends basis_db
return true;
}
/**
* Appdaten nach bezeichnung und version laden
* @param type $app
* @param type $bezeichnung
* @param type $version
* @return boolean true wenn keine Fehler, sonst false
*/
public function getByBezeichnungVersion($app, $bezeichnung, $version)
{
$this->new = false;
if(!is_numeric($version))
{
$this->errormsg = 'version muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM system.tbl_appdaten "
. "WHERE "
. "app=".$this->db_add_param($app, FHC_STRING, false).' '
. "AND bezeichnung=".$this->db_add_param($bezeichnung, FHC_STRING, false).' '
. "AND version=".$this->db_add_param($version, FHC_INTEGER, false);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->mapRow($this, $row);
}
}
else
{
return false;
}
return true;
}
/**
* Laden aller Appdaten sortiert nach Bezeichnung und version
* @param string app name
@@ -143,7 +181,7 @@ class appdaten extends basis_db
$target->freigabe=$this->db_parse_bool($row->freigabe);
$target->insertamum=$row->insertamum;
$target->insertvon=$row->insertvon;
$target->updatenamum=$row->updateamum;
$target->updateamum=$row->updateamum;
$target->updatevon=$row->updatevon;
}
@@ -339,6 +377,32 @@ class appdaten extends basis_db
return false;
}
}
public function deleteByBezeichnungVersion($app, $bezeichnung, $version)
{
//Pruefen ob appdaten_id eine gueltige Zahl ist
if(!is_numeric($version) || $version === '')
{
$this->errormsg = 'Version muss eine gültige Zahl sein'."\n";
return false;
}
//loeschen des Datensatzes
$qry="DELETE FROM system.tbl_appdaten "
. "WHERE "
. "app=".$this->db_add_param($app, FHC_STRING, false).' '
. "AND bezeichnung=".$this->db_add_param($bezeichnung, FHC_STRING, false).' '
. "AND version=".$this->db_add_param($version, FHC_INTEGER, false);
if($this->db_query($qry))
{
return true;
}
else
{
return false;
}
}
/* public function cleanResult()
{
+39
View File
@@ -904,4 +904,43 @@ function clearHtmlTags($text)
return $text;
}
/**
* nächstes Semester erzeugen. Bsp incSemester('SS2014') liefert 'WS2014'
* @param string $semester z.B. SS2014
* @return string nächstes semester
*/
function incSemester($semester)
{
$result = null;
$jahr = intval(substr($semester,2,4));
if (substr($semester,0,2) === 'SS') {
$result = 'WS';
} else {
$result = 'SS';
$jahr++;
}
$result = $result.$jahr;
return $result;
}
/**
* Liste mit Semestern erzeugen
* @param type $semester
* @param type $anzahlFolgesemester
* @return array Semesterliste
*/
function generateSemesterList($semester, $anzahlFolgesemester)
{
$result[] = $semester;
$jahr = intval(substr($semester,2,4));
$currentSemester = $semester;
for ($index = 0; $index < $anzahlFolgesemester; $index++)
{
$currentSemester = incSemester($currentSemester);
$result[] = $currentSemester;
}
return $result;
}
?>
+98
View File
@@ -1332,5 +1332,103 @@ class prestudent extends person
return false;
}
}
/**
* Anzahl der Abbrecher liefern.<br>
* WM: Kopie von getBewerber() => @TODO: überprüfen!!!
* @param type $studiensemester_kurzbz
* @param type $studiengang_kz
* @param type $orgform_kurzbz
* @param type $ausbildungssemester
* @return boolean
*/
public function getAnzAbbrecher($studiensemester_kurzbz, $studiengang_kz=null, $orgform_kurzbz=null, $ausbildungssemester=null)
{
$qry = "SELECT
count(*) as anzahl
FROM
public.tbl_prestudent
JOIN public.tbl_prestudentstatus USING(prestudent_id)
WHERE
tbl_prestudentstatus.status_kurzbz='Abbrecher'
AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
if(!is_null($studiengang_kz))
$qry.=" AND tbl_prestudent.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
if(!is_null($orgform_kurzbz))
$qry.=" AND (tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)." OR (tbl_prestudentstatus.orgform_kurzbz IS NULL AND EXISTS(SELECT 1 FROM public.tbl_studiengang WHERE studiengang_kz=tbl_prestudent.studiengang_kz AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).")))";
if(!is_null($ausbildungssemester))
$qry.=" AND tbl_prestudentstatus.ausbildungssemester=".$this->db_add_param($ausbildungssemester);
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
return $row->anzahl;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Anzahl der Studierenden liefern.<br>
* WM: Kopie von getBewerber() => @TODO: überprüfen!!!
* @param type $studiensemester_kurzbz
* @param type $studiengang_kz
* @param type $orgform_kurzbz
* @param type $ausbildungssemester
* @return boolean
*/
public function getAnzStudierende($studiensemester_kurzbz, $studiengang_kz=null, $orgform_kurzbz=null, $ausbildungssemester=null)
{
$qry = "SELECT
count(*) as anzahl
FROM
public.tbl_prestudent
JOIN public.tbl_prestudentstatus USING(prestudent_id)
WHERE
tbl_prestudentstatus.status_kurzbz='Student'
AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
if(!is_null($studiengang_kz))
$qry.=" AND tbl_prestudent.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
if(!is_null($orgform_kurzbz))
$qry.=" AND (tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)." OR (tbl_prestudentstatus.orgform_kurzbz IS NULL AND EXISTS(SELECT 1 FROM public.tbl_studiengang WHERE studiengang_kz=tbl_prestudent.studiengang_kz AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).")))";
if(!is_null($ausbildungssemester))
$qry.=" AND tbl_prestudentstatus.ausbildungssemester=".$this->db_add_param($ausbildungssemester);
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
return $row->anzahl;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
?>
+36 -23
View File
@@ -10,7 +10,7 @@
* (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
* but WITHOUT ANY WARRANTY; without even the implied warranty oferr
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
@@ -44,7 +44,7 @@ class studienplatz extends basis_db
/** @var string */
private $studiensemester_kurzbz;
/** @var integer */
private $ausbildungssemester;
private $ausbildungssemester;
/** @var integer */
private $gpz;
/** @var integer */
@@ -75,11 +75,11 @@ class studienplatz extends basis_db
switch ($name)
{
case 'gpz':
case 'npz':
case 'ausbildungssemester':
case 'npz':
case 'ausbildungssemester':
case 'studienplatz_id':
if (!is_numeric($value))
throw new Exception("Attribute $name must be numeric!");
if ($value != null && !is_numeric($value))
throw new Exception("Attribute $name must be numeric! ($value)");
$this->$name=$value;
break;
default:
@@ -146,15 +146,23 @@ class studienplatz extends basis_db
$target->updatevon = $row->updatevon;
$target->insertamum = $row->insertamum;
$target->insertvon = $row->insertvon;
$target->new = false;
}
/**
* Laedt alle Studienplaetze zu einem Studiengang und Semester
* Laedt alle Studienplaetze zu einem Studiengang und Semester. Ergebnis
* steht in result, wobei es nur einen Datensatz geben kann, wenn
* keinAusbildungssemester = true ist.
* @param integer $studiengang_kz
* @param string$ studiensemester_kurzbz
* @param string studiensemester_kurzbz
* @param string orgform_kurzbz
* @param boolean Ausbildungssemester ist optional. Wenn true werden
* nur Datensätze geladen wo das Ausbildungssemester null ist. Wenn
* false werden alle geladen wo ein Ausbildungssemester eingetragen
* ist.
* @return true wenn ok, false im Fehlerfall
*/
public function load_studiengang_studiensemester($studiengang_kz, $studiensemester_kurzbz)
public function load_studiengang_studiensemester_orgform($studiengang_kz, $studiensemester_kurzbz, $orgform, $keinAusbildungssemester = true)
{
//Pruefen ob $studiengang_kz eine gueltige Zahl ist
if(!is_numeric($studiengang_kz) || $studiengang_kz == '')
@@ -164,19 +172,24 @@ class studienplatz extends basis_db
}
//Lesen der Daten aus der Datenbank
$qry = "SELECT * FROM lehre.tbl_studienplatz WHERE studienplatz_id=".
$this->db_add_param($studienplatz_id, FHC_INTEGER, false).
" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz, FHC_STRING, false);
if(!$this->db_query($qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
$qry = "SELECT * FROM lehre.tbl_studienplatz WHERE studiengang_kz=".
$this->db_add_param($studiengang_kz, FHC_INTEGER, false).
" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz, FHC_STRING, false).
//" AND art=".$this->db_add_param($art, FHC_STRING, false).
" AND orgform_kurzbz=".$this->db_add_param($orgform, FHC_STRING, false).
" AND ausbildungssemester ".($keinAusbildungssemester ? 'is null':'is not null');
$this->result = array();
if(!$this->db_query($qry))
{
return false;
}
while($row = $this->db_fetch_object())
{
$this->result[] = $this->mapRow(new studienplatz(), $row);
}
$rec = new studienplatz();
$this->mapRow($rec, $row);
$this->result[] = $rec;
}
return true;
}
@@ -249,6 +262,7 @@ class studienplatz extends basis_db
$this->db_add_param($this->orgform_kurzbz).', '.
$this->db_add_param($this->studiensemester_kurzbz).', '.
$this->db_add_param($this->ausbildungssemester, FHC_INTEGER).', '.
//$this->db_add_param($this->art).', '.
$this->db_add_param($this->gpz, FHC_INTEGER).', '.
$this->db_add_param($this->npz, FHC_INTEGER).', '.
'now(), '.
@@ -269,11 +283,12 @@ class studienplatz extends basis_db
' orgform_kurzbz='.$this->db_add_param($this->orgform_kurzbz).', '.
' studiensemester_kurzbz='.$this->db_add_param($this->studiensemester_kurzbz).', '.
' ausbildungssemester='.$this->db_add_param($this->ausbildungssemester).', '.
//' art='.$this->db_add_param($this->art).', '.
' gpz='.$this->db_add_param($this->gpz).', '.
' npz='.$this->db_add_param($this->npz).', '.
' updateamum= now(), '.
' updatevon='.$this->db_add_param($this->updatevon).', '.
'WHERE studienplatz_id='.$this->db_add_param($this->studienplatz_id, FHC_INTEGER, false).';';
' updatevon='.$this->db_add_param($this->updatevon).
' WHERE studienplatz_id='.$this->db_add_param($this->studienplatz_id, FHC_INTEGER, false).';';
}
if($this->db_query($qry))
@@ -306,8 +321,7 @@ class studienplatz extends basis_db
}
else
{
$this->errormsg = 'Fehler beim Speichern des Studienplatz-Datensatzes';
{
return false;
}
return $this->studienplatz_id;
@@ -335,8 +349,7 @@ class studienplatz extends basis_db
return true;
}
else
{
$this->errormsg = 'Fehler beim Löschen der Daten'."\n";
{
return false;
}
}
+51
View File
@@ -0,0 +1,51 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Werner Masik <werner@gefi.at>,
*/
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/functions.inc.php');
class FunctionsTest extends PHPUnit_Framework_TestCase
{
public function setUp()
{
}
public function testIncSemester()
{
$this->assertEquals('WS2014',incSemester('SS2014'));
$this->assertEquals('SS2015',incSemester('WS2014'));
$this->assertEquals('WS2015',incSemester('SS2015'));
$this->assertEquals('SS2016',incSemester('WS2015'));
}
public function testGenerateSemesterList()
{
$liste = generateSemesterList('WS2013', 3);
$this->assertEquals(4,count($liste));
$this->assertEquals('WS2013',$liste[0]);
$this->assertEquals('SS2014',$liste[1]);
$this->assertEquals('WS2014',$liste[2]);
$this->assertEquals('SS2015',$liste[3]);
}
}
?>
@@ -61,6 +61,27 @@ class StudienplatzverwaltungAPITest extends PHPUnit_Framework_TestCase
}
}
public function testParseBasisDaten() {
$api = StudienplatzverwaltungAPI::init();
$result = $api->parseBasisdatenUV('testfile.xml');
$this->assertTrue($result);
}
public function testStudiengangSPVGetAll()
{
$studiengangSPV = new studiengangSPV();
$this->assertTrue($studiengangSPV->getAll('2013/14',2));
}
public function testNewUV()
{
$api = StudienplatzverwaltungAPI::init();
$appdaten = $api->newUV('2013/14',2, $this->uid);
$this->assertNotNull($appdaten);
}
public function testGetMetadata() {
$sj = '2013/14';
$this->assertNotEquals($this->createAppdaten($sj, $this->createDaten($sj)), false);
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -433,7 +433,7 @@ if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_studienplatz LIMIT 1;"))
orgform_kurzbz varchar(3),
ausbildungssemester smallint,
gpz integer,
npz integer,
npz integer,
insertamum timestamp,
insertvon varchar(32),
updateamum timestamp,