From b50ca57907740b5611b5ab68e571799b89ca8299 Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Tue, 11 Apr 2023 15:10:24 +0200 Subject: [PATCH] extend VertragsbestandteilFunktion to be able to create a Benutzerfunktion entry before being persited --- .../Vertragsbestandteil.php | 6 +- .../VertragsbestandteilFunktion.php | 71 +++++++++++-------- .../VertragsbestandteilLib.php | 2 + 3 files changed, 49 insertions(+), 30 deletions(-) diff --git a/application/libraries/vertragsbestandteil/Vertragsbestandteil.php b/application/libraries/vertragsbestandteil/Vertragsbestandteil.php index 9ada04329..1d1101e44 100644 --- a/application/libraries/vertragsbestandteil/Vertragsbestandteil.php +++ b/application/libraries/vertragsbestandteil/Vertragsbestandteil.php @@ -171,5 +171,9 @@ EOTXT; } - public abstract function toStdClass(); + public function beforePersist() { + // can be overridden in childs + } + + public abstract function toStdClass(); } diff --git a/application/libraries/vertragsbestandteil/VertragsbestandteilFunktion.php b/application/libraries/vertragsbestandteil/VertragsbestandteilFunktion.php index d59e1b158..388e4873a 100644 --- a/application/libraries/vertragsbestandteil/VertragsbestandteilFunktion.php +++ b/application/libraries/vertragsbestandteil/VertragsbestandteilFunktion.php @@ -12,22 +12,44 @@ use vertragsbestandteil\VertragsbestandteilFactory; class VertragsbestandteilFunktion extends Vertragsbestandteil { protected $benutzerfunktion_id; - protected $anmerkung; - protected $kuendigungsrelevant; + protected $benutzerfunktiondata; + protected $CI; + public function __construct() { + $this->benutzerfunktiondata = null; + $this->setVertragsbestandteiltyp_kurzbz( VertragsbestandteilFactory::VERTRAGSBESTANDTEIL_FUNKTION); + + $this->CI = get_instance(); + $this->CI->load->model('person/Benutzerfunktion_model', + 'BenutzerfunktionModel'); + } + + public function beforePersist() + { + if( $this->benutzerfunktiondata === null) + { + return; + } + + $ret = $this->BenutzerfunktionModel->insert($this->benutzerfunktiondata); + + if(isError($ret) ) + { + throw new Exception('failed to create Benutzerfunktion'); + } + + $this->setBenutzerfunktion_id(getData($ret)); } public function toStdClass() { $tmp = array( 'vertragsbestandteil_id' => $this->getVertragsbestandteil_id(), - 'benutzerfunktion_id' => $this->getBenutzerfunktion_id(), - 'anmerkung' => $this->getAnmerkung(), - 'kuendigungsrelevant' => $this->getKuendigungsrelevant() + 'benutzerfunktion_id' => $this->getBenutzerfunktion_id() ); $tmp = array_filter($tmp, function($v) { @@ -41,8 +63,6 @@ class VertragsbestandteilFunktion extends Vertragsbestandteil { $txt = <<getBenutzerfunktion_id()} - anmerkung: {$this->getAnmerkung()} - kuendigungsrelevant: {$this->getKuendigungsrelevant()} EOTXT; return parent::__toString() . $txt; @@ -52,39 +72,32 @@ EOTXT; { parent::hydrateByStdClass($data); isset($data->benutzerfunktion_id) && $this->setBenutzerfunktion_id($data->benutzerfunktion_id); - isset($data->anmerkung) && $this->setAnmerkung($data->anmerkung); - isset($data->kuendigungsrelevant) && $this->setKuendigungsrelevant($data->kuendigungsrelevant); + isset($data->funktion_kurzbz) && isset($data->oe_kurzbz) + && isset($mitarbeiter_uid) && $this->createBenutzerfunktionData($data); + } - + public function getBenutzerfunktion_id() { return $this->benutzerfunktion_id; } - - public function getAnmerkung() - { - return $this->anmerkung; - } - - public function getKuendigungsrelevant() - { - return $this->kuendigungsrelevant; - } public function setBenutzerfunktion_id($benutzerfunktion_id) { $this->benutzerfunktion_id = $benutzerfunktion_id; return $this; } - public function setAnmerkung($anmerkung) + + protected function createBenutzerfunktionData($data) { - $this->anmerkung = $anmerkung; - return $this; - } - - public function setKuendigungsrelevant($kuendigungsrelevant) - { - $this->kuendigungsrelevant = $kuendigungsrelevant; - return $this; + $this->benutzerfunktiondata = (object) array( + 'funktion_kurzbz' => $data->funktion_kurzbz, + 'oe_kurzbz' => $data->oe_kurzbz, + 'uid' => $data->mitarbeiter_uid, + 'datum_von' => $this->getVon(), + 'datum_bis' => $this->getBis(), + 'insertamum' => strftime('%Y-%m-%d %H:%M:%s'), + 'insertvon' => getAuthUID() + ); } } diff --git a/application/libraries/vertragsbestandteil/VertragsbestandteilLib.php b/application/libraries/vertragsbestandteil/VertragsbestandteilLib.php index f527388c7..50198f82f 100644 --- a/application/libraries/vertragsbestandteil/VertragsbestandteilLib.php +++ b/application/libraries/vertragsbestandteil/VertragsbestandteilLib.php @@ -81,6 +81,7 @@ class VertragsbestandteilLib protected function insertVertragsbestandteil(Vertragsbestandteil $vertragsbestandteil, Vertragsbestandteil $vertragsbestandteil_secondary = null /* i.e. Gehaltsbestandteil connected to Stunden*/) { + $vertragsbestandteil->beforePersist(); $ret = $this->VertragsbestandteilModel->insert($vertragsbestandteil->baseToStdClass()); if( hasData($ret) ) { @@ -134,6 +135,7 @@ class VertragsbestandteilLib { $vertragsbestandteil->setUpdateamum(strftime('%Y-%m-%d %H:%M')) ->setUpdatevon('ma0080'); + $vertragsbestandteil->beforePersist(); $ret = $this->VertragsbestandteilModel->update($vertragsbestandteil->getVertragsbestandteil_id(), $vertragsbestandteil->baseToStdClass());