mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
setFirstStudent logic
This commit is contained in:
@@ -533,6 +533,19 @@ class Status extends FHCAPI_Controller
|
||||
|
||||
public function addStudent($prestudent_id)
|
||||
{
|
||||
// Prepare lastAufgenommener Status
|
||||
$this->PrestudentstatusModel->addOrder('datum', 'DESC');
|
||||
$this->PrestudentstatusModel->addOrder('insertamum', 'DESC');
|
||||
$this->PrestudentstatusModel->addLimit(1);
|
||||
$result = $this->PrestudentstatusModel->loadWhere([
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'status_kurzbz' => Prestudentstatus_model::STATUS_AUFGENOMMENER
|
||||
]);
|
||||
$lastAufgenommener = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
if ($lastAufgenommener)
|
||||
$lastAufgenommener = current($lastAufgenommener);
|
||||
|
||||
//get studentname for validations
|
||||
$this->load->model('person/Person_model', 'PersonModel');
|
||||
$this->PersonModel->addJoin('public.tbl_prestudent', 'person_id');
|
||||
@@ -542,16 +555,14 @@ class Status extends FHCAPI_Controller
|
||||
|
||||
$studentName = trim($prestudent_person->vorname . ' ' . $prestudent_person->nachname);
|
||||
|
||||
/*$status_kurzbz = $this->input->post('status_kurzbz');
|
||||
$studiensemester_kurzbz = $this->input->post('studiensemester_kurzbz');
|
||||
$ausbildungssemester = $this->input->post('ausbildungssemester');
|
||||
$statusgrund_id = $this->input->post('statusgrund_id');
|
||||
$datum = $this->input->post('datum');*/
|
||||
|
||||
|
||||
|
||||
//Form Validation
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$this->form_validation->set_rules('statusgrund_id', $this->p->t('international', 'grund'), 'integer', [
|
||||
'integer' => $this->p->t('ui', 'error_fieldNotInteger')
|
||||
]);
|
||||
|
||||
$this->form_validation->set_rules('_default', '', [
|
||||
'required',
|
||||
//Check ZGV
|
||||
@@ -574,9 +585,8 @@ class Status extends FHCAPI_Controller
|
||||
return $this->getDataOrTerminateWithError($result);
|
||||
}],
|
||||
//Check Aufgenommenerstatus
|
||||
['checkIfExistingAufgenommenerstatus', function () use ($prestudent_id) {
|
||||
$result = $this->prestudentstatuschecklib->checkIfExistingAufgenommenerstatus($prestudent_id);
|
||||
return $this->getDataOrTerminateWithError($result);
|
||||
['checkIfExistingAufgenommenerstatus', function () use ($lastAufgenommener) {
|
||||
return !!$lastAufgenommener;
|
||||
}],
|
||||
//Check Bewerberstatus & Aufgenommenerstatus semester
|
||||
['checkIfLastBewerberAndAufgenommenerShareSemesters', function () use ($prestudent_id) {
|
||||
@@ -590,21 +600,10 @@ class Status extends FHCAPI_Controller
|
||||
return !$this->getDataOrTerminateWithError($result);
|
||||
}],
|
||||
//Check if Rolle already exists
|
||||
['rolle_doesnt_exist', function () use ($prestudent_id) {
|
||||
$this->PrestudentstatusModel->addOrder('datum', 'DESC');
|
||||
$this->PrestudentstatusModel->addOrder('insertamum', 'DESC');
|
||||
$this->PrestudentstatusModel->addLimit(1);
|
||||
$result = $this->PrestudentstatusModel->loadWhere([
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'status_kurzbz' => Prestudentstatus_model::STATUS_AUFGENOMMENER
|
||||
]);
|
||||
$lastAufgenommener = $this->getDataOrTerminateWithError($result);
|
||||
['rolle_doesnt_exist', function () use ($prestudent_id, $lastAufgenommener) {
|
||||
if (!$lastAufgenommener)
|
||||
return true; // Error will be handled by the checkIfExistingAufgenommenerstatus statement above
|
||||
|
||||
$lastAufgenommener = current($lastAufgenommener);
|
||||
|
||||
|
||||
$result = $this->PrestudentstatusModel->loadWhere([
|
||||
'studiensemester_kurzbz' => $lastAufgenommener->studiensemester_kurzbz,
|
||||
'status_kurzbz' => Prestudentstatus_model::STATUS_STUDENT,
|
||||
@@ -631,152 +630,13 @@ class Status extends FHCAPI_Controller
|
||||
// Start DB transaction
|
||||
$this->db->trans_start();
|
||||
|
||||
//getSemester of Status Aufgenommen
|
||||
$result = $this->PrestudentstatusModel->loadWhere([
|
||||
"prestudent_id" => $prestudent_id,
|
||||
"status_kurzbz" => Prestudentstatus_model::STATUS_AUFGENOMMENER
|
||||
]);
|
||||
|
||||
$this->PrestudentstatusModel->addLimit(1);
|
||||
if (isError($result))
|
||||
{
|
||||
return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
$semesterAufgenommen = current(getData($result));
|
||||
$semesterAufgenommen = $semesterAufgenommen->studiensemester_kurzbz;
|
||||
|
||||
|
||||
//generate Personenkennzeichen(matrikelnr)
|
||||
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
$this->PrestudentModel->addJoin('public.tbl_person p', 'ON (p.person_id = public.tbl_prestudent.person_id)');
|
||||
$this->PrestudentModel->addJoin('public.tbl_studiengang sg', 'ON (sg.studiengang_kz = public.tbl_prestudent.studiengang_kz)');
|
||||
$result = $this->PrestudentModel->load([
|
||||
'prestudent_id' => $prestudent_id,
|
||||
]);
|
||||
if (isError($result)) {
|
||||
return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
$result = current(getData($result));
|
||||
|
||||
$stg = $result->studiengang_kz;
|
||||
$typ = $result->typ;
|
||||
$stgkzl = $result->kurzbz;
|
||||
$person_id = $result->person_id;
|
||||
$matrikelnr = false;
|
||||
|
||||
Events::trigger('generate_personenkennzeichen', $stg, $semesterAufgenommen, $typ, function ($value) use ($matrikelnr) {
|
||||
$matrikelnr = $value;
|
||||
});
|
||||
if ($matrikelnr === false) {
|
||||
$resultMat = $this->StudentModel->generateMatrikelnummer2($stg, $semesterAufgenommen, $typ);
|
||||
if (isError($resultMat)) {
|
||||
return $this->terminateWithError($resultMat, self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
$matrikelnr = getData($resultMat);
|
||||
}
|
||||
$jahr = mb_substr($semesterAufgenommen, 4, 2);
|
||||
|
||||
//generate UID
|
||||
$resultUid = $this->StudentModel->generateUID($stgkzl, $jahr, $typ, $matrikelnr);
|
||||
if (isError($resultUid)) {
|
||||
return $this->terminateWithError(getData($resultUid), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
$uidStudent = getData($resultUid);
|
||||
|
||||
//TODO(Manu) Check for additional logic (config entries, addons)
|
||||
//check include/tw/generatematrikelnr.inc.php
|
||||
//(1) addons durchsuchen, ob eigene Logik für Matrikelnr-erstellung existiert
|
||||
//Default: keine Matrikelnummer wird generiert
|
||||
|
||||
//(2) personenkz = uid
|
||||
/* 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);
|
||||
}
|
||||
}*/
|
||||
|
||||
//add benutzerdatensatz mit Aktierungscode
|
||||
$this->load->model('person/Benutzer_model', 'BenutzerModel');
|
||||
$result = $this->BenutzerModel->checkIfExistingBenutzer($uidStudent);
|
||||
if (isError($result)) {
|
||||
return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
if ($result->retval != "0")
|
||||
{
|
||||
return $this->terminateWithError($this->p->t('lehre', 'error_benutzerBereitsVorhanden', ['uid' => $uidStudent]), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
|
||||
$aktivierungscode = null;
|
||||
$result = $this->BenutzerModel->generateActivationKey();
|
||||
if (isError($result)) {
|
||||
return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
$aktivierungscode = getData($result);
|
||||
|
||||
//generate Alias
|
||||
$result = $this->BenutzerModel->generateAliasByPersonId($person_id);
|
||||
$this->getDataOrTerminateWithError($result);
|
||||
$alias = getData($result);
|
||||
|
||||
$result = $this->BenutzerModel->insert(
|
||||
[
|
||||
'person_id' => $person_id,
|
||||
'uid' => $uidStudent,
|
||||
'aktiv' => true,
|
||||
'aktivierungscode' => $aktivierungscode,
|
||||
'alias' => $alias,
|
||||
'insertvon' => getAuthUID(),
|
||||
'insertamum' => date('c'),
|
||||
]
|
||||
);
|
||||
|
||||
if (isError($result)) {
|
||||
return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
|
||||
//Student anlegen
|
||||
$result = $this->StudentModel->insert(
|
||||
[
|
||||
'student_uid' => $uidStudent,
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'matrikelnr' => $matrikelnr,
|
||||
'studiengang_kz' => $stg,
|
||||
'semester' => $ausbildungssemester,
|
||||
'verband' => '',
|
||||
'gruppe' => '',
|
||||
'insertvon' => getAuthUID(),
|
||||
'insertamum' => date('c')
|
||||
]
|
||||
);
|
||||
if (isError($result))
|
||||
{
|
||||
return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
|
||||
$this->load->library('PrestudentLib');
|
||||
$result = $this->prestudentlib->setFirstStudent(
|
||||
$this->prestudentlib->setFirstStudent(
|
||||
$prestudent_id,
|
||||
$studiensemester_kurzbz,
|
||||
$ausbildungssemester,
|
||||
$statusgrund_id,
|
||||
date('c'),
|
||||
getAuthUID(),
|
||||
$stg,
|
||||
$uidStudent
|
||||
$lastAufgenommener->studiensemester_kurzbz,
|
||||
$lastAufgenommener->ausbildungssemester,
|
||||
$lastAufgenommener->orgform_kurzbz,
|
||||
$lastAufgenommener->studienplan_id,
|
||||
$this->input->post('statusgrund_id')
|
||||
);
|
||||
|
||||
$this->getDataOrTerminateWithError($result);
|
||||
@@ -969,6 +829,10 @@ class Status extends FHCAPI_Controller
|
||||
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$this->form_validation->set_rules('statusgrund_id', $this->p->t('international', 'grund'), 'integer', [
|
||||
'integer' => $this->p->t('ui', 'error_fieldNotInteger')
|
||||
]);
|
||||
|
||||
if (!$isBerechtigtBasisPrestudentstatus)
|
||||
$this->form_validation->set_rules(
|
||||
'bewerbung_abgeschicktamum',
|
||||
@@ -1253,6 +1117,10 @@ class Status extends FHCAPI_Controller
|
||||
//Form Validation
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$this->form_validation->set_rules('statusgrund_id', $this->p->t('international', 'grund'), 'integer', [
|
||||
'integer' => $this->p->t('ui', 'error_fieldNotInteger')
|
||||
]);
|
||||
|
||||
if (!$isBerechtigtBasisPrestudentstatus)
|
||||
$this->form_validation->set_rules(
|
||||
'bewerbung_abgeschicktamum',
|
||||
|
||||
@@ -555,67 +555,192 @@ class PrestudentLib
|
||||
return success();
|
||||
}
|
||||
|
||||
public function setFirstStudent($prestudent_id, $studiensemester_kurzbz, $ausbildungssemester, $statusgrund_id, $bestaetigtAm, $bestaetigtVon, $stg_kz, $uidStudent)
|
||||
{
|
||||
$result = $this->_ci->PrestudentstatusModel->getLastStatus($prestudent_id);
|
||||
public function setFirstStudent(
|
||||
$prestudent_id,
|
||||
$studiensemester_kurzbz,
|
||||
$ausbildungssemester,
|
||||
$orgform_kurzbz,
|
||||
$studienplan_id,
|
||||
$statusgrund_id
|
||||
) {
|
||||
$this->_ci->PrestudentModel->addJoin('public.tbl_person p', 'person_id');
|
||||
$this->_ci->PrestudentModel->addJoin('public.tbl_studiengang stg', 'studiengang_kz');
|
||||
$result = $this->_ci->PrestudentModel->load($prestudent_id);
|
||||
|
||||
if (isError($result))
|
||||
return $result;
|
||||
$prestudent_status = current(getData($result));
|
||||
if(!$prestudent_status)
|
||||
{
|
||||
return error($this->_ci->p->t('studierendenantrag', 'error_no_prestudent_in_sem', [
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz
|
||||
]));
|
||||
|
||||
if (!hasData($result))
|
||||
return error('No prestudent');
|
||||
|
||||
$student_data = current(getData($result));
|
||||
|
||||
|
||||
$authUID = getAuthUID();
|
||||
$now = date('c');
|
||||
$today = date('Y-m-d');
|
||||
|
||||
$jahr = mb_substr($studiensemester_kurzbz, 4, 2);
|
||||
|
||||
|
||||
// Genererate Personenkennzeichen
|
||||
$personenkennzeichen = $this->_ci->StudentModel->generateMatrikelnummer2(
|
||||
$student_data->studiengang_kz,
|
||||
$studiensemester_kurzbz,
|
||||
$student_data->typ
|
||||
);
|
||||
if (isError($personenkennzeichen))
|
||||
return $personenkennzeichen;
|
||||
$personenkennzeichen = getData($personenkennzeichen);
|
||||
|
||||
|
||||
// Generate UID
|
||||
$uid = $this->_ci->StudentModel->generateUID(
|
||||
$student_data->kurzbz,
|
||||
$jahr,
|
||||
$student_data->typ,
|
||||
$personenkennzeichen,
|
||||
$student_data->vorname,
|
||||
$student_data->nachname
|
||||
);
|
||||
if (isError($uid))
|
||||
return $uid;
|
||||
$uid = getData($uid);
|
||||
|
||||
|
||||
// Generate Matrikelnummer
|
||||
$matrikelnummer = $this->_ci->BenutzerModel->generateMatrikelnummer(
|
||||
$student_data->oe_kurzbz
|
||||
);
|
||||
if (isError($matrikelnummer))
|
||||
return $matrikelnummer;
|
||||
$matrikelnummer = getData($matrikelnummer);
|
||||
|
||||
|
||||
// Generate Alias
|
||||
$alias = '';
|
||||
if (!defined('GENERATE_ALIAS_STUDENT')
|
||||
|| GENERATE_ALIAS_STUDENT === true
|
||||
) {
|
||||
$result = $this->_ci->BenutzerModel->generateAliasFromName($student_data->vorname, $student_data->nachname);
|
||||
if (isError($result))
|
||||
return $result;
|
||||
$alias = getData($result);
|
||||
}
|
||||
|
||||
//check studiensemester_kurzbz is last
|
||||
$studiensemester_kurzbz = $prestudent_status->studiensemester_kurzbz != $studiensemester_kurzbz ?
|
||||
$prestudent_status->studiensemester_kurzbz : $studiensemester_kurzbz;
|
||||
// Generate Activation Key
|
||||
$activationkey = $this->_ci->BenutzerModel->generateActivationkey();
|
||||
|
||||
//check if ausbildungssemester is last
|
||||
$ausbildungssemester = $prestudent_status->ausbildungssemester != $ausbildungssemester ?
|
||||
$prestudent_status->ausbildungssemester : $ausbildungssemester;
|
||||
|
||||
//Status updaten
|
||||
$result = $this->_ci->PrestudentstatusModel->insert([
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'status_kurzbz' => Prestudentstatus_model::STATUS_STUDENT,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'ausbildungssemester' => $ausbildungssemester,
|
||||
'statusgrund_id' => $statusgrund_id,
|
||||
'datum' => date('c'),
|
||||
'insertvon' => getAuthUID(),
|
||||
'insertamum' => date('c'),
|
||||
'orgform_kurzbz'=> $prestudent_status->orgform_kurzbz,
|
||||
'studienplan_id'=> $prestudent_status->studienplan_id,
|
||||
'bestaetigtvon' => $bestaetigtVon,
|
||||
'bestaetigtam' => $bestaetigtAm
|
||||
// Overwrite stuff
|
||||
if (defined('SET_UID_AS_MATRIKELNUMMER')
|
||||
&& SET_UID_AS_MATRIKELNUMMER)
|
||||
$matrikelnummer = $uid;
|
||||
if (defined('SET_UID_AS_PERSONENKENNZEICHEN')
|
||||
&& SET_UID_AS_PERSONENKENNZEICHEN)
|
||||
$personenkennzeichen = $uid;
|
||||
|
||||
|
||||
// Update Person
|
||||
$this->_ci->load->model('person/Person_model', 'PersonModel');
|
||||
$result = $this->_ci->PersonModel->update([
|
||||
'person_id' => $student_data->person_id,
|
||||
'matr_nr' => null
|
||||
], [
|
||||
'matr_nr' => $matrikelnummer
|
||||
]);
|
||||
|
||||
if (isError($result))
|
||||
return $result;
|
||||
|
||||
$verband = '';
|
||||
$gruppe = '';
|
||||
$studiengang_kz = $stg_kz;
|
||||
|
||||
//process studentlehrverband
|
||||
$this->_ci->load->model('education/Studentlehrverband_model', 'StudentlehrverbandModel');
|
||||
$result = $this->_ci->StudentlehrverbandModel->processStudentlehrverband(
|
||||
$uidStudent,
|
||||
$studiengang_kz,
|
||||
$ausbildungssemester,
|
||||
$verband,
|
||||
$gruppe,
|
||||
$studiensemester_kurzbz
|
||||
);
|
||||
// Add Benutzer
|
||||
$result = $this->_ci->BenutzerModel->insert([
|
||||
'uid' => $uid,
|
||||
'person_id' => $student_data->person_id,
|
||||
'aktiv' => true,
|
||||
'aktivierungscode' => $activationkey,
|
||||
'alias' => $alias,
|
||||
'insertvon' => $authUID,
|
||||
'insertamum' => $now,
|
||||
]);
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
return $result;
|
||||
|
||||
|
||||
// Add Student
|
||||
$result = $this->_ci->StudentModel->insert([
|
||||
'student_uid' => $uid,
|
||||
'matrikelnr' => $personenkennzeichen,
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'studiengang_kz' => $student_data->studiengang_kz,
|
||||
'semester' => $ausbildungssemester,
|
||||
'verband' => ' ',
|
||||
'gruppe' => ' ',
|
||||
'insertvon' => $authUID,
|
||||
'insertamum' => $now
|
||||
]);
|
||||
|
||||
if (isError($result))
|
||||
return $result;
|
||||
|
||||
|
||||
// Add Lehrverband if it does not exist
|
||||
$result = $this->_ci->LehrverbandModel->load([' ', ' ', $ausbildungssemester, $student_data->studiengang_kz]);
|
||||
|
||||
if (isError($result))
|
||||
return $result;
|
||||
|
||||
if (!hasData($result)) {
|
||||
$result = $this->_ci->LehrverbandModel->insert([
|
||||
'studiengang_kz' => $student_data->studiengang_kz,
|
||||
'semester' => $ausbildungssemester,
|
||||
'verband' => ' ',
|
||||
'gruppe' => ' ',
|
||||
'aktiv' => true
|
||||
]);
|
||||
|
||||
if (isError($result))
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
// Add Rolle
|
||||
$result = $this->_ci->PrestudentstatusModel->insert([
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'status_kurzbz' => Prestudentstatus_model::STATUS_STUDENT,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'ausbildungssemester' => $ausbildungssemester,
|
||||
'orgform_kurzbz'=> $orgform_kurzbz,
|
||||
'studienplan_id'=> $studienplan_id,
|
||||
'datum' => $today,
|
||||
'insertamum' => $now,
|
||||
'insertvon' => $authUID,
|
||||
'bestaetigtam' => $today,
|
||||
'bestaetigtvon' => $authUID,
|
||||
'statusgrund_id' => $statusgrund_id
|
||||
]);
|
||||
|
||||
if (isError($result))
|
||||
return $result;
|
||||
|
||||
|
||||
// Add Studentlehrverband
|
||||
$result = $this->_ci->StudentlehrverbandModel->insert([
|
||||
'student_uid' => $uid,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'studiengang_kz' => $student_data->studiengang_kz,
|
||||
'semester' => $ausbildungssemester,
|
||||
'verband' => ' ',
|
||||
'gruppe' => ' ',
|
||||
'insertamum' => $now,
|
||||
'insertvon' => $authUID
|
||||
]);
|
||||
|
||||
if (isError($result))
|
||||
return $result;
|
||||
|
||||
return success();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
<?php
|
||||
|
||||
use \InvalidArgumentException as InvalidArgumentException;
|
||||
use \CI3_Events as Events;
|
||||
|
||||
class Student_model extends DB_Model
|
||||
{
|
||||
|
||||
@@ -47,18 +51,42 @@ class Student_model extends DB_Model
|
||||
return $matrikelnummer.sprintf("%03d", $max);
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Generiert die Matrikelnummer
|
||||
// * FORMAT: 0710254001
|
||||
// * 07 = Jahr
|
||||
// * 1/2/0 = WS/SS/incoming
|
||||
// * 0254 = Studiengangskennzahl vierstellig
|
||||
// * 001 = Laufende Nummer
|
||||
// * copy of generateMatrikelnummer plus
|
||||
// * logic FH Burgenland
|
||||
// ****
|
||||
/**
|
||||
* Generiert die Matrikelnummer
|
||||
* FORMAT: 0710254001
|
||||
* 07 = Jahr
|
||||
* 1/2/0 = WS/SS/incoming
|
||||
* 0254 = Studiengangskennzahl vierstellig
|
||||
* 001 = Laufende Nummer
|
||||
* copy of generateMatrikelnummer plus
|
||||
* logic FH Burgenland
|
||||
*
|
||||
* TODO(chris): replace function above with this?
|
||||
* TODO(chris): rename to generatePersonenkennzeichen?
|
||||
*
|
||||
* @param integer $studiengang_kz
|
||||
* @param string $studiensemester_kurzbz
|
||||
* @param string $typ
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function generateMatrikelnummer2($studiengang_kz, $studiensemester_kurzbz, $typ = null)
|
||||
{
|
||||
$personenkennzeichen = false;
|
||||
|
||||
Events::trigger(
|
||||
'generate_personenkennzeichen',
|
||||
function ($value) use ($personenkennzeichen) {
|
||||
$personenkennzeichen = $value;
|
||||
},
|
||||
$studiengang_kz,
|
||||
$studiensemester_kurzbz,
|
||||
$typ
|
||||
);
|
||||
|
||||
if ($personenkennzeichen !== false)
|
||||
return success($personenkennzeichen);
|
||||
|
||||
// Validierung der Eingabewerte
|
||||
if (strlen($studiensemester_kurzbz) < 6) {
|
||||
throw new InvalidArgumentException("Ungültiges studiensemester_kurzbz Format.");
|
||||
@@ -129,18 +157,45 @@ class Student_model extends DB_Model
|
||||
return success($matrikelnummer.sprintf("%03d", $max));
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Generiert die UID
|
||||
// * FORMAT: el07b001
|
||||
// * $stgkzl: el = studiengangskuerzel
|
||||
// * $jahr: 07 = Jahr
|
||||
// * $stgtyp: b/m/d/x = Bachelor/Master/Diplom/Incoming
|
||||
// * $matrikelnummer
|
||||
// * 001 = Laufende Nummer Wenn StSem==SS dann wird zur Nummer 500 dazugezaehlt
|
||||
// * Bei Incoming im Masterstudiengang wird auch 500 dazugezaehlt
|
||||
// ****
|
||||
public function generateUID($stgkzl, $jahr, $stgtyp, $matrikelnummer)
|
||||
/**
|
||||
* Generiert die UID
|
||||
* FORMAT: el07b001
|
||||
* $stgkzl: el = studiengangskuerzel
|
||||
* $jahr: 07 = Jahr
|
||||
* $stgtyp: b/m/d/x = Bachelor/Master/Diplom/Incoming
|
||||
* $matrikelnummer
|
||||
* 001 = Laufende Nummer Wenn StSem==SS dann wird zur Nummer 500 dazugezaehlt
|
||||
* Bei Incoming im Masterstudiengang wird auch 500 dazugezaehlt
|
||||
*
|
||||
* @param string $stgkzl
|
||||
* @param string $jahr
|
||||
* @param string $stgtyp
|
||||
* @param string $matrikelnummer
|
||||
* @param string $vorname
|
||||
* @param string $nachname
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function generateUID($stgkzl, $jahr, $stgtyp, $matrikelnummer, $vorname, $nachname)
|
||||
{
|
||||
$uid = false;
|
||||
|
||||
Events::trigger(
|
||||
'generate_student_uid',
|
||||
function ($value) use ($uid) {
|
||||
$uid = $value;
|
||||
},
|
||||
$stgkzl,
|
||||
$jahr,
|
||||
$stgtyp,
|
||||
$matrikelnummer,
|
||||
$vorname,
|
||||
$nachname
|
||||
);
|
||||
|
||||
if ($uid !== false)
|
||||
return success($uid);
|
||||
|
||||
$art = mb_substr($matrikelnummer, 2, 1);
|
||||
$nr = mb_substr($matrikelnummer, mb_strlen(trim($matrikelnummer))-3);
|
||||
if($art=='2') //Sommersemester
|
||||
|
||||
@@ -14,141 +14,4 @@ class Studentlehrverband_model extends DB_Model
|
||||
|
||||
$this->load->model('crm/prestudentstatus_model', 'PrestudentstatusModel');
|
||||
}
|
||||
|
||||
/**
|
||||
* 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->load->model('organisation/Lehrverband_model', 'LehrverbandModel');
|
||||
$result = $this->LehrverbandModel->checkIfLehrverbandExists($studiengang_kz, $ausbildungssemester, $verband, $gruppe);
|
||||
if (isError($result))
|
||||
{
|
||||
return error("0", $this->p->t('lehre', 'error_updateLehrverband'));
|
||||
}
|
||||
|
||||
if ($result->retval == "0")
|
||||
{
|
||||
// Übergeordneten Lehrverband check and/or insert
|
||||
$result = $this->LehrverbandModel->checkIfLehrverbandExists($studiengang_kz, $ausbildungssemester, '', '');
|
||||
if (isError($result)) {
|
||||
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' => $bezeichnung
|
||||
]);
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
return error("0", $this->p->t('lehre', 'error_updateLehrverband'));
|
||||
}
|
||||
}
|
||||
|
||||
// Lehrverband insert
|
||||
if ($verband == 'A')
|
||||
$bezeichnung = Prestudentstatus_model::STATUS_ABBRECHER;
|
||||
elseif ($verband == 'B')
|
||||
$bezeichnung = Prestudentstatus_model::STATUS_BEWERBER;
|
||||
else
|
||||
$bezeichnung = '';
|
||||
|
||||
$result = $this->LehrverbandModel->insert([
|
||||
'studiengang_kz' => $studiengang_kz,
|
||||
'semester' => $ausbildungssemester,
|
||||
'verband' => $verband,
|
||||
'gruppe' => $gruppe,
|
||||
'bezeichnung' => $bezeichnung,
|
||||
'aktiv' => true
|
||||
]);
|
||||
|
||||
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))
|
||||
{
|
||||
return error($result);
|
||||
}
|
||||
|
||||
if ($result->retval == "0")
|
||||
{
|
||||
$result = $this->StudentlehrverbandModel->insert([
|
||||
'student_uid' => $student_uid,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||
'semester' => $ausbildungssemester,
|
||||
'verband' => $verband,
|
||||
'gruppe' => $gruppe,
|
||||
'insertamum' => date('c'),
|
||||
'insertvon' => $uid,
|
||||
'studiengang_kz' => $studiengang_kz
|
||||
]);
|
||||
if (isError($result)) {
|
||||
return error("0", $this->p->t('lehre', 'error_updateStudentlehrverband'));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$result = $this->StudentlehrverbandModel->update(
|
||||
[
|
||||
'student_uid' => $student_uid,
|
||||
'studiensemester_kurzbz' => $studiensemester_kurzbz
|
||||
],
|
||||
[
|
||||
'semester' => $ausbildungssemester,
|
||||
'verband' => $verband,
|
||||
'gruppe' => $gruppe,
|
||||
'updateamum' => date('c'),
|
||||
'updatevon' => $uid,
|
||||
'studiengang_kz' => $studiengang_kz
|
||||
]
|
||||
);
|
||||
if (isError($result)) {
|
||||
return error("0", $this->p->t('lehre', 'error_updateStudentlehrverband'));
|
||||
}
|
||||
}
|
||||
|
||||
if (isError($result)) {
|
||||
return error("0", $this->p->t('lehre', 'error_updateStudentlehrverband'));
|
||||
}
|
||||
else
|
||||
{
|
||||
return success();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,48 +12,6 @@ class Lehrverband_model extends DB_Model
|
||||
$this->pk = array('gruppe', 'verband', 'semester', 'studiengang_kz');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if Lehrverband already exists
|
||||
* @param Integer $studiengang_kz
|
||||
* @param Integer $semester
|
||||
* @param char $verband
|
||||
* @param char $gruppe
|
||||
* @return 1: if Lehrverband exists, 0: if it doesn't
|
||||
*/
|
||||
public function checkIfLehrverbandExists($studiengang_kz, $semester, $verband, $gruppe)
|
||||
{
|
||||
$qry = "SELECT
|
||||
*
|
||||
FROM
|
||||
public.tbl_lehrverband
|
||||
WHERE
|
||||
studiengang_kz = ?
|
||||
AND
|
||||
semester = ?
|
||||
AND
|
||||
verband = ?
|
||||
AND
|
||||
gruppe = ?
|
||||
|
||||
";
|
||||
|
||||
$result = $this->execQuery($qry, array($studiengang_kz, $semester, $verband, $gruppe));
|
||||
|
||||
|
||||
if(isError($result))
|
||||
{
|
||||
return error($result);
|
||||
}
|
||||
elseif(!hasData($result))
|
||||
{
|
||||
return success("0", "Kein Lehrverband vorhanden!");
|
||||
}
|
||||
else
|
||||
{
|
||||
return success("1","Lehrverband vorhanden!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the maximum possible semester for one or more Studiengaenge.
|
||||
* If there are more than one Studiengang each maximum is calculated and
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
use \CI3_Events as Events;
|
||||
|
||||
class Benutzer_model extends DB_Model
|
||||
{
|
||||
|
||||
@@ -74,53 +77,90 @@ class Benutzer_model extends DB_Model
|
||||
*/
|
||||
public function generateAlias($uid)
|
||||
{
|
||||
$aliasres = '';
|
||||
$this->addLimit(1);
|
||||
$this->addSelect('vorname, nachname');
|
||||
$this->addJoin('public.tbl_person', 'person_id');
|
||||
$nameresult = $this->loadWhere(array('uid' => $uid));
|
||||
|
||||
if (hasData($nameresult))
|
||||
{
|
||||
$aliasdata = getData($nameresult);
|
||||
$alias = $this->_sanitizeAliasName($aliasdata[0]->vorname).'.'.$this->_sanitizeAliasName($aliasdata[0]->nachname);
|
||||
$aliasexists = $this->aliasExists($alias);
|
||||
if (isError($nameresult))
|
||||
return $nameresult;
|
||||
|
||||
if (hasData($aliasexists) && !getData($aliasexists)[0])
|
||||
$aliasres = $alias;
|
||||
}
|
||||
if (!hasData($nameresult))
|
||||
return success('');
|
||||
|
||||
$aliasdata = current(getData($nameresult));
|
||||
|
||||
return success($aliasres);
|
||||
return $this->generateAliasFromName($aliasdata->vorname, $aliasdata->nachname);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates alias for a person_id
|
||||
* @param $person_id
|
||||
* @return string
|
||||
* Generates alias for a vor- and nachname.
|
||||
*
|
||||
* @param string $vorname
|
||||
* @param string $nachname
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function generateAliasByPersonId($person_id)
|
||||
public function generateAliasFromName($vorname, $nachname)
|
||||
{
|
||||
$sql = 'SELECT p.vorname, p.nachname
|
||||
FROM public.tbl_person p
|
||||
where person_id = ?';
|
||||
$alias = $this->_sanitizeAliasName($vorname . '.' . $nachname);
|
||||
|
||||
$result = $this->aliasExists($alias);
|
||||
|
||||
$nameresult = $this->execQuery($sql, array($person_id));
|
||||
if (isError($result))
|
||||
return $result;
|
||||
|
||||
$nameresult = current(getData($nameresult)) ?: null;
|
||||
|
||||
if($nameresult)
|
||||
{
|
||||
$alias = $this->_sanitizeAliasName($nameresult->vorname).'.'.$this->_sanitizeAliasName($nameresult->nachname);
|
||||
|
||||
$aliasexists = $this->aliasExists($alias);
|
||||
|
||||
if (hasData($aliasexists) && current(getData($aliasexists)))
|
||||
$alias = "";
|
||||
}
|
||||
if (current(getData($result)))
|
||||
return success('');
|
||||
|
||||
return success($alias);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a matrikelnummer
|
||||
*
|
||||
* @param string $oe_kurzbz
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function generateMatrikelnummer($oe_kurzbz)
|
||||
{
|
||||
$matrikelnummer = false;
|
||||
|
||||
Events::trigger(
|
||||
'generate_matrikelnummer',
|
||||
function ($value) use ($matrikelnummer) {
|
||||
$matrikelnummer = $value;
|
||||
},
|
||||
$oe_kurzbz
|
||||
);
|
||||
|
||||
if ($matrikelnummer !== false)
|
||||
return success($matrikelnummer);
|
||||
|
||||
return success(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates an activation key
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function generateActivationkey()
|
||||
{
|
||||
$this->load->library('CryptLib');
|
||||
|
||||
$key = '';
|
||||
for ($i=0; $i<32; $i++)
|
||||
$key .= ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'][mt_rand(0, 15)];
|
||||
|
||||
$value = uniqid(mt_rand(), true);
|
||||
$length = strlen($value);
|
||||
$value = str_pad($value, $length + 32 - ($length % 32), chr(0));
|
||||
|
||||
return md5($this->cryptlib->RIJNDAEL_256_ECB($value, $key, true));
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
@@ -135,55 +175,4 @@ class Benutzer_model extends DB_Model
|
||||
$str = sanitizeProblemChars($str);
|
||||
return mb_strtolower(str_replace(' ', '_', $str));
|
||||
}
|
||||
|
||||
/**
|
||||
* Generiert einen Aktivierungscode
|
||||
*/
|
||||
public function generateActivationKey()
|
||||
{
|
||||
$keyvalues=array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
|
||||
$key='';
|
||||
for($i=0; $i<32; $i++)
|
||||
$key.=$keyvalues[mt_rand(0, 15)];
|
||||
|
||||
return success(md5(encryptData(uniqid(mt_rand(), true), $key)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if Benutzer already exists
|
||||
* @param String $uid
|
||||
* @return 0 if not exists, 1 if it does
|
||||
*/
|
||||
public function checkIfExistingBenutzer($uid)
|
||||
{
|
||||
$qry = "SELECT
|
||||
count(*) as anzahl
|
||||
FROM
|
||||
public.tbl_benutzer
|
||||
WHERE
|
||||
uid = ? ";
|
||||
|
||||
$result = $this->execQuery($qry, array($uid));
|
||||
|
||||
if (isError($result))
|
||||
{
|
||||
return error($result);
|
||||
}
|
||||
|
||||
$resultObject = current(getData($result));
|
||||
|
||||
if (property_exists($resultObject, 'anzahl'))
|
||||
{
|
||||
$resultValue = (int)$resultObject->anzahl;
|
||||
|
||||
if ($resultValue > 0)
|
||||
{
|
||||
return success("1");
|
||||
}
|
||||
else
|
||||
{
|
||||
return success("0");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user