diff --git a/workflow/engine/src/BusinessModel/Step.php b/workflow/engine/src/BusinessModel/Step.php new file mode 100644 index 000000000..5a75001df --- /dev/null +++ b/workflow/engine/src/BusinessModel/Step.php @@ -0,0 +1,201 @@ +create(array("PRO_UID" => $processUid, "TAS_UID" => $taskUid)); + + if (!isset($arrayData["step_position"]) || $arrayData["step_position"] == "") { + $arrayData["step_position"] = $step->getNextPosition($taskUid) - 1; + } + + $this->update($stepUid, $arrayData); + + return $stepUid; + } catch (\Exception $e) { + throw $e; + } + } + + /** + * Update Step of an Task + * + * @param string $stepUid + * @param array $arrayData + * + * return void + */ + public function update($stepUid, $arrayData) + { + try { + $step = new \Step(); + + $arrayUpdateData = array(); + + $arrayUpdateData["STEP_UID"] = $stepUid; + + if (isset($arrayData["step_type_obj"]) && $arrayData["step_type_obj"] != "") { + $arrayUpdateData["STEP_TYPE_OBJ"] = $arrayData["step_type_obj"]; + } + + if (isset($arrayData["step_uid_obj"]) && $arrayData["step_uid_obj"] != "") { + $arrayUpdateData["STEP_UID_OBJ"] = $arrayData["step_uid_obj"]; + } + + if (isset($arrayData["step_condition"])) { + $arrayUpdateData["STEP_CONDITION"] = $arrayData["step_condition"]; + } + + if (isset($arrayData["step_position"]) && $arrayData["step_position"] != "") { + $arrayUpdateData["STEP_POSITION"] = (int)($arrayData["step_position"]); + } + + if (isset($arrayData["step_mode"]) && $arrayData["step_mode"] != "") { + $arrayUpdateData["STEP_MODE"] = $arrayData["step_mode"]; + } + + $step->update($arrayUpdateData); + } catch (\Exception $e) { + throw $e; + } + } + + /** + * Delete Step of an Task + * + * @param string $stepUid + * + * return void + */ + public function delete($stepUid) + { + try { + //Get position + $criteria = new \Criteria("workflow"); + + $criteria->add(\StepPeer::STEP_UID, $stepUid, \Criteria::EQUAL); + + $rsCriteria = \StepPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + $rsCriteria->next(); + + $row = $rsCriteria->getRow(); + + $position = (int)($row["STEP_POSITION"]); + + //Delete + $step = new \Step(); + + $step->reOrder($stepUid, $position); + $step->remove($stepUid); + } catch (\Exception $e) { + throw $e; + } + } + + /** + * Get data of an Step + * + * @param string $stepUid Unique id of the Step + * + * return array + */ + public function getStep($stepUid) + { + try { + $arrayStep = array(); + + //Call plugin + $pluginRegistry = &\PMPluginRegistry::getSingleton(); + $externalSteps = $pluginRegistry->getSteps(); + + $criteria = new \Criteria("workflow"); + + $criteria->add(\StepPeer::STEP_UID, $stepUid, \Criteria::EQUAL); + + $rsCriteria = \StepPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + $rsCriteria->next(); + + $row = $rsCriteria->getRow(); + + $titleObj = ""; + $descriptionObj = ""; + + switch ($row["STEP_TYPE_OBJ"]) { + case "DYNAFORM": + $dynaform = new \Dynaform(); + $arrayData = $dynaform->load($row["STEP_UID_OBJ"]); + + $titleObj = $arrayData["DYN_TITLE"]; + $descriptionObj = $arrayData["DYN_DESCRIPTION"]; + break; + case "INPUT_DOCUMENT": + $inputDocument = new \InputDocument(); + $arrayData = $inputDocument->getByUid($row["STEP_UID_OBJ"]); + + if ($arrayData === false) { + return $arrayStep; + } + + $titleObj = $arrayData["INP_DOC_TITLE"]; + $descriptionObj = $arrayData["INP_DOC_DESCRIPTION"]; + break; + case "OUTPUT_DOCUMENT": + $outputDocument = new \OutputDocument(); + $arrayData = $outputDocument->getByUid($row["STEP_UID_OBJ"]); + + if ($arrayData === false) { + return $arrayStep; + } + + $titleObj = $arrayData["OUT_DOC_TITLE"]; + $descriptionObj = $arrayData["OUT_DOC_DESCRIPTION"]; + break; + case "EXTERNAL": + $titleObj = "unknown " . $row["STEP_UID"]; + + if (is_array($externalSteps) && count($externalSteps) > 0) { + foreach ($externalSteps as $key => $value) { + if ($value->sStepId == $row["STEP_UID_OBJ"]) { + $titleObj = $value->sStepTitle; + } + } + } + break; + } + + $arrayStep = array( + "step_uid" => $stepUid, + "step_type_obj" => $row["STEP_TYPE_OBJ"], + "step_uid_obj" => $row["STEP_UID_OBJ"], + "step_condition" => $row["STEP_CONDITION"], + "step_position" => $row["STEP_POSITION"], + "step_mode" => $row["STEP_MODE"], + "obj_title" => $titleObj, + "obj_description" => $descriptionObj + ); + + return $arrayStep; + } catch (\Exception $e) { + throw $e; + } + } +} + diff --git a/workflow/engine/src/BusinessModel/Task.php b/workflow/engine/src/BusinessModel/Task.php index c79e1740c..5f61f4997 100644 --- a/workflow/engine/src/BusinessModel/Task.php +++ b/workflow/engine/src/BusinessModel/Task.php @@ -151,7 +151,7 @@ class Task //Copy of processmaker/workflow/engine/methods/tasks/tasks_Ajax.php //case "saveTaskData": try { if (isset($arrayProperty['properties'])) { - $arrayProperty = array_change_key_case($arrayProperty['properties'], CASE_UPPER); + $arrayProperty = array_change_key_case($arrayProperty['properties'], CASE_UPPER); } $arrayProperty["TAS_UID"] = $taskUid; $arrayProperty["PRO_UID"] = $processUid; @@ -208,7 +208,7 @@ class Task $arrayProperty["TAS_ASSIGN_TYPE"] = "SELF_SERVICE"; if (trim($arrayProperty["TAS_GROUP_VARIABLE"]) == "") { - $arrayProperty["TAS_GROUP_VARIABLE"] = "@@SYS_GROUP_TO_BE_ASSIGNED"; + $arrayProperty["TAS_GROUP_VARIABLE"] = "@@SYS_GROUP_TO_BE_ASSIGNED"; } } else { $arrayProperty["TAS_GROUP_VARIABLE"] = ""; @@ -252,197 +252,248 @@ class Task * * @param string $taskUid * @param string $processUid - * @param bool $keyCaseToLower - * @param int $start - * @param int $limit * * return array - * - * @access public */ - public function getStepsList($taskUid, $processUid, $keyCaseToLower = false, $start = 0, $limit = 25) + public function getAvailableSteps($taskUid, $processUid) { try { - //G::LoadClass("BasePeer"); - require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "class.BasePeer.php"); + $arrayAvailableStep = array(); - $arrayData = array(); - $keyCase = ($keyCaseToLower)? CASE_LOWER : CASE_UPPER; + //Get Uids + $arrayUid = array(); - //Criteria - $processMap = new \ProcessMap(); + $tasks = new \Tasks(); + $arrayStep = $tasks->getStepsOfTask($taskUid); - $criteria = $processMap->getAvailableBBCriteria($processUid, $taskUid); - - if ($criteria->getDbName() == "dbarray") { - $rsCriteria = \ArrayBasePeer::doSelectRS($criteria); - } else { - $rsCriteria = \GulliverBasePeer::doSelectRS($criteria); + foreach ($arrayStep as $step) { + $arrayUid[] = $step["STEP_UID_OBJ"]; } + //Array DB + $arraydbStep = array(); + + $arraydbStep[] = array( + "obj_uid" => "char", + "obj_title" => "char", + "obj_description" => "char", + "obj_type" => "char" + ); + + $delimiter = \DBAdapter::getStringDelimiter(); + + //DynaForms + $criteria = new \Criteria("workflow"); + + $criteria->addSelectColumn(\DynaformPeer::DYN_UID); + $criteria->addAsColumn("DYN_TITLE", "CT.CON_VALUE"); + $criteria->addAsColumn("DYN_DESCRIPTION", "CD.CON_VALUE"); + + $criteria->addAlias("CT", "CONTENT"); + $criteria->addAlias("CD", "CONTENT"); + + $arrayCondition = array(); + $arrayCondition[] = array(\DynaformPeer::DYN_UID, "CT.CON_ID", \Criteria::EQUAL); + $arrayCondition[] = array("CT.CON_CATEGORY", $delimiter . "DYN_TITLE" . $delimiter, \Criteria::EQUAL); + $arrayCondition[] = array("CT.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL); + $criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN); + + $arrayCondition = array(); + $arrayCondition[] = array(\DynaformPeer::DYN_UID, "CD.CON_ID", \Criteria::EQUAL); + $arrayCondition[] = array("CD.CON_CATEGORY", $delimiter . "DYN_DESCRIPTION" . $delimiter, \Criteria::EQUAL); + $arrayCondition[] = array("CD.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL); + $criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN); + + $criteria->add(\DynaformPeer::PRO_UID, $processUid, \Criteria::EQUAL); + $criteria->add(\DynaformPeer::DYN_UID, $arrayUid, \Criteria::NOT_IN); + $criteria->add(\DynaformPeer::DYN_TYPE, "xmlform", \Criteria::EQUAL); + + $rsCriteria = \DynaformPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); - $arrayData[] = array_change_key_case($row, $keyCase); - } - - return array_change_key_case( - array("NUM_RECORDS" => count($arrayData), "DATA" => array_slice($arrayData, $start, $limit)), - $keyCase - ); - } catch (Exception $e) { - throw $e; - } - } - - /** - * Get all steps of the Task - * - * @param string $taskUid - * @param bool $keyCaseToLower - * - * return array - * - * @access public - */ - public function getSteps($taskUid, $keyCaseToLower = false) - { - try { - //G::LoadClass("BasePeer"); - require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "class.BasePeer.php"); - - $arrayData = array(); - $keyCase = ($keyCaseToLower)? CASE_LOWER : CASE_UPPER; - - //Criteria - $processMap = new \ProcessMap(); - - $criteria = $processMap->getStepsCriteria($taskUid); - - if ($criteria->getDbName() == "dbarray") { - $rsCriteria = \ArrayBasePeer::doSelectRS($criteria); - } else { - $rsCriteria = \GulliverBasePeer::doSelectRS($criteria); - } - - $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - - while ($rsCriteria->next()) { - $row = $rsCriteria->getRow(); - - $arrayData[] = array_change_key_case($row, $keyCase); - } - - return $arrayData; - } catch (Exception $e) { - throw $e; - } - } - - /** - * Get all triggers of the Task - * - * @param string $taskUid - * @param bool $keyCaseToLower - * - * return array - * - * @access public - */ - public function getTriggers($taskUid, $keyCaseToLower = false) - { - try { - //G::LoadClass("BasePeer"); - require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "class.BasePeer.php"); - - $arrayData = array(); - $keyCase = ($keyCaseToLower)? CASE_LOWER : CASE_UPPER; - - $arrayTriggerType1 = array( - "BEFORE" => "BEFORE", - "AFTER" => "AFTER" - ); - $arrayTriggerType2 = array( - "BEFORE_ASSIGNMENT" => "BEFORE", - "BEFORE_ROUTING" => "BEFORE", - "AFTER_ROUTING" => "AFTER" - ); - - $processMap = new \ProcessMap(); - $stepTgr = new \StepTrigger(); - - $arraySteps = $this->getSteps($taskUid); - $n = count($arraySteps) + 1; - - $arraySteps[] = array( - "STEP_UID" => "", - //"STEP_TITLE" => G::LoadTranslation("ID_ASSIGN_TASK"), - "STEP_TITLE" => "Assign Task", - "STEP_TYPE_OBJ" => "", - "STEP_MODE" => "", - "STEP_CONDITION" => "", - "STEP_POSITION" => $n - ); - - foreach ($arraySteps as $index1 => $value1) { - $step = $value1; - - $stepUid = $step["STEP_UID"]; - - //Set data - $arrayDataAux1 = array(); - - $arrayDataAux1["STEP_UID"] = $stepUid; - - $arrayTriggerType = ($stepUid != "")? $arrayTriggerType1 : $arrayTriggerType2; - - foreach ($arrayTriggerType as $index2 => $value2) { - $triggerType = $index2; - $type = $value2; - - switch ($triggerType) { - case "BEFORE_ASSIGNMENT": - $stepUid = "-1"; - break; - case "BEFORE_ROUTING": - $stepUid = "-2"; - break; - case "AFTER_ROUTING": - $stepUid = "-2"; - break; - } - - $stepTgr->orderPosition($stepUid, $taskUid, $type); - - $arrayDataAux2 = array(); - - //Criteria - $criteria = $processMap->getStepTriggersCriteria($stepUid, $taskUid, $type); - - if ($criteria->getDbName() == "dbarray") { - $rsCriteria = \ArrayBasePeer::doSelectRS($criteria); - } else { - $rsCriteria = \GulliverBasePeer::doSelectRS($criteria); - } - - $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - - while ($rsCriteria->next()) { - $row = $rsCriteria->getRow(); - - $arrayDataAux2[] = array_change_key_case($row, $keyCase); - } - - $arrayDataAux1[$triggerType] = $arrayDataAux2; + if ($row["DYN_TITLE"] . "" == "") { + //There is no transaltion for this Document name, try to get/regenerate the label + $row["DYN_TITLE"] = \Content::Load("DYN_TITLE", "", $row["DYN_UID"], SYS_LANG); } - $arrayData[] = array_change_key_case($arrayDataAux1, $keyCase); + $arraydbStep[] = array( + "obj_uid" => $row["DYN_UID"], + "obj_title" => $row["DYN_TITLE"], + "obj_description" => $row["DYN_DESCRIPTION"], + "obj_type" => "DYNAFORM" + ); } - return $arrayData; - } catch (Exception $e) { + //InputDocuments + $criteria = new \Criteria("workflow"); + + $criteria->addSelectColumn(\InputDocumentPeer::INP_DOC_UID); + $criteria->addAsColumn("INP_DOC_TITLE", "CT.CON_VALUE"); + $criteria->addAsColumn("INP_DOC_DESCRIPTION", "CD.CON_VALUE"); + + $criteria->addAlias("CT", "CONTENT"); + $criteria->addAlias("CD", "CONTENT"); + + $arrayCondition = array(); + $arrayCondition[] = array(\InputDocumentPeer::INP_DOC_UID, "CT.CON_ID", \Criteria::EQUAL); + $arrayCondition[] = array("CT.CON_CATEGORY", $delimiter . "INP_DOC_TITLE" . $delimiter, \Criteria::EQUAL); + $arrayCondition[] = array("CT.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL); + $criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN); + + $arrayCondition = array(); + $arrayCondition[] = array(\InputDocumentPeer::INP_DOC_UID, "CD.CON_ID", \Criteria::EQUAL); + $arrayCondition[] = array("CD.CON_CATEGORY", $delimiter . "INP_DOC_DESCRIPTION" . $delimiter, \Criteria::EQUAL); + $arrayCondition[] = array("CD.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL); + $criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN); + + $criteria->add(\InputDocumentPeer::PRO_UID, $processUid, \Criteria::EQUAL); + $criteria->add(\InputDocumentPeer::INP_DOC_UID, $arrayUid, \Criteria::NOT_IN); + + $rsCriteria = \InputDocumentPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + while ($rsCriteria->next()) { + $row = $rsCriteria->getRow(); + + if ($row["INP_DOC_TITLE"] . "" == "") { + //There is no transaltion for this Document name, try to get/regenerate the label + $row["INP_DOC_TITLE"] = \Content::Load("INP_DOC_TITLE", "", $row["INP_DOC_UID"], SYS_LANG); + } + + $arraydbStep[] = array( + "obj_uid" => $row["INP_DOC_UID"], + "obj_title" => $row["INP_DOC_TITLE"], + "obj_description" => $row["INP_DOC_DESCRIPTION"], + "obj_type" => "INPUT_DOCUMENT" + ); + } + + //OutputDocuments + $criteria = new \Criteria("workflow"); + + $criteria->addSelectColumn(\OutputDocumentPeer::OUT_DOC_UID); + $criteria->addAsColumn("OUT_DOC_TITLE", "CT.CON_VALUE"); + $criteria->addAsColumn("OUT_DOC_DESCRIPTION", "CD.CON_VALUE"); + + $criteria->addAlias("CT", "CONTENT"); + $criteria->addAlias("CD", "CONTENT"); + + $arrayCondition = array(); + $arrayCondition[] = array(\OutputDocumentPeer::OUT_DOC_UID, "CT.CON_ID", \Criteria::EQUAL); + $arrayCondition[] = array("CT.CON_CATEGORY", $delimiter . "OUT_DOC_TITLE" . $delimiter, \Criteria::EQUAL); + $arrayCondition[] = array("CT.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL); + $criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN); + + $arrayCondition = array(); + $arrayCondition[] = array(\OutputDocumentPeer::OUT_DOC_UID, "CD.CON_ID", \Criteria::EQUAL); + $arrayCondition[] = array("CD.CON_CATEGORY", $delimiter . "OUT_DOC_DESCRIPTION" . $delimiter, \Criteria::EQUAL); + $arrayCondition[] = array("CD.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL); + $criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN); + + $criteria->add(\OutputDocumentPeer::PRO_UID, $processUid, \Criteria::EQUAL); + $criteria->add(\OutputDocumentPeer::OUT_DOC_UID, $arrayUid, \Criteria::NOT_IN); + + $rsCriteria = \OutputDocumentPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + while ($rsCriteria->next()) { + $row = $rsCriteria->getRow(); + + if ($row["OUT_DOC_TITLE"] . "" == "") { + //There is no transaltion for this Document name, try to get/regenerate the label + $row["OUT_DOC_TITLE"] = \Content::Load("OUT_DOC_TITLE", "", $row["OUT_DOC_UID"], SYS_LANG); + } + + $arraydbStep[] = array( + "obj_uid" => $row["OUT_DOC_UID"], + "obj_title" => $row["OUT_DOC_TITLE"], + "obj_description" => $row["OUT_DOC_DESCRIPTION"], + "obj_type" => "OUTPUT_DOCUMENT" + ); + } + + //Call plugin + $pluginRegistry = &\PMPluginRegistry::getSingleton(); + $externalSteps = $pluginRegistry->getSteps(); + + if (is_array($externalSteps) && count($externalSteps) > 0) { + foreach ($externalSteps as $key => $value) { + $arraydbStep[] = array( + "obj_uid" => $value->sStepId, + "obj_title" => $value->sStepTitle, + "obj_description" => "", + "obj_type" => "EXTERNAL" + ); + } + } + + \G::LoadClass("ArrayPeer"); + + global $_DBArray; + + $_DBArray = (isset($_SESSION["_DBArray"]))? $_SESSION["_DBArray"] : ""; + $_DBArray["STEP"] = $arraydbStep; + + $_SESSION["_DBArray"] = $_DBArray; + + $criteria = new \Criteria("dbarray"); + + $criteria->setDBArrayTable("STEP"); + $criteria->addAscendingOrderByColumn("obj_type"); + $criteria->addAscendingOrderByColumn("obj_title"); + + $rsCriteria = \ArrayBasePeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + while ($rsCriteria->next()) { + $row = $rsCriteria->getRow(); + + $arrayAvailableStep[] = $row; + } + + return $arrayAvailableStep; + } catch (\Exception $e) { + throw $e; + } + } + + /** + * Get all steps of an Task + * + * @param string $taskUid Unique id of the Task + * + * return array + */ + public function getSteps($taskUid) + { + try { + $arrayStep = array(); + + $step = new \BusinessModel\Step(); + + $criteria = new \Criteria("workflow"); + + $criteria->add(\StepPeer::TAS_UID, $taskUid, \Criteria::EQUAL); + $criteria->addAscendingOrderByColumn(\StepPeer::STEP_POSITION); + + $rsCriteria = \StepPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + while ($rsCriteria->next()) { + $row = $rsCriteria->getRow(); + + $arrayData = $step->getStep($row["STEP_UID"]); + + if (count($arrayData) > 0) { + $arrayStep[] = $arrayData; + } + } + + return $arrayStep; + } catch (\Exception $e) { throw $e; } } diff --git a/workflow/engine/src/Services/Api/ProcessMaker/Project/Activity.php b/workflow/engine/src/Services/Api/ProcessMaker/Project/Activity.php index a8d640980..7509e971d 100644 --- a/workflow/engine/src/Services/Api/ProcessMaker/Project/Activity.php +++ b/workflow/engine/src/Services/Api/ProcessMaker/Project/Activity.php @@ -11,7 +11,7 @@ use \Luracast\Restler\RestException; */ class Activity extends Api { - /** + /** * @url GET /:projectUid/activity/:activityUid */ public function doGetProjectActivity($projectUid, $activityUid, $filter = '') @@ -54,7 +54,7 @@ class Activity extends Api - /** + /** * @url PUT /:projectUid/activity/:activityUid */ public function doPutProjectActivity($projectUid, $activityUid, $request_data = array()) @@ -69,7 +69,7 @@ class Activity extends Api - /** + /** * @url DELETE /:projectUid/activity/:activityUid */ public function doDeleteProjectActivity($projectUid, $activityUid) @@ -81,5 +81,37 @@ class Activity extends Api throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); } } + + /** + * @url GET /:projectUid/activity/:activityUid/steps + */ + public function doGetActivitySteps($activityUid, $projectUid) + { + try { + $task = new \BusinessModel\Task(); + + $response = $task->getSteps($activityUid); + + return $response; + } catch (\Exception $e) { + throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); + } + } + + /** + * @url GET /:projectUid/activity/:activityUid/available-steps + */ + public function doGetActivityAvailableSteps($activityUid, $projectUid) + { + try { + $task = new \BusinessModel\Task(); + + $response = $task->getAvailableSteps($activityUid, $projectUid); + + return $response; + } catch (\Exception $e) { + throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); + } + } } diff --git a/workflow/engine/src/Services/Api/ProcessMaker/Project/Activity/Step.php b/workflow/engine/src/Services/Api/ProcessMaker/Project/Activity/Step.php new file mode 100644 index 000000000..b6aa76feb --- /dev/null +++ b/workflow/engine/src/Services/Api/ProcessMaker/Project/Activity/Step.php @@ -0,0 +1,76 @@ +getStep($stepUid); + + return $response; + } catch (\Exception $e) { + throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); + } + } + + /** + * @url POST /:projectUid/activity/:activityUid/step + */ + public function doPostActivityStep($activityUid, $projectUid, $request_data = array()) + { + try { + $step = new \BusinessModel\Step(); + + $stepUid = $step->create($activityUid, $projectUid, $request_data); + + $response = array("old_uid" => $request_data["step_uid"], "new_uid" => $stepUid); + + return $response; + } catch (\Exception $e) { + throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); + } + } + + /** + * @url PUT /:projectUid/activity/:activityUid/step/:stepUid + */ + public function doPutActivityStep($stepUid, $activityUid, $projectUid, $request_data = array()) + { + try { + $step = new \BusinessModel\Step(); + + $step->update($stepUid, $request_data); + } catch (\Exception $e) { + throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); + } + } + + /** + * @url DELETE /:projectUid/activity/:activityUid/step/:stepUid + */ + public function doDeleteActivityStep($stepUid, $activityUid, $projectUid) + { + try { + $step = new \BusinessModel\Step(); + + $step->delete($stepUid); + } catch (\Exception $e) { + throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); + } + } +} +