From 10b476c27eb00a1787be82d6040f3b85c0b86c20 Mon Sep 17 00:00:00 2001 From: hainberg Date: Thu, 12 Sep 2019 13:45:50 +0200 Subject: [PATCH] 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 --- .../models/accounting/Vertrag_model.php | 152 ++++++++++++++++++ system/dbupdate_3.3.php | 14 ++ system/filtersupdate.php | 7 + 3 files changed, 173 insertions(+) diff --git a/application/models/accounting/Vertrag_model.php b/application/models/accounting/Vertrag_model.php index cd4b466d6..b5158eb22 100644 --- a/application/models/accounting/Vertrag_model.php +++ b/application/models/accounting/Vertrag_model.php @@ -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)); + } } diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index a321b4b3e..248e52577 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -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 'lehre.tbl_vertragstyp '.$db->db_last_error().'
'; + else + echo 'lehre.tbl_vertragstyp: Added value \'Betreuung\'
'; + } +} + // Add permission to order lehrauftrag (lehrauftrag_bestellen) if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'lehre/lehrauftrag_bestellen';")) { diff --git a/system/filtersupdate.php b/system/filtersupdate.php index a31fe702e..2140852d1 100644 --- a/system/filtersupdate.php +++ b/system/filtersupdate.php @@ -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"},