mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-15 11:09:28 +00:00
654 lines
19 KiB
PHP
654 lines
19 KiB
PHP
<?php
|
|
|
|
class Prestudentstatus_model extends DB_Model
|
|
{
|
|
|
|
const STATUS_ABBRECHER = 'Abbrecher';
|
|
const STATUS_UNTERBRECHER = 'Unterbrecher';
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->dbTable = 'public.tbl_prestudentstatus';
|
|
$this->pk = array('ausbildungssemester', 'studiensemester_kurzbz', 'status_kurzbz', 'prestudent_id');
|
|
$this->hasSequence = false;
|
|
|
|
/* $CI =& get_instance();
|
|
|
|
$CI->load->library('PhrasesLib');
|
|
|
|
// Load language phrases
|
|
$CI->loadPhrases([
|
|
'ui', 'lehre'
|
|
]);*/
|
|
}
|
|
|
|
/**
|
|
* getLastStatus
|
|
*/
|
|
public function getLastStatus($prestudent_id, $studiensemester_kurzbz = '', $status_kurzbz = '')
|
|
{
|
|
$query = 'SELECT tbl_prestudentstatus.*,
|
|
tbl_studienplan.bezeichnung AS studienplan_bezeichnung,
|
|
tbl_studienplan.orgform_kurzbz AS orgform,
|
|
sprache,
|
|
tbl_orgform.bezeichnung_mehrsprachig AS bezeichnung_orgform,
|
|
tbl_status.bezeichnung_mehrsprachig,
|
|
tbl_status_grund.bezeichnung_mehrsprachig AS bezeichnung_statusgrund
|
|
FROM public.tbl_prestudentstatus
|
|
LEFT JOIN lehre.tbl_studienplan USING (studienplan_id)
|
|
JOIN public.tbl_status USING (status_kurzbz)
|
|
LEFT JOIN public.tbl_status_grund USING (statusgrund_id)
|
|
LEFT JOIN bis.tbl_orgform ON tbl_studienplan.orgform_kurzbz = bis.tbl_orgform.orgform_kurzbz
|
|
WHERE tbl_status.status_kurzbz = tbl_prestudentstatus.status_kurzbz
|
|
AND prestudent_id = ?';
|
|
|
|
$parametersArray = array($prestudent_id);
|
|
|
|
if ($studiensemester_kurzbz != '')
|
|
{
|
|
array_push($parametersArray, $studiensemester_kurzbz);
|
|
$query .= ' AND studiensemester_kurzbz = ?';
|
|
}
|
|
|
|
if ($status_kurzbz != '')
|
|
{
|
|
array_push($parametersArray, $status_kurzbz);
|
|
$query .= ' AND tbl_prestudentstatus.status_kurzbz = ?';
|
|
}
|
|
|
|
$query .= ' ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1';
|
|
|
|
return $this->execQuery($query, $parametersArray);
|
|
}
|
|
|
|
/**
|
|
* Liefert den Ersten Status eines Prestudenten mit der übergebenen Statuskurzbezeichnung.
|
|
*
|
|
* @param $prestudent_id
|
|
* @param $status_kurzbz
|
|
* @return array
|
|
*/
|
|
public function getFirstStatus($prestudent_id, $status_kurzbz)
|
|
{
|
|
$this->addOrder('datum, insertamum, ext_id');
|
|
$this->addLimit(1);
|
|
|
|
return $this->loadWhere(array(
|
|
'prestudent_id' => $prestudent_id,
|
|
'status_kurzbz' => $status_kurzbz
|
|
));
|
|
}
|
|
|
|
/**
|
|
* updateStufe
|
|
*/
|
|
public function updateStufe($prestudentIdArray, $stufe)
|
|
{
|
|
return $this->execQuery(
|
|
'UPDATE public.tbl_prestudentstatus
|
|
SET rt_stufe = ?
|
|
WHERE status_kurzbz = \'Interessent\'
|
|
AND prestudent_id IN ?',
|
|
array(
|
|
$stufe,
|
|
$prestudentIdArray
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Get all Prestudent status entries according to the given filter
|
|
*
|
|
* @param prestudent_id ID of the Prestudent.
|
|
* @param $status_kurzbz kurzbz of the status.
|
|
* @param $ausbildungssemester ausbildungssemester of the status.
|
|
* @param $studiensemester_kurzbz studiensemster of the status.
|
|
*
|
|
* @return result object with all the status entries
|
|
*/
|
|
public function getStatusByFilter($prestudent_id, $status_kurzbz = '', $ausbildungssemester = '', $studiensemester_kurzbz = '')
|
|
{
|
|
$query = '
|
|
SELECT
|
|
tbl_prestudentstatus.*
|
|
FROM
|
|
public.tbl_prestudentstatus
|
|
WHERE
|
|
prestudent_id = ?';
|
|
|
|
$parametersArray = array($prestudent_id);
|
|
|
|
if ($studiensemester_kurzbz != '')
|
|
{
|
|
array_push($parametersArray, $studiensemester_kurzbz);
|
|
$query .= ' AND studiensemester_kurzbz = ?';
|
|
}
|
|
if ($status_kurzbz != '')
|
|
{
|
|
array_push($parametersArray, $status_kurzbz);
|
|
$query .= ' AND status_kurzbz = ?';
|
|
}
|
|
if ($ausbildungssemester != '')
|
|
{
|
|
array_push($parametersArray, $ausbildungssemester);
|
|
$query .= ' AND ausbildungssemester = ?';
|
|
}
|
|
|
|
$query .= ' ORDER BY datum DESC, insertamum DESC, ext_id DESC';
|
|
|
|
return $this->execQuery($query, $parametersArray);
|
|
}
|
|
|
|
/**
|
|
* Gets Studienordnung for last status of Prestudent
|
|
* @param $prestudent_id
|
|
* @return array
|
|
*/
|
|
public function getStudienordnungFromPrestudent($prestudent_id)
|
|
{
|
|
$lastStatus = $this->getLastStatus($prestudent_id);
|
|
|
|
if ($lastStatus->error)
|
|
{
|
|
return $lastStatus;
|
|
}
|
|
|
|
if (count($lastStatus->retval) > 0)
|
|
{
|
|
$lastStatus = $lastStatus->retval[0];
|
|
|
|
$this->addJoin('lehre.tbl_studienplan', 'studienplan_id');
|
|
$this->addJoin('lehre.tbl_studienordnung', 'studienordnung_id');
|
|
return $this->loadWhere(
|
|
array(
|
|
'public.tbl_prestudentstatus.prestudent_id' => $lastStatus->prestudent_id,
|
|
'public.tbl_prestudentstatus.status_kurzbz' => $lastStatus->status_kurzbz,
|
|
'public.tbl_prestudentstatus.studiensemester_kurzbz' => $lastStatus->studiensemester_kurzbz,
|
|
'public.tbl_prestudentstatus.ausbildungssemester' => $lastStatus->ausbildungssemester
|
|
)
|
|
);
|
|
}
|
|
else
|
|
{
|
|
return success(array());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Gets Studienordnung for last status of Prestudent, including ZGV information text
|
|
* @param $prestudent_id
|
|
* @return array
|
|
*/
|
|
public function getStudienordnungWithZgvText($prestudent_id)
|
|
{
|
|
$lastStatus = $this->getLastStatus($prestudent_id);
|
|
|
|
if ($lastStatus->error)
|
|
{
|
|
return $lastStatus;
|
|
}
|
|
|
|
if (count($lastStatus->retval) > 0)
|
|
{
|
|
$lastStatus = $lastStatus->retval[0];
|
|
|
|
$this->addJoin('lehre.tbl_studienplan', 'studienplan_id');
|
|
$this->addJoin('lehre.tbl_studienordnung', 'studienordnung_id');
|
|
$this->addJoin('addon.tbl_stgv_zugangsvoraussetzung', 'studienordnung_id');
|
|
return $this->loadWhere(
|
|
array(
|
|
'public.tbl_prestudentstatus.prestudent_id' => $lastStatus->prestudent_id,
|
|
'public.tbl_prestudentstatus.status_kurzbz' => $lastStatus->status_kurzbz,
|
|
'public.tbl_prestudentstatus.studiensemester_kurzbz' => $lastStatus->studiensemester_kurzbz,
|
|
'public.tbl_prestudentstatus.ausbildungssemester' => $lastStatus->ausbildungssemester
|
|
)
|
|
);
|
|
}
|
|
else
|
|
{
|
|
return success(array());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* getLastStatuses
|
|
*/
|
|
public function getLastStatusPerson($person_id, $studiensemester_kurzbz = null)
|
|
{
|
|
$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)';
|
|
|
|
$parametersArray = array($person_id);
|
|
|
|
if ($studiensemester_kurzbz != '')
|
|
{
|
|
array_push($parametersArray, $studiensemester_kurzbz);
|
|
$query .= ' AND ps.studiensemester_kurzbz = ?';
|
|
}
|
|
|
|
return $this->execQuery($query, $parametersArray);
|
|
}
|
|
|
|
/**
|
|
* get Email of relevant Studiengang of prestudent
|
|
*/
|
|
public function getLastStatusWithStgEmail($prestudent_id, $studiensemester_kurzbz = '', $status_kurzbz = '')
|
|
{
|
|
$this->addSelect('tbl_prestudentstatus.*,
|
|
tbl_studienplan.bezeichnung AS studienplan_bezeichnung,
|
|
tbl_orgform.orgform_kurzbz AS orgform,
|
|
tbl_studienplan.sprache,
|
|
tbl_orgform.bezeichnung_mehrsprachig AS bezeichnung_orgform,
|
|
tbl_status.bezeichnung_mehrsprachig,
|
|
tbl_status_grund.bezeichnung_mehrsprachig AS bezeichnung_statusgrund,
|
|
tbl_studiengang.bezeichnung AS stg_bezeichnung,
|
|
tbl_studiengang.email');
|
|
$this->addJoin('lehre.tbl_studienplan', 'studienplan_id', 'LEFT');
|
|
$this->addJoin('lehre.tbl_studienordnung', 'studienordnung_id', 'LEFT');
|
|
$this->addJoin('public.tbl_studiengang', 'studiengang_kz', 'LEFT');
|
|
$this->addJoin('public.tbl_status', 'tbl_status.status_kurzbz = tbl_prestudentstatus.status_kurzbz');
|
|
$this->addJoin('public.tbl_status_grund', 'statusgrund_id', 'LEFT');
|
|
$this->addJoin('bis.tbl_orgform', 'COALESCE(tbl_studienplan.orgform_kurzbz, ' . $this->dbTable . '.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) = tbl_orgform.orgform_kurzbz', 'LEFT');
|
|
$this->db->where('tbl_status.status_kurzbz = tbl_prestudentstatus.status_kurzbz');
|
|
|
|
$where = array('prestudent_id' => $prestudent_id);
|
|
if ($studiensemester_kurzbz)
|
|
$where['studiensemester_kurzbz'] = $studiensemester_kurzbz;
|
|
if ($status_kurzbz)
|
|
$where['tbl_prestudentstatus.status_kurzbz'] = $status_kurzbz;
|
|
|
|
$this->addOrder('datum', 'DESC');
|
|
$this->addOrder('insertamum', 'DESC');
|
|
$this->addOrder('ext_id', 'DESC');
|
|
$this->addLimit(1);
|
|
|
|
return $this->loadWhere($where);
|
|
}
|
|
|
|
public function loadLastWithStgDetails($prestudent_id, $studiensemester_kurzbz = null, $max_date = null)
|
|
{
|
|
$this->load->config('studierendenantrag');
|
|
|
|
$lang = getUserLanguage();
|
|
|
|
$this->addSelect($this->dbTable . '.prestudent_id');
|
|
$this->addSelect($this->dbTable . '.ausbildungssemester AS semester');
|
|
$this->addSelect($this->dbTable . '.studiensemester_kurzbz');
|
|
$this->addSelect('s.matrikelnr');
|
|
$this->addSelect('ss.studienjahr_kurzbz');
|
|
$this->addSelect('pers.vorname');
|
|
$this->addSelect('pers.nachname');
|
|
$this->addSelect('TRIM(CONCAT(pers.vorname, \' \', pers.nachname)) AS name');
|
|
$this->addSelect('pers.person_id');
|
|
$this->addSelect('g.studiengang_kz');
|
|
$this->addSelect('g.bezeichnung');
|
|
$this->addSelect('o.orgform_kurzbz');
|
|
$this->addSelect(
|
|
'o.bezeichnung_mehrsprachig[(SELECT index FROM public.tbl_sprache WHERE sprache=\'' . $lang . '\')] AS orgform_bezeichnung',
|
|
false
|
|
);
|
|
|
|
$this->addJoin('public.tbl_student s', 'prestudent_id');
|
|
$this->addJoin('public.tbl_prestudent p', 'prestudent_id');
|
|
$this->addJoin('public.tbl_studiensemester ss', 'studiensemester_kurzbz');
|
|
$this->addJoin('public.tbl_person pers', 'person_id');
|
|
$this->addJoin('public.tbl_studiengang g', 'p.studiengang_kz=g.studiengang_kz');
|
|
$this->addJoin('lehre.tbl_studienplan plan', 'studienplan_id', 'LEFT');
|
|
$this->addJoin('bis.tbl_orgform o', 'COALESCE(plan.orgform_kurzbz, ' . $this->dbTable . '.orgform_kurzbz, g.orgform_kurzbz)=o.orgform_kurzbz');
|
|
|
|
$this->addOrder($this->dbTable . '.datum', 'DESC');
|
|
$this->addOrder($this->dbTable . '.insertamum', 'DESC');
|
|
$this->addOrder($this->dbTable . '.ext_id', 'DESC');
|
|
|
|
$this->addLimit(1);
|
|
|
|
if ($max_date)
|
|
$this->db->where($this->dbTable . '.insertamum <', $max_date);
|
|
|
|
$whereArr = [
|
|
$this->dbTable . '.prestudent_id' => $prestudent_id,
|
|
'g.aktiv' => true
|
|
];
|
|
|
|
if ($studiensemester_kurzbz !== null)
|
|
{
|
|
$whereArr[$this->dbTable. '.studiensemester_kurzbz'] = $studiensemester_kurzbz;
|
|
}
|
|
|
|
return $this->loadWhere($whereArr);
|
|
}
|
|
|
|
/**
|
|
* call like this:
|
|
* $this->PrestudentstatusModel->withGrund('grund_kurzbz')->update($id, $otherData);
|
|
* or:
|
|
* $this->PrestudentstatusModel->withGrund('grund_kurzbz')->insert($otherData);
|
|
* @param string $statusgrund_kurzbz
|
|
* @return object $this
|
|
*/
|
|
public function withGrund($statusgrund_kurzbz)
|
|
{
|
|
if($statusgrund_kurzbz)
|
|
$this->db->set(
|
|
'statusgrund_id',
|
|
'(SELECT statusgrund_id FROM public.tbl_status_grund WHERE statusgrund_kurzbz =' . $this->db->escape($statusgrund_kurzbz) .')',
|
|
false
|
|
);
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Check if Rolle already exists
|
|
* @param integer $prestudent_id
|
|
* @param string $status_kurzbz
|
|
* @param string $studiensemester_kurzbz
|
|
* @param integer $ausbildungssemester
|
|
* @return 1: if Rolle exists, 0: if it doesn't
|
|
* Copy from studentDBDML.php
|
|
*/
|
|
public function checkIfExistingPrestudentRolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester)
|
|
{
|
|
$qry = "SELECT
|
|
*
|
|
FROM
|
|
public.tbl_prestudentstatus
|
|
WHERE
|
|
prestudent_id = ?
|
|
AND
|
|
status_kurzbz = ?
|
|
AND
|
|
studiensemester_kurzbz = ?
|
|
AND
|
|
ausbildungssemester = ?";
|
|
|
|
$result = $this->execQuery($qry, array($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester));
|
|
|
|
if (isError($result))
|
|
{
|
|
return error($result);
|
|
}
|
|
elseif (!hasData($result))
|
|
{
|
|
return success(0);
|
|
}
|
|
else
|
|
{
|
|
return success("1", $this->p->t('lehre','error_rolleBereitsVorhanden'));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check if Rolle there is an existing Bewerberstatus
|
|
* @param integer $prestudent_id
|
|
* @return error if no bewerberstatus, success if existing
|
|
*/
|
|
public function checkIfExistingBewerberstatus($prestudent_id, $name = null)
|
|
{
|
|
$qry = "SELECT
|
|
*
|
|
FROM
|
|
public.tbl_prestudentstatus
|
|
WHERE
|
|
prestudent_id = ?
|
|
AND
|
|
status_kurzbz = 'Bewerber'";
|
|
|
|
$result = $this->execQuery($qry, array($prestudent_id));
|
|
|
|
if (isError($result))
|
|
{
|
|
return error($result);
|
|
}
|
|
elseif (!hasData($result))
|
|
{
|
|
$person = $name ? $name : "Person";
|
|
return success("0", $this->p->t('lehre','error_keinBewerber', ['name' => $person]));
|
|
}
|
|
else
|
|
{
|
|
return success($result);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check if there is only one prestudentstatus left
|
|
* @param integer $prestudent_id
|
|
* @return success("1") if last prestudentstatusentry, else success("0")
|
|
*/
|
|
public function checkIfLastStatusEntry($prestudent_id, $isStudent=false )
|
|
{
|
|
$qry = "SELECT
|
|
COUNT(*) as anzahl
|
|
FROM
|
|
public.tbl_prestudentstatus
|
|
WHERE
|
|
prestudent_id = ?
|
|
";
|
|
|
|
if($isStudent)
|
|
{
|
|
$qry .= "AND status_kurzbz = 'Student'";
|
|
}
|
|
|
|
$result = $this->execQuery($qry, array($prestudent_id));
|
|
|
|
if (isError($result))
|
|
{
|
|
return error($result);
|
|
}
|
|
|
|
$resultObject = current(getData($result));
|
|
|
|
if (property_exists($resultObject, 'anzahl'))
|
|
{
|
|
$anzahl = (int) $resultObject->anzahl;
|
|
if ($anzahl <= 1 )
|
|
{
|
|
return success("1", $this->p->t('lehre','error_lastRole'));
|
|
}
|
|
else
|
|
return success("0", $this->p->t('lehre','anzahl_existingRoles', ['anzahl' => $anzahl]));
|
|
|
|
}
|
|
else
|
|
{
|
|
return error($result);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check if Datum New Status is in the Past
|
|
* @param integer $prestudent_id
|
|
* @return error if in past
|
|
*/
|
|
public function checkDatumNewStatus($new_status_datum)
|
|
{
|
|
$today = new DateTime('today');
|
|
$new_status_datum = new DateTime($new_status_datum);
|
|
|
|
if($new_status_datum < $today)
|
|
{
|
|
return error($this->p->t('lehre','error_entryInPast'));
|
|
}
|
|
else
|
|
{
|
|
return success();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check if History of StatusData is valid
|
|
* @param integer $prestudent_id
|
|
* @return error if not valid, array StatusArr if valid
|
|
*/
|
|
public function checkIfValidStatusHistory($prestudent_id, $nameStud, $status_kurzbz, $new_status_studiensemester_kurzbz, $new_status_datum, $new_status_ausbildungssemester, $old_status_studiensemester_kurzbz = '', $old_status_ausbildungssemester = '')
|
|
{
|
|
$name = ($nameStud != '') ? $nameStud . ": " : '';
|
|
//$isNewStatus = $this->checkIfNewStatus($prestudent_id, $status_kurzbz);
|
|
$isNewStatus = $old_status_studiensemester_kurzbz == '' && $old_status_ausbildungssemester == '';
|
|
|
|
//get start studiensemester
|
|
$result = $this->StudiensemesterModel->load([
|
|
'studiensemester_kurzbz' => $new_status_studiensemester_kurzbz
|
|
]);
|
|
if(isError($result))
|
|
{
|
|
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
|
|
return $this->outputJson(getError($result));
|
|
}
|
|
elseif(!hasData($result)) {
|
|
return error($this->p->t('lehre','error_noStudiensemester') . $new_status_studiensemester_kurzbz);
|
|
}
|
|
|
|
$studiensemester = current($result->retval);
|
|
$new_status_semesterstart = $studiensemester->start;
|
|
|
|
//get all prestudentstati
|
|
//TODO(manu) check errorlogic
|
|
$resultPs = $this->getAllPrestudentstatiWithStudiensemester($prestudent_id);
|
|
if (isError($resultPs))
|
|
{
|
|
$resultArr = [];
|
|
}
|
|
if(!hasData($resultPs))
|
|
{
|
|
$resultArr = [];
|
|
}
|
|
else
|
|
$resultArr = $resultPs->retval;
|
|
|
|
$statusArr = array();
|
|
|
|
$newStatusInserted = false;
|
|
$new_status_datum_form = new DateTime($new_status_datum);
|
|
$new_status_semesterstart_form = new DateTime($new_status_semesterstart);
|
|
|
|
|
|
foreach ($resultArr as $row)
|
|
{
|
|
$studiensemester_start = new DateTime($row->studiensemester_start);
|
|
$status_datum = new DateTime ($row->datum);
|
|
|
|
|
|
if ($new_status_datum_form >= $status_datum && $new_status_semesterstart_form >= $studiensemester_start)
|
|
{
|
|
if (!$newStatusInserted)
|
|
{
|
|
// neuer Status erstmals größer als Datum eines bestehenden Status -> neuen Status EINMALIG einfügen für spätere Statusprüfung
|
|
$neuer_status = new stdClass();
|
|
$neuer_status->status_kurzbz = $status_kurzbz;
|
|
$neuer_status->studiensemester_kurzbz = $new_status_studiensemester_kurzbz;
|
|
$neuer_status->datum = $new_status_datum;
|
|
$neuer_status->ausbildungssemester = $new_status_ausbildungssemester;
|
|
$statusArr[] = $neuer_status;
|
|
$newStatusInserted = true;
|
|
}
|
|
$statusArr[] = $row;
|
|
}
|
|
elseif($new_status_datum_form <= $status_datum && $new_status_semesterstart_form <= $studiensemester_start)
|
|
{
|
|
$statusArr[] = $row;
|
|
|
|
}
|
|
else
|
|
{
|
|
return error($this->p->t('lehre','error_statuseintrag'));
|
|
}
|
|
|
|
}
|
|
|
|
$endstatusArr = array('Absolvent', 'Abbrecher');
|
|
// Über alle gespeicherten Status gehen und Statusabfolge prüfen
|
|
for ($i = 0; $i < count($statusArr); $i++) {
|
|
$curr_status = $statusArr[$i];
|
|
$curr_status_kurzbz = $curr_status->status_kurzbz;
|
|
$curr_status_ausbildungssemester = $curr_status->ausbildungssemester;
|
|
$next_idx = $i - 1; //absteigend sortiert, nächster Status ist vorheriger Eintrag
|
|
$next_status = isset($statusArr[$next_idx]) ? $statusArr[$next_idx] : null;
|
|
|
|
// Abbrecher- oder Absolventenstatus muss Endstatus sein
|
|
if (isset($next_status) && in_array($curr_status_kurzbz, $endstatusArr))
|
|
{
|
|
return error($name . $this->p->t('lehre','error_endstatus'));
|
|
}
|
|
|
|
// wenn Unterbrecher auf Unterbrecher folgt, muss Ausbildungssemester gleich sein
|
|
if (
|
|
$curr_status_kurzbz == 'Unterbrecher' && isset($next_status) && $next_status->status_kurzbz == 'Unterbrecher'
|
|
&& $curr_status_ausbildungssemester != $next_status->ausbildungssemester
|
|
)
|
|
{
|
|
return error($name . $this->p->t('lehre','error_consecutiveUnterbrecher'));
|
|
}
|
|
|
|
// wenn Abbrecher auf Unterbrecher folgt, muss Ausbildungssemester gleich sein
|
|
if (
|
|
isset($next_status) && $curr_status_kurzbz == 'Unterbrecher'
|
|
&& $next_status->status_kurzbz == 'Abbrecher' && $curr_status_ausbildungssemester != $next_status->ausbildungssemester
|
|
)
|
|
{
|
|
return error($name . $this->p->t('lehre','error_consecutiveUnterbrecherAbbrecher'));
|
|
}
|
|
|
|
// keine Studenten nach Diplomand Status
|
|
if (
|
|
isset($next_status) && $curr_status_kurzbz == 'Diplomand' && $next_status->status_kurzbz == 'Student'
|
|
)
|
|
{
|
|
return error($name . $this->p->t('lehre','error_consecutiveDiplomandStudent'));
|
|
}
|
|
|
|
}
|
|
|
|
return $resultPs;
|
|
}
|
|
|
|
public function getAllPrestudentstatiWithStudiensemester($prestudent_id, $old_status_studiensemester_kurzbz = '', $old_status_ausbildungssemester = '')
|
|
{
|
|
|
|
//Todo(manu) check isNewStatus
|
|
$isNewStatus = $old_status_studiensemester_kurzbz == '' && $old_status_ausbildungssemester == '';
|
|
|
|
$qry = "
|
|
SELECT public.tbl_prestudentstatus.status_kurzbz,
|
|
public.tbl_prestudentstatus.studiensemester_kurzbz,
|
|
public.tbl_prestudentstatus.ausbildungssemester,
|
|
public.tbl_prestudentstatus.datum,
|
|
s.start AS studiensemester_start
|
|
FROM public.tbl_prestudentstatus
|
|
JOIN public.tbl_studiensemester s USING (studiensemester_kurzbz)
|
|
WHERE prestudent_id = ?
|
|
ORDER BY public.tbl_prestudentstatus.datum DESC,
|
|
public.tbl_prestudentstatus.insertamum DESC,
|
|
public.tbl_prestudentstatus.ext_id DESC
|
|
";
|
|
|
|
$result = $this->execQuery($qry, array($prestudent_id));
|
|
|
|
if (isError($result))
|
|
{
|
|
return error($result);
|
|
}
|
|
if (!hasData($result)) {
|
|
return success("0", $this->p->t('lehre','error_noStatusFound'));
|
|
}
|
|
|
|
return $result;
|
|
|
|
}
|
|
|
|
|
|
}
|