refactor setFunctions and processStudentlehrverband

This commit is contained in:
ma0068
2024-08-05 16:52:46 +02:00
parent a555067c43
commit 437fd64a6f
3 changed files with 121 additions and 249 deletions
@@ -86,15 +86,15 @@ class Status extends FHCAPI_Controller
if (!$this->form_validation->run())
$this->terminateWithValidationErrors($this->form_validation->error_array());
}
if (defined('VORRUECKUNG_STATUS_MAX_SEMESTER') && VORRUECKUNG_STATUS_MAX_SEMESTER == false)
$this->terminateWithSuccess(100);
$this->load->model('organisation/Lehrverband_model', 'LehrverbandModel');
$result = $this->LehrverbandModel->getMaxSemester($studiengang_kzs);
$maxsem = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($maxsem ? current($maxsem)->maxsem : 10);
@@ -133,7 +133,7 @@ class Status extends FHCAPI_Controller
public function isErsterStudent($prestudent_id)
{
//check if studentrolle already exists
$this->load->model('crm/Student_model','StudentModel');
$this->load->model('crm/Student_model', 'StudentModel');
$result = $this->StudentModel->checkIfExistingStudentRolle($prestudent_id);
if (isError($result))
{
@@ -144,7 +144,6 @@ class Status extends FHCAPI_Controller
return $this->terminateWithSuccess($result);
}
return $this->terminateWithSuccess($result);
}
public function hasStatusBewerber($prestudent_id)
@@ -200,11 +199,10 @@ class Status extends FHCAPI_Controller
$lastStatusData = $this->getDataOrTerminateWithError($result);
$lastStatusData = current($lastStatusData);
//TODO(Manu) check phrase: why bewerbung?
if (!$isBerechtigtBasisPrestudentstatus)
$this->form_validation->set_rules(
'bewerbung_abgeschicktamum',
$this->p->t('lehre', 'bewerbung_abgeschickt_am'),
'berechtigt',
$this->p->t('ui', 'nurLeseberechtigung'),
'is_null',
[
'is_null' => $this->p->t('ui', 'error_fieldWriteAccess')
@@ -253,7 +251,7 @@ class Status extends FHCAPI_Controller
return true;
$result = $this->prestudentstatuschecklib->checkIfAngetreten($prestudent_person);
return $this->getDataOrTerminateWithError($result);
}],
}],
//Check ZGV
['checkIfZGV', function ($value) use ($prestudent_person) {
if (!ZGV_CHECK)
@@ -274,7 +272,7 @@ class Status extends FHCAPI_Controller
}],
//Check Bewerberstatus
[
'checkIfExistingBewerberstatus', function () use ($prestudent_id, $status_kurzbz) {
'checkIfExistingBewerberstatus', function () use ($prestudent_id, $status_kurzbz) {
if ($status_kurzbz != Prestudentstatus_model::STATUS_AUFGENOMMENER &&
$status_kurzbz != Prestudentstatus_model::STATUS_WARTENDER &&
$status_kurzbz != Prestudentstatus_model::STATUS_ABGEWIESENER)
@@ -297,9 +295,9 @@ class Status extends FHCAPI_Controller
'checkIfZGV' => $this->p->t('lehre', 'error_ZGVNichtEingetragen', ['name' => $studentName]),
'checkIfZGVMaster' => $this->p->t('lehre', 'error_ZGVMasterNichtEingetragen', ['name' => $studentName]),
'status_stud_exists' => $this->p->t('lehre', 'error_noStudstatus')
]
]
);
if ($status_kurzbz == Prestudentstatus_model::STATUS_STUDENT)
$this->form_validation->set_rules('ausbildungssemester', $this->p->t('lehre', 'ausbildungssemester'), 'required|integer', [
'integer' => $this->p->t('ui', 'error_fieldNotInteger')
@@ -647,11 +645,10 @@ class Status extends FHCAPI_Controller
$isBerechtigtBasisPrestudentstatus = $this->permissionlib->isBerechtigt('basis/prestudentstatus');
//TODO(Manu) check phrase: why bewerbung?
if (!$isBerechtigtBasisPrestudentstatus)
$this->form_validation->set_rules(
'bewerbung_abgeschicktamum',
$this->p->t('lehre', 'bewerbung_abgeschickt_am'),
'berechtigt',
$this->p->t('ui', 'nurLeseberechtigung'),
'is_null',
[
'is_null' => $this->p->t('ui', 'error_fieldWriteAccess')
@@ -842,25 +839,25 @@ class Status extends FHCAPI_Controller
//Default: keine Matrikelnummer wird generiert
//(2) personenkz = uid
/* if (defined('SET_UID_AS_PERSONENKENNZEICHEN') && SET_UID_AS_PERSONENKENNZEICHEN) {
$matrikelnr = $uidStudent;
}*/
/* if (defined('SET_UID_AS_PERSONENKENNZEICHEN') && SET_UID_AS_PERSONENKENNZEICHEN) {
$matrikelnr = $uidStudent;
}*/
//(3) Matrikelnummer = uid
/* if (defined('SET_UID_AS_MATRIKELNUMMER') && SET_UID_AS_MATRIKELNUMMER) {
//update person
$result = $this->PersonModel->update(
[
'person_id' => $person_id,
],
[
'matr_nr' => $uidStudent,
]
);
if (isError($result)) {
return $this->terminateWithError("uidAsMatrikelnummer" . getError($result), self::ERROR_TYPE_GENERAL);
}
}*/
/* if (defined('SET_UID_AS_MATRIKELNUMMER') && SET_UID_AS_MATRIKELNUMMER) {
//update person
$result = $this->PersonModel->update(
[
'person_id' => $person_id,
],
[
'matr_nr' => $uidStudent,
]
);
if (isError($result)) {
return $this->terminateWithError("uidAsMatrikelnummer" . getError($result), self::ERROR_TYPE_GENERAL);
}
}*/
//add benutzerdatensatz mit Aktierungscode
$this->load->model('person/Benutzer_model', 'BenutzerModel');
@@ -1695,9 +1692,9 @@ class Status extends FHCAPI_Controller
$this->form_validation->set_rules('status_kurzbz', $this->p->t('lehre', 'status_rolle'), [
'in_list[' .
Prestudentstatus_model::STATUS_STUDENT . ',' .
Prestudentstatus_model::STATUS_DIPLOMAND . ',' .
Prestudentstatus_model::STATUS_UNTERBRECHER . ']',
Prestudentstatus_model::STATUS_STUDENT . ',' .
Prestudentstatus_model::STATUS_DIPLOMAND . ',' .
Prestudentstatus_model::STATUS_UNTERBRECHER . ']',
['status_stud_exists', function ($value) use ($prestudent_id) {
if ($value != Prestudentstatus_model::STATUS_STUDENT)
return true;
@@ -1886,7 +1883,7 @@ class Status extends FHCAPI_Controller
//Send Message
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$this->PrestudentModel->addSelect('p.*');
$this->PrestudentModel->addSelect('stg.oe_kurzbz');
$this->PrestudentModel->addSelect('stg.bezeichnung AS stg_bezeichnung');
@@ -1898,7 +1895,7 @@ class Status extends FHCAPI_Controller
$this->PrestudentModel->addJoin('public.tbl_studiengang stg', 'studiengang_kz');
$this->PrestudentModel->addJoin('public.tbl_studiengangstyp typ', 'typ');
$this->PrestudentModel->addJoin('public.tbl_studienplan plan', 'studienplan_id', 'LEFT');
$result = $this->PrestudentModel->load($prestudent_id);
$studentdata = $this->getDataOrTerminateWithError($result);
+46 -185
View File
@@ -88,51 +88,20 @@ class PrestudentLib
if (isError($result))
return $result;
//Verband anlegen
$result = $this->_ci->LehrverbandModel->load([
'studiengang_kz' => $student->studiengang_kz,
'semester' => 0,
'verband' => 'A',
'gruppe' => ''
]);
//refactored with processStudentlehrverband
$result = $this->_ci->StudentlehrverbandModel->processStudentlehrverband(
$student->student_uid,
$student->studiengang_kz,
0,
'A',
'',
$studiensemester_kurzbz,
Prestudentstatus_model::STATUS_ABBRECHER
);
if (isError($result))
return $result;
$result = getData($result);
if (!$result)
{
$result = $this->_ci->LehrverbandModel->load([
'studiengang_kz' => $student->studiengang_kz,
'semester' => 0,
'verband' => '',
'gruppe' => ''
]);
if (isError($result))
return $result;
$result = getData($result);
if(!$result)
{
$this->_ci->LehrverbandModel->insert([
'studiengang_kz' => $student->studiengang_kz,
'semester' => 0,
'verband' => '',
'gruppe' => '',
'bezeichnung' => 'Ab-Unterbrecher',
'aktiv' => true,
]);
}
$this->_ci->LehrverbandModel->insert([
'studiengang_kz' => $student->studiengang_kz,
'semester' => 0,
'verband' => 'A',
'gruppe' => '',
'bezeichnung' => 'Abbrecher',
'aktiv' => true
]);
}
//noch nicht eingetragene Zeugnisnoten auf 9 setzen
$result = $this->_ci->ZeugnisnoteModel->getZeugnisnoten($student->student_uid, $prestudent_status->studiensemester_kurzbz);
@@ -165,33 +134,6 @@ class PrestudentLib
}
}
//Update Aktionen
//StudentModel updaten
$this->_ci->StudentModel->update([
'student_uid' => $student->student_uid
], [
'verband' => 'A',
'gruppe' => '',
'semester' => 0,
'updatevon' => $insertvon,
'updateamum' => date('c')
]);
//Studentlehrverband setzen
$this->_ci->StudentlehrverbandModel->update([
'studiensemester_kurzbz' => $prestudent_status->studiensemester_kurzbz,
'student_uid' => $student->student_uid
], [
'studiengang_kz' => $student->studiengang_kz,
'semester' => 0,
'verband' => 'A',
'gruppe' => '',
'updateamum' => date('c'),
'updatevon' => $insertvon
]);
//Benutzer inaktiv setzen
$this->_ci->BenutzerModel->update([
'uid' => $student->student_uid
@@ -298,50 +240,19 @@ class PrestudentLib
if (isError($result))
return $result;
//Verband anlegen
$result = $this->_ci->LehrverbandModel->load([
'studiengang_kz' => $student->studiengang_kz,
'semester' => 0,
'verband' => 'B',
'gruppe' => ''
]);
//refactored with processStudentlehrverband
$result = $this->_ci->StudentlehrverbandModel->processStudentlehrverband(
$student->student_uid,
$student->studiengang_kz,
0,
'B',
'',
$studiensemester_kurzbz,
Prestudentstatus_model::STATUS_UNTERBRECHER
);
if (isError($result))
return $result;
$result = getData($result);
if (!$result)
{
$result = $this->_ci->LehrverbandModel->load([
'studiengang_kz' => $student->studiengang_kz,
'semester' => 0,
'verband' => '',
'gruppe' => ''
]);
if (isError($result))
return $result;
$result = getData($result);
if(!$result)
{
$this->_ci->LehrverbandModel->insert([
'studiengang_kz' => $student->studiengang_kz,
'semester' => 0,
'verband' => '',
'gruppe' => '',
'bezeichnung' => 'Ab-Unterbrecher',
'aktiv' => true,
]);
}
$this->_ci->LehrverbandModel->insert([
'studiengang_kz' => $student->studiengang_kz,
'semester' => 0,
'verband' => 'B',
'gruppe' => '',
'bezeichnung' => 'Unterbrecher',
'aktiv' => true
]);
}
//noch nicht eingetragene Zeugnisnoten auf 9 setzen
$result = $this->_ci->ZeugnisnoteModel->getZeugnisnoten($student->student_uid, $studiensemester_kurzbz);
@@ -374,56 +285,11 @@ class PrestudentLib
}
}
//Update Aktionen
//StudentModel updaten
$this->_ci->StudentModel->update([
'student_uid' => $student->student_uid
], [
'verband' => 'B',
'gruppe' => '',
'semester' => 0,
'updatevon' => $insertvon,
'updateamum' => date('c')
]);
//Studentlehrverband setzen
$result = $this->_ci->StudentlehrverbandModel->loadWhere([
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'student_uid' => $student->student_uid
]);
if (hasData($result)) {
$this->_ci->StudentlehrverbandModel->update([
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'student_uid' => $student->student_uid
], [
'studiengang_kz' => $student->studiengang_kz,
'semester' => 0,
'verband' => 'B',
'gruppe' => '',
'updateamum' => date('c'),
'updatevon' => $insertvon
]);
} else {
$this->_ci->StudentlehrverbandModel->insert([
'student_uid' => $student->student_uid,
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'studiengang_kz' => $student->studiengang_kz,
'semester' => 0,
'verband' => 'B',
'gruppe' => '',
'insertamum' => date('c'),
'insertvon' => $insertvon
]);
}
return success();
}
public function setStudent($prestudent_id, $studiensemester_kurzbz, $ausbildungssemester, $statusgrund_id)
{
$result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id);
if (isError($result))
return $result;
@@ -445,7 +311,7 @@ class PrestudentLib
$studiengang = current(getData($resultStg));
$prestudent_status = ($resultStatus[0]);
$prestudent_status = ($resultStatus[0] ?: null );
if(!$prestudent_status)
{
return error($this->_ci->p->t('studierendenantrag', 'error_no_prestudent_in_sem', [
@@ -463,7 +329,7 @@ class PrestudentLib
if (!$result)
return error($this->_ci->p->t('studierendenantrag', 'error_no_student_for_prestudent', ['prestudent_id' => $prestudent_id]));
$student = current($result);
// $student = current($result);
//Status updaten
$result = $this->_ci->PrestudentstatusModel->insert([
@@ -488,7 +354,8 @@ class PrestudentLib
if (isError($result)) {
return $result;
}
$student_uid = $result->retval;
//$student_uid = $result->retval;
$student_uid = getData($result);
//load student
$result = $this->_ci->StudentModel->loadWhere(
@@ -502,8 +369,9 @@ class PrestudentLib
}
$studentData = current(getData($result) ? : []);
$verband = $studentData->verband == '' ? '' : $studentData->verband;
$gruppe = $studentData->gruppe == '' ? '' : $studentData->gruppe;
//TODO(Manu) check why in FAS == 0; correct there??
//$verband = $studentData->verband == '' ? '' : $studentData->verband;
//$gruppe = $studentData->gruppe == '' ? '' : $studentData->gruppe;
$studiengang_kz = $studentData->studiengang_kz;
//process studentlehrverband
@@ -512,11 +380,16 @@ class PrestudentLib
$student_uid,
$studiengang_kz,
$ausbildungssemester,
$verband,
$gruppe,
"", //TODO(Manu) checkFAS: 0
"",//TODO(Manu) checkFAS: 0
$studiensemester_kurzbz
);
if (isError($result))
{
return $result;
}
return success();
}
@@ -576,18 +449,21 @@ class PrestudentLib
$studiensemester_kurzbz
);
if (isError($result))
{
return $result;
}
return success();
}
public function setDiplomand($prestudent_id, $studiensemester_kurzbz, $ausbildungssemester)
{
$insertvon = getAuthUID();
$result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id);
if (isError($result))
return $result;
if (!hasData($result))
return error($this->_ci->p->t('studierendenantrag', 'error_no_student_for_prestudent', ['prestudent_id' => $prestudent_id]));
return error($this->_ci->p->t('studierendenantrag', 'error_no_student_for_prestudent', ['prestudent_id' => $prestudent_id]));
$result = getData($result) ?: [];
@@ -600,8 +476,6 @@ class PrestudentLib
if (!$result)
return error($this->_ci->p->t('studierendenantrag', 'error_no_student_for_prestudent', ['prestudent_id' => $prestudent_id]));
$student = current($result);
//Status updaten
$result = $this->_ci->PrestudentstatusModel->insert([
'prestudent_id' => $prestudent_id,
@@ -609,11 +483,11 @@ class PrestudentLib
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'ausbildungssemester' => $ausbildungssemester,
'datum' => date('c'),
'insertvon' => $insertvon,
'insertvon' => getAuthUID(),
'insertamum' => date('c'),
'orgform_kurzbz'=> $prestudent_status->orgform_kurzbz,
'studienplan_id'=> $prestudent_status->studienplan_id,
'bestaetigtvon' => $insertvon,
'bestaetigtvon' => getAuthUID(),
'bestaetigtam' => date('c'),
]);
@@ -662,17 +536,6 @@ class PrestudentLib
public function setAbsolvent($prestudent_id, $studiensemester_kurzbz, $ausbildungssemester)
{
//TODO(Manu) why no lvb?
/* if (gettype($ausbildungssemester) != "integer") {
$ausbildungssemester = (int)$ausbildungssemester;
}*/
/* if (!is_string($ausbildungssemester)) {
$ausbildungssemester = (string)$ausbildungssemester; // Oder verwende strval($ausbildungssemester)
}*/
$insertvon = getAuthUID();
$result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id);
if (isError($result))
return $result;
@@ -687,8 +550,6 @@ class PrestudentLib
if (!$result)
return error($this->_ci->p->t('studierendenantrag', 'error_no_student_for_prestudent', ['prestudent_id' => $prestudent_id]));
$student = current($result);
//Status updaten
$result = $this->_ci->PrestudentstatusModel->insert([
'prestudent_id' => $prestudent_id,
@@ -696,11 +557,11 @@ class PrestudentLib
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'ausbildungssemester' => $ausbildungssemester,
'datum' => date('c'),
'insertvon' => $insertvon,
'insertvon' => getAuthUID(),
'insertamum' => date('c'),
'orgform_kurzbz'=> $prestudent_status->orgform_kurzbz,
'studienplan_id'=> $prestudent_status->studienplan_id,
'bestaetigtvon' => $insertvon,
'bestaetigtvon' => getAuthUID(),
'bestaetigtam' => date('c'),
]);
@@ -757,8 +618,8 @@ class PrestudentLib
$prestudent_status = current($resultLastStatus);
//check studiensemester_kurzbz TODO(Manu) check if Necessary: already checked in staus.php changeStatus()
/* $studiensemester_kurzbz = $prestudent_status->studiensemester_kurzbz != $studiensemester_kurzbz ?
$prestudent_status->studiensemester_kurzbz : $studiensemester_kurzbz;*/
/* $studiensemester_kurzbz = $prestudent_status->studiensemester_kurzbz != $studiensemester_kurzbz ?
$prestudent_status->studiensemester_kurzbz : $studiensemester_kurzbz;*/
//Status updaten
$result = $this->_ci->PrestudentstatusModel->insert([
@@ -11,13 +11,18 @@ class Studentlehrverband_model extends DB_Model
$this->dbTable = 'public.tbl_studentlehrverband';
$this->pk = array('studiensemester_kurzbz', 'student_uid');
$this->hasSequence = false;
$this->load->model('crm/prestudentstatus_model', 'PrestudentstatusModel');
}
/**
* Check if Studentlehrverband already exists
*
* @param string $student_id
*
* @param string $studiensemester_kurzbz
* @return 1: if Rolle exists, 0: if it doesn't
*
* @return 1: if Studentlehrverband exists, 0: if it doesn't
*/
public function checkIfStudentlehrverbandExists($student_uid, $studiensemester_kurzbz)
{
@@ -46,50 +51,65 @@ class Studentlehrverband_model extends DB_Model
}
}
public function processStudentlehrverband($student_uid, $studiengang_kz, $ausbildungssemester, $verband, $gruppe, $studiensemester_kurzbz)
/**
* update Lehrverband and Studenlehrverband
*
* @param char $student_id
* @param integer $studiengang_kz
* @param integer $ausbildungssemester
* @param char $verband
* @param char $gruppe
* @param string $studiensemester_kurzbz
*
* @return success if handling lehrverband, studentlehrverband successfull
* error if not
*
*/
public function processStudentlehrverband($student_uid, $studiengang_kz, $ausbildungssemester, $verband, $gruppe, $studiensemester_kurzbz, $status_kurzbz=null)
{
$uid = getAuthUID();
$this->db->trans_begin(); // Start Transaktion
$this->load->model('organisation/Lehrverband_model', 'LehrverbandModel');
$result = $this->LehrverbandModel->checkIfLehrverbandExists($studiengang_kz, $ausbildungssemester, $verband, $gruppe);
if (isError($result))
{
$this->db->trans_rollback();
return error("0", $this->p->t('lehre','error_updateLehrverband'));
}
if ($result->retval == "0") {
if ($result->retval == "0")
{
// Übergeordneten Lehrverband check and/or insert
$result = $this->LehrverbandModel->checkIfLehrverbandExists($studiengang_kz, $ausbildungssemester, '', '');
if (isError($result)) {
$this->db->trans_rollback();
return error("0", $this->p->t('lehre','error_updateLehrverband'));
}
if ($result->retval == "0")
{
$bezeichnung = ($status_kurzbz == PrestudentstatusModel::STATUS_ABBRECHER || $status_kurzbz == Prestudentstatus_model::STATUS_UNTERBRECHER) ? 'Ab-Unterbrecher' : '';
$result = $this->LehrverbandModel->insert([
'studiengang_kz' => $studiengang_kz,
'semester' => $ausbildungssemester,
'verband' => '',
'gruppe' => '',
'aktiv' => true,
'bezeichnung' => 'Ab-Unterbrecher'
'bezeichnung' => $bezeichnung
]);
if ($this->db->trans_status() === false || isError($result))
if (isError($result))
{
$this->db->trans_rollback();
return error("0", $this->p->t('lehre','error_updateLehrverband'));
}
}
// Lehrverband insert
$bezeichnung = $verband == 'A' ? ' Abbrecher' : 'Unterbrecher';
if ($verband == 'A')
$bezeichnung = Prestudentstatus_model::STATUS_ABBRECHER;
else if ($verband == 'B')
$bezeichnung = Prestudentstatus_model::STATUS_BEWERBER;
else
$bezeichnung = '';
$result = $this->LehrverbandModel->insert([
'studiengang_kz' => $studiengang_kz,
'semester' => $ausbildungssemester,
@@ -99,20 +119,17 @@ class Studentlehrverband_model extends DB_Model
'aktiv' => true
]);
if ($this->db->trans_status() === false || isError($result)) {
$this->db->trans_rollback();
if (isError($result)) {
return error("0", $this->p->t('lehre','error_updateLehrverband'));
}
}
// Studentlehrverband insert or update
$this->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel');
$result = $this->StudentlehrverbandModel->checkIfStudentLehrverbandExists($student_uid, $studiensemester_kurzbz);
if (isError($result))
{
$this->db->trans_rollback();
return error(getError($result));
return error($result);
}
if ($result->retval == "0")
@@ -127,8 +144,7 @@ class Studentlehrverband_model extends DB_Model
'insertvon' => $uid,
'studiengang_kz' => $studiengang_kz
]);
if ($this->db->trans_status() === false || isError($result)) {
$this->db->trans_rollback();
if (isError($result)) {
return error("0", $this->p->t('lehre','error_updateStudentlehrverband'));
}
}
@@ -148,18 +164,16 @@ class Studentlehrverband_model extends DB_Model
'studiengang_kz' => $studiengang_kz
]
);
if ($this->db->trans_status() === false || isError($result)) {
$this->db->trans_rollback();
if (isError($result)) {
return error("0", $this->p->t('lehre','error_updateStudentlehrverband'));
}
}
// finish transaktion
if ($this->db->trans_status() === false || isError($result)) {
$this->db->trans_rollback();
if (isError($result)) {
return error("0", $this->p->t('lehre','error_updateStudentlehrverband'));
} else {
$this->db->trans_commit();
}
else
{
return success();
}
}