This commit is contained in:
Stefan Puraner
2016-05-10 14:12:54 +02:00
13 changed files with 181 additions and 258 deletions
+4
View File
@@ -9,12 +9,16 @@ $config['fhc_acl'] = array
'bis.tbl_nation' => 'basis/nation',
'bis.tbl_lgartcode' => 'basis/lgartcode',
'campus.tbl_dms' => 'basis/tbl_dms',
'campus.tbl_dms_version' => 'basis/tbl_dms_version',
'lehre.tbl_studienplan' => 'basis/studienplan',
'lehre.tbl_studienordnung' => 'basis/studienordnung',
'lehre.vw_studienplan' => 'basis/vw_studienplan',
'public.tbl_person' => 'basis/person',
'public.tbl_kontakt' => 'basis/kontakt',
'public.tbl_benutzer' => 'basis/benutzer',
'public.tbl_prestudent' => 'basis/person',
'public.tbl_prestudentstatus' => 'basis/person',
'public.tbl_organisationseinheit' => 'basis/organisationseinheit',
-45
View File
@@ -1,45 +0,0 @@
<?php
if(!defined('BASEPATH')) exit('No direct script access allowed');
class File extends APIv1_Controller
{
/**
* Person API constructor.
*/
public function __construct()
{
parent::__construct();
// Load model FileModel
$this->load->model('file_model', 'FileModel');
// Load set the uid of the model to let to check the permissions
$this->FileModel->setUID($this->_getUID());
}
/**
* @return void
*/
public function postFile()
{
$result = $this->FileModel->saveFile($this->post());
if($result === TRUE)
{
$httpstatus = REST_Controller::HTTP_OK;
$payload = [
'success' => true,
'message' => 'File saved.'
];
$payload['data'] = $result;
}
else
{
$payload = [
'success' => false,
'message' => 'Could not save file.'
];
$httpstatus = REST_Controller::HTTP_OK;
}
$this->response($payload, $httpstatus);
}
}
@@ -94,43 +94,21 @@ class Person extends APIv1_Controller
*/
public function getCheckBewerbung()
{
$result = $this->PersonModel->checkBewerbung($this->get("email"), $this->get("studiensemester_kurzbz"));
$httpstatus = REST_Controller::HTTP_OK;
$payload = [
'success' => true,
'message' => 'Bewerbung exists.'
];
$payload['data'] = $result;
$this->response($payload, $httpstatus);
}
/**
* @return void
*/
public function getCheckZugangscodePerson()
{
$result = $this->PersonModel->checkZugangscodePerson($this->get("code"));
$httpstatus = REST_Controller::HTTP_OK;
if(!empty($result))
$email = $this->get('email');
$studiensemester_kurzbz = $this->get('studiensemester_kurzbz');
if(isset($email))
{
$payload = [
'success' => true,
'message' => 'Zugangscode exists.'
];
$payload['data'] = $result;
$result = $this->PersonModel->checkBewerbung($email, $studiensemester_kurzbz);
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$payload = [
'success' => false,
'message' => 'Zugangscode does not exist.'
];
$httpstatus = REST_Controller::HTTP_OK;
$this->response();
}
$this->response($payload, $httpstatus);
}
private function _validate($person = NULL)
{
if(!isset($person))
+23
View File
@@ -223,6 +223,29 @@ class DB_Model extends FHC_Model
return $this->_success(TRUE);
}
/** ---------------------------------------------------------------
* Add limit clause
*
* @return void
*/
public function addLimit($start = null, $end = null)
{
// Check Class-Attributes and parameters
if(!is_numeric($start) || (is_numeric($start) && $start <= 0))
return $this->_error(lang('fhc_'.FHC_NODBTABLE), FHC_MODEL_ERROR);
if(is_numeric($end) && $end > $start)
{
$this->db->limit($start, $end);
}
else
{
$this->db->limit($start);
}
return $this->_success(TRUE);
}
/** ---------------------------------------------------------------
* Delete data from DB-Table
-42
View File
@@ -1,42 +0,0 @@
<?php
class File_model extends DB_Model
{
/**
*
*/
public function __construct()
{
parent::__construct();
}
/**
*
*/
public function saveFile($file = NULL)
{
$result = FALSE;
// Checks if the operation is permitted by the API caller
// All the code should be put inside this if statement
if(isAllowed($this->getUID(), 'file'))
{
if($this->_validate($file))
{
$result = $this->_write($file);
}
}
return $result;
}
private function _validate($file = NULL)
{
return TRUE;
}
private function _write($file = NULL)
{
return TRUE;
}
}
@@ -16,6 +16,13 @@ class Studiengang_model extends DB_Model
*/
public function getAllForBewerbung()
{
// Checks if the operation is permitted by the API caller
if (! $this->fhc_db_acl->isBerechtigt($this->acl['lehre.vw_studienplan'], 's'))
return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl['lehre.vw_studienplan'], FHC_MODEL_ERROR);
if (! $this->fhc_db_acl->isBerechtigt($this->acl['bis.tbl_lgartcode'], 's'))
return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl['bis.tbl_lgartcode'], FHC_MODEL_ERROR);
$allForBewerbungQuery = "SELECT DISTINCT studiengang_kz,
typ,
organisationseinheittyp_kurzbz,
@@ -29,13 +36,8 @@ class Studiengang_model extends DB_Model
AND aktiv IS TRUE
ORDER BY typ, studiengangbezeichnung, tbl_lgartcode.bezeichnung ASC";
// Checks if the operation is permitted by the API caller
if (! $this->fhc_db_acl->isBerechtigt($this->acl['lehre.vw_studienplan'], 's'))
return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl['lehre.vw_studienplan'], FHC_MODEL_ERROR);
$result = $this->db->query($allForBewerbungQuery);
if (! $this->fhc_db_acl->isBerechtigt($this->acl['bis.tbl_lgartcode'], 's'))
return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl['lehre.vw_studienplan'], FHC_MODEL_ERROR);
return $this->db->query($allForBewerbungQuery);
return $this->_success($result->result());
}
}
+111 -95
View File
@@ -1,95 +1,111 @@
<?php
class Person_model extends DB_Model
{
/**
*
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'public.tbl_person';
$this->pk = 'person_id';
}
public function getFields()
{
$fields = array(
//Tabellenspalten
"person_id" => NULL,
"sprache" => NULL,
"anrede" => NULL,
"titelpost" => NULL,
"titelpre" => NULL,
"nachname" => NULL,
"vorname" => NULL,
"vornamen" => NULL,
"gebdatum" => NULL,
"gebort" => NULL,
"gebzeit" => NULL,
"foto" => NULL,
"anmerkungen" => NULL,
"homepage" => NULL,
"svnr" => NULL,
"ersatzkennzeichen" => NULL,
"familienstand" => NULL,
"anzahlkinder" => NULL,
"aktiv"=>TRUE,
"insertamum" => NULL,
"insertvon" => NULL,
"updateamum" => NULL,
"updatevon" => NULL,
"geschlecht" => "u",
"staatsbuergerschaft" => NULL,
"geburtsnation" => NULL,
"ext_id" => NULL,
"kurzbeschreibung"> NULL,
"zugangscode" => NULL,
"foto_sperre" => FALSE,
"matr_nr"=> NULL
);
return $this->_success($fields);
}
/**
*
*/
public function checkBewerbung($email, $studiensemester_kurzbz = NULL)
{
$this->db->distinct();
if(is_null($studiensemester_kurzbz))
{
$this->db->select("p.person_id, p.zugangscode, p.insertamum")
->from("public.tbl_person p")
->join("public.tbl_kontakt k", "p.person_id=k.person_id")
->join("public.tbl_benutzer b", "p.person_id=b.person_id", "left")
->where("k.kontakttyp", 'email')
->where("(kontakt='" . $email . "'" .
" OR alias ||'@technikum-wien.at'='" . $email . "'" .
" OR uid ||'@technikum-wien.at'='" . $email . "')")
->order_by("p.insertamum", "DESC")
->limit(1)
;
}
else
{
$this->db->select("p.person_id,p.zugangscode,p.insertamum")
->from("public.tbl_person p")
->join("public.tbl_kontakt k", "p.person_id=k.person_id")
->join("public.tbl_benutzer b", "p.person_id=b.person_id", "left")
->join("public.tbl_prestudent ps", "p.person_id=ps.person_id")
->join("public.tbl_prestudentstatus pst", "pst.prestudent_id=ps.prestudent_id")
->where("k.kontakttyp", 'email')
->where("(kontakt='" . $email . "'" .
" OR alias ||'@technikum-wien.at'='" . $email . "'" .
" OR uid ||'@technikum-wien.at'='" . $email . "')")
->where("studiensemester_kurzbz='" . $studiensemester_kurzbz . "'")
->order_by("p.insertamum", "DESC")
->limit(1)
;
}
return $this->db->get()->result_array();
}
}
<?php
class Person_model extends DB_Model
{
/**
*
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'public.tbl_person';
$this->pk = 'person_id';
}
public function getFields()
{
$fields = array(
//Tabellenspalten
"person_id" => NULL,
"sprache" => NULL,
"anrede" => NULL,
"titelpost" => NULL,
"titelpre" => NULL,
"nachname" => NULL,
"vorname" => NULL,
"vornamen" => NULL,
"gebdatum" => NULL,
"gebort" => NULL,
"gebzeit" => NULL,
"foto" => NULL,
"anmerkungen" => NULL,
"homepage" => NULL,
"svnr" => NULL,
"ersatzkennzeichen" => NULL,
"familienstand" => NULL,
"anzahlkinder" => NULL,
"aktiv"=>TRUE,
"insertamum" => NULL,
"insertvon" => NULL,
"updateamum" => NULL,
"updatevon" => NULL,
"geschlecht" => "u",
"staatsbuergerschaft" => NULL,
"geburtsnation" => NULL,
"ext_id" => NULL,
"kurzbeschreibung"> NULL,
"zugangscode" => NULL,
"foto_sperre" => FALSE,
"matr_nr"=> NULL
);
return $this->_success($fields);
}
/**
*
*/
public function checkBewerbung($email, $studiensemester_kurzbz = NULL)
{
// Checks if the operation is permitted by the API caller
if (! $this->fhc_db_acl->isBerechtigt($this->acl['public.tbl_person'], 's'))
return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl['public.tbl_person'], FHC_MODEL_ERROR);
if (! $this->fhc_db_acl->isBerechtigt($this->acl['public.tbl_kontakt'], 's'))
return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl['public.tbl_kontakt'], FHC_MODEL_ERROR);
if (! $this->fhc_db_acl->isBerechtigt($this->acl['public.tbl_benutzer'], 's'))
return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl['public.tbl_benutzer'], FHC_MODEL_ERROR);
if (! $this->fhc_db_acl->isBerechtigt($this->acl['public.tbl_prestudent'], 's'))
return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl['public.tbl_prestudent'], FHC_MODEL_ERROR);
if (! $this->fhc_db_acl->isBerechtigt($this->acl['public.tbl_prestudentstatus'], 's'))
return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl['public.tbl_prestudentstatus'], FHC_MODEL_ERROR);
$result = NULL;
if(is_null($studiensemester_kurzbz))
{
$checkBewerbungQuery = "SELECT DISTINCT p.person_id, p.zugangscode, p.insertamum
FROM public.tbl_person p JOIN public.tbl_kontakt k ON p.person_id = k.person_id
LEFT JOIN public.tbl_benutzer b ON p.person_id = b.person_id
WHERE k.kontakttyp = 'email'
AND (kontakt = ? OR alias || '@technikum-wien.at' = ? OR uid || '@technikum-wien.at' = ?)
ORDER BY p.insertamum DESC
LIMIT 1";
$result = $this->db->query($checkBewerbungQuery, array($email, $email, $email));
}
else
{
$checkBewerbungQuery = "SELECT DISTINCT p.person_id, p.zugangscode, p.insertamum
FROM public.tbl_person p JOIN public.tbl_kontakt k ON p.person_id = k.person_id
LEFT JOIN public.tbl_benutzer b ON p.person_id = b.person_id
JOIN public.tbl_prestudent ps ON p.person_id = ps.person_id
JOIN public.tbl_prestudentstatus pst ON pst.prestudent_id = ps.prestudent_id
WHERE k.kontakttyp = 'email'
AND (kontakt = ? OR alias || '@technikum-wien.at' = ? OR uid || '@technikum-wien.at' = ?)
AND studiensemester_kurzbz = ?
ORDER BY p.insertamum DESC
LIMIT 1";
$result = $this->db->query($checkBewerbungQuery, array($email, $email, $email, $studiensemester_kurzbz));
}
if(is_object($result))
return $this->_success($result->result());
else
return $this->_error($this->db->error(), FHC_DB_ERROR);
}
}
@@ -1,12 +0,0 @@
<?php
$I = new ApiTester($scenario);
$I->wantTo('Test API call v1/lehre/studiengang/AllForBewerbung');
$I->amHttpAuthenticated("admin", "1q2w3");
$I->haveHttpHeader('FHC-API-KEY', 'testapikey@fhcomplete.org');
$I->sendGET('v1/lehre/studiengang/AllForBewerbung');
$I->seeResponseCodeIs(200);
$I->seeResponseIsJson();
$I->seeResponseContainsJson([
'success' => TRUE,
'message' => 'Courses found']);
+3 -12
View File
@@ -1,19 +1,10 @@
<?php
$I = new ApiTester($scenario);
$I->wantTo('Test API call v1/nation All and FederalState');
$I->wantTo('Test API call v1/codex/nation All and FederalState');
$I->amHttpAuthenticated("admin", "1q2w3");
$I->haveHttpHeader('FHC-API-KEY', 'testapikey@fhcomplete.org');
$I->sendGET('v1/nation/All');
$I->sendGET('v1/codex/nation/All');
$I->seeResponseCodeIs(200);
$I->seeResponseIsJson();
$I->seeResponseContainsJson([
'success' => TRUE,
'message' => 'Nation found']);
$I->sendGET('v1/nation/Bundesland');
$I->seeResponseCodeIs(200);
$I->seeResponseIsJson();
$I->seeResponseContainsJson([
'success' => TRUE,
'message' => 'Bundesland found']);
$I->seeResponseContainsJson(['error' => 0]);
@@ -25,8 +25,8 @@ $I->sendGET('v1/person/person/Person', array('code' => '12345'));
$I->seeResponseCodeIs(200);
$I->seeResponseIsJson();
$I->seeResponseContainsJson([
'success' => false,
'message' => 'Person not found']);
'error' => 0,
'retval' => array()]);
$I->sendGET('v1/person/person/Person', array('code' => '01234567C', 'email' => 'harvey.joshuah@calva.dev'));
$I->seeResponseCodeIs(200);
@@ -1,12 +0,0 @@
<?php
$I = new ApiTester($scenario);
$I->wantTo('Test API call v1/lehre/studienplan/Studienplaene');
$I->amHttpAuthenticated("admin", "1q2w3");
$I->haveHttpHeader('FHC-API-KEY', 'testapikey@fhcomplete.org');
$I->sendGET('v1/lehre/studienplan/Studienplaene', array('studiengang_kz' => 1));
$I->seeResponseCodeIs(200);
$I->seeResponseIsJson();
$I->seeResponseContainsJson([
'success' => TRUE,
'message' => 'Plan found']);
@@ -0,0 +1,10 @@
<?php
$I = new ApiTester($scenario);
$I->wantTo('Test API call v1/organisation/studiengang/AllForBewerbung');
$I->amHttpAuthenticated("admin", "1q2w3");
$I->haveHttpHeader('FHC-API-KEY', 'testapikey@fhcomplete.org');
$I->sendGET('v1/organisation/studiengang/AllForBewerbung');
$I->seeResponseCodeIs(200);
$I->seeResponseIsJson();
$I->seeResponseContainsJson(['error' => 0]);
@@ -0,0 +1,10 @@
<?php
$I = new ApiTester($scenario);
$I->wantTo('Test API call v1/organisation/studienplan/Studienplaene');
$I->amHttpAuthenticated("admin", "1q2w3");
$I->haveHttpHeader('FHC-API-KEY', 'testapikey@fhcomplete.org');
$I->sendGET('v1/organisation/studienplan/Studienplaene', array('studiengang_kz' => 1));
$I->seeResponseCodeIs(200);
$I->seeResponseIsJson();
$I->seeResponseContainsJson(['error' => 0]);