From 3340922a35198cdf0841905502bd4c0181810e53 Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 24 Sep 2019 10:21:05 +0200 Subject: [PATCH] Extended/Adapted method setStatus() Extended check: if new status is 'akzeptiert', the latest status has to be 'erteilt'. Adapted code as check for having certain status was outsourced to method hasStatus. --- .../models/accounting/Vertrag_model.php | 43 +++++++++++++------ 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/application/models/accounting/Vertrag_model.php b/application/models/accounting/Vertrag_model.php index 0de9a8fc7..008d3ffab 100644 --- a/application/models/accounting/Vertrag_model.php +++ b/application/models/accounting/Vertrag_model.php @@ -163,7 +163,7 @@ class Vertrag_model extends DB_Model } /** - * Sets Vertragsstatus for the given Vertrag and Mitarbeiter. + * Set Vertragsstatus for the given Vertrag and Mitarbeiter. * @param $vertrag_id * @param $vertragsstatus_kurzbz * @param $mitarbeiter_uid @@ -171,21 +171,26 @@ class Vertrag_model extends DB_Model */ public function setStatus($vertrag_id, $mitarbeiter_uid, $vertragsstatus_kurzbz){ - // First check if vertrag has already this status - $this->addJoin('lehre.tbl_vertrag_vertragsstatus', 'vertrag_id'); - - $result = $this->loadWhere(array( - 'vertrag_id' => $vertrag_id, - 'uid' => $mitarbeiter_uid, - 'vertragsstatus_kurzbz' => $vertragsstatus_kurzbz - )); - - if (!isEmptyArray($result->retval)) + // 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 already set + return success(null); // return null if status is already set } - // Set new status + // 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 $query = ' INSERT INTO lehre.tbl_vertrag_vertragsstatus( vertragsstatus_kurzbz, @@ -197,7 +202,17 @@ class Vertrag_model extends DB_Model updateamum ) VALUES (?, ?, ?, ?, ?, ?, ?);'; - return $this->execQuery($query, array($vertragsstatus_kurzbz, $vertrag_id, $mitarbeiter_uid, 'NOW()', getAuthUID(), null, null)); + return $this->execQuery($query, + array( + $vertragsstatus_kurzbz, + $vertrag_id, + $mitarbeiter_uid, + 'NOW()', + getAuthUID(), + null, + null + ) + ); } /**