/** * Get all Triggers of a Step * * @param string $stepUid Unique id of Step * @param string $taskUid Unique id of Task * * return array Return an array with all Triggers of a Step */ public function getTriggers($stepUid, $taskUid = "") { try { $arrayTrigger = array(); //Verify data if ($stepUid != "") { $this->throwExceptionIfNotExistsStep($stepUid); } if ($stepUid == "") { $this->throwExceptionIfNotExistsTask($taskUid); } //Get data $bmTrigger = new \ProcessMaker\BusinessModel\Trigger(); $bmStepTrigger = new \ProcessMaker\BusinessModel\Step\Trigger(); $stepTrigger = new \StepTrigger(); if ($stepUid != "") { //Load Step $step = new \Step(); $arrayStepData = $step->load($stepUid); $taskUid = $arrayStepData["TAS_UID"]; } $arrayTriggerType1 = array( "BEFORE" => "BEFORE", "AFTER" => "AFTER" ); $arrayTriggerType2 = array( "BEFORE_ASSIGNMENT" => "BEFORE", "BEFORE_ROUTING" => "BEFORE", "AFTER_ROUTING" => "AFTER" ); $arrayTriggerType = ($stepUid != "")? $arrayTriggerType1 : $arrayTriggerType2; foreach ($arrayTriggerType as $index => $value) { $triggerType = $index; $type = $value; $flagStepAssignTask = 0; switch ($triggerType) { case "BEFORE_ASSIGNMENT": $stepUid = "-1"; $flagStepAssignTask = 1; break; case "BEFORE_ROUTING": $stepUid = "-2"; $flagStepAssignTask = 1; break; case "AFTER_ROUTING": $stepUid = "-2"; $flagStepAssignTask = 1; break; } $stepTrigger->orderPosition($stepUid, $taskUid, $type); //Criteria $criteria = $bmTrigger->getTriggerCriteria(); $criteria->addSelectColumn(\StepTriggerPeer::ST_TYPE); $criteria->addSelectColumn(\StepTriggerPeer::ST_CONDITION); $criteria->addSelectColumn(\StepTriggerPeer::ST_POSITION); $criteria->addJoin(\StepTriggerPeer::TRI_UID, \TriggersPeer::TRI_UID, \Criteria::LEFT_JOIN); $criteria->add(\StepTriggerPeer::STEP_UID, $stepUid, \Criteria::EQUAL); $criteria->add(\StepTriggerPeer::TAS_UID, $taskUid, \Criteria::EQUAL); $criteria->add(\StepTriggerPeer::ST_TYPE, $type, \Criteria::EQUAL); $criteria->addAscendingOrderByColumn(\StepTriggerPeer::ST_POSITION); $rsCriteria = \StepTriggerPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); if ($flagStepAssignTask == 1) { $row["ST_TYPE"] = $triggerType; } $arrayTrigger[] = $bmStepTrigger->getTriggerDataFromRecord($row); } } return $arrayTrigger; } catch (\Exception $e) { throw $e; } }
/** * Get data of a Trigger * * @param string $stepUid Unique id of Step * @param string $type Type (BEFORE, AFTER, BEFORE_ASSIGNMENT, BEFORE_ROUTING, AFTER_ROUTING) * @param string $taskUid Unique id of Task * @param string $triggerUid Unique id of Trigger * * return array Return an array with data of a Trigger */ public function getTrigger($stepUid, $type, $taskUid, $triggerUid) { try { $typeIni = $type; $flagStepAssignTask = 0; if ($stepUid == "") { $flagStepAssignTask = 1; switch ($type) { case "BEFORE_ASSIGNMENT": $stepUid = "-1"; $type = "BEFORE"; break; case "BEFORE_ROUTING": $stepUid = "-2"; $type = "BEFORE"; break; case "AFTER_ROUTING": $stepUid = "-2"; $type = "AFTER"; break; } } //Verify data if (!$this->existsRecord($stepUid, $type, $taskUid, $triggerUid)) { throw new \Exception(\G::LoadTranslation("ID_RECORD_DOES_NOT_EXIST_IN_TABLE", array($stepUid . ", " . $type . ", " . $taskUid . ", " . $triggerUid, "STEP_TRIGGER"))); } //Get data $trigger = new \ProcessMaker\BusinessModel\Trigger(); $criteria = $trigger->getTriggerCriteria(); $criteria->addSelectColumn(\StepTriggerPeer::ST_TYPE); $criteria->addSelectColumn(\StepTriggerPeer::ST_CONDITION); $criteria->addSelectColumn(\StepTriggerPeer::ST_POSITION); $criteria->addJoin(\StepTriggerPeer::TRI_UID, \TriggersPeer::TRI_UID, \Criteria::LEFT_JOIN); $criteria->add(\TriggersPeer::TRI_UID, $triggerUid, \Criteria::EQUAL); $criteria->add(\StepTriggerPeer::STEP_UID, $stepUid, \Criteria::EQUAL); $criteria->add(\StepTriggerPeer::TAS_UID, $taskUid, \Criteria::EQUAL); $criteria->add(\StepTriggerPeer::ST_TYPE, $type, \Criteria::EQUAL); $rsCriteria = \StepTriggerPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $rsCriteria->next(); $row = $rsCriteria->getRow(); if ($flagStepAssignTask == 1) { $row["ST_TYPE"] = $typeIni; } return $this->getTriggerDataFromRecord($row); } catch (\Exception $e) { throw $e; } }
/** * @param string $projectUid {@min 1} {@max 32} * @param string $triggerUid {@min 1} {@max 32} * @return void * * @author Brayan Pereyra (Cochalo) <*****@*****.**> * @copyright Colosa - Bolivia * * @url DELETE /:projectUid/trigger/:triggerUid */ public function doDeleteTrigger($projectUid, $triggerUid) { try { $trigger = new \ProcessMaker\BusinessModel\Trigger(); $response = $trigger->deleteTrigger($triggerUid); } catch (\Exception $e) { throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); } }
/** * Update Process * * @param string $processUid Unique id of Process * @param array $arrayData Data * * return array Return data of the Process updated */ public function update($processUid, $arrayData) { try { $arrayData = array_change_key_case($arrayData, CASE_UPPER); //Verify data $this->throwExceptionIfNotExistsProcess($processUid, $this->arrayFieldNameForException["processUid"]); $this->throwExceptionIfDataNotMetFieldDefinition($arrayData, $this->arrayFieldDefinition, $this->arrayFieldNameForException, false); if (isset($arrayData["PRO_TITLE"])) { $this->throwExceptionIfExistsTitle($arrayData["PRO_TITLE"], $this->arrayFieldNameForException["processTitle"], $processUid); } if (isset($arrayData["PRO_CALENDAR"]) && $arrayData["PRO_CALENDAR"] . "" != "") { $calendar = new \ProcessMaker\BusinessModel\Calendar(); $calendar->throwExceptionIfNotExistsCalendar($arrayData["PRO_CALENDAR"], $this->arrayFieldNameForException["processCalendar"]); } if (isset($arrayData["PRO_CATEGORY"]) && $arrayData["PRO_CATEGORY"] . "" != "") { $this->throwExceptionIfNotExistsProcessCategory($arrayData["PRO_CATEGORY"], $this->arrayFieldNameForException["processCategory"]); } if (isset($arrayData["PRO_SUMMARY_DYNAFORM"]) && $arrayData["PRO_SUMMARY_DYNAFORM"] . "" != "") { $dynaForm = new \ProcessMaker\BusinessModel\DynaForm(); $dynaForm->throwExceptionIfNotExistsDynaForm($arrayData["PRO_SUMMARY_DYNAFORM"], $processUid, $this->arrayFieldNameForException["processSummaryDynaform"]); } if (isset($arrayData["PRO_DERIVATION_SCREEN_TPL"]) && $arrayData["PRO_DERIVATION_SCREEN_TPL"] . "" != "") { $this->throwExceptionIfNotExistsRoutingScreenTemplate($processUid, $arrayData["PRO_DERIVATION_SCREEN_TPL"], $this->arrayFieldNameForException["processDerivationScreenTpl"]); } $trigger = new \ProcessMaker\BusinessModel\Trigger(); if (isset($arrayData["PRO_TRI_DELETED"]) && $arrayData["PRO_TRI_DELETED"] . "" != "") { $trigger->throwExceptionIfNotExistsTrigger($arrayData["PRO_TRI_DELETED"], $processUid, $this->arrayFieldNameForException["processTriDeleted"]); } if (isset($arrayData["PRO_TRI_CANCELED"]) && $arrayData["PRO_TRI_CANCELED"] . "" != "") { $trigger->throwExceptionIfNotExistsTrigger($arrayData["PRO_TRI_CANCELED"], $processUid, $this->arrayFieldNameForException["processTriCanceled"]); } if (isset($arrayData["PRO_TRI_PAUSED"]) && $arrayData["PRO_TRI_PAUSED"] . "" != "") { $trigger->throwExceptionIfNotExistsTrigger($arrayData["PRO_TRI_PAUSED"], $processUid, $this->arrayFieldNameForException["processTriPaused"]); } if (isset($arrayData["PRO_TRI_REASSIGNED"]) && $arrayData["PRO_TRI_REASSIGNED"] . "" != "") { $trigger->throwExceptionIfNotExistsTrigger($arrayData["PRO_TRI_REASSIGNED"], $processUid, $this->arrayFieldNameForException["processTriReassigned"]); } if (isset($arrayData["PRO_PARENT"])) { $this->throwExceptionIfNotExistsProcess($arrayData["PRO_PARENT"], $this->arrayFieldNameForException["processParent"]); } if (isset($arrayData["PRO_CREATE_USER"]) && $arrayData["PRO_CREATE_USER"] . "" != "") { $this->throwExceptionIfNotExistsUser($arrayData["PRO_CREATE_USER"], $this->arrayFieldNameForException["processCreateUser"]); } //Update $process = new \Process(); $arrayDataBackup = $arrayData; $arrayData["PRO_UID"] = $processUid; if (isset($arrayData["PRO_ASSIGNMENT"])) { $arrayData["PRO_ASSIGNMENT"] = ($arrayData["PRO_ASSIGNMENT"] == 1)? "TRUE" : "FALSE"; } $arrayData["PRO_DYNAFORMS"] = array(); $arrayData["PRO_DYNAFORMS"]["PROCESS"] = (isset($arrayData["PRO_SUMMARY_DYNAFORM"]))? $arrayData["PRO_SUMMARY_DYNAFORM"] : ""; unset($arrayData["PRO_SUMMARY_DYNAFORM"]); $result = $process->update($arrayData); if (isset($arrayData["PRO_CALENDAR"])) { $calendar = new \Calendar(); $calendar->assignCalendarTo($processUid, $arrayData["PRO_CALENDAR"], "PROCESS"); //Save Calendar ID for this process } $arrayData = $arrayDataBackup; //Return if (!$this->formatFieldNameInUppercase) { $arrayData = array_change_key_case($arrayData, CASE_LOWER); } return $arrayData; } catch (\Exception $e) { throw $e; } }
/** * Update Trigger * * @param string $libraryName Library name * @param string $methodName Method name * @param string $triggerUid Unique id of Trigger * @param array $arrayData Data * * return array Return data of the Trigger updated */ public function update($libraryName, $methodName, $triggerUid, $arrayData) { try { $arrayData = array_change_key_case($arrayData, CASE_UPPER); //Verify data $this->throwExceptionIfLibraryAndMethodIsInvalidForTrigger($libraryName, $methodName, $triggerUid, $this->arrayFieldNameForException["libraryName"], $this->arrayFieldNameForException["methodName"], $this->arrayFieldNameForException["triggerUid"]); //Load Trigger $trigger = new \Triggers(); $arrayTriggerData = $trigger->load($triggerUid); $processUid = $arrayTriggerData["PRO_UID"]; //Verify data $process = new \ProcessMaker\BusinessModel\Process(); $trigger = new \ProcessMaker\BusinessModel\Trigger(); $process->throwExceptionIfDataNotMetFieldDefinition($arrayData, $this->arrayFieldDefinition, $this->arrayFieldNameForException, false); if (isset($arrayData["TRI_PARAMS"])) { $arrayParamData = $this->throwExceptionIfDataNotMetTriggerParamsDefinition($libraryName, $methodName, $arrayData, $this->arrayFieldNameForException["libraryName"], $this->arrayFieldNameForException["methodName"], $this->arrayFieldNameForException["triggerParams"]); } if (isset($arrayData["TRI_TITLE"])) { $trigger->throwExceptionIfExistsTitle($processUid, $arrayData["TRI_TITLE"], $this->arrayFieldNameForException["triggerTitle"], $triggerUid); } //TRI_PARAMS if (isset($arrayData["TRI_PARAMS"])) { $arrayData["TRI_PARAMS"] = array_change_key_case($arrayData["TRI_PARAMS"], CASE_UPPER); } //Update $trigger = new \Triggers(); $arrayData["TRI_UID"] = $triggerUid; $result = $trigger->update($arrayData); if (isset($arrayData["TRI_PARAMS"])) { $this->setData($libraryName, $methodName, $triggerUid, $arrayParamData); } //Return unset($arrayData["TRI_UID"]); if (!$this->formatFieldNameInUppercase) { if (isset($arrayData["TRI_PARAMS"])) { $arrayData["TRI_PARAMS"] = array_change_key_case($arrayData["TRI_PARAMS"], CASE_LOWER); } $arrayData = array_change_key_case($arrayData, CASE_LOWER); } return $arrayData; } catch (\Exception $e) { throw $e; } }