Statuschecks, Berechtigungen, add new Status

This commit is contained in:
ma0068
2024-02-23 12:28:26 +01:00
parent 6a5b2db79d
commit 843ddad987
8 changed files with 802 additions and 59 deletions
@@ -23,6 +23,10 @@ class Studentenverwaltung extends FHC_Controller
'student/bpk' => $this->permissionlib->isBerechtigt('student/bpk'),
'student/alias' => $this->permissionlib->isBerechtigt('student/alias'),
'basis/prestudent' => $this->permissionlib->isBerechtigt('basis/prestudent'),
'assistenz_stgs' => $this->permissionlib->getSTG_isEntitledFor('assistenz'),
'admin' => $this->permissionlib->isBerechtigt('admin'),
'assistenz_schreibrechte' => $this->permissionlib->isBerechtigt('assistenz','suid'),
'student/keine_studdatuspruefung' => $this->permissionlib->isBerechtigt('student/keine_studdatuspruefung')
],
'variables' => [
@@ -13,6 +13,7 @@ class Status extends FHC_Controller
// Load Libraries
$this->load->library('AuthLib');
$this->load->library('VariableLib', ['uid' => getAuthUID()]);
$this->load->library('PermissionLib');
// Load language phrases
/* $this->loadPhrases([
@@ -53,11 +54,42 @@ class Status extends FHC_Controller
return $this->outputJsonError($this->form_validation->error_array());
}*/
//check rights
//get Studiengang von prestudent_id
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$this->PrestudentModel->addJoin('public.tbl_person p', 'ON (p.person_id = public.tbl_prestudent.person_id)');
$result = $this->PrestudentModel->load([
'prestudent_id'=> $prestudent_id,
]);
if(isError($result))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson(getError($result));
}
$result = current(getData($result));
//Variablen für Statuscheck
$stg = $result->studiengang_kz;
$reihungstest_angetreten = $result->reihungstestangetreten;
$name = trim($result->vorname . " ". $result->nachname);
$zgv_code = $result->zgv_code;
//TODO(Manu) check: Annahme, dass hier immer suid bei Berechtigung STG vergeben wird!
$granted_Ass = $this->permissionlib->getSTG_isEntitledFor('assistenz');
$granted_Adm = $this->permissionlib->getSTG_isEntitledFor('admin');
$granted = array_merge($granted_Ass, $granted_Adm);
if(!in_array($stg, $granted)){
$result = "Sie haben keine Schreibrechte fuer diesen Studiengang!";
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson($result);
}
$_POST = json_decode(utf8_encode($this->input->raw_input_stream), true);
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
//var_dump($_POST);
$uid = getAuthUID();
$status_kurzbz = $this->input->post('status_kurzbz');
$ausbildungssemester = $this->input->post('ausbildungssemester');
$datum = $this->input->post('datum');
@@ -65,7 +97,7 @@ class Status extends FHC_Controller
$bewerbung_abgeschicktamum = $this->input->post('bewerbung_abgeschicktamum');
$studiensemester_kurzbz = $this->input->post('studiensemester_kurzbz');
$studienplan_id = $this->input->post('studienplan_id');
$anmerkung = $this->input->post('anmerkung ');
$anmerkung = $this->input->post('anmerkung');
$statusgrund_id = $this->input->post('statusgrund_id');
$rt_stufe = $this->input->post('rt_stufe');
$bestaetigtvon = $this->input->post('bestaetigtvon');
@@ -73,6 +105,123 @@ class Status extends FHC_Controller
// Start DB transaction
//$this->db->trans_start(false);
//GET lastStatus
$result = $this->PrestudentstatusModel->getLastStatus($prestudent_id);
if (isError($result))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson(getError($result));
}
$lastStatusData = current(getData($result));
//var_dump($lastStatusData);
//Different handling depending on newStatus
if($status_kurzbz == 'Absolvent' || $status_kurzbz == 'Diplomand')
{
//$studiensemester = $semester_aktuell; //TODO(Manu) oder ist hier defaultsemester gemeint?
$ausbildungssemester = $lastStatusData->ausbildungssemester;
}
if($status_kurzbz != 'Student')
{
$ausbildungssemester = $lastStatusData->ausbildungssemester;
}
//check if Rolle already exists
$result = $this->PrestudentstatusModel->checkIfExistingPrestudentRolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester);
if (isError($result))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson(getError($result));
//return $this->outputJson("DEBUG: in Funktion checkIfExistingPrestudentRolle");
}
//Check ob Reihungstest berücksichtigt werden soll
if(REIHUNGSTEST_CHECK)
{
if($status_kurzbz=='Bewerber' && !$reihungstest_angetreten)
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson($name . ": Um einen Interessenten zum Bewerber zu machen, muss die Person das Reihungstestverfahren abgeschlossen haben");
}
}
//Check ZGV
if(!defined("ZGV_CHECK") || ZGV_CHECK)
{
if($status_kurzbz=='Bewerber' && $zgv_code=='')
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson($name . ": Um einen Interessenten zum Bewerber zu machen, muss die Zugangsvoraussetzung eingetragen sein.");
}
}
//Check ZGV-Master
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
$result = $this->StudiengangModel->load([
'studiengang_kz'=> $stg
]);
if(isError($result))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson(getError($result));
}
$result = current(getData($result));
$typ = $result->typ;
if(!defined("ZGV_CHECK") || ZGV_CHECK)
{
if($status_kurzbz=='Bewerber' && $zgv_code=='' && $typ=='m')
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson($name . ": Um einen Interessenten zum Bewerber zu machen, muss die Zugangsvoraussetzung Master eingetragen sein.");
}
}
//check if bewerberstatus exists
if($status_kurzbz == 'Aufgenommener' || $status_kurzbz == 'Wartender')
{
//TODO(manu) Wartender NICHT in Liste!? nur in diesem Code
//FAS: Aufnahme ist möglich: Beispiel prestudent_id = 129629
$result = $this->PrestudentstatusModel->checkIfExistingBewerberstatus($prestudent_id);
if (isError($result))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson(getError($result));
}
}
//TODO(Manu) permission not working here...
$hasPermissionToSkipStatusCheck = $this->permissionlib->isBerechtigt('student/keine_studdatuspruefung');
/* var_dump($hasPermissionToSkipStatusCheck);
$basis = $this->permissionlib->isBerechtigt('basis/prestudent');
var_dump($basis);*/
if(!$hasPermissionToSkipStatusCheck)
{
//Block STATUSCHECKS
$new_status_datum = isset($datum) ? $datum : date('Y-m-d');
$result = $this->PrestudentstatusModel->checkDatumNewStatus($new_status_datum);
if (isError($result))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson(getError($result));
}
$result = $this->PrestudentstatusModel->checkIfValidStatusHistory($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $new_status_datum, $ausbildungssemester);
if (isError($result))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson(getError($result));
//return $this->outputJson("DEBUG: in Funktion checkIfValidStatusHistory");
}
$statusArr = $result; //wenn return result ok
}
$result = $this->PrestudentstatusModel->insert(
[
'prestudent_id' => $prestudent_id,
@@ -83,7 +232,7 @@ class Status extends FHC_Controller
'ausbildungssemester' => $ausbildungssemester,
'anmerkung' => $anmerkung,
'statusgrund_id' => $statusgrund_id,
'insertvon' => 'uid',
'insertvon' => $uid,
'insertamum' => date('c'),
'bestaetigtam' => $bestaetigtam,
'bestaetigtvon' => $bestaetigtvon,
@@ -94,8 +243,10 @@ class Status extends FHC_Controller
if (isError($result))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson(getError($result));
//return $this->outputJson(getError($result));
return $this->outputJson("DEBUG: in insert Funktion");
}
return $this->outputJsonSuccess(true);
}
@@ -143,6 +294,13 @@ class Status extends FHC_Controller
$status_kurzbz = $this->input->post('status_kurzbz');
$ausbildungssemester = $this->input->post('ausbildungssemester');
$studiensemester_kurzbz = $this->input->post('studiensemester_kurzbz');
/* var_dump($prestudent_id);
var_dump($status_kurzbz);*/
//var_dump($_POST);
//Todo(manu)
//Löschen auch aus anderen Tabellen
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
@@ -166,6 +324,65 @@ class Status extends FHC_Controller
return $this->outputJsonSuccess(current(getData($result)));
}
public function updateStatus($prestudent_id)
{
/* $this->load->library('form_validation');
if ($this->form_validation->run() == false)
{
return $this->outputJsonError($this->form_validation->error_array());
}*/
$_POST = json_decode(utf8_encode($this->input->raw_input_stream), true);
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
var_dump($_POST);
$uid = getAuthUID();
//$prestudent_id = $this->input->post('prestudent_id');
$status_kurzbz = $this->input->post('status_kurzbz');
$ausbildungssemester = $this->input->post('ausbildungssemester');
$datum = $this->input->post('datum');
$bestaetigtam = $this->input->post('bestaetigtam');
$bewerbung_abgeschicktamum = $this->input->post('bewerbung_abgeschicktamum');
$studiensemester_kurzbz = $this->input->post('studiensemester_kurzbz');
$studienplan_id = $this->input->post('studienplan_id');
$anmerkung = $this->input->post('anmerkung ');
$statusgrund_id = $this->input->post('statusgrund_id');
$rt_stufe = $this->input->post('rt_stufe');
$bestaetigtvon = $this->input->post('bestaetigtvon');
// Start DB transaction
//$this->db->trans_start(false);
$result = $this->PrestudentstatusModel->update(
[
'prestudent_id' => $prestudent_id,
'status_kurzbz' => $status_kurzbz,
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'ausbildungssemester' => $ausbildungssemester,
],
[
'bewerbung_abgeschicktamum' => $bewerbung_abgeschicktamum,
'studienplan_id' => $studienplan_id,
'anmerkung' => $anmerkung,
'statusgrund_id' => $statusgrund_id,
'updatevon' => $uid,
'updateamum' => date('c'),
'bestaetigtam' => $bestaetigtam,
'bestaetigtvon' => $bestaetigtvon,
'datum' => $datum,
'rt_stufe' => $rt_stufe
]
);
if (isError($result))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson(getError($result));
}
return $this->outputJsonSuccess(true);
}
}
+62 -19
View File
@@ -734,20 +734,26 @@ class Prestudent_model extends DB_Model
*/
public function getHistoryPrestudent($prestudent_id)
{
$query = "
//TODO(Manu) refactor
$this->load->model('crm/Student_model', 'StudentModel');
$result = $this->StudentModel->checkIfUID($prestudent_id);
if(isError($result))
{
$query = "
SELECT
ps.status_kurzbz,
ps.studiensemester_kurzbz,
ps.ausbildungssemester,
CASE WHEN ps.status_kurzbz = 'Student' THEN CONCAT(lv.semester, lv.verband, lv.gruppe) END AS lehrverband,
ps.datum,
TO_CHAR(ps.datum::timestamp, 'DD.MM.YYYY') AS format_datum,
sp.bezeichnung,
ps.bestaetigtam,
TO_CHAR(ps.bestaetigtam::timestamp, 'DD.MM.YYYY') AS format_bestaetigtam,
ps.bewerbung_abgeschicktamum,
TO_CHAR(ps.bewerbung_abgeschicktamum::timestamp, 'DD.MM.YYYY HH24:MI:SS') AS format_bewerbung_abgeschicktamum,
stg.statusgrund_kurzbz,
ps.status_kurzbz,
ps.studiensemester_kurzbz,
ps.ausbildungssemester,
ps.datum,
TO_CHAR(ps.datum::timestamp, 'DD.MM.YYYY') AS format_datum,
sp.bezeichnung,
ps.bestaetigtam,
TO_CHAR(ps.bestaetigtam::timestamp, 'DD.MM.YYYY') AS format_bestaetigtam,
ps.bewerbung_abgeschicktamum,
TO_CHAR(ps.bewerbung_abgeschicktamum::timestamp, 'DD.MM.YYYY HH24:MI:SS') AS format_bewerbung_abgeschicktamum,
stg.statusgrund_kurzbz,
ps.orgform_kurzbz,
ps.prestudent_id,
sp.studienplan_id,
@@ -760,17 +766,54 @@ class Prestudent_model extends DB_Model
TO_CHAR(ps.updateamum::timestamp, 'DD.MM.YYYY HH24:MI:SS') AS format_updateamum,
ps.updatevon
FROM public.tbl_prestudentstatus ps
JOIN public.tbl_student st USING (prestudent_id)
JOIN public.tbl_studentlehrverband lv ON (st.student_uid = lv.student_uid)
JOIN public.tbl_studiengang sg ON (lv.studiengang_kz = sg.studiengang_kz)
LEFT JOIN public.tbl_student st USING (prestudent_id)
LEFT JOIN public.tbl_studiengang sg ON (st.studiengang_kz = sg.studiengang_kz)
LEFT JOIN lehre.tbl_studienplan sp USING (studienplan_id)
LEFT JOIN public.tbl_status_grund stg USING (statusgrund_id)
WHERE prestudent_id = ?
and lv.studiensemester_kurzbz = ps.studiensemester_kurzbz
ORDER BY datum DESC
ORDER BY datum DESC
";
}
else
{
$query = "
SELECT
ps.status_kurzbz,
ps.studiensemester_kurzbz,
ps.ausbildungssemester,
CASE WHEN ps.status_kurzbz IN ('Student', 'Diplomand') THEN CONCAT(lv.semester, lv.verband, lv.gruppe) END AS lehrverband,
ps.datum,
TO_CHAR(ps.datum::timestamp, 'DD.MM.YYYY') AS format_datum,
sp.bezeichnung,
ps.bestaetigtam,
TO_CHAR(ps.bestaetigtam::timestamp, 'DD.MM.YYYY') AS format_bestaetigtam,
ps.bewerbung_abgeschicktamum,
TO_CHAR(ps.bewerbung_abgeschicktamum::timestamp, 'DD.MM.YYYY HH24:MI:SS') AS format_bewerbung_abgeschicktamum,
stg.statusgrund_kurzbz,
ps.orgform_kurzbz,
ps.prestudent_id,
sp.studienplan_id,
ps.anmerkung,
ps.bestaetigtvon,
ps.insertamum,
TO_CHAR(ps.insertamum::timestamp, 'DD.MM.YYYY HH24:MI:SS') AS format_insertamum,
ps.insertvon,
ps.updateamum,
TO_CHAR(ps.updateamum::timestamp, 'DD.MM.YYYY HH24:MI:SS') AS format_updateamum,
ps.updatevon
FROM public.tbl_prestudentstatus ps
JOIN public.tbl_student st USING (prestudent_id)
JOIN public.tbl_studentlehrverband lv ON (st.student_uid = lv.student_uid)
JOIN public.tbl_studiengang sg ON (lv.studiengang_kz = sg.studiengang_kz)
LEFT JOIN lehre.tbl_studienplan sp USING (studienplan_id)
LEFT JOIN public.tbl_status_grund stg USING (statusgrund_id)
WHERE prestudent_id = ?
and lv.studiensemester_kurzbz = ps.studiensemester_kurzbz
ORDER BY datum DESC
";
}
// var_dump($query);
return $this->execQuery($query, array($prestudent_id));
}
@@ -338,4 +338,319 @@ class Prestudentstatus_model extends DB_Model
return $this;
}
/**
* Check if Rolle already exists
* @param integer $prestudent_id
* @param string $status_kurzbz
* @param string $studiensemester_kurzbz
* @param integer $ausbildungssemester
* @return error if already exists, success if not
* 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($result);
}
else
{
return error('Diese Rolle ist bereits vorhanden: ' . $prestudent_id . ' / ' . $studiensemester_kurzbz . ' : ' . $status_kurzbz . ' /' . $ausbildungssemester . ')');
}
}
/**
* 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)
{
$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)) {
return error("Person muss zuerst zum Bewerber gemacht werden! " . $prestudent_id );
}
else
{
return success($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("Datum eines neuen Statuseintrags darf nicht in der Vergangenheit liegen ");
}
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, $status_kurzbz, $new_status_studiensemester_kurzbz, $new_status_datum, $new_status_ausbildungssemester, $old_status_studiensemester_kurzbz = '', $old_status_ausbildungssemester = '')
{
//$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("Kein Eintrag für Studiensemester vorhanden! :-/" . $new_status_studiensemester_kurzbz);
}
$studiensemester = current($result->retval);
$new_status_semesterstart = $studiensemester->start;
//print_r($new_status_semesterstart);
//get all prestudentstati
$resultPs = $this->getAllPrestudentstatiWithStudiensemester($prestudent_id);
if (isError($resultPs))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson(getError($resultPs));
}
$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)
{
/* print_r($row->studiensemester_start . " >= " . $row->datum . " UND ");
print_r($new_status_semesterstart . " >= " . $new_status_datum . " ? ");*/
$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;
//print_r( "cond 2 met\n");
}
else
{
return error("Datum des Statuseintrags muss nach dem Statusdatum, das Semesterstartdatum nach Semesterstartdatum des vorherigen Statuseintrags sein");
// print_r( "cond not met" . $count . "\n");
}
}
//var_dump($statusArr);
$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("Nach Abbrecher- und Absolventenstatus darf kein anderer Status mehr eingetragen werden");
}
// wenn Unterbrecher auf Unterbrecher folgt, muss Ausbildungssemester gleich sein
//TODO(Manu) check, warum hier automatisch ausbildungssemester korrigiert wird
if (
$curr_status_kurzbz == 'Unterbrecher' && isset($next_status) && $next_status->status_kurzbz == 'Unterbrecher'
&& $curr_status_ausbildungssemester != $next_status->ausbildungssemester
)
{
return error("Aufeinanderfolgende Unterbrecher müssen gleiches Ausbildungssemester haben");
}
// wenn Abbrecher auf Unterbrecher folgt, muss Ausbildungssemester gleich sein
//TODO(Manu) check, warum hier automatisch ausbildungssemester korrigiert wird
if (
isset($next_status) && $curr_status_kurzbz == 'Unterbrecher'
&& $next_status->status_kurzbz == 'Abbrecher' && $curr_status_ausbildungssemester != $next_status->ausbildungssemester
)
{
return error("Unterbrecher und folgender Abbrecher müssen gleiches Ausbildungssemester haben");
}
// keine Studenten nach Diplomand Status
if (
isset($next_status) && $curr_status_kurzbz == 'Diplomand' && $next_status->status_kurzbz == 'Student'
)
{
return error("Nach Diplomantenstatus darf kein Studentenstatus mehr eingetragen werden");
}
}
//return $statusArr; //rot
//return $resultPs->retval; //rot
//TODO(Manu) check, warum Fehlermeldung bei anderem returnwert!
return $resultPs;
}
public function miniFunction()
{
$array = [
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
];
return $array;
}
public function checkStatusabfolge($statusArr)
{
$endstatusArr = array('Absolvent', 'Abbrecher');
$statusArr = json_decode($statusArr);
//var_dump($statusArr);
var_dump($statusArr[0]->status_kurzbz);
// Prüfungen den Prestudentstatus betreffend
// Ü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("Nach Abbrecher- und Absolventenstatus darf kein anderer Status mehr eingetragen werden");
}
}*/
return $endstatusArr;
}
public function getAllPrestudentstatiWithStudiensemester($prestudent_id, $old_status_studiensemester_kurzbz = '', $old_status_ausbildungssemester = '')
{
$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 error('No Statusdata vorhanden');
}
return $result;
/* $this->addSelect($this->dbTable . '.status_kurzbz');
$this->addSelect($this->dbTable . '.studiensemester_kurzbz');
$this->addSelect($this->dbTable . '.ausbildungssemester');
$this->addSelect($this->dbTable . '.datum');
$this->addSelect('s.start AS studiensemester_start');
$this->addJoin('public.tbl_studiensemester s', 'studiensemester_kurzbz');
$this->addOrder($this->dbTable . '.datum', 'DESC');
$this->addOrder($this->dbTable . '.insertamum', 'DESC');
$this->addOrder($this->dbTable . '.ext_id', 'DESC');
return $this->loadWhere([
'prestudent_id' => $prestudent_id
]
);*/
}
}
+21
View File
@@ -67,6 +67,27 @@ class Student_model extends DB_Model
return $result->retval[0]->student_uid;
}
/**
* Get students UID by PrestudentID.
* @param $prestudent_id
* @return mixed
*/
public function checkIfUID($prestudent_id)
{
$this->addSelect('student_uid');
$result = $this->loadWhere(
array('prestudent_id' => $prestudent_id)
);
if (!hasData($result))
{
return error($result);
}
return $result->retval[0]->student_uid;
}
public function searchStudent($filter)
{
$this->addSelect('vorname, nachname, gebdatum, person.person_id, student_uid');