Update Logik Lehrverband: as function, with transactions

This commit is contained in:
ma0068
2024-03-13 13:31:53 +01:00
parent a49075bcb7
commit 87384f42f9
3 changed files with 174 additions and 130 deletions
@@ -45,4 +45,115 @@ class Studentlehrverband_model extends DB_Model
return success("1","Studentlehrverband vorhanden!");
}
}
public function processStudentlehrverband($student_uid, $studiengang_kz, $ausbildungssemester, $verband, $gruppe, $studiensemester_kurzbz)
{
$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", "Error during update Lehrverband");
}
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", "Error during update Lehrverband");
}
if ($result->retval == "0")
{
$result = $this->LehrverbandModel->insert([
'studiengang_kz' => $studiengang_kz,
'semester' => $ausbildungssemester,
'verband' => '',
'gruppe' => '',
'aktiv' => true,
'bezeichnung' => 'Ab-Unterbrecher'
]);
if ($this->db->trans_status() === false || isError($result))
{
$this->db->trans_rollback();
return error("0", "Error during insert lehrverband übergeordnet");
}
}
// Lehrverband insert
$bezeichnung = $verband == 'A' ? ' Abbrecher' : 'Unterbrecher';
$result = $this->LehrverbandModel->insert([
'studiengang_kz' => $studiengang_kz,
'semester' => $ausbildungssemester,
'verband' => $verband,
'gruppe' => $gruppe,
'bezeichnung' => $bezeichnung,
'aktiv' => true
]);
if ($this->db->trans_status() === false || isError($result)) {
$this->db->trans_rollback();
return error("0", "Error during insert lehrverband");
}
}
// 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));
}
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 ($this->db->trans_status() === false || isError($result)) {
$this->db->trans_rollback();
return error("0", "Error during insert studentlehrverband");
}
}
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 ($this->db->trans_status() === false || isError($result)) {
$this->db->trans_rollback();
return error("0", "Error during update studentlehrverband");
}
}
// finish transaktion
if ($this->db->trans_status() === false || isError($result)) {
$this->db->trans_rollback();
return error("0", "Error during insert/update Studentlehrverband");
} else {
$this->db->trans_commit();
return success();
}
}
}
@@ -14,28 +14,36 @@ class Lehrverband_model extends DB_Model
/**
* Check if Lehrverband already exists
* @param string $student_id
* @param string $studiensemester_kurzbz
* @return 1: if Rolle exists, 0: if it doesn't
* @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($student_uid, $studiensemester_kurzbz)
public function checkIfLehrverbandExists($studiengang_kz, $semester, $verband, $gruppe)
{
$qry = "SELECT
*
FROM
public.tbl_studentlehrverband
public.tbl_lehrverband
WHERE
student_uid = ?
studiengang_kz = ?
AND
studiensemester_kurzbz = ?";
semester = ?
AND
verband = ?
AND
gruppe = ?
";
$result = $this->execQuery($qry, array($student_uid, $studiensemester_kurzbz));
$result = $this->execQuery($qry, array($studiengang_kz, $semester, $verband, $gruppe));
if (isError($result))
if(isError($result))
{
return error($result);
}
elseif (!hasData($result))
elseif(!hasData($result))
{
return success("0", "Kein Lehrverband vorhanden!");
}