first guess vertragsbestandteil library

This commit is contained in:
Harald Bamberger
2022-12-13 10:49:35 +01:00
parent 603abd5458
commit 3818d5221c
9 changed files with 702 additions and 0 deletions
@@ -0,0 +1,170 @@
<?php
namespace vertragsbestandteil;
/**
* Description of Vertragsbestandteil
*
* @author bambi
*/
abstract class Vertragsbestandteil
{
protected $vertragsbestandteil_id;
protected $dienstverhaeltnis_id;
protected $von;
protected $bis;
protected $vertragsbestandteiltyp_kurzbz;
protected $insertamum;
protected $insertvon;
protected $updateamum;
protected $updatevon;
public function hydrateByStdClass($data)
{
isset($data->vertragsbestandteil_id) && $this->setVertragsbestandteil_id($data->vertragsbestandteil_id);
isset($data->dienstverhaeltnis_id) && $this->setDienstverhaeltnis_id($data->dienstverhaeltnis_id);
isset($data->von) && $this->setVon($data->von);
isset($data->bis) && $this->setBis($data->bis);
isset($data->insertamum) && $this->setInsertamum($data->insertamum);
isset($data->insertvon) && $this->setInsertvon($data->insertvon);
isset($data->updateamum) && $this->setUpdateamum($data->updateamum);
isset($data->updatevon) && $this->setUpdatevon($data->updatevon);
}
public function getVertragsbestandteil_id()
{
return $this->vertragsbestandteil_id;
}
public function getDienstverhaeltnis_id()
{
return $this->dienstverhaeltnis_id;
}
public function getVon()
{
return $this->von;
}
public function getBis()
{
return $this->bis;
}
public function getVertragsbestandteiltyp_kurzbz()
{
return $this->vertragsbestandteiltyp_kurzbz;
}
public function getInsertamum()
{
return $this->insertamum;
}
public function getInsertvon()
{
return $this->insertvon;
}
public function getUpdateamum()
{
return $this->updateamum;
}
public function getUpdatevon()
{
return $this->updatevon;
}
public function setVertragsbestandteil_id($vertragsbestandteil_id)
{
$this->vertragsbestandteil_id = $vertragsbestandteil_id;
return $this;
}
public function setDienstverhaeltnis_id($dienstverhaeltnis_id)
{
$this->dienstverhaeltnis_id = $dienstverhaeltnis_id;
return $this;
}
public function setVon($von)
{
$this->von = $von;
return $this;
}
public function setBis($bis)
{
$this->bis = $bis;
return $this;
}
public function setVertragsbestandteiltyp_kurzbz($vertragsbestandteiltyp_kurzbz)
{
$this->vertragsbestandteiltyp_kurzbz = $vertragsbestandteiltyp_kurzbz;
return $this;
}
public function setInsertamum($insertamum)
{
$this->insertamum = $insertamum;
return $this;
}
public function setInsertvon($insertvon)
{
$this->insertvon = $insertvon;
return $this;
}
public function setUpdateamum($updateamum)
{
$this->updateamum = $updateamum;
return $this;
}
public function setUpdatevon($updatevon)
{
$this->updatevon = $updatevon;
return $this;
}
public function baseToStdClass() {
$tmp = array(
'vertragsbestandteil_id' => $this->getVertragsbestandteil_id(),
'dienstverhaeltnis_id' => $this->getDienstverhaeltnis_id(),
'von' => $this->getVon(),
'bis' => $this->getBis(),
'vertragsbestandteiltyp_kurzbz' => $this->getVertragsbestandteiltyp_kurzbz(),
'insertamum' => $this->getInsertamum(),
'insertvon' => $this->getInsertvon(),
'updateamum' => $this->getUpdateamum(),
'updatevon' => $this->getUpdatevon(),
);
$tmp = array_filter($tmp, function($v) {
return !is_null($v);
});
return (object) $tmp;
}
public function __toString()
{
return <<<EOTXT
vertragsbestandteil_id: {$this->getVertragsbestandteil_id()}
dienstverhaeltnis_id: {$this->getDienstverhaeltnis_id()}
von: {$this->getVon()}
bis: {$this->getBis()}
vertragsbestandteiltyp_kurzbz: {$this->getVertragsbestandteiltyp_kurzbz()}
insertamum: {$this->getInsertamum()}
insertvon: {$this->getInsertvon()}
updateamum: {$this->getUpdateamum()}
updatevon: {$this->getUpdatevon()}
EOTXT;
}
public abstract function toStdClass();
}
@@ -0,0 +1,74 @@
<?php
namespace vertragsbestandteil;
use Exception;
use vertragsbestandteil\VertragsbestandteilStunden;
/**
* Description of VertragsbestandteilFactory
*
* @author bambi
*/
class VertragsbestandteilFactory
{
const VERTRAGSBESTANDTEIL_STUNDEN = 'stunden';
const VERTRAGSBESTANDTEIL_FUNKTION = 'funktion';
public static function getVertragsbestandteil($data)
{
$vertragsbestandteiltyp_kurzbz = isset($data->vertragsbestandteiltyp_kurzbz)
? $data->vertragsbestandteiltyp_kurzbz : false;
if( false === $vertragsbestandteiltyp_kurzbz )
{
throw new Exception('Missing Parameter vertragsbestandteiltyp_kurzbz');
}
$vertragsbestandteil = null;
switch ($vertragsbestandteiltyp_kurzbz)
{
case self::VERTRAGSBESTANDTEIL_STUNDEN:
$vertragsbestandteil = new VertragsbestandteilStunden();
$vertragsbestandteil->hydrateByStdClass($data);
break;
case self::VERTRAGSBESTANDTEIL_FUNKTION:
$vertragsbestandteil = new VertragsbestandteilFunktion();
$vertragsbestandteil->hydrateByStdClass($data);
break;
default:
throw new Exception('Unknown vertragsbestandteiltyp_kurzbz '
. $vertragsbestandteiltyp_kurzbz);
}
return $vertragsbestandteil;
}
public static function getVertragsbestandteilDBModel($vertragsbestandteil_kurzbz)
{
$CI = get_instance();
$vertragsbestandteildbmodel = null;
switch ($vertragsbestandteil_kurzbz)
{
case self::VERTRAGSBESTANDTEIL_STUNDEN:
$CI->load->model('vertragsbestandteil/VertragsbestandteilStunden_model',
'VertragsbestandteilStunden_model');
$vertragsbestandteildbmodel = $CI->VertragsbestandteilStunden_model;
break;
case self::VERTRAGSBESTANDTEIL_FUNKTION:
$CI->load->model('vertragsbestandteil/VertragsbestandteilFunktion_model',
'VertragsbestandteilFunktion_model');
$vertragsbestandteildbmodel = $CI->VertragsbestandteilFunktion_model;
break;
default:
throw new Exception('Unknown vertragsbestandteil_kurzbz '
. $vertragsbestandteil_kurzbz);
}
return $vertragsbestandteildbmodel;
}
}
@@ -0,0 +1,90 @@
<?php
namespace vertragsbestandteil;
use vertragsbestandteil\Vertragsbestandteil;
use vertragsbestandteil\VertragsbestandteilFactory;
/**
* Description of VertragsbestandteilFunktion
*
* @author bambi
*/
class VertragsbestandteilFunktion extends Vertragsbestandteil
{
protected $benutzerfunktion_id;
protected $anmerkung;
protected $kuendigungsrelevant;
public function __construct()
{
$this->setVertragsbestandteiltyp_kurzbz(
VertragsbestandteilFactory::VERTRAGSBESTANDTEIL_FUNKTION);
}
public function toStdClass()
{
$tmp = array(
'vertragsbestandteil_id' => $this->getVertragsbestandteil_id(),
'benutzerfunktion_id' => $this->getBenutzerfunktion_id(),
'anmerkung' => $this->getAnmerkung(),
'kuendigungsrelevant' => $this->getKuendigungsrelevant()
);
$tmp = array_filter($tmp, function($v) {
return !is_null($v);
});
return (object) $tmp;
}
public function __toString()
{
$txt = <<<EOTXT
benutzerfunktion_id: {$this->getBenutzerfunktion_id()}
anmerkung: {$this->getAnmerkung()}
kuendigungsrelevant: {$this->getKuendigungsrelevant()}
EOTXT;
return parent::__toString() . $txt;
}
public function hydrateByStdClass($data)
{
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);
}
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)
{
$this->anmerkung = $anmerkung;
return $this;
}
public function setKuendigungsrelevant($kuendigungsrelevant)
{
$this->kuendigungsrelevant = $kuendigungsrelevant;
return $this;
}
}
@@ -0,0 +1,106 @@
<?php
require_once __DIR__ . '/Vertragsbestandteil.php';
require_once __DIR__ . '/VertragsbestandteilStunden.php';
require_once __DIR__ . '/VertragsbestandteilFunktion.php';
require_once __DIR__ . '/VertragsbestandteilFactory.php';
use vertragsbestandteil\Vertragsbestandteil;
use vertragsbestandteil\VertragsbestandteilFactory;
/**
* Description of VertragsbestandteilLib
*
* @author bambi
*/
class VertragsbestandteilLib
{
protected $CI;
protected $VertragsbestandteilModel;
public function __construct()
{
$this->CI = get_instance();
$this->CI->load->model('vertragsbestandteil/Vertragsbestandteil_model',
'VertragsbestandteilModel');
$this->VertragsbestandteilModel = $this->CI->VertragsbestandteilModel;
}
public function fetchVertragsbestandteile($dienstverhaeltnis_id, $stichtag=null)
{
return $this->VertragsbestandteilModel->getVertragsbestandteile($dienstverhaeltnis_id, $stichtag);
}
public function storeVertragsbestandteil(Vertragsbestandteil $vertragsbestandteil)
{
$this->CI->db->trans_begin();
try
{
if( intval($vertragsbestandteil->getVertragsbestandteil_id()) > 0 )
{
$this->updateVertragsbestandteil($vertragsbestandteil);
}
else
{
$this->insertVertragsbestandteil($vertragsbestandteil);
}
if( $this->CI->db->trans_status() === false )
{
log_message('debug', "Transaction failed");
throw new Exception("Transaction failed");
}
$this->CI->db->trans_commit();
}
catch (Exception $ex)
{
log_message('debug', "Transaction rolled back. " . $ex->getMessage());
$this->CI->db->trans_rollback();
}
}
protected function insertVertragsbestandteil(Vertragsbestandteil $vertragsbestandteil)
{
$ret = $this->VertragsbestandteilModel->insert($vertragsbestandteil->baseToStdClass());
if( hasData($ret) )
{
$vertragsbestandteil->setVertragsbestandteil_id(getData($ret));
}
else
{
throw new Exception('error inserting vertragsbestandteil');
}
$specialisedModel = VertragsbestandteilFactory::getVertragsbestandteilDBModel(
$vertragsbestandteil->getVertragsbestandteiltyp_kurzbz());
$retspecial = $specialisedModel->insert($vertragsbestandteil->toStdClass());
if(isError($retspecial) )
{
throw new Exception('error updating vertragsbestandteil '
. $vertragsbestandteil->getVertragsbestandteiltyp_kurzbz());
}
}
protected function updateVertragsbestandteil(Vertragsbestandteil $vertragsbestandteil)
{
$vertragsbestandteil->setUpdateamum(strftime('%Y-%m-%d %H:%M'))
->setUpdatevon('ma0080');
$ret = $this->VertragsbestandteilModel->update($vertragsbestandteil->getVertragsbestandteil_id(),
$vertragsbestandteil->baseToStdClass());
if(isError($ret) )
{
throw new Exception('error updating vertragsbestandteil');
}
$specialisedModel = VertragsbestandteilFactory::getVertragsbestandteilDBModel(
$vertragsbestandteil->getVertragsbestandteiltyp_kurzbz());
$retspecial = $specialisedModel->update($vertragsbestandteil->getVertragsbestandteil_id(),
$vertragsbestandteil->toStdClass());
if(isError($retspecial) )
{
throw new Exception('error updating vertragsbestandteil '
. $vertragsbestandteil->getVertragsbestandteiltyp_kurzbz());
}
}
}
@@ -0,0 +1,76 @@
<?php
namespace vertragsbestandteil;
use vertragsbestandteil\Vertragsbestandteil;
use vertragsbestandteil\VertragsbestandteilFactory;
/**
* Description of VertragsbestandteilStunden
*
* @author bambi
*/
class VertragsbestandteilStunden extends Vertragsbestandteil
{
protected $wochenstunden;
protected $karenz;
public function __construct()
{
$this->setVertragsbestandteiltyp_kurzbz(
VertragsbestandteilFactory::VERTRAGSBESTANDTEIL_STUNDEN);
}
public function hydrateByStdClass($data)
{
parent::hydrateByStdClass($data);
isset($data->wochenstunden) && $this->setWochenstunden($data->wochenstunden);
isset($data->karenz) && $this->setKarenz($data->karenz);
}
public function getWochenstunden()
{
return $this->wochenstunden;
}
public function getKarenz()
{
return $this->karenz;
}
public function setWochenstunden($wochenstunden)
{
$this->wochenstunden = $wochenstunden;
return $this;
}
public function setKarenz($karenz)
{
$this->karenz = $karenz;
return $this;
}
public function toStdClass(): \stdClass
{
$tmp = array(
'vertragsbestandteil_id' => $this->getVertragsbestandteil_id(),
'wochenstunden' => $this->getWochenstunden(),
'karenz' => $this->getKarenz()
);
$tmp = array_filter($tmp, function($v) {
return !is_null($v);
});
return (object) $tmp;
}
public function __toString()
{
$txt = <<<EOTXT
wochenstunden: {$this->getWochenstunden()}
karenz: {$this->getKarenz()}
EOTXT;
return parent::__toString() . $txt;
}
}