From 7ffb786e55e8f091e253c73affc3be9d92b59f01 Mon Sep 17 00:00:00 2001 From: Victor Saisa Lopez Date: Wed, 23 Mar 2016 16:42:11 -0400 Subject: [PATCH] HOR-539 "Contadores de casos pausados incorrectos" SOLVED Issue: Contadores de casos pausados incorrectos Cause: El comando upgrade utiliza los metodos del anterior listado Solution: - Se agrega validacion para los contadores del listado paused - Se debera ejecutar el comando "./processmaker migrate-new-cases-lists your-workflow" para reconstruir los datos --- workflow/engine/classes/class.wsTools.php | 2 +- .../engine/classes/model/AppCacheView.php | 31 ++++++++++++------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/workflow/engine/classes/class.wsTools.php b/workflow/engine/classes/class.wsTools.php index c714d880e..5937b3721 100755 --- a/workflow/engine/classes/class.wsTools.php +++ b/workflow/engine/classes/class.wsTools.php @@ -2157,7 +2157,7 @@ class workspaceTools while($dataset->next()) { $aRow = $dataset->getRow(); $oAppCache = new AppCacheView(); - $aCount = $oAppCache->getAllCounters( $aTypes, $aRow['USR_UID'] ); + $aCount = $oAppCache->getAllCounters($aTypes, $aRow['USR_UID'], false); $newData = array( 'USR_UID' => $aRow['USR_UID'], 'USR_TOTAL_INBOX' => $aCount['to_do'], diff --git a/workflow/engine/classes/model/AppCacheView.php b/workflow/engine/classes/model/AppCacheView.php index 7bbe195b0..da2bceb0f 100755 --- a/workflow/engine/classes/model/AppCacheView.php +++ b/workflow/engine/classes/model/AppCacheView.php @@ -34,18 +34,18 @@ class AppCacheView extends BaseAppCacheView public $confCasesList; public $pathToAppCacheFiles; - public function getAllCounters($aTypes, $userUid, $processSummary = false) + public function getAllCounters($aTypes, $userUid, $flagPausedSupervisor = true) { $aResult = array(); foreach ($aTypes as $type) { - $aResult[$type] = $this->getListCounters($type, $userUid, $processSummary); + $aResult[$type] = $this->getListCounters($type, $userUid, $flagPausedSupervisor); } return $aResult; } - public function getListCounters($type, $userUid, $processSummary) + public function getListCounters($type, $userUid, $flagPausedSupervisor = true) { $distinct = true; @@ -65,7 +65,7 @@ class AppCacheView extends BaseAppCacheView $distinct = false; break; case 'paused': - $criteria = $this->getPausedCountCriteria($userUid); + $criteria = $this->getPausedCountCriteria($userUid, $flagPausedSupervisor); break; case 'completed': $criteria = $this->getCompletedCountCriteria($userUid); @@ -520,9 +520,10 @@ class AppCacheView extends BaseAppCacheView * gets the PAUSED cases list criteria * param $userUid the current userUid * param $doCount if true this will return the criteria for count cases only + * @param bool $flagSupervisor Flag to include the records of the supervisor * @return Criteria object $Criteria */ - public function getPaused($userUid, $doCount) + public function getPaused($userUid, $doCount, $flagSupervisor = true) { //adding configuration fields from the configuration options //and forming the criteria object @@ -538,12 +539,17 @@ class AppCacheView extends BaseAppCacheView //$criteria->add(AppCacheViewPeer::USR_UID, $userUid); if (!empty($userUid)) { - $criteria->add( - $criteria->getNewCriterion(AppCacheViewPeer::USR_UID, $userUid)->addOr( - $criteria->getNewCriterion(AppCacheViewPeer::PRO_UID, $aProcesses, Criteria::IN)) - ); + $criterionAux = $criteria->getNewCriterion(AppCacheViewPeer::USR_UID, $userUid, Criteria::EQUAL); + + if ($flagSupervisor && !empty($aProcesses)) { + $criterionAux = $criterionAux->addOr( + $criteria->getNewCriterion(AppCacheViewPeer::PRO_UID, $aProcesses, Criteria::IN) + ); + } + + $criteria->add($criterionAux); } else { - if (count($aProcesses) > 0) { + if ($flagSupervisor && !empty($aProcesses)) { $criteria->add(AppCacheViewPeer::PRO_UID, $aProcesses, Criteria::IN); } } @@ -568,11 +574,12 @@ class AppCacheView extends BaseAppCacheView /** * gets the PAUSED cases list criteria for count * param $userUid the current userUid + * @param bool $flagSupervisor Flag to include the records of the supervisor * @return Criteria object $Criteria */ - public function getPausedCountCriteria($userUid) + public function getPausedCountCriteria($userUid, $flagSupervisor = true) { - return $this->getPaused($userUid, true); + return $this->getPaused($userUid, true, $flagSupervisor); } /**