Creacion de la clase Trigger para Triggers Resources
This commit is contained in:
@@ -79,5 +79,148 @@ class Trigger
|
|||||||
throw $e;
|
throw $e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List of Triggers in process
|
||||||
|
*
|
||||||
|
* return array
|
||||||
|
*/
|
||||||
|
public function getTriggersCriteria($sProcessUID = '')
|
||||||
|
{
|
||||||
|
$criteria = $this->getTriggerCriteria();
|
||||||
|
|
||||||
|
$criteria->add(\TriggersPeer::PRO_UID, $sProcessUID);
|
||||||
|
$criteria->addAscendingOrderByColumn('TRI_TITLE');
|
||||||
|
|
||||||
|
$oDataset = \TriggersPeer::doSelectRS($criteria);
|
||||||
|
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||||
|
|
||||||
|
$oDataset->next();
|
||||||
|
$triggersArray = "";
|
||||||
|
//$triggersArray[] = array('TRI_UID' => 'char', 'PRO_UID' => 'char', 'TRI_TITLE' => 'char', 'TRI_DESCRIPTION' => 'char');
|
||||||
|
while ($aRow = $oDataset->getRow()) {
|
||||||
|
if (($aRow['TRI_TITLE'] == null) || ($aRow['TRI_TITLE'] == "")) {
|
||||||
|
// There is no transaltion for this Trigger name, try to get/regenerate the label
|
||||||
|
$triggerObj = $this->getDataTrigger($aRow['TRI_UID']);
|
||||||
|
$aRow['TRI_TITLE'] = $triggerObj['tri_title'];
|
||||||
|
$aRow['TRI_DESCRIPTION'] = $triggerObj['tri_description'];
|
||||||
|
}
|
||||||
|
$triggersArray[] = array_change_key_case($aRow, CASE_LOWER);
|
||||||
|
$oDataset->next();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $triggersArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get data for TriggerUid
|
||||||
|
*
|
||||||
|
* return array
|
||||||
|
*/
|
||||||
|
public function getDataTrigger($sTriggerUID = '')
|
||||||
|
{
|
||||||
|
$triggerO = new \Triggers();
|
||||||
|
$triggerArray = $triggerO->load($sTriggerUID);
|
||||||
|
if (isset($triggerArray['PRO_UID'])) {
|
||||||
|
unset($triggerArray['PRO_UID']);
|
||||||
|
}
|
||||||
|
$triggerArray = array_change_key_case($triggerArray, CASE_LOWER);
|
||||||
|
return $triggerArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete Trigger
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function deleteTrigger($sTriggerUID = '')
|
||||||
|
{
|
||||||
|
$oTrigger = new \Triggers();
|
||||||
|
$triggerObj = $oTrigger->load( $sTriggerUID );
|
||||||
|
|
||||||
|
$oTrigger->remove( $sTriggerUID );
|
||||||
|
$oStepTrigger = new \StepTrigger();
|
||||||
|
$oStepTrigger->removeTrigger( $sTriggerUID );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save Data for Trigger
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function saveTrigger($sProcessUID = '', $dataTrigger = array(), $create = false, $sTriggerUid = '')
|
||||||
|
{
|
||||||
|
if ( ($sProcessUID == '') || (count($dataTrigger) == 0) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$dataTrigger = array_change_key_case($dataTrigger, CASE_UPPER);
|
||||||
|
|
||||||
|
if ( $create && (isset($dataTrigger['TRI_UID'])) ) {
|
||||||
|
unset($dataTrigger['TRI_UID']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$dataTrigger= (array)$dataTrigger;
|
||||||
|
if (isset($dataTrigger['TRI_TYPE']) && $dataTrigger['TRI_TYPE'] == '') {
|
||||||
|
$dataTrigger['TRI_TYPE'] = 'SCRIPT';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($dataTrigger['TRI_TITLE'])) {
|
||||||
|
if (!$this->verifyNameTrigger($sProcessUID, $dataTrigger['TRI_TITLE'], $sTriggerUid)) {
|
||||||
|
throw new \Exception('There is a triggers with the same name in this process');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$dataTrigger['PRO_UID'] = $sProcessUID;
|
||||||
|
$oTrigger = new \Triggers();
|
||||||
|
if ($create) {
|
||||||
|
$oTrigger->create( $dataTrigger );
|
||||||
|
$dataTrigger['TRI_UID'] = $oTrigger->getTriUid();
|
||||||
|
}
|
||||||
|
|
||||||
|
$oTrigger->update( $dataTrigger );
|
||||||
|
if ($create) {
|
||||||
|
$dataResp = $oTrigger->load( $dataTrigger['TRI_UID'] );
|
||||||
|
$dataResp = array_change_key_case($dataResp, CASE_LOWER);
|
||||||
|
if (isset($dataResp['pro_uid'])) {
|
||||||
|
unset($dataResp['pro_uid']);
|
||||||
|
}
|
||||||
|
return $dataResp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verify name for trigger in process
|
||||||
|
*
|
||||||
|
* return boolean
|
||||||
|
*/
|
||||||
|
public function verifyNameTrigger($sProcessUID, $sTriggerName, $sTriggerUid = '')
|
||||||
|
{
|
||||||
|
$oCriteria = new \Criteria("workflow");
|
||||||
|
$oCriteria->addSelectColumn( \TriggersPeer::TRI_UID );
|
||||||
|
$oCriteria->add( \TriggersPeer::PRO_UID, $sProcessUID );
|
||||||
|
if ($sTriggerUid != '') {
|
||||||
|
$oCriteria->add( \TriggersPeer::TRI_UID, $sTriggerUid, \Criteria::NOT_EQUAL);
|
||||||
|
}
|
||||||
|
$oDataset = \TriggersPeer::doSelectRS( $oCriteria );
|
||||||
|
$oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC );
|
||||||
|
while ($oDataset->next()) {
|
||||||
|
$aRow = $oDataset->getRow();
|
||||||
|
|
||||||
|
$oCriteria1 = new \Criteria( 'workflow' );
|
||||||
|
$oCriteria1->addSelectColumn( 'COUNT(*) AS TRIGGERS' );
|
||||||
|
$oCriteria1->add( \ContentPeer::CON_CATEGORY, 'TRI_TITLE' );
|
||||||
|
$oCriteria1->add( \ContentPeer::CON_ID, $aRow['TRI_UID'] );
|
||||||
|
$oCriteria1->add( \ContentPeer::CON_VALUE, $sTriggerName );
|
||||||
|
$oCriteria1->add( \ContentPeer::CON_LANG, SYS_LANG );
|
||||||
|
$oDataset1 = \ContentPeer::doSelectRS( $oCriteria1 );
|
||||||
|
$oDataset1->setFetchmode( \ResultSet::FETCHMODE_ASSOC );
|
||||||
|
$oDataset1->next();
|
||||||
|
$aRow1 = $oDataset1->getRow();
|
||||||
|
|
||||||
|
if ($aRow1['TRIGGERS']) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,109 @@
|
|||||||
|
<?php
|
||||||
|
namespace Services\Api\ProcessMaker\Project;
|
||||||
|
|
||||||
|
use \ProcessMaker\Services\Api;
|
||||||
|
use \Luracast\Restler\RestException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Project\Activity\Step\Trigger Api Controller
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
*/
|
||||||
|
class Trigger extends Api
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param string $projectUid {@min 1} {@max 32}
|
||||||
|
*
|
||||||
|
* @url GET /:projectUid/triggers
|
||||||
|
*/
|
||||||
|
public function doGetTriggers($projectUid)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$trigger = new \BusinessModel\Trigger();
|
||||||
|
$response = $trigger->getTriggersCriteria($projectUid);
|
||||||
|
return $response;
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $projectUid {@min 1} {@max 32}
|
||||||
|
* @param string $triggerUid {@min 1} {@max 32}
|
||||||
|
*
|
||||||
|
* @url GET /:projectUid/trigger/:triggerUid
|
||||||
|
*/
|
||||||
|
public function doGetTrigger($projectUid, $triggerUid)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$trigger = new \BusinessModel\Trigger();
|
||||||
|
$response = $trigger->getDataTrigger($triggerUid);
|
||||||
|
return $response;
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $projectUid {@min 1} {@max 32}
|
||||||
|
* @param array $request_data
|
||||||
|
* @param string $tri_title {@from body} {@min 1}
|
||||||
|
* @param string $tri_description {@from body}
|
||||||
|
* @param string $tri_type {@from body} {@choice SCRIPT}
|
||||||
|
* @param string $tri_webbot {@from body}
|
||||||
|
* @param string $tri_param {@from body}
|
||||||
|
*
|
||||||
|
* @url POST /:projectUid/trigger
|
||||||
|
*/
|
||||||
|
public function doPostTrigger($projectUid, $request_data, $tri_title, $tri_description = '', $tri_type = 'SCRIPT', $tri_webbot = '', $tri_param = '')
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$trigger = new \BusinessModel\Trigger();
|
||||||
|
$response = $trigger->saveTrigger($projectUid, $request_data, true);
|
||||||
|
return $response;
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $projectUid {@min 1} {@max 32}
|
||||||
|
* @param string $triggerUid {@min 1} {@max 32}
|
||||||
|
* @param array $request_data
|
||||||
|
* @param string $tri_title {@from body}
|
||||||
|
* @param string $tri_description {@from body}
|
||||||
|
* @param string $tri_type {@from body} {@choice SCRIPT}
|
||||||
|
* @param string $tri_webbot {@from body}
|
||||||
|
* @param string $tri_param {@from body}
|
||||||
|
*
|
||||||
|
* @url PUT /:projectUid/trigger/:triggerUid
|
||||||
|
*/
|
||||||
|
public function doPutTrigger($projectUid, $triggerUid, $request_data, $tri_title = '', $tri_description = '', $tri_type = 'SCRIPT', $tri_webbot = '', $tri_param = '')
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$request_data['tri_uid'] = $triggerUid;
|
||||||
|
$trigger = new \BusinessModel\Trigger();
|
||||||
|
$trigger->saveTrigger($projectUid, $request_data, false, $triggerUid);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $projectUid {@min 1} {@max 32}
|
||||||
|
* @param string $triggerUid {@min 1} {@max 32}
|
||||||
|
*
|
||||||
|
* @url DELETE /:projectUid/trigger/:triggerUid
|
||||||
|
*/
|
||||||
|
public function doDeleteTrigger($projectUid, $triggerUid)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$trigger = new \BusinessModel\Trigger();
|
||||||
|
$response = $trigger->deleteTrigger($triggerUid);
|
||||||
|
return $response;
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -5,8 +5,8 @@
|
|||||||
debug = 1
|
debug = 1
|
||||||
|
|
||||||
[api]
|
[api]
|
||||||
version = 1.0
|
version = 1.0
|
||||||
vendor = "ProcessMaker - Michelangelo (Enterprise)"
|
vendor = "ProcessMaker - Michelangelo (Enterprise)"
|
||||||
|
|
||||||
[alias: test]
|
[alias: test]
|
||||||
test2 = "Services\Api\ProcessMaker\Test2"
|
test2 = "Services\Api\ProcessMaker\Test2"
|
||||||
@@ -15,9 +15,10 @@ debug = 1
|
|||||||
[alias: project]
|
[alias: project]
|
||||||
activity = "Services\Api\ProcessMaker\Project\Activity"
|
activity = "Services\Api\ProcessMaker\Project\Activity"
|
||||||
step = "Services\Api\ProcessMaker\Project\Activity\Step"
|
step = "Services\Api\ProcessMaker\Project\Activity\Step"
|
||||||
assignee = "Services\Api\ProcessMaker\Project\Activity\Assignee"
|
assignee = "Services\Api\ProcessMaker\Project\Activity\Assignee"
|
||||||
trigger = "Services\Api\ProcessMaker\Project\Activity\Step\Trigger"
|
trigger = "Services\Api\ProcessMaker\Project\Activity\Step\Trigger"
|
||||||
project = "Services\Api\ProcessMaker\Project"
|
project = "Services\Api\ProcessMaker\Project"
|
||||||
|
trigger2 = "Services\Api\ProcessMaker\Project\Trigger"
|
||||||
|
|
||||||
[alias: projects]
|
[alias: projects]
|
||||||
project = "Services\Api\ProcessMaker\Project"
|
project = "Services\Api\ProcessMaker\Project"
|
||||||
|
|||||||
Reference in New Issue
Block a user