- Added method getStudiengangBewerbung to controller Studiengang2

- Renamed method loadList to loadTree
- Improved method loadTree
- Added method getStudiengangBewerbung to model Studiengang_model
This commit is contained in:
bison
2016-09-06 15:52:34 +02:00
parent 9f919e6e7b
commit 0b5644d6f1
3 changed files with 71 additions and 11 deletions
@@ -73,4 +73,11 @@ class Studiengang2 extends APIv1_Controller
$this->response();
}
}
public function getStudiengangBewerbung()
{
$result = $this->StudiengangModel->getStudiengangBewerbung();
$this->response($result, REST_Controller::HTTP_OK);
}
}
+26 -10
View File
@@ -192,11 +192,11 @@ class DB_Model extends FHC_Model
*
* TODO:
* - Adding support for composed primary key
* - Adding support for cascading side tables
* - Adding support for cascading side tables (?)
*
* @return array
*/
public function loadList($mainTable, $sideTables, $where = null, $sideTablesAliases = null)
public function loadTree($mainTable, $sideTables, $where = null, $sideTablesAliases = null)
{
// Check Class-Attributes
if (is_null($this->dbTable))
@@ -247,7 +247,6 @@ class DB_Model extends FHC_Model
// of a side table
$returnArray = array();
$returnArrayCounter = 0; // Array counter
$prevPK = null; // Previous primary key
// Iterates the array that contains data from DB
for ($i = 0; $i < count($resultArray); $i++)
@@ -282,17 +281,18 @@ class DB_Model extends FHC_Model
$sideTableProperty = $sideTablesAliases[$t -1];
}
if ($prevPK == $mainTableObj->{$this->pk})
{
array_push($returnArray[$returnArrayCounter - 1]->{$sideTableProperty}, $sideTableObj);
}
else
if (($k = $this->findMainTable($mainTableObj, $returnArray)) === false)
{
$mainTableObj->{$sideTableProperty} = array($sideTableObj);
$returnArray[$returnArrayCounter++] = $mainTableObj;
}
$prevPK = $mainTableObj->{$this->pk};
else
{
if (array_search($sideTableObj, $returnArray[$k]->{$sideTableProperty}) === false)
{
array_push($returnArray[$k]->{$sideTableProperty}, $sideTableObj);
}
}
}
}
@@ -306,6 +306,22 @@ class DB_Model extends FHC_Model
return $result;
}
/**
* Used in loadTree
*/
private function findMainTable($mainTableObj, $mainTableArray)
{
for ($i = 0; $i < count($mainTableArray); $i++)
{
if ($mainTableObj->{$this->pk} == $mainTableArray[$i]->{$this->pk})
{
return $i;
}
}
return false;
}
/** ---------------------------------------------------------------
* Add a table to join with
@@ -117,7 +117,7 @@ class Studiengang_model extends DB_Model
$this->addOrder("public.tbl_studiengang.studiengang_kz");
$this->addOrder("lehre.tbl_studienplan.studienplan_id");
$result = $this->loadList(
$result = $this->loadTree(
"tbl_studiengang",
array(
"tbl_studienplan"
@@ -135,4 +135,41 @@ class Studiengang_model extends DB_Model
return $result;
}
/**
*
*/
public function getStudiengangBewerbung()
{
// Join table public.tbl_studiengang with table lehre.tbl_studienordnung on column studiengang_kz
$this->addJoin("lehre.tbl_studienordnung", "studiengang_kz");
// Then join with table lehre.tbl_studienplan on column studienordnung_id
$this->addJoin("lehre.tbl_studienplan", "studienordnung_id");
// Then join with table lehre.tbl_studienplan_semester on column studienplan_id
$this->addJoin("lehre.tbl_studienplan_semester", "studienplan_id");
// Then join with table lehre.tbl_bewerbungsfrist on column studiensemester_kurzbz
$this->addJoin("public.tbl_bewerbungstermine", "studiensemester_kurzbz");
// Ordering by studiengang_kz and studienplan_id
$this->addOrder("public.tbl_studiengang.studiengang_kz");
$this->addOrder("lehre.tbl_studienplan.studienplan_id");
$result = $this->loadTree(
"tbl_studiengang",
array(
"tbl_studienplan"
),
array(
"public.tbl_studiengang.aktiv" => "true",
"public.tbl_studiengang.onlinebewerbung" => "true",
"public.tbl_bewerbungstermine.beginn <= " => "NOW()",
"public.tbl_bewerbungstermine.ende >= " => "NOW()"
),
array(
"studienplaene"
)
);
return $result;
}
}