From d3354aca123c4bb8e62ebfa0dd97bc19a3964782 Mon Sep 17 00:00:00 2001 From: Victor Saisa Lopez Date: Wed, 15 Jan 2014 17:09:37 -0400 Subject: [PATCH] ProcessMaker-MA "Case Tracker (endpoints)" - Se han implementado los siguientes Endpoints: PUT /api/1.0/{workspace}/project/{prj_uid}/case-tracker/object/{obj_uid} DELETE /api/1.0/{workspace}/project/{prj_uid}/case-tracker/object/{obj_uid} --- .../engine/src/BusinessModel/CaseTracker.php | 24 -- .../src/BusinessModel/CaseTrackerObject.php | 248 ++++++++---------- .../engine/src/BusinessModel/DynaForm.php | 22 +- .../Api/ProcessMaker/Project/CaseTracker.php | 44 ++-- .../Project/CaseTrackerObject.php | 99 +++---- 5 files changed, 183 insertions(+), 254 deletions(-) diff --git a/workflow/engine/src/BusinessModel/CaseTracker.php b/workflow/engine/src/BusinessModel/CaseTracker.php index 3b888168d..273bb6c68 100644 --- a/workflow/engine/src/BusinessModel/CaseTracker.php +++ b/workflow/engine/src/BusinessModel/CaseTracker.php @@ -3,30 +3,6 @@ namespace BusinessModel; class CaseTracker { - /** - * Get data from a request data - * - * @param object $requestData Request data - * - * return array Return an array with data of request data - */ - public function getArrayDataFromRequestData($requestData) - { - try { - $arrayData = array(); - - $requestData = (array)($requestData); - - foreach ($requestData as $key => $value) { - $arrayData[$key] = $value; - } - - return $arrayData; - } catch (\Exception $e) { - throw $e; - } - } - /** * Update Case Tracker data of a Process * diff --git a/workflow/engine/src/BusinessModel/CaseTrackerObject.php b/workflow/engine/src/BusinessModel/CaseTrackerObject.php index 2ed1d4b73..c4d6bacf9 100644 --- a/workflow/engine/src/BusinessModel/CaseTrackerObject.php +++ b/workflow/engine/src/BusinessModel/CaseTrackerObject.php @@ -3,58 +3,6 @@ namespace BusinessModel; class CaseTrackerObject { - ///** - // * Get data of unique ids of a DynaForm (Unique id of Process) - // * - // * @param string $caseTrackerObjectUid Unique id of Case Tracker Object - // * - // * return array - // */ - //public function getDataUids($caseTrackerObjectUid) - //{ - // try { - // $criteria = new \Criteria("workflow"); - // - // $criteria->addSelectColumn(\DynaformPeer::PRO_UID); - // $criteria->add(\DynaformPeer::DYN_UID, $caseTrackerObjectUid, \Criteria::EQUAL); - // - // $rsCriteria = \DynaformPeer::doSelectRS($criteria); - // $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - // - // if ($rsCriteria->next()) { - // return $rsCriteria->getRow(); - // } else { - // throw (new \Exception(str_replace(array("{0}", "{1}"), array($caseTrackerObjectUid, "DYNAFORM"), "The UID \"{0}\" doesn't exist in table {1}"))); - // } - // } catch (\Exception $e) { - // throw $e; - // } - //} - - /** - * Get data from a request data - * - * @param object $requestData Request data - * - * return array Return an array with data of request data - */ - public function getArrayDataFromRequestData($requestData) - { - try { - $arrayData = array(); - - $requestData = (array)($requestData); - - foreach ($requestData as $key => $value) { - $arrayData[$key] = $value; - } - - return $arrayData; - } catch (\Exception $e) { - throw $e; - } - } - /** * Verify if exists the record in table CASE_TRACKER_OBJECT * @@ -177,87 +125,123 @@ class CaseTrackerObject } } - ///** - // * Update DynaForm - // * - // * @param string $caseTrackerObjectUid Unique id of Case Tracker Object - // * @param array $arrayData Data - // * - // * return array Return data of the DynaForm updated - // */ - //public function update($caseTrackerObjectUid, $arrayData) - //{ - // try { - // $arrayData = array_change_key_case($arrayData, CASE_UPPER); - // - // //Verify data - // $dynaForm = new \Dynaform(); - // - // if (!$dynaForm->dynaformExists($caseTrackerObjectUid)) { - // throw (new \Exception(str_replace(array("{0}", "{1}"), array($caseTrackerObjectUid, "DYNAFORM"), "The UID \"{0}\" doesn't exist in table {1}"))); - // } - // - // //Uids - // $arrayDataUid = $this->getDataUids($caseTrackerObjectUid); - // - // $processUid = $arrayDataUid["PRO_UID"]; - // - // //Verify data - // if (isset($arrayData["DYN_TITLE"]) && $this->titleExists($processUid, $arrayData["DYN_TITLE"], $caseTrackerObjectUid)) { - // throw (new \Exception(\G::LoadTranslation("ID_EXIST_DYNAFORM"))); - // } - // - // //Update - // $arrayData["DYN_UID"] = $caseTrackerObjectUid; - // - // $result = $dynaForm->update($arrayData); - // - // //Return - // unset($arrayData["DYN_UID"]); - // - // return array_change_key_case($arrayData, CASE_LOWER); - // } catch (\Exception $e) { - // throw $e; - // } - //} - // - ///** - // * Delete DynaForm - // * - // * @param string $caseTrackerObjectUid Unique id of Case Tracker Object - // * - // * return void - // */ - //public function delete($caseTrackerObjectUid) - //{ - // try { - // //Verify data - // $dynaForm = new \Dynaform(); - // - // if (!$dynaForm->dynaformExists($caseTrackerObjectUid)) { - // throw (new \Exception(str_replace(array("{0}", "{1}"), array($caseTrackerObjectUid, "DYNAFORM"), "The UID \"{0}\" doesn't exist in table {1}"))); - // } - // - // //Uids - // $arrayDataUid = $this->getDataUids($caseTrackerObjectUid); - // - // $processUid = $arrayDataUid["PRO_UID"]; - // - // //Verify data - // if ($this->dynaFormAssignedStep($caseTrackerObjectUid, $processUid)) { - // throw (new \Exception("You cannot delete this Dynaform while it is assigned to a step")); - // } - // - // //Delete + /** + * Update Case Tracker Object + * + * @param string $caseTrackerObjectUid Unique id of Case Tracker Object + * @param array $arrayData Data + * + * return array Return data of the Case Tracker Object updated + */ + public function update($caseTrackerObjectUid, $arrayData) + { + try { + $arrayData = array_change_key_case($arrayData, CASE_UPPER); - // - // //In table CASE_TRACKER_OBJECT - // $caseTrackerObject = new \CaseTrackerObject(); - // $caseTrackerObject->removeByObject("DYNAFORM", $caseTrackerObjectUid); - // } catch (\Exception $e) { - // throw $e; - // } - //} + $caseTrackerObject = new \CaseTrackerObject(); + + $arrayCaseTrackerObjectData = $caseTrackerObject->load($caseTrackerObjectUid); + + //Uids + $processUid = $arrayCaseTrackerObjectData["PRO_UID"]; + + //Verify data + if (!$caseTrackerObject->caseTrackerObjectExists($caseTrackerObjectUid)) { + throw (new \Exception(str_replace(array("{0}", "{1}"), array($caseTrackerObjectUid, "CASE_TRACKER_OBJECT"), "The UID \"{0}\" doesn't exist in table {1}"))); + } + + if (isset($arrayData["CTO_TYPE_OBJ"]) && !isset($arrayData["CTO_UID_OBJ"])) { + throw (new \Exception(str_replace(array("{0}"), array("CTO_UID_OBJ"), "The \"{0}\" attribute is not defined"))); + } + + if (!isset($arrayData["CTO_TYPE_OBJ"]) && isset($arrayData["CTO_UID_OBJ"])) { + throw (new \Exception(str_replace(array("{0}"), array("CTO_TYPE_OBJ"), "The \"{0}\" attribute is not defined"))); + } + + if (isset($arrayData["CTO_TYPE_OBJ"]) && isset($arrayData["CTO_UID_OBJ"])) { + $step = new \BusinessModel\Step(); + + $msg = $step->existsObjectUid($arrayData["CTO_TYPE_OBJ"], $arrayData["CTO_UID_OBJ"]); + + if ($msg != "") { + throw (new \Exception($msg)); + } + + if ($this->existsRecord($processUid, $arrayData["CTO_TYPE_OBJ"], $arrayData["CTO_UID_OBJ"], 0, $caseTrackerObjectUid)) { + throw (new \Exception(str_replace(array("{0}", "{1}"), array($processUid . ", " . $arrayData["CTO_TYPE_OBJ"] . ", " . $arrayData["CTO_UID_OBJ"], "CASE_TRACKER_OBJECT"), "The record \"{0}\", exists in table {1}"))); + } + } + + if (isset($arrayData["CTO_POSITION"]) && $this->existsRecord($processUid, "", "", $arrayData["CTO_POSITION"], $caseTrackerObjectUid)) { + throw (new \Exception(str_replace(array("{0}", "{1}", "{2}"), array($arrayData["CTO_POSITION"], $processUid . ", " . $arrayData["CTO_POSITION"], "CASE_TRACKER_OBJECT"), "The \"{0}\" position for the record \"{1}\", exists in table {2}"))); + } + + //Flags + $flagDataOject = (isset($arrayData["CTO_TYPE_OBJ"]) && isset($arrayData["CTO_UID_OBJ"]))? 1 : 0; + $flagDataCondition = (isset($arrayData["CTO_CONDITION"]))? 1 : 0; + $flagDataPosition = (isset($arrayData["CTO_POSITION"]))? 1 : 0; + + //Update + $arrayData["CTO_UID"] = $caseTrackerObjectUid; + + $arrayData = array_merge($arrayCaseTrackerObjectData, $arrayData); + + $result = $caseTrackerObject->update($arrayData); + + //Return + unset($arrayData["CTO_UID"]); + + if ($flagDataOject == 0) { + unset($arrayData["CTO_TYPE_OBJ"]); + unset($arrayData["CTO_UID_OBJ"]); + } + + if ($flagDataCondition == 0) { + unset($arrayData["CTO_CONDITION"]); + } + + if ($flagDataPosition == 0) { + unset($arrayData["CTO_POSITION"]); + } + + unset($arrayData["PRO_UID"]); + + return array_change_key_case($arrayData, CASE_LOWER); + } catch (\Exception $e) { + throw $e; + } + } + + /** + * Delete Case Tracker Object + * + * @param string $caseTrackerObjectUid Unique id of Case Tracker Object + * + * return void + */ + public function delete($caseTrackerObjectUid) + { + try { + $caseTrackerObject = new \CaseTrackerObject(); + + $arrayCaseTrackerObjectData = $caseTrackerObject->load($caseTrackerObjectUid); + + //Uids + $processUid = $arrayCaseTrackerObjectData["PRO_UID"]; + + //Verify data + if (!$caseTrackerObject->caseTrackerObjectExists($caseTrackerObjectUid)) { + throw (new \Exception(str_replace(array("{0}", "{1}"), array($caseTrackerObjectUid, "CASE_TRACKER_OBJECT"), "The UID \"{0}\" doesn't exist in table {1}"))); + } + + //Delete + $result = $caseTrackerObject->remove($caseTrackerObjectUid); + + $caseTrackerObject->reorderPositions($processUid, $arrayCaseTrackerObjectData["CTO_POSITION"]); + } catch (\Exception $e) { + throw $e; + } + } /** * Get data of a Case Tracker Object diff --git a/workflow/engine/src/BusinessModel/DynaForm.php b/workflow/engine/src/BusinessModel/DynaForm.php index 73e3a5cc2..9304347f8 100644 --- a/workflow/engine/src/BusinessModel/DynaForm.php +++ b/workflow/engine/src/BusinessModel/DynaForm.php @@ -242,6 +242,11 @@ class DynaForm try { $arrayData = array_change_key_case($arrayData, CASE_UPPER); + //Uids + $arrayDataUid = $this->getDataUids($dynaFormUid); + + $processUid = $arrayDataUid["PRO_UID"]; + //Verify data $dynaForm = new \Dynaform(); @@ -249,12 +254,6 @@ class DynaForm throw (new \Exception(str_replace(array("{0}", "{1}"), array($dynaFormUid, "DYNAFORM"), "The UID \"{0}\" doesn't exist in table {1}"))); } - //Uids - $arrayDataUid = $this->getDataUids($dynaFormUid); - - $processUid = $arrayDataUid["PRO_UID"]; - - //Verify data if (isset($arrayData["DYN_TITLE"]) && $this->titleExists($processUid, $arrayData["DYN_TITLE"], $dynaFormUid)) { throw (new \Exception(\G::LoadTranslation("ID_EXIST_DYNAFORM"))); } @@ -283,6 +282,11 @@ class DynaForm public function delete($dynaFormUid) { try { + //Uids + $arrayDataUid = $this->getDataUids($dynaFormUid); + + $processUid = $arrayDataUid["PRO_UID"]; + //Verify data $dynaForm = new \Dynaform(); @@ -290,12 +294,6 @@ class DynaForm throw (new \Exception(str_replace(array("{0}", "{1}"), array($dynaFormUid, "DYNAFORM"), "The UID \"{0}\" doesn't exist in table {1}"))); } - //Uids - $arrayDataUid = $this->getDataUids($dynaFormUid); - - $processUid = $arrayDataUid["PRO_UID"]; - - //Verify data if ($this->dynaFormAssignedStep($dynaFormUid, $processUid)) { throw (new \Exception("You cannot delete this Dynaform while it is assigned to a step")); } diff --git a/workflow/engine/src/Services/Api/ProcessMaker/Project/CaseTracker.php b/workflow/engine/src/Services/Api/ProcessMaker/Project/CaseTracker.php index d592c679e..bccdfec30 100644 --- a/workflow/engine/src/Services/Api/ProcessMaker/Project/CaseTracker.php +++ b/workflow/engine/src/Services/Api/ProcessMaker/Project/CaseTracker.php @@ -13,6 +13,8 @@ class CaseTracker extends Api { /** * @url GET /:projectUid/case-tracker/property + * + * @param string $projectUid {@min 32}{@max 32} */ public function doGetCaseTrackerProperty($projectUid) { @@ -30,17 +32,23 @@ class CaseTracker extends Api /** * @url PUT /:projectUid/case-tracker/property * - * @param string $projectUid - * @param CaseTrackerPutStructure $request_data + * @param string $projectUid {@min 32}{@max 32} + * @param array $request_data + * @param string $map_type {@from body}{@choice NONE,PROCESSMAP,STAGES} + * @param bool $routing_history {@from body} + * @param bool $message_history {@from body} */ - public function doPutCaseTracker($projectUid, CaseTrackerPutStructure $request_data = null) - { + public function doPutCaseTracker( + $projectUid, + $request_data, + $map_type = "NONE", + $routing_history = false, + $message_history = false + ) { try { $caseTracker = new \BusinessModel\CaseTracker(); - $arrayData = $caseTracker->getArrayDataFromRequestData($request_data); - - $arrayData = $caseTracker->update($projectUid, $arrayData); + $arrayData = $caseTracker->update($projectUid, $request_data); } catch (\Exception $e) { throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); } @@ -48,6 +56,8 @@ class CaseTracker extends Api /** * @url GET /:projectUid/case-tracker/objects + * + * @param string $projectUid {@min 32}{@max 32} */ public function doGetCaseTrackerObjects($projectUid) { @@ -64,6 +74,8 @@ class CaseTracker extends Api /** * @url GET /:projectUid/case-tracker/available-objects + * + * @param string $projectUid {@min 32}{@max 32} */ public function doGetCaseTrackerAvailableObjects($projectUid) { @@ -79,21 +91,3 @@ class CaseTracker extends Api } } -class CaseTrackerPutStructure -{ - /** - * @var string {@from body}{@choice NONE,PROCESSMAP,STAGES} - */ - public $map_type; - - /** - * @var bool {@from body} - */ - public $routing_history; - - /** - * @var bool {@from body} - */ - public $message_history; -} - diff --git a/workflow/engine/src/Services/Api/ProcessMaker/Project/CaseTrackerObject.php b/workflow/engine/src/Services/Api/ProcessMaker/Project/CaseTrackerObject.php index 993b1adc3..21f0a9ccf 100644 --- a/workflow/engine/src/Services/Api/ProcessMaker/Project/CaseTrackerObject.php +++ b/workflow/engine/src/Services/Api/ProcessMaker/Project/CaseTrackerObject.php @@ -13,6 +13,9 @@ class CaseTrackerObject extends Api { /** * @url GET /:projectUid/case-tracker/object/:caseTrackerObjectUid + * + * @param string $caseTrackerObjectUid {@min 32}{@max 32} + * @param string $projectUid {@min 32}{@max 32} */ public function doGetCaseTrackerObject($caseTrackerObjectUid, $projectUid) { @@ -30,19 +33,27 @@ class CaseTrackerObject extends Api /** * @url POST /:projectUid/case-tracker/object * - * @param string $projectUid - * @param CaseTrackerObjectPostStructure $request_data + * @param string $projectUid {@min 32}{@max 32} + * @param array $request_data + * @param string $cto_type_obj {@from body}{@choice DYNAFORM,INPUT_DOCUMENT,OUTPUT_DOCUMENT}{@required true} + * @param string $cto_uid_obj {@from body}{@min 32}{@max 32}{@required true} + * @param string $cto_condition + * @param int $cto_position {@from body}{@min 1} * * @status 201 */ - public function doPostCaseTrackerObject($projectUid, CaseTrackerObjectPostStructure $request_data = null) - { + public function doPostCaseTrackerObject( + $projectUid, + $request_data, + $cto_type_obj = "DYNAFORM", + $cto_uid_obj = "00000000000000000000000000000000", + $cto_condition = "", + $cto_position = 1 + ) { try { $caseTrackerObject = new \BusinessModel\CaseTrackerObject(); - $arrayData = $caseTrackerObject->getArrayDataFromRequestData($request_data); - - $arrayData = $caseTrackerObject->create($projectUid, $arrayData); + $arrayData = $caseTrackerObject->create($projectUid, $request_data); $response = $arrayData; @@ -55,18 +66,27 @@ class CaseTrackerObject extends Api /** * @url PUT /:projectUid/case-tracker/object/:caseTrackerObjectUid * - * @param string $caseTrackerObjectUid - * @param string $projectUid - * @param CaseTrackerObjectPutStructure $request_data + * @param string $caseTrackerObjectUid {@min 32}{@max 32} + * @param string $projectUid {@min 32}{@max 32} + * @param array $request_data + * @param string $cto_type_obj {@from body}{@choice DYNAFORM,INPUT_DOCUMENT,OUTPUT_DOCUMENT} + * @param string $cto_uid_obj {@from body}{@min 32}{@max 32} + * @param string $cto_condition + * @param int $cto_position {@from body}{@min 1} */ - public function doPutCaseTrackerObject($caseTrackerObjectUid, $projectUid, CaseTrackerObjectPutStructure $request_data = null) - { + public function doPutCaseTrackerObject( + $caseTrackerObjectUid, + $projectUid, + $request_data, + $cto_type_obj = "DYNAFORM", + $cto_uid_obj = "00000000000000000000000000000000", + $cto_condition = "", + $cto_position = 1 + ) { try { $caseTrackerObject = new \BusinessModel\CaseTrackerObject(); - $arrayData = $caseTrackerObject->getArrayDataFromRequestData($request_data); - - $arrayData = $caseTrackerObject->update($caseTrackerObjectUid, $arrayData); + $arrayData = $caseTrackerObject->update($caseTrackerObjectUid, $request_data); } catch (\Exception $e) { throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); } @@ -74,6 +94,9 @@ class CaseTrackerObject extends Api /** * @url DELETE /:projectUid/case-tracker/object/:caseTrackerObjectUid + * + * @param string $caseTrackerObjectUid {@min 32}{@max 32} + * @param string $projectUid {@min 32}{@max 32} */ public function doDeleteCaseTrackerObject($caseTrackerObjectUid, $projectUid) { @@ -87,49 +110,3 @@ class CaseTrackerObject extends Api } } -class CaseTrackerObjectPostStructure -{ - /** - * @var string {@from body}{@choice DYNAFORM,INPUT_DOCUMENT,OUTPUT_DOCUMENT}{@required true} - */ - public $cto_type_obj; - - /** - * @var string {@from body}{@min 32}{@max 32}{@required true} - */ - public $cto_uid_obj; - - /** - * @var string - */ - public $cto_condition; - - /** - * @var int {@from body}{@min 1} - */ - public $cto_position; -} - -class CaseTrackerObjectPutStructure -{ - /** - * @var string {@from body}{@choice DYNAFORM,INPUT_DOCUMENT,OUTPUT_DOCUMENT} - */ - public $cto_type_obj; - - /** - * @var string {@from body}{@min 32}{@max 32} - */ - public $cto_uid_obj; - - /** - * @var string - */ - public $cto_condition; - - /** - * @var int {@from body}{@min 1} - */ - public $cto_position; -} -