Merged in victorsl/processmaker (pull request #82)

ProcessMaker-MA "Case Tracker (endpoints)"
This commit is contained in:
erik ao
2014-01-15 17:23:36 -04:00
5 changed files with 183 additions and 254 deletions

View File

@@ -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
*

View File

@@ -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

View File

@@ -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"));
}

View File

@@ -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;
}

View File

@@ -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;
}