diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php index cc62051be..818ab45b3 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php @@ -1742,7 +1742,7 @@ class Cases * @author Brayan Pereyra (Cochalo) * @copyright Colosa - Bolivia */ - public function getCaseVariables($app_uid, $usr_uid, $dynaFormUid = null) + public function getCaseVariables($app_uid, $usr_uid, $dynaFormUid = null, $pro_uid = null, $act_uid = null, $app_index = null) { Validator::isString($app_uid, '$app_uid'); Validator::appUid($app_uid, '$app_uid'); @@ -1781,11 +1781,33 @@ class Cases $arrayCaseVariable = $this->__getFieldsAndValuesByDynaFormAndAppData( $arrayDynContent['items'][0], $arrayAppData, $arrayCaseVariable ); + } else { $arrayCaseVariable = $fields['APP_DATA']; } - //Return + //Get historyDate for Dynaform + if (!is_null($pro_uid) && !is_null($act_uid) && !is_null($app_index)) { + $oCriteriaAppHistory = new \Criteria("workflow"); + $oCriteriaAppHistory->addSelectColumn(\AppHistoryPeer::HISTORY_DATE); + $oCriteriaAppHistory->add(\AppHistoryPeer::APP_UID, $app_uid, \Criteria::EQUAL); + $oCriteriaAppHistory->add(\AppHistoryPeer::DEL_INDEX, $app_index, \Criteria::EQUAL); + $oCriteriaAppHistory->add(\AppHistoryPeer::PRO_UID, $pro_uid, \Criteria::EQUAL); + $oCriteriaAppHistory->add(\AppHistoryPeer::TAS_UID, $act_uid, \Criteria::EQUAL); + $oCriteriaAppHistory->add(\AppHistoryPeer::USR_UID, $usr_uid, \Criteria::EQUAL); + if (!is_null($dynaFormUid)) { + $oCriteriaAppHistory->add(\AppHistoryPeer::DYN_UID, $dynaFormUid, \Criteria::EQUAL); + } + $oCriteriaAppHistory->addDescendingOrderByColumn('HISTORY_DATE'); + $oCriteriaAppHistory->setLimit(1); + $oDataset = \AppDocumentPeer::doSelectRS($oCriteriaAppHistory); + $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + if ($aRow = $oDataset->getRow()) { + $dateHistory['SYS_VAR_UPDATE_DATE'] = $aRow['HISTORY_DATE']; + $arrayCaseVariable = array_merge($arrayCaseVariable, $dateHistory); + } + } return $arrayCaseVariable; } diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Light.php b/workflow/engine/src/ProcessMaker/Services/Api/Light.php index ad9dc581c..c6bb73a20 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Light.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Light.php @@ -1484,12 +1484,12 @@ class Light extends Api * * @url GET /:app_uid/variables */ - public function doGetCaseVariables($app_uid, $dyn_uid = null) + public function doGetCaseVariables($app_uid, $dyn_uid = null, $pro_uid = null, $act_uid = null, $app_index = null) { try { $usr_uid = $this->getUserId(); $cases = new \ProcessMaker\BusinessModel\Cases(); - $response = $cases->getCaseVariables($app_uid, $usr_uid, $dyn_uid); + $response = $cases->getCaseVariables($app_uid, $usr_uid, $dyn_uid, $pro_uid, $act_uid, $app_index); return DateTime::convertUtcToTimeZone($response); } catch (\Exception $e) { throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); @@ -1633,7 +1633,7 @@ class Light extends Api $_SESSION["PROCESS"] = $pro_uid; $_SESSION["INDEX"] = $app_index; $_SESSION["USER_LOGGED"] = $usr_uid; - + do { $conditionalSteps = $oCase->getNextStep($pro_uid, $app_uid, $app_index, $step_pos); if (is_array($conditionalSteps) && ( @@ -1649,11 +1649,10 @@ class Light extends Api //variables $cases = new \ProcessMaker\BusinessModel\Cases(); - $variables = $cases->getCaseVariables($app_uid, $usr_uid, $dyn_uid); + $variables = $cases->getCaseVariables($app_uid, $usr_uid, $dyn_uid, $pro_uid, $act_uid, $app_index); $variables = DateTime::convertUtcToTimeZone($variables); $response["variables"] = $variables; return $response; } - }