mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-08 23:59:28 +00:00
Added methods save() and setStatus()
. save method inserts a new Vertrag, sets Vertragsstatus to 'bestellt' and assigns vertrags_id to either corresponding Lehreinheitmitarbeiter or corresponding Projektbetreuuer . setStatus inserts a new Status to a given Vertrag
This commit is contained in:
@@ -11,4 +11,156 @@ class Vertrag_model extends DB_Model
|
||||
$this->dbTable = 'lehre.tbl_vertrag';
|
||||
$this->pk = 'vertrag_id';
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves Vertrag for a Lehrauftrag and sets Vertragsstatus to 'bestellt'.
|
||||
* Also updates vertrag_id in tbl_lehreinheitmitarbeiter or tbl_projektbetreuer.
|
||||
* @param $person_id
|
||||
* @param $lehrveranstaltung_id
|
||||
* @param $lehreinheit_id
|
||||
* @param $projektarbeit_id
|
||||
* @param $betrag Monetary amount of that Lehreinheit / Projektbetreuung.
|
||||
* @param $vertragsstunden Working hours of that Lehreinheit / Projektbetreuung.
|
||||
* @param $studiensemester_kurzbz
|
||||
* @param $vertragstyp_kurzbz
|
||||
* @return array|null On success object. On failure null.
|
||||
*/
|
||||
public function save($person_id, $lehrveranstaltung_id, $lehreinheit_id, $projektarbeit_id = null, $vertragsstunden, $betrag, $studiensemester_kurzbz){
|
||||
|
||||
// Cast input params
|
||||
$person_id = (!isset($person_id) || empty($person_id)) ? null : intval($person_id);
|
||||
$lehreinheit_id = (!isset($lehreinheit_id) || empty($lehreinheit_id)) ? null : intval($lehreinheit_id);
|
||||
$lehrveranstaltung_id = (!isset($lehrveranstaltung_id) || empty($lehrveranstaltung_id)) ? null : intval($lehrveranstaltung_id);
|
||||
$projektarbeit_id = (!isset($projektarbeit_id) || empty($projektarbeit_id)) ? null : intval($projektarbeit_id);
|
||||
$vertragsstunden = (!isset($vertragsstunden) || empty($vertragsstunden)) ? null : floatval($vertragsstunden);
|
||||
$betrag = (!isset($betrag) || empty($betrag)) ? null : floatval($betrag);
|
||||
|
||||
$vertragstyp_kurzbz = (is_null($projektarbeit_id)) ? 'Lehrauftrag' : 'Betreuung';
|
||||
|
||||
$result = array();
|
||||
$user = getAuthUID();
|
||||
|
||||
// Retrieve mitarbeiter uid from person_id
|
||||
$this->load->model('person/Benutzer_model', 'BenutzerModel');
|
||||
$benutzer = $this->BenutzerModel->getFromPersonId($person_id)->retval;
|
||||
$mitarbeiter_uid = $benutzer[0]->uid; // lectors uid
|
||||
|
||||
// First check if Vertrag already exists for that Lehrauftrag or for that Projektbetreuerauftrag
|
||||
if ($vertragstyp_kurzbz == 'Lehrauftrag')
|
||||
{
|
||||
$this->load->model('education/Lehreinheitmitarbeiter_model', 'LehreinheitmitarbeiterModel'); //
|
||||
if ($this->LehreinheitmitarbeiterModel->hasVertrag($mitarbeiter_uid, $lehreinheit_id))
|
||||
{
|
||||
return $result = success(null); // Exit if Lehrauftrag already has Vertrag
|
||||
}
|
||||
}
|
||||
elseif ($vertragstyp_kurzbz == 'Betreuung')
|
||||
{
|
||||
$this->load->model('education/Projektbetreuer_model', 'ProjektbetreuerModel');
|
||||
if ($this->ProjektbetreuerModel->hasVertrag($person_id, $projektarbeit_id))
|
||||
{
|
||||
return $result = success(null); // Exit if Projektbetreuung already has Vertrag
|
||||
}
|
||||
}
|
||||
|
||||
// If Vertrag does not exist, create now
|
||||
// Start DB transaction
|
||||
$this->db->trans_start(false);
|
||||
|
||||
// Insert Vertragsdata
|
||||
$result = $this->insert(array(
|
||||
'person_id' => $person_id,
|
||||
'lehrveranstaltung_id' => $lehrveranstaltung_id,
|
||||
'vertragstyp_kurzbz' => $vertragstyp_kurzbz,
|
||||
'betrag' => $betrag,
|
||||
'insertamum' => 'NOW()',
|
||||
'insertvon' => $user,
|
||||
'vertragsdatum' => 'NOW()',
|
||||
'vertragsstunden' => $vertragsstunden,
|
||||
'vertragsstunden_studiensemester_kurzbz' => $studiensemester_kurzbz
|
||||
));
|
||||
|
||||
// Retrieve primary key
|
||||
$vertrag_id = $result->retval;
|
||||
|
||||
// If Vertrag was created successfully, update vertrag_id
|
||||
if (isSuccess($result))
|
||||
{
|
||||
// if Lehrtätigkeit, update vertrag_id in tbl_lehreinheitmitarbeiter
|
||||
if ($vertragstyp_kurzbz == 'Lehrauftrag')
|
||||
{
|
||||
$this->load->model('education/Lehreinheitmitarbeiter_model', 'LehreinheitmitarbeiterModel');
|
||||
$result = $this->LehreinheitmitarbeiterModel->update(
|
||||
array(
|
||||
'lehreinheit_id' => $lehreinheit_id,
|
||||
'mitarbeiter_uid' =>$mitarbeiter_uid
|
||||
),
|
||||
array(
|
||||
'vertrag_id' => $vertrag_id
|
||||
)
|
||||
);
|
||||
}
|
||||
// if (Projekt-)Betreuung, update vertrag_id in tbl_projektbetreuer
|
||||
elseif ($vertragstyp_kurzbz == 'Betreuung')
|
||||
{
|
||||
$this->load->model('education/Projektbetreuer_model', 'ProjektbetreuerModel');
|
||||
$result = $this->ProjektbetreuerModel->update(
|
||||
array(
|
||||
'person_id' => $person_id,
|
||||
'projektarbeit_id' => $projektarbeit_id
|
||||
),
|
||||
array(
|
||||
'vertrag_id' => $vertrag_id
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// If updating vertrag_id was successfully, set Status to 'bestellt'
|
||||
if (isSuccess($result))
|
||||
{
|
||||
$result = $this->setStatus($vertrag_id, 'bestellt', $mitarbeiter_uid);
|
||||
}
|
||||
|
||||
// Transaction complete!
|
||||
$this->db->trans_complete();
|
||||
|
||||
// Check if everything went ok during the transaction
|
||||
if ($this->db->trans_status() === false || isError($result))
|
||||
{
|
||||
$this->db->trans_rollback();
|
||||
$result = error($result->msg, EXIT_ERROR);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->db->trans_commit();
|
||||
$result = success($vertrag_id);
|
||||
}
|
||||
|
||||
return $result;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets Vertragsstatus for the given Vertrag and Mitarbeiter.
|
||||
* @param $vertrag_id
|
||||
* @param $vertragsstatus_kurzbz
|
||||
* @param $mitarbeiter_uid
|
||||
* @return array|null On success object. On failure null.
|
||||
*/
|
||||
public function setStatus($vertrag_id, $vertragsstatus_kurzbz, $mitarbeiter_uid){
|
||||
|
||||
$query = '
|
||||
INSERT INTO lehre.tbl_vertrag_vertragsstatus(
|
||||
vertragsstatus_kurzbz,
|
||||
vertrag_id,
|
||||
uid,
|
||||
datum,
|
||||
insertvon,
|
||||
updatevon,
|
||||
updateamum
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?);';
|
||||
|
||||
return $this->execQuery($query, array($vertragsstatus_kurzbz, $vertrag_id, $mitarbeiter_uid, 'NOW()', getAuthUID(), null, null));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3107,6 +3107,20 @@ if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_vertragsstatus WHERE vertra
|
||||
}
|
||||
}
|
||||
|
||||
// Insert 'Betreuung' to tbl_vertragstyp
|
||||
if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_vertragstyp WHERE vertragstyp_kurzbz = 'Betreuung';"))
|
||||
{
|
||||
if($db->db_num_rows($result) == 0)
|
||||
{
|
||||
$qry = "INSERT INTO lehre.tbl_vertragstyp(vertragstyp_kurzbz, bezeichnung) VALUES('Betreuung', 'Betreuung');";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>lehre.tbl_vertragstyp '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo 'lehre.tbl_vertragstyp: Added value \'Betreuung\'<br>';
|
||||
}
|
||||
}
|
||||
|
||||
// Add permission to order lehrauftrag (lehrauftrag_bestellen)
|
||||
if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'lehre/lehrauftrag_bestellen';"))
|
||||
{
|
||||
|
||||
@@ -410,10 +410,17 @@ $filters = array(
|
||||
{
|
||||
"name": "",
|
||||
"columns": [
|
||||
{"name": "id"},
|
||||
{"name": "LE_ID"},
|
||||
{"name": "LV_ID"},
|
||||
{"name": "PA_ID"},
|
||||
{"name": "Studiensemester"},
|
||||
{"name": "studiengang_kz"},
|
||||
{"name": "Person_ID"},
|
||||
{"name": "Typ"},
|
||||
{"name": "Auftrag"},
|
||||
{"name": "Organisationseinheit"},
|
||||
{"name": "lv_oe_kurzbz"},
|
||||
{"name": "Gruppe"},
|
||||
{"name": "Lektor"},
|
||||
{"name": "Stunden"},
|
||||
|
||||
Reference in New Issue
Block a user