Update, Vorrücken, Delete, Refactoring Statusvalidations

This commit is contained in:
ma0068
2024-02-27 16:53:37 +01:00
parent 843ddad987
commit 88df5057fb
6 changed files with 597 additions and 131 deletions
+391 -36
View File
@@ -55,7 +55,6 @@ class Status extends FHC_Controller
}*/
//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([
@@ -75,8 +74,8 @@ class Status extends FHC_Controller
$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_Ass = $this->permissionlib->getSTG_isEntitledFor('assistenz') ? $this->permissionlib->getSTG_isEntitledFor('assistenz') : [];
$granted_Adm = $this->permissionlib->getSTG_isEntitledFor('admin') ? $this->permissionlib->getSTG_isEntitledFor('admin') : [];
$granted = array_merge($granted_Ass, $granted_Adm);
if(!in_array($stg, $granted)){
@@ -88,7 +87,6 @@ class Status extends FHC_Controller
$_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');
@@ -100,7 +98,7 @@ class Status extends FHC_Controller
$anmerkung = $this->input->post('anmerkung');
$statusgrund_id = $this->input->post('statusgrund_id');
$rt_stufe = $this->input->post('rt_stufe');
$bestaetigtvon = $this->input->post('bestaetigtvon');
$bestaetigtvon = $uid;
// Start DB transaction
//$this->db->trans_start(false);
@@ -123,10 +121,11 @@ class Status extends FHC_Controller
$ausbildungssemester = $lastStatusData->ausbildungssemester;
}
if($status_kurzbz != 'Student')
//Todo(manu) check if this check makes sense?
/* if($status_kurzbz != 'Student')
{
$ausbildungssemester = $lastStatusData->ausbildungssemester;
}
}*/
//check if Rolle already exists
$result = $this->PrestudentstatusModel->checkIfExistingPrestudentRolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester);
@@ -134,8 +133,13 @@ class Status extends FHC_Controller
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson(getError($result));
//return $this->outputJson("DEBUG: in Funktion checkIfExistingPrestudentRolle");
}
if($result->retval == '1')
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson($result->code);
}
//Check ob Reihungstest berücksichtigt werden soll
if(REIHUNGSTEST_CHECK)
@@ -185,7 +189,24 @@ class Status extends FHC_Controller
//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);
$result = $this->PrestudentstatusModel->checkIfExistingBewerberstatus($prestudent_id, $name);
if (isError($result))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson(getError($result));
}
if($result->retval == "0")
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson($result->code);
}
}
//check if studentrolle already exists
if($status_kurzbz == 'Student')
{
$this->load->model('crm/Student_model', 'StudentModel');
$result = $this->StudentModel->checkIfExistingStudentRolle($prestudent_id);
if (isError($result))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
@@ -215,13 +236,9 @@ class Status extends FHC_Controller
{
$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,
@@ -243,8 +260,7 @@ 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("DEBUG: in insert Funktion");
return $this->outputJson(getError($result));
}
return $this->outputJsonSuccess(true);
@@ -258,8 +274,6 @@ class Status extends FHC_Controller
$status_kurzbz = $this->input->post('status_kurzbz');
$ausbildungssemester = $this->input->post('ausbildungssemester');
$studiensemester_kurzbz = $this->input->post('studiensemester_kurzbz');
//echo $prestudent_id . $status_kurzbz . $ausbildungssemester . $studiensemester_kurzbz;
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
@@ -281,29 +295,74 @@ class Status extends FHC_Controller
}
else
{
//var_dump($result);
$this->outputJsonSuccess(current(getData($result)));
}
}
public function deleteStatus()
{
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
$_POST = json_decode(utf8_encode($this->input->raw_input_stream), true);
$prestudent_id = $this->input->post('prestudent_id');
$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) check: warum sind beim Löschen andere Berechtigungen?
//ich darf keine Stati anlegen, aber löschen, wenn mehr als einer übrig???
/* $granted_Ass = $this->permissionlib->getSTG_isEntitledFor('assistenz');
$granted_Adm = $this->permissionlib->getSTG_isEntitledFor('admin');
$granted = array_merge($granted_Ass, $granted_Adm);
//Todo(manu)
//Löschen auch aus anderen Tabellen
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$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));
$stg = $result->studiengang_kz;
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
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);
}*/
$isBerechtigtAdmin = $this->permissionlib->isBerechtigt('admin', null, 'suid');
$isBerechtigtNoStudstatusCheck = $this->permissionlib->isBerechtigt('student/keine_studstatuspruefung', null, 'suid');
if($status_kurzbz=="Student" && !$isBerechtigtAdmin && !$isBerechtigtNoStudstatusCheck)
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson("Studentenrolle kann nur durch den Administrator geloescht werden");
}
if(!$isBerechtigtAdmin && !$isBerechtigtNoStudstatusCheck)
{
//check if last status
$result = $this->PrestudentstatusModel->checkIfLastStatusEntry($prestudent_id);
if (isError($result))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson($result);
}
if($result->retval == "1")
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson($result->code);
}
}
//Delete Status
$result = $this->PrestudentstatusModel->delete(
array(
'prestudent_id' => $prestudent_id,
@@ -312,20 +371,88 @@ class Status extends FHC_Controller
'studiensemester_kurzbz' => $studiensemester_kurzbz
)
);
if (isError($result))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
$this->outputJson($result);
}
elseif (!hasData($result)) {
elseif(!hasData($result)) {
$this->outputJson($result);
}
return $this->outputJsonSuccess(current(getData($result)));
//return $this->outputJsonSuccess(current(getData($result)));
// Delete Studentlehrverband if no Status left
$result = $this->PrestudentstatusModel->getLastStatus($prestudent_id, $studiensemester_kurzbz);
if(isError($result))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson(getError($result));
}
if(!hasData($result))
{
//get student_uid
$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;
$this->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel');
$result = $this->StudentlehrverbandModel->delete(
array(
'student_uid' => $student_uid,
'studiensemester_kurzbz' => $studiensemester_kurzbz
)
);
if (isError($result))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
$this->outputJson("Fehler beim Löschen der Lehrverbandszuordnung");
}
if(!hasData($result)) {
$this->outputJson($result);
}
return $this->outputJsonSuccess(true);
}
//TODO(manu) $this->db->trans_start(false); and rollback?
//TODO(manu) ganzen Prestudenten löschen, wenn kein Eintrag mehr
return $this->outputJsonSuccess(true);
}
public function updateStatus($prestudent_id)
public function updateStatus($key_prestudent_id, $key_status_kurzbz, $key_studiensemester_kurzbz, $key_ausbildungssemester)
{
//TODO(Manu) check: Annahme, dass hier immer suid bei Berechtigung STG vergeben wird!
$granted_Ass = $this->permissionlib->getSTG_isEntitledFor('assistenz') ? $this->permissionlib->getSTG_isEntitledFor('assistenz') : [];
$granted_Adm = $this->permissionlib->getSTG_isEntitledFor('admin') ? $this->permissionlib->getSTG_isEntitledFor('admin') : [];
$granted = array_merge($granted_Ass, $granted_Adm);
//get Studiengang von prestudent_id
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$result = $this->PrestudentModel->load([
'prestudent_id'=> $key_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));
$stg = $result->studiengang_kz;
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);
}
//var_dump($key_prestudent_id, $key_status_kurzbz, $key_studiensemester_kurzbz, $key_ausbildungssemester);
/* $this->load->library('form_validation');
@@ -337,10 +464,8 @@ class Status extends FHC_Controller
$_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');
$prestudent_id = $this->input->post('prestudent_id');
$status_kurzbz = $this->input->post('status_kurzbz');
$ausbildungssemester = $this->input->post('ausbildungssemester');
$datum = $this->input->post('datum');
@@ -348,23 +473,74 @@ 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');
$bestaetigtvon = $uid;
// Start DB transaction
//$this->db->trans_start(false);
//check if Rolle already exists
if(($key_studiensemester_kurzbz != $studiensemester_kurzbz)
|| ($key_ausbildungssemester != $ausbildungssemester))
{
$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));
}
if($result->retval == '1')
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson($result->code);
}
}
//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
//bei update wohl nicht?
/* $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));
}*/
$new_status_datum = isset($datum) ? $datum : date('Y-m-d');
$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->update(
[
'prestudent_id' => $key_prestudent_id,
'status_kurzbz' => $key_status_kurzbz,
'studiensemester_kurzbz' => $key_studiensemester_kurzbz,
'ausbildungssemester' => $key_ausbildungssemester,
],
[
'prestudent_id' => $prestudent_id,
'status_kurzbz' => $status_kurzbz,
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'ausbildungssemester' => $ausbildungssemester,
],
[
'bewerbung_abgeschicktamum' => $bewerbung_abgeschicktamum,
'studienplan_id' => $studienplan_id,
'anmerkung' => $anmerkung,
@@ -382,7 +558,186 @@ class Status extends FHC_Controller
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson(getError($result));
}
if (!hasData($result)) {
return error('No Statusdata vorhanden');
}
return $this->outputJsonSuccess(true);
}
public function advanceStatus($key_prestudent_id, $key_status_kurzbz, $key_studiensemester_kurzbz, $key_ausbildungssemester)
{
//TODO(Manu) check: Annahme, dass hier immer suid bei Berechtigung STG vergeben wird!
$granted_Ass = $this->permissionlib->getSTG_isEntitledFor('assistenz') ? $this->permissionlib->getSTG_isEntitledFor('assistenz') : [];
$granted_Adm = $this->permissionlib->getSTG_isEntitledFor('admin') ? $this->permissionlib->getSTG_isEntitledFor('admin') : [];
$granted = array_merge($granted_Ass, $granted_Adm);
//get Studiengang von prestudent_id
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$result = $this->PrestudentModel->load([
'prestudent_id'=> $key_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));
$stg = $result->studiengang_kz;
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);
}
//Data Vorrücken
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
$result = $this->PrestudentstatusModel->loadWhere(
array(
'prestudent_id' => $key_prestudent_id,
'status_kurzbz' => $key_status_kurzbz,
'ausbildungssemester' => $key_ausbildungssemester,
'studiensemester_kurzbz' => $key_studiensemester_kurzbz
)
);
if (isError($result)) {
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
$this->outputJson($result);
}
elseif (!hasData($result)) {
$this->outputJson($result);
}
else
{
$statusData = current(getData($result));
}
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
$result = $this->StudiensemesterModel->getNextFrom($key_studiensemester_kurzbz);
if (isError($result))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson(getError($result));
}
$studiensem_next = current(getData($result));
$studiensem_next = $studiensem_next->studiensemester_kurzbz;
$ausbildungssem_next = $key_ausbildungssemester+1;
//check if Rolle already exists
$result = $this->PrestudentstatusModel->checkIfExistingPrestudentRolle($key_prestudent_id, $key_status_kurzbz, $studiensem_next, $ausbildungssem_next);
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($result->code);
}
//check if studentrolle already exists
if($key_status_kurzbz == 'Student')
{
$this->load->model('crm/Student_model', 'StudentModel');
$result = $this->StudentModel->checkIfExistingStudentRolle($key_prestudent_id);
if (isError($result))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson(getError($result));
}
if ($result->retval == "0")
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson($result->code);
}
}
//insert prestudentstatus
$uid = getAuthUID();
$result = $this->PrestudentstatusModel->insert(
[
'prestudent_id' => $key_prestudent_id,
'status_kurzbz' => $key_status_kurzbz,
'studiensemester_kurzbz' => $studiensem_next,
'ausbildungssemester' => $ausbildungssem_next,
'insertamum' => date('c'),
'insertvon' => $uid,
'bestaetigtam' => date('c'),
'bestaetigtvon' => $uid,
'studienplan_id' => $statusData->studienplan_id,
'datum' => date('c'),
'anmerkung' => $statusData->anmerkung
]
);
if (isError($result))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
//return $this->outputJson(getError($result));
return $this->outputJson("DEBUG: in insert Funktion");
}
//Studentlehrverband anlegen
$this->load->model('crm/Student_model', 'StudentModel');
$result = $this->StudentModel->checkIfUid($key_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, $studiensem_next);
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' => $key_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' => $studiensem_next,
'semester' => $ausbildungssem_next,
'verband' => $lvbData->verband,
'gruppe' => $lvbData->gruppe,
'insertamum' => date('c'),
'insertvon' => $uid,
'studiengang_kz' => $lvbData->studiengang_kz
]);
if (isError($result))
{
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
return $this->outputJson("Error in insert Studentlehrverband");
}
}
return $this->outputJsonSuccess(true);
}
}
+5 -3
View File
@@ -740,6 +740,10 @@ class Prestudent_model extends DB_Model
$result = $this->StudentModel->checkIfUID($prestudent_id);
if(isError($result))
{
return getData($result);
}
if($result->retval != "0")
{
$query = "
SELECT
@@ -778,7 +782,7 @@ class Prestudent_model extends DB_Model
{
$query = "
SELECT
ps.status_kurzbz,
ps.status_kurzbz2,
ps.studiensemester_kurzbz,
ps.ausbildungssemester,
CASE WHEN ps.status_kurzbz IN ('Student', 'Diplomand') THEN CONCAT(lv.semester, lv.verband, lv.gruppe) END AS lehrverband,
@@ -813,8 +817,6 @@ class Prestudent_model extends DB_Model
";
}
return $this->execQuery($query, array($prestudent_id));
}
}
@@ -345,7 +345,7 @@ class Prestudentstatus_model extends DB_Model
* @param string $status_kurzbz
* @param string $studiensemester_kurzbz
* @param integer $ausbildungssemester
* @return error if already exists, success if not
* @return 1: if Rolle exists, 0: if it doesn't
* Copy from studentDBDML.php
*/
public function checkIfExistingPrestudentRolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester)
@@ -369,12 +369,13 @@ class Prestudentstatus_model extends DB_Model
{
return error($result);
}
elseif (!hasData($result)) {
return success($result);
elseif (!hasData($result))
{
return success(0);
}
else
{
return error('Diese Rolle ist bereits vorhanden: ' . $prestudent_id . ' / ' . $studiensemester_kurzbz . ' : ' . $status_kurzbz . ' /' . $ausbildungssemester . ')');
return success("1","Diese Rolle ist bereits vorhanden!");
}
}
@@ -383,7 +384,7 @@ class Prestudentstatus_model extends DB_Model
* @param integer $prestudent_id
* @return error if no bewerberstatus, success if existing
*/
public function checkIfExistingBewerberstatus($prestudent_id)
public function checkIfExistingBewerberstatus($prestudent_id, $name = null)
{
$qry = "SELECT
*
@@ -400,8 +401,10 @@ class Prestudentstatus_model extends DB_Model
{
return error($result);
}
elseif (!hasData($result)) {
return error("Person muss zuerst zum Bewerber gemacht werden! " . $prestudent_id );
elseif (!hasData($result))
{
$person = $name ? $name : "Person";
return success("0", $person . " muss zuerst zum Bewerber gemacht werden!");
}
else
{
@@ -409,6 +412,50 @@ class Prestudentstatus_model extends DB_Model
}
}
/**
* 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)
{
$qry = "SELECT
COUNT(*) as anzahl
FROM
public.tbl_prestudentstatus
WHERE
prestudent_id = ? ";
$result = $this->execQuery($qry, array($prestudent_id));
if (isError($result))
{
return error($result);
}
else
{
$resultObject = current(getData($result));
if (property_exists($resultObject, 'anzahl'))
{
$anzahl = (int) $resultObject->anzahl;
if ($anzahl <= 1 )
{
return success ("1", "Die letzte Rolle kann nur durch den Administrator geloescht werden");
//return error("Die letzte Rolle kann nur durch den Administrator geloescht werden");
}
else
return success("0", $anzahl . " Rollen vorhanden");
//return success($anzahl);
}
else
{
return error("PrestudentstatusModel: Error During Check if Last Status Entry.");
}
}
}
/**
* Check if Datum New Status is in the Past
* @param integer $prestudent_id
@@ -456,8 +503,6 @@ class Prestudentstatus_model extends DB_Model
$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))
@@ -474,9 +519,6 @@ class Prestudentstatus_model extends DB_Model
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);
@@ -498,17 +540,14 @@ class Prestudentstatus_model extends DB_Model
}
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
@@ -526,7 +565,6 @@ class Prestudentstatus_model extends DB_Model
}
// 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
@@ -536,7 +574,6 @@ class Prestudentstatus_model extends DB_Model
}
// 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
@@ -561,47 +598,10 @@ class Prestudentstatus_model extends DB_Model
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 = '')
{
//Todo(manu) check isNewStatus
$isNewStatus = $old_status_studiensemester_kurzbz == '' && $old_status_ausbildungssemester == '';
$qry = "
@@ -630,26 +630,6 @@ class Prestudentstatus_model extends DB_Model
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
]
);*/
}
+52 -3
View File
@@ -80,12 +80,20 @@ class Student_model extends DB_Model
array('prestudent_id' => $prestudent_id)
);
if (!hasData($result))
if(isError($result))
{
return error($result);
return error("0", "Error while checking student_uid");
}
return $result->retval[0]->student_uid;
if (!hasData($result))
{
return success("0","Keine Student_uid vorhanden");
}
$student_uid = $result->retval[0]->student_uid;
return success ($student_uid);
}
public function searchStudent($filter)
@@ -113,4 +121,45 @@ class Student_model extends DB_Model
{
return $student_uid . '@' . DOMAIN;
}
/**
* Check if StudentenRolle already exists
* @param integer $prestudent_id
* @return 0 if not exists, count(rollen) if it does
* Copy from studentDBDML.php
*/
public function checkIfExistingStudentRolle($prestudent_id)
{
$qry = "SELECT
count(*) as anzahl
FROM
public.tbl_student
WHERE
prestudent_id = ? ";
$result = $this->execQuery($qry, array($prestudent_id));
if (isError($result))
{
return error($result);
}
else {
$resultObject = current(getData($result));
if (property_exists($resultObject, 'anzahl')) {
$resultValue = (int) $resultObject->anzahl;
if ($resultValue > 0)
{
return success($resultValue, $resultValue . " vorhandene Rollen");
}
else
{
return success("0", "Ein Studentenstatus kann hier nur hinzugefuegt werden wenn die Person bereits Student ist. Um einen Bewerber zum Studenten zu machen waehlen Sie bitte unter 'Status aendern' den Punkt 'Student'");
}
} else {
return error("StudentModel: Error During Check if Existing Student Rolle.");
}
}
}
}
@@ -12,4 +12,39 @@ class Studentlehrverband_model extends DB_Model
$this->pk = array('studiensemester_kurzbz', 'student_uid');
$this->hasSequence = false;
}
/**
* 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
*/
public function checkIfLehrverbandExists($student_uid, $studiensemester_kurzbz)
{
$qry = "SELECT
*
FROM
public.tbl_studentlehrverband
WHERE
student_uid = ?
AND
studiensemester_kurzbz = ?";
$result = $this->execQuery($qry, array($student_uid, $studiensemester_kurzbz));
if (isError($result))
{
return error($result);
}
elseif (!hasData($result))
{
return success("0", "Kein Lehrverband vorhanden!");
}
else
{
return success("1","Lehrverband vorhanden!");
}
}
}
@@ -186,11 +186,16 @@ export default{
actionAdvanceStatus(status, stdsem, ausbildungssemester){
console.log("Action: Status vorrücken: (" + status + ": " + stdsem + "/" + ausbildungssemester + ")")
//this.$refs.deleteStatusModal.show();
/* this.loadStatus(status_id).then(() => {
if(this.statusData.bankverbindung_id)
this.$refs.deleteStatusModal.show();
});*/
this.statusId = {
'prestudent_id': this.prestudent_id,
'status_kurzbz': status,
'studiensemester_kurzbz': stdsem,
'ausbildungssemester': ausbildungssemester
};
this.loadStatus(this.statusId).then(() => {
if(this.statusData)
this.advanceStatus(this.statusId);
});
},
actionConfirmStatus(status, stdsem, ausbildungssemester){
console.log("Action: Status bestätigen: (" + status + ": " + stdsem + "/" + ausbildungssemester + ")")
@@ -226,6 +231,33 @@ export default{
this.reload();
});
},
advanceStatus(statusId){
return CoreRESTClient.post('components/stv/Status/advanceStatus/' +
this.statusId.prestudent_id + '/' +
this.statusId.status_kurzbz + '/' +
this.statusId.studiensemester_kurzbz + '/' +
this.statusId.ausbildungssemester)
.then(
result => {
if(!result.data.error) {
this.$fhcAlert.alertSuccess('Vorrückung Status erfolgreich');
}
else
{
const errorData = result.data.retval;
this.$fhcAlert.alertError('Kein Status mit Id ' + status_id + ' gefunden');
}
/* return result;*/
}).catch(error => {
if (error.response) {
console.log(error.response);
this.$fhcAlert.alertError(error.response.data);
}
}).finally(() => {
window.scrollTo(0, 0);
this.reload();
});
},
deleteStatus(status_id){
return CoreRESTClient.post('components/stv/Status/deleteStatus/',
status_id)
@@ -243,14 +275,21 @@ export default{
}
/* return result;*/
}).catch(error => {
this.$fhcAlert.alertError('Fehler bei Löschen von Status aufgetreten');
if (error.response) {
//console.log(error.response);
this.$fhcAlert.alertError(error.response.data);
}
}).finally(() => {
window.scrollTo(0, 0);
this.reload();
});
},
editStatus(status_id){
return CoreRESTClient.post('components/stv/Status/updateStatus/' + this.prestudent_id,
editStatus(){
return CoreRESTClient.post('components/stv/Status/updateStatus/' +
this.statusId.prestudent_id + '/' +
this.statusId.status_kurzbz + '/' +
this.statusId.studiensemester_kurzbz + '/' +
this.statusId.ausbildungssemester,
this.statusData)
.then(
result => {
@@ -266,7 +305,10 @@ export default{
}
/* return result;*/
}).catch(error => {
this.$fhcAlert.alertError('Fehler beim Bearbeiten des Status aufgetreten');
if (error.response) {
console.log(error.response);
this.$fhcAlert.alertError(error.response.data);
}
}).finally(() => {
window.scrollTo(0, 0);
this.reload();
@@ -330,17 +372,17 @@ export default{
<div class="stv-list h-100 pt-3">
<!-- <p>TestData</p>
<p>TestData</p>
{{statusData}}
<hr>-->
<hr>
<!-- Berechtigungen:
Skip Check: {{hasPermissionToSkipStatusCheck}} |
Admin: {{hasAdminPermission}} |
Studiengaenge: {{hasAssistenzPermissionForStgs}} |
Schreibrecht ASS: {{hasSchreibrechtAss}}-->
<!-- <hr>
<p>{{statusId}}</p> -->
<hr>
<p>{{statusId}}</p>
<!--Modal: Add New Status-->
<BsModal ref="newStatusModal">
@@ -515,6 +557,8 @@ export default{
<template #title>Status bearbeiten</template>
<form-form class="row g-3" ref="statusData">
<input type="hidden" id="statusId" name="statusId" value="statusData.statusId">
<div class="row mb-3">
<label for="status_kurzbz" class="form-label col-sm-4">Rolle</label>
<div class="col-sm-6">
@@ -524,6 +568,7 @@ export default{
v-model="statusData['status_kurzbz']"
name="status_kurzbz"
type="select"
disabled
>
<option value="Interessent">InteressentIn</option>
<option value="Bewerber">BewerberIn</option>
@@ -670,7 +715,7 @@ export default{
</form-form>
<template #footer>
<button type="button" class="btn btn-primary" @click="editStatus(statusId)">OK</button>
<button type="button" class="btn btn-primary" @click="editStatus()">OK</button>
</template>
</BsModal>