diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Light.php b/workflow/engine/src/ProcessMaker/BusinessModel/Light.php index 420364e3f..408b09aff 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Light.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Light.php @@ -79,7 +79,9 @@ class Light $newForm[$c]['title'] = $form['obj_title']; $newForm[$c]['description'] = $form['obj_description']; $newForm[$c]['stepId'] = $form["step_uid"]; + $newForm[$c]['stepUidObj'] = $form["step_uid_obj"]; $newForm[$c]['stepMode'] = $form['step_mode']; + $newForm[$c]['stepPosition'] = $form['step_position']; $trigger = $this->statusTriggers($step->doGetActivityStepTriggers($form["step_uid"], $tempTreeChild['taskId'], $tempTreeChild['processId'])); $newForm[$c]["triggers"] = $trigger; $c++; @@ -336,6 +338,48 @@ class Light } + /** + * Execute Trigger case + * + */ + public function doExecuteTriggerCase($usr_uid, $prj_uid, $act_uid, $cas_uid, $step_uid, $type) + { + $userData = $this->getUserData($usr_uid); + $c = new \Criteria(); + $c->clearSelectColumns(); + $c->addSelectColumn(\StepPeer::STEP_UID); + $c->addSelectColumn(\StepPeer::STEP_UID_OBJ); + $c->add(\StepPeer::TAS_UID, $act_uid); + $c->add(\StepPeer::STEP_TYPE_OBJ, 'DYNAFORM'); + $c->add(\StepPeer::STEP_UID, $step_uid); + $rs = \StepPeer::doSelectRS($c); + $rs->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $rs->next(); + $row = $rs->getRow(); + $step_uid_obj = $row['STEP_UID_OBJ']; + + $oCase = new \Cases(); + $Fields = $oCase->loadCase( $cas_uid ); + $_SESSION["APPLICATION"] = $cas_uid; + $_SESSION["PROCESS"] = $prj_uid; + $_SESSION["TASK"] = $act_uid; + $_SESSION["USER_LOGGED"] = $usr_uid; + $_SESSION["USR_USERNAME"] = $userData['firstName']; + $_SESSION["INDEX"] = $Fields["DEL_INDEX"] = \AppDelegation::getCurrentIndex($cas_uid); + $Fields['APP_DATA'] = array_merge( $Fields['APP_DATA'], G::getSystemConstants() ); + $triggers = $oCase->loadTriggers( $act_uid, 'DYNAFORM', $step_uid_obj, strtoupper($type) ); + if($triggers){ + $Fields['APP_DATA'] = $oCase->ExecuteTriggers( $act_uid, 'DYNAFORM', $step_uid_obj, strtoupper($type), $Fields['APP_DATA'] ); + } + $Fields['TAS_UID'] = $act_uid; + $Fields['CURRENT_DYNAFORM'] = $step_uid_obj; + $Fields['USER_UID'] = $usr_uid; + $Fields['PRO_UID'] = $prj_uid; + $oCase->updateCase( $cas_uid, $Fields ); + $response = array('status' => 'ok'); + return $response; + } + /** * Return Informaction User for derivate * assignment Users diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Light.php b/workflow/engine/src/ProcessMaker/Services/Api/Light.php index 20c3025cc..50c67e97a 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Light.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Light.php @@ -614,6 +614,7 @@ class Light extends Api $pmDynaForm->jsonr($result['formContent']); $result['index'] = $i; $result['stepId'] = $activitySteps[$i]["step_uid"]; + $result['stepUidObj'] = $activitySteps[$i]["step_uid_obj"]; $result['stepMode'] = $activitySteps[$i]['step_mode']; $result['stepPosition'] = $activitySteps[$i]['step_position']; $trigger = $oMobile->statusTriggers($step->doGetActivityStepTriggers($activitySteps[$i]["step_uid"], $act_uid, $prj_uid)); @@ -644,24 +645,8 @@ class Light extends Api { try { $userUid = $this->getUserId(); - $step = new \ProcessMaker\Services\Api\Project\Activity\Step(); - $triggers= $step->doGetActivityStepTriggers($step_uid, $act_uid, $prj_uid); - - $step = new \ProcessMaker\BusinessModel\Step(); - $step->setFormatFieldNameInUppercase(false); - $step->setArrayParamException(array("stepUid" => "step_uid", "taskUid" => "act_uid", "processUid" => "prj_uid")); $oMobile = new \ProcessMaker\BusinessModel\Light(); - $response = $oMobile->getUserData($userUid); - $_SESSION["PROCESS"] = $prj_uid; - $_SESSION["TASK"] = $act_uid; - $_SESSION["USR_USERNAME"] = $response['firstName']; - $cases = new \ProcessMaker\BusinessModel\Cases(); - foreach($triggers as $trigger){ - if (strtolower($trigger['st_type']) == $type) { - $cases->putExecuteTriggerCase($cas_uid, $trigger['tri_uid'], $userUid); - } - } - $response = array('status' => 'ok'); + $response = $oMobile->doExecuteTriggerCase($userUid, $prj_uid, $act_uid, $cas_uid, $step_uid, $type); } catch (\Exception $e) { throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); }