mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-20 16:32:20 +00:00
check Meldestichtag, update function getHistoryPrestudent
This commit is contained in:
@@ -78,6 +78,8 @@ class Status extends FHC_Controller
|
||||
$granted_Adm = $this->permissionlib->getSTG_isEntitledFor('admin') ? $this->permissionlib->getSTG_isEntitledFor('admin') : [];
|
||||
$granted = array_merge($granted_Ass, $granted_Adm);
|
||||
|
||||
$isStudent = false;
|
||||
|
||||
if(!in_array($stg, $granted)){
|
||||
$result = "Sie haben keine Schreibrechte fuer diesen Studiengang!";
|
||||
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
|
||||
@@ -142,7 +144,7 @@ class Status extends FHC_Controller
|
||||
}
|
||||
|
||||
|
||||
//Check ob Reihungstest berücksichtigt werden soll
|
||||
//Check Reihungstest
|
||||
if(REIHUNGSTEST_CHECK)
|
||||
{
|
||||
if($status_kurzbz=='Bewerber' && !$reihungstest_angetreten)
|
||||
@@ -218,6 +220,10 @@ class Status extends FHC_Controller
|
||||
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
|
||||
return $this->outputJson($result->code);
|
||||
}
|
||||
if($result->retval != "0")
|
||||
{
|
||||
$isStudent = true;
|
||||
}
|
||||
}
|
||||
|
||||
//TODO(Manu) check permission...
|
||||
@@ -243,6 +249,25 @@ class Status extends FHC_Controller
|
||||
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
|
||||
return $this->outputJson(getError($result));
|
||||
}
|
||||
|
||||
//check if Bismeldestichtag erreicht
|
||||
$this->load->model('codex/Bismeldestichtag_model', 'BismeldestichtagModel');
|
||||
$result = $this->BismeldestichtagModel->checkIfMeldestichtagErreicht($new_status_datum);
|
||||
if (isError($result))
|
||||
{
|
||||
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
|
||||
return $this->outputJson(getError($result));
|
||||
}
|
||||
if($result->retval == "1")
|
||||
{
|
||||
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
|
||||
return $this->outputJson(getError($result->code));
|
||||
}
|
||||
/* if($result->retval == "0")
|
||||
{
|
||||
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
|
||||
return $this->outputJson($result->code);
|
||||
}*/
|
||||
}
|
||||
|
||||
// Start DB transaction
|
||||
@@ -276,11 +301,61 @@ class Status extends FHC_Controller
|
||||
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
|
||||
return $this->outputJson(getError($result));
|
||||
}
|
||||
else
|
||||
|
||||
if($isStudent)
|
||||
{
|
||||
$this->db->trans_commit();
|
||||
return $this->outputJsonSuccess(true);
|
||||
//Studentlehrverband anlegen
|
||||
$this->load->model('crm/Student_model', 'StudentModel');
|
||||
$result = $this->StudentModel->checkIfUid($prestudent_id);
|
||||
if (isError($result)) {
|
||||
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
|
||||
return $this->outputJson(getError($result));
|
||||
}
|
||||
$student_uid = $result->retval;
|
||||
|
||||
//check if Lehrverband exists
|
||||
$this->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel');
|
||||
$result = $this->StudentlehrverbandModel->checkIfLehrverbandExists($student_uid, $studiensemester_kurzbz);
|
||||
if (isError($result)) {
|
||||
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
|
||||
return $this->outputJson(getError($result));
|
||||
}
|
||||
if ($result->retval == "0") {
|
||||
//load Data Lehrverband
|
||||
$result = $this->StudentlehrverbandModel->load(
|
||||
[
|
||||
'student_uid' => $student_uid,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz
|
||||
]);
|
||||
if (isError($result)) {
|
||||
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
|
||||
|
||||
return $this->outputJson("Error in insert Studentlehrverband");
|
||||
}
|
||||
$lvbData = current(getData($result));
|
||||
|
||||
$result = $this->StudentlehrverbandModel->insert(
|
||||
[
|
||||
'student_uid' => $student_uid,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'semester' => $ausbildungssemester,
|
||||
'verband' => $lvbData->verband,
|
||||
'gruppe' => $lvbData->gruppe,
|
||||
'insertamum' => date('c'),
|
||||
'insertvon' => $uid,
|
||||
'studiengang_kz' => $lvbData->studiengang_kz
|
||||
]);
|
||||
if (isError($result)) {
|
||||
$this->db->trans_rollback();
|
||||
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
|
||||
|
||||
return $this->outputJson("Error in insert Studentlehrverband");
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->db->trans_commit();
|
||||
return $this->outputJsonSuccess(true);
|
||||
|
||||
}
|
||||
|
||||
public function loadStatus()
|
||||
|
||||
@@ -11,4 +11,76 @@ class Bismeldestichtag_model extends DB_Model
|
||||
$this->dbTable = 'bis.tbl_bismeldestichtag';
|
||||
$this->pk = 'meldestichtag_id';
|
||||
}
|
||||
|
||||
public function getLastReachedMeldestichtag($studiensemester_kurzbz = null)
|
||||
{
|
||||
$qry = "
|
||||
SELECT
|
||||
meldestichtag_id, meldestichtag, studiensemester_kurzbz, insertamum, insertvon, updateamum, updatevon
|
||||
FROM
|
||||
bis.tbl_bismeldestichtag
|
||||
WHERE
|
||||
meldestichtag < NOW()
|
||||
";
|
||||
|
||||
if (isset($studiensemester_kurzbz))
|
||||
{
|
||||
$qry .= "
|
||||
AND
|
||||
studiensemester_kurzbz= ?";
|
||||
}
|
||||
|
||||
$qry .= "
|
||||
ORDER BY
|
||||
meldestichtag DESC
|
||||
LIMIT 1;";
|
||||
|
||||
$result = $this->execQuery($qry, array($studiensemester_kurzbz));
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
return error($result);
|
||||
}
|
||||
if (!hasData($result)) {
|
||||
return success("0",'Kein Meldestichtag vorhanden');
|
||||
}
|
||||
return $result;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Prüft, ob Meldestichtag für ein bestimmtes Statusdatum und Studiensemester erreicht ist.
|
||||
*
|
||||
* @param $status_datum
|
||||
* @return boolean true wenn erreicht, oder false
|
||||
*/
|
||||
public function checkIfMeldestichtagErreicht($status_datum)
|
||||
{
|
||||
$erreicht = false;
|
||||
// letztes erreichtes Bismeldedatum holen
|
||||
$result = $this->getLastReachedMeldestichtag();
|
||||
if (isError($result))
|
||||
{
|
||||
return error($result);
|
||||
}
|
||||
if (!hasData($result)) {
|
||||
return success("0",'No Statusdata vorhanden');
|
||||
}
|
||||
$stichtag = current(getData($result));
|
||||
$stichtag = $stichtag->meldestichtag;
|
||||
var_dump($status_datum . " < " . $stichtag . "?");
|
||||
|
||||
// Prüfen, ob Studentstatusdatum oder Studiensemester vor dem Stichtagsdatum liegen
|
||||
if (isset($statusDatum))
|
||||
{
|
||||
if (isset($stichtag))
|
||||
$erreicht = $statusDatum < $stichtag;
|
||||
}
|
||||
|
||||
if($erreicht)
|
||||
return success("1", "Studentstatus mit Datum oder Semesterende vor erreichtem Meldestichtag können nicht hinzugefügt werden");
|
||||
|
||||
return success("0", "Meldestatus nicht erreicht");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -734,58 +734,15 @@ class Prestudent_model extends DB_Model
|
||||
*/
|
||||
public function getHistoryPrestudent($prestudent_id)
|
||||
{
|
||||
//TODO(Manu) refactor
|
||||
$this->load->model('crm/Student_model', 'StudentModel');
|
||||
|
||||
$result = $this->StudentModel->checkIfUID($prestudent_id);
|
||||
|
||||
if(isError($result))
|
||||
{
|
||||
return getData($result);
|
||||
}
|
||||
if($result->retval == "0") //wenn kein studentlehrband eingetragen
|
||||
{
|
||||
$query = "
|
||||
SELECT
|
||||
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,
|
||||
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
|
||||
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 = ?
|
||||
ORDER BY datum DESC
|
||||
";
|
||||
}
|
||||
else
|
||||
{
|
||||
$query = "
|
||||
SELECT
|
||||
$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.ausbildungssemester,
|
||||
CASE WHEN ps.status_kurzbz IN ('Student', 'Diplomand')
|
||||
THEN CONCAT(lv.semester, lv.verband, lv.gruppe)
|
||||
ELSE ''
|
||||
END AS lehrverband,
|
||||
ps.datum,
|
||||
TO_CHAR(ps.datum::timestamp, 'DD.MM.YYYY') AS format_datum,
|
||||
sp.bezeichnung,
|
||||
@@ -804,19 +761,26 @@ class Prestudent_model extends DB_Model
|
||||
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)
|
||||
ps.updatevon
|
||||
FROM
|
||||
public.tbl_prestudentstatus ps
|
||||
JOIN
|
||||
public.tbl_student st USING (prestudent_id)
|
||||
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)
|
||||
LEFT JOIN
|
||||
public.tbl_studentlehrverband lv ON
|
||||
(st.student_uid = lv.student_uid
|
||||
AND st.student_uid IS NOT NULL
|
||||
AND lv.studiensemester_kurzbz = ps.studiensemester_kurzbz)
|
||||
WHERE prestudent_id = ?
|
||||
and lv.studiensemester_kurzbz = ps.studiensemester_kurzbz
|
||||
ORDER BY datum DESC
|
||||
";
|
||||
";
|
||||
|
||||
}
|
||||
return $this->execQuery($query, array($prestudent_id));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -593,7 +593,7 @@ class Prestudentstatus_model extends DB_Model
|
||||
isset($next_status) && $curr_status_kurzbz == 'Diplomand' && $next_status->status_kurzbz == 'Student'
|
||||
)
|
||||
{
|
||||
return error("Nach Diplomantenstatus darf kein Studentenstatus mehr eingetragen werden");
|
||||
return error("Nach Diplomandenstatus darf kein Studentenstatus mehr eingetragen werden");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -611,7 +611,7 @@ class Prestudentstatus_model extends DB_Model
|
||||
$isNewStatus = $old_status_studiensemester_kurzbz == '' && $old_status_ausbildungssemester == '';
|
||||
|
||||
$qry = "
|
||||
SELECT public.tbl_prestudentstatus.status_kurzbz,
|
||||
SELECT public.tbl_prestudentstatus.status_kurzbz,
|
||||
public.tbl_prestudentstatus.studiensemester_kurzbz,
|
||||
public.tbl_prestudentstatus.ausbildungssemester,
|
||||
public.tbl_prestudentstatus.datum,
|
||||
|
||||
Reference in New Issue
Block a user