Files
FHC-Core/application/models/crm/Prestudent_model.php
T
Paolo f7153aa6f5 - Changed config entry addons_aufnahme_url in fhcomplete.php. Now it's an array having an entry for each organisation unit root
- Changed redirectByToken method in controllers/Redirect, now:
	- Loads the root of the organisation unit tree using the oe_kurzbz present in the message, loaded using a token
	- Redirect to the related aufnahme using the organisation unit previously found
- Changed method send in system/Messages, now retrives the oe_kurzbz of the recipients/prestudents to store these oe_kurzbz in the table tbl_msg_message (used by FAS)
- Added method getRoot to library OrganisationseinheitLib to retrive the root of an organisation unit by the given oe_kurzbz
- Added method getOrganisationunits to model crm/Prestudent_model, retrives the oe_kurzbz using the given prestudent/s id/s
- Added some comments here and there
2017-09-19 17:34:00 +02:00

196 lines
5.1 KiB
PHP

<?php
class Prestudent_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'public.tbl_prestudent';
$this->pk = 'prestudent_id';
}
/**
* getLastStatuses
*/
public function getLastStatuses($person_id, $studiensemester_kurzbz = null, $studiengang_kz = null, $status_kurzbz = null)
{
// Checks if the operation is permitted by the API caller
if (isError($ent = $this->isEntitled('public.tbl_status', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent;
if (isError($ent = $this->isEntitled('public.tbl_prestudent', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent;
if (isError($ent = $this->isEntitled('public.tbl_prestudentstatus', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR)))
return $ent;
$query = 'SELECT *
FROM public.tbl_prestudent p
JOIN (
SELECT DISTINCT ON(prestudent_id) *
FROM public.tbl_prestudentstatus
WHERE prestudent_id IN (SELECT prestudent_id FROM public.tbl_prestudent WHERE person_id = ?)
ORDER BY prestudent_id, datum desc, insertamum desc
) ps USING(prestudent_id)
JOIN public.tbl_status USING(status_kurzbz)
WHERE ps.ausbildungssemester = 1';
$parametersArray = array($person_id);
if ($studiensemester_kurzbz != '')
{
array_push($parametersArray, $studiensemester_kurzbz);
$query .= ' AND ps.studiensemester_kurzbz = ?';
}
if (isset($studiengang_kz))
{
array_push($parametersArray, $studiengang_kz);
$query .= ' AND p.studiengang_kz = ?';
}
if ($status_kurzbz != '')
{
array_push($parametersArray, $status_kurzbz);
$query .= ' AND ps.status_kurzbz = ?';
}
return $this->execQuery($query, $parametersArray);
}
/**
* updateAufnahmegruppe
*/
public function updateAufnahmegruppe($prestudentIdArray, $aufnahmegruppe)
{
return $this->execQuery(
'UPDATE public.tbl_prestudent
SET aufnahmegruppe_kurzbz = ?
WHERE prestudent_id IN ?',
array(
$aufnahmegruppe,
$prestudentIdArray
)
);
}
/**
* Returns a list of prestudent with additional information:
* - person_id
* - name, surname, gender and birthday
* - email
* - studiengang and orgform
* - studienplan
* - stufe and aufnahmegruppe
* - reihungstest score
*/
public function getPrestudentMultiAssign(
$studiengang = null, $studiensemester = null, $gruppe = null, $reihungstest = null, $stufe = null
)
{
if (isError($ent = $this->isEntitled($this->dbTable, PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent;
$this->addSelect(
'p.person_id,
prestudent_id,
p.nachname,
p.vorname,
p.geschlecht,
p.gebdatum,
k.kontakt AS email,
sg.kurzbzlang,
sg.bezeichnung,
sg.orgform_kurzbz,
sgt.bezeichnung AS typ,
s.bezeichnung AS studienplan,
ps.rt_stufe,
aufnahmegruppe_kurzbz,
SUM(rtp.punkte) AS punkte'
);
$this->addJoin('public.tbl_person p', 'person_id', 'LEFT');
$this->addJoin(
'(
SELECT DISTINCT ON(person_id) person_id,
kontakt
FROM public.tbl_kontakt
WHERE zustellung = TRUE
AND kontakttyp = \'email\'
ORDER BY person_id, kontakt_id DESC
) k',
'person_id',
'LEFT'
);
$this->addJoin('public.tbl_prestudentstatus ps', 'prestudent_id');
$this->addJoin('lehre.tbl_studienplan s', 's.studienplan_id = ps.studienplan_id');
$this->addJoin('lehre.tbl_studienordnung so', 'studienordnung_id');
$this->addJoin('public.tbl_studiengang sg', 'sg.studiengang_kz = so.studiengang_kz');
$this->addJoin('public.tbl_studiengangstyp sgt', 'typ');
$this->addJoin('public.tbl_rt_person rtp', 'rtp.person_id = p.person_id AND rtp.studienplan_id = s.studienplan_id', 'LEFT');
$this->addOrder('p.person_id', 'ASC');
$this->addOrder('prestudent_id', 'ASC');
$parametersArray = array('p.aktiv' => true, 'ps.status_kurzbz' => 'Interessent');
if ($studiengang != null)
{
$parametersArray['public.tbl_prestudent.studiengang_kz'] = $studiengang;
}
if ($studiensemester != null)
{
$parametersArray['ps.studiensemester_kurzbz'] = $studiensemester;
}
if ($gruppe != null)
{
$parametersArray['aufnahmegruppe_kurzbz'] = $gruppe;
}
if ($reihungstest != null)
{
$parametersArray['rtp.rt_id'] = $reihungstest;
}
if ($stufe != null)
{
$parametersArray['ps.rt_stufe'] = $stufe;
}
$this->addGroupBy(
array(
'p.person_id',
'prestudent_id',
'p.nachname',
'p.vorname',
'p.geschlecht',
'p.gebdatum',
'k.kontakt',
'sg.kurzbzlang',
'sg.bezeichnung',
'sg.orgform_kurzbz',
'sgt.bezeichnung',
's.bezeichnung',
'ps.rt_stufe',
'aufnahmegruppe_kurzbz'
)
);
return $this->loadWhere($parametersArray);
}
/**
* getOrganisationunits
*/
public function getOrganisationunits($prestudent_id)
{
$query = 'SELECT p.prestudent_id, s.oe_kurzbz
FROM public.tbl_prestudent p
INNER JOIN public.tbl_studiengang s USING(studiengang_kz)
WHERE prestudent_id %s ?';
return $this->execQuery(sprintf($query, is_array($prestudent_id) ? 'IN' : '='), array($prestudent_id));
}
}