setFirstStudent logic

This commit is contained in:
cgfhtw
2024-08-08 16:24:23 +02:00
parent f1a2ef25c7
commit ffabd681c8
6 changed files with 349 additions and 491 deletions
+76 -21
View File
@@ -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
+69 -80
View File
@@ -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");
}
}
}
}