Moved methods from Vertrag_model to Vertragvertragsstatus_model

Moved out and adapted methods which correspond to Vertragsstatus
from Vertrag_model to Vertragvertragsstatus_model.
This commit is contained in:
Cris
2019-10-29 10:39:37 +01:00
committed by hainberg
parent ab947cf5f1
commit 438b7b5b9e
4 changed files with 90 additions and 8 deletions
@@ -30,6 +30,7 @@ class LehrauftragAkzeptieren extends Auth_Controller
// Load models
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
$this->load->model('accounting/Vertrag_model', 'VertragModel');
$this->load->model('accounting/Vertragvertragsstatus_model', 'VertragvertragsstatusModel');
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
$this->load->model('codex/Bisverwendung_model', 'BisverwendungModel');
$this->load->model('person/Benutzer_model', 'BenutzerModel');
@@ -158,7 +159,7 @@ class LehrauftragAkzeptieren extends Auth_Controller
}
// Set status to accepted
$result = $this->VertragModel->setStatus($vertrag_id, $this->_uid, 'akzeptiert');
$result = $this->VertragvertragsstatusModel->setStatus($vertrag_id, $this->_uid, 'akzeptiert');
if ($result->retval)
{
@@ -35,6 +35,7 @@ class LehrauftragErteilen extends Auth_Controller
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
$this->load->model('accounting/Vertrag_model', 'VertragModel');
$this->load->model('accounting/Vertragvertragsstatus_model', 'VertragvertragsstatusModel');
// Load libraries
$this->load->library('WidgetLib');
@@ -134,7 +135,7 @@ class LehrauftragErteilen extends Auth_Controller
show_error('Keine Erteilberechtigung für diese Organisationseinheit: '. $lv_oe_kurzbz);
}
$result = $this->VertragModel->setStatus($vertrag_id, $mitarbeiter_uid, 'erteilt');
$result = $this->VertragvertragsstatusModel->setStatus($vertrag_id, $mitarbeiter_uid, 'erteilt');
if ($result->retval) {
$json [] = array(
@@ -122,7 +122,7 @@ class Vertrag_model extends DB_Model
// If updating vertrag_id was successfully, set Status to 'bestellt'
if (isSuccess($result))
{
$result = $this->setStatus($vertrag_id, $mitarbeiter_uid,'bestellt');
$result = $this->VertragvertragsstatusModel->setStatus($vertrag_id, $mitarbeiter_uid, 'bestellt');
}
// Transaction complete!
@@ -172,19 +172,20 @@ class Vertrag_model extends DB_Model
// If last vertragsstatus is 'erteilt', delete the status
if (isSuccess($result))
{
$result = $this->getLastStatus($vertrag_obj->vertrag_id, $mitarbeiter_uid);
$result = $this->VertragvertragsstatusModel->getLastStatus($vertrag_id, $mitarbeiter_uid);
$lastStatus = getData($result)[0]->vertragsstatus_kurzbz;
if ($lastStatus == 'erteilt')
{
$result = $this->VertragvertragsstatusModel->deleteStatus($vertrag_obj->vertrag_id, 'erteilt');
$result = $this->VertragvertragsstatusModel->deleteStatus($vertrag_id, 'erteilt');
}
}
// Update date of status 'bestellt'
if (isSuccess($result))
{
$result = $this->VertragvertragsstatusModel->updateStatus($vertrag_obj->vertrag_id, 'bestellt');
$result = $this->VertragvertragsstatusModel->updateStatus($vertrag_id, 'bestellt');
}
// Transaction complete!
@@ -1,7 +1,6 @@
<?php
class Vertragvertragsstatus_model extends DB_Model
{
/**
* Constructor
*/
@@ -10,8 +9,89 @@ class Vertragvertragsstatus_model extends DB_Model
parent::__construct();
$this->dbTable = 'lehre.tbl_vertrag_vertragsstatus';
$this->pk = array('vertragsstatus_kurzbz', 'vertrag_id');
$this->hasSequence = false;
}
/**
* Check if Vertrag has the given Vertragsstatus.
* @param integer $vertrag_id
* @param string $mitarbeiter_uid
* @param string $vertragsstatus_kurzbz
* @return array
*/
public function hasStatus($vertrag_id, $mitarbeiter_uid, $vertragsstatus_kurzbz)
{
$this->addSelect('1');
$this->addLimit(1);
return $this->loadWhere(array(
'vertrag_id' => $vertrag_id,
'uid' => $mitarbeiter_uid,
'vertragsstatus_kurzbz' => $vertragsstatus_kurzbz
));
}
/**
* Get the latest Vertragsstatus for the given Vertrag and Mitarbeiter
* @param integer $vertrag_id
* @param string $mitarbeiter_uid
* @return array
*/
public function getLastStatus($vertrag_id, $mitarbeiter_uid)
{
$this->addSelect('vertragsstatus_kurzbz');
$this->addOrder('datum', 'DESC');
$this->addLimit(1);
return $this->loadWhere(
array(
'vertrag_id' => $vertrag_id,
'uid' => $mitarbeiter_uid
)
);
}
/**
* Set Vertragsstatus for the given Vertrag and Mitarbeiter.
* @param $vertrag_id
* @param $vertragsstatus_kurzbz
* @param $mitarbeiter_uid
* @return array|null On success object, retval is true. Null if status already exist for this vertrag.
*/
public function setStatus($vertrag_id, $mitarbeiter_uid, $vertragsstatus_kurzbz){
// Check if vertrag has already this status
$result = $this->hasStatus($vertrag_id, $mitarbeiter_uid, $vertragsstatus_kurzbz);
if (hasData($result))
{
return success(null); // return null if status is already set
}
// If new status should be 'akzeptiert', the latest status has to be 'erteilt'
if ($vertragsstatus_kurzbz == 'akzeptiert')
{
$result = $this->getLastStatus($vertrag_id, $mitarbeiter_uid);
$last_status = getData($result)[0]->vertragsstatus_kurzbz;
if ($last_status != 'erteilt')
{
return success(null); // return null if latest status is not 'erteilt'
}
}
// Set new status if passed all checks
return $this->insert(
array(
'vertrag_id' => $vertrag_id,
'vertragsstatus_kurzbz' => $vertragsstatus_kurzbz,
'uid' => $mitarbeiter_uid,
'datum' => $this->escape('NOW()'),
'insertvon' => getAuthUID(),
'insertamum' => $this->escape('NOW()')
)
);
}
/**
* Updates the date of the given vertragsstatus.
* @param $vertrag_id
@@ -34,7 +114,6 @@ class Vertragvertragsstatus_model extends DB_Model
);
}
/**
* Deletes the given vertragsstatus of the contract.
* @param $vertrag_id