Merged in victorsl/processmaker (pull request #77)
ProcessMaker-MA "Case Tracker (endpoints)"
This commit is contained in:
466
workflow/engine/src/BusinessModel/CaseTracker.php
Normal file
466
workflow/engine/src/BusinessModel/CaseTracker.php
Normal file
@@ -0,0 +1,466 @@
|
||||
<?php
|
||||
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
|
||||
*
|
||||
* @param string $processUid Unique id of Process
|
||||
* @param array $arrayData Data
|
||||
*
|
||||
* return array Return data of the Case Tracker updated
|
||||
*/
|
||||
public function update($processUid, $arrayData)
|
||||
{
|
||||
try {
|
||||
$arrayDataIni = $arrayData;
|
||||
|
||||
//Verify data
|
||||
$process = new \Process();
|
||||
|
||||
if (!$process->exists($processUid)) {
|
||||
throw (new \Exception(str_replace(array("{0}", "{1}"), array($processUid, "PROCESS"), "The UID \"{0}\" doesn't exist in table {1}")));
|
||||
}
|
||||
|
||||
//Update
|
||||
$caseTracker = new \CaseTracker();
|
||||
|
||||
$arrayData = array("PRO_UID" => $processUid);
|
||||
|
||||
if (isset($arrayDataIni["map_type"])) {
|
||||
$arrayData["CT_MAP_TYPE"] = $arrayDataIni["map_type"];
|
||||
}
|
||||
|
||||
if (isset($arrayDataIni["routing_history"])) {
|
||||
$arrayData["CT_DERIVATION_HISTORY"] = ($arrayDataIni["routing_history"])? 1 : 0;
|
||||
}
|
||||
|
||||
if (isset($arrayDataIni["message_history"])) {
|
||||
$arrayData["CT_MESSAGE_HISTORY"] = ($arrayDataIni["message_history"])? 1 : 0;
|
||||
}
|
||||
|
||||
$result = $caseTracker->update($arrayData);
|
||||
|
||||
$arrayData = $arrayDataIni;
|
||||
|
||||
//Return
|
||||
return $arrayData;
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Case Tracker data of a Process
|
||||
*
|
||||
* @param string $processUid Unique id of Process
|
||||
*
|
||||
* return array Return an array with data of Case Tracker of a Process
|
||||
*/
|
||||
public function getCaseTracker($processUid)
|
||||
{
|
||||
try {
|
||||
$arrayCaseTracker = array();
|
||||
|
||||
//Verify data
|
||||
$process = new \Process();
|
||||
|
||||
if (!$process->exists($processUid)) {
|
||||
throw (new \Exception(str_replace(array("{0}", "{1}"), array($processUid, "PROCESS"), "The UID \"{0}\" doesn't exist in table {1}")));
|
||||
}
|
||||
|
||||
//Get data
|
||||
$criteria = new \Criteria();
|
||||
|
||||
$criteria->add(\CaseTrackerPeer::PRO_UID, $processUid, \Criteria::EQUAL);
|
||||
|
||||
$rsCriteria = \CaseTrackerPeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
if ($rsCriteria->next()) {
|
||||
$row = $rsCriteria->getRow();
|
||||
|
||||
$arrayCaseTracker = $row;
|
||||
} else {
|
||||
$caseTracker = new \CaseTracker();
|
||||
|
||||
$arrayCaseTracker = array(
|
||||
"PRO_UID" => $processUid,
|
||||
"CT_MAP_TYPE" => "PROCESSMAP",
|
||||
"CT_DERIVATION_HISTORY" => 1,
|
||||
"CT_MESSAGE_HISTORY" => 1
|
||||
);
|
||||
|
||||
$caseTracker->create($arrayCaseTracker);
|
||||
}
|
||||
|
||||
return array(
|
||||
"map_type" => $arrayCaseTracker["CT_MAP_TYPE"],
|
||||
"routing_history" => ($arrayCaseTracker["CT_DERIVATION_HISTORY"] == 1)? true : false,
|
||||
"message_history" => ($arrayCaseTracker["CT_MESSAGE_HISTORY"] == 1)? true : false
|
||||
);
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get available Case Tracker Objects of a Process
|
||||
*
|
||||
* @param string $processUid Unique id of Process
|
||||
*
|
||||
* return array Return an array with the Case Tracker Objects available of a Process
|
||||
*/
|
||||
public function getAvailableCaseTrackerObjects($processUid)
|
||||
{
|
||||
try {
|
||||
$arrayAvailableCaseTrackerObject = array();
|
||||
|
||||
//Verify data
|
||||
$process = new \Process();
|
||||
|
||||
if (!$process->exists($processUid)) {
|
||||
throw (new \Exception(str_replace(array("{0}", "{1}"), array($processUid, "PROCESS"), "The UID \"{0}\" doesn't exist in table {1}")));
|
||||
}
|
||||
|
||||
//Get Uids
|
||||
$arrayDynaFormUid = array();
|
||||
$arrayInputDocumentUid = array();
|
||||
$arrayOutputDocumentUid = array();
|
||||
|
||||
$criteria = new \Criteria("workflow");
|
||||
|
||||
$criteria->add(\CaseTrackerObjectPeer::PRO_UID, $processUid, \Criteria::EQUAL);
|
||||
|
||||
$rsCriteria = \CaseTrackerObjectPeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
while ($rsCriteria->next()) {
|
||||
$row = $rsCriteria->getRow();
|
||||
|
||||
switch ($row["CTO_TYPE_OBJ"]) {
|
||||
case "DYNAFORM":
|
||||
$arrayDynaFormUid[] = $row["CTO_UID_OBJ"];
|
||||
break;
|
||||
case "INPUT_DOCUMENT":
|
||||
$arrayInputDocumentUid[] = $row["CTO_UID_OBJ"];
|
||||
break;
|
||||
case "OUTPUT_DOCUMENT":
|
||||
$arrayOutputDocumentUid[] = $row["CTO_UID_OBJ"];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Array DB
|
||||
$arrayCaseTrackerObject = array();
|
||||
|
||||
$arrayCaseTrackerObject[] = 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", \ContentPeer::TABLE_NAME);
|
||||
$criteria->addAlias("CD", \ContentPeer::TABLE_NAME);
|
||||
|
||||
$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, $arrayDynaFormUid, \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();
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
$arrayCaseTrackerObject[] = array(
|
||||
"obj_uid" => $row["DYN_UID"],
|
||||
"obj_title" => $row["DYN_TITLE"],
|
||||
"obj_description" => $row["DYN_DESCRIPTION"],
|
||||
"obj_type" => "DYNAFORM"
|
||||
);
|
||||
}
|
||||
|
||||
//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", \ContentPeer::TABLE_NAME);
|
||||
$criteria->addAlias("CD", \ContentPeer::TABLE_NAME);
|
||||
|
||||
$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, $arrayInputDocumentUid, \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);
|
||||
}
|
||||
|
||||
$arrayCaseTrackerObject[] = 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", \ContentPeer::TABLE_NAME);
|
||||
$criteria->addAlias("CD", \ContentPeer::TABLE_NAME);
|
||||
|
||||
$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, $arrayOutputDocumentUid, \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);
|
||||
}
|
||||
|
||||
$arrayCaseTrackerObject[] = array(
|
||||
"obj_uid" => $row["OUT_DOC_UID"],
|
||||
"obj_title" => $row["OUT_DOC_TITLE"],
|
||||
"obj_description" => $row["OUT_DOC_DESCRIPTION"],
|
||||
"obj_type" => "OUTPUT_DOCUMENT"
|
||||
);
|
||||
}
|
||||
|
||||
//Set data
|
||||
\G::LoadClass("ArrayPeer");
|
||||
|
||||
global $_DBArray;
|
||||
|
||||
$_DBArray = (isset($_SESSION["_DBArray"]))? $_SESSION["_DBArray"] : "";
|
||||
$_DBArray["CASE_TRACKER_OBJECT"] = $arrayCaseTrackerObject;
|
||||
|
||||
$_SESSION["_DBArray"] = $_DBArray;
|
||||
|
||||
$criteria = new \Criteria("dbarray");
|
||||
|
||||
$criteria->setDBArrayTable("CASE_TRACKER_OBJECT");
|
||||
$criteria->addAscendingOrderByColumn("obj_type");
|
||||
$criteria->addAscendingOrderByColumn("obj_title");
|
||||
|
||||
$rsCriteria = \ArrayBasePeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
while ($rsCriteria->next()) {
|
||||
$row = $rsCriteria->getRow();
|
||||
|
||||
$arrayAvailableCaseTrackerObject[] = $row;
|
||||
}
|
||||
|
||||
return $arrayAvailableCaseTrackerObject;
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all Case Tracker Objects of a Process
|
||||
*
|
||||
* @param string $processUid Unique id of Process
|
||||
*
|
||||
* return array Return an array with all Case Tracker Objects of a Process
|
||||
*/
|
||||
public function getCaseTrackerObjects($processUid)
|
||||
{
|
||||
try {
|
||||
$arrayCaseTrackerObject = array();
|
||||
|
||||
//Verify data
|
||||
$process = new \Process();
|
||||
|
||||
if (!$process->exists($processUid)) {
|
||||
throw (new \Exception(str_replace(array("{0}", "{1}"), array($processUid, "PROCESS"), "The UID \"{0}\" doesn't exist in table {1}")));
|
||||
}
|
||||
|
||||
$dynaform = new \Dynaform();
|
||||
$inputDocument = new \InputDocument();
|
||||
$outputDocument = new \OutputDocument();
|
||||
|
||||
//Array DB
|
||||
$arraydbCaseTrackerObject = array();
|
||||
|
||||
$arraydbCaseTrackerObject[] = array(
|
||||
"cto_uid" => "char",
|
||||
"cto_type_obj" => "char",
|
||||
"cto_uid_obj" => "char",
|
||||
"cto_condition" => "char",
|
||||
"cto_position" => "integer",
|
||||
"obj_title" => "char",
|
||||
"obj_description" => "char"
|
||||
);
|
||||
|
||||
$criteria = new \Criteria("workflow");
|
||||
|
||||
$criteria->add(\CaseTrackerObjectPeer::PRO_UID, $processUid, \Criteria::EQUAL);
|
||||
|
||||
$rsCriteria = \CaseTrackerObjectPeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
while ($rsCriteria->next()) {
|
||||
$row = $rsCriteria->getRow();
|
||||
|
||||
$titleObj = "";
|
||||
$descriptionObj = "";
|
||||
|
||||
switch ($row["CTO_TYPE_OBJ"]) {
|
||||
case "DYNAFORM":
|
||||
$arrayData = $dynaform->load($row["CTO_UID_OBJ"]);
|
||||
|
||||
$titleObj = $arrayData["DYN_TITLE"];
|
||||
$descriptionObj = $arrayData["DYN_DESCRIPTION"];
|
||||
break;
|
||||
case "INPUT_DOCUMENT":
|
||||
$arrayData = $inputDocument->getByUid($row["CTO_UID_OBJ"]);
|
||||
|
||||
$titleObj = $arrayData["INP_DOC_TITLE"];
|
||||
$descriptionObj = $arrayData["INP_DOC_DESCRIPTION"];
|
||||
break;
|
||||
case "OUTPUT_DOCUMENT":
|
||||
$arrayData = $outputDocument->getByUid($row["CTO_UID_OBJ"]);
|
||||
|
||||
$titleObj = $arrayData["OUT_DOC_TITLE"];
|
||||
$descriptionObj = $arrayData["OUT_DOC_DESCRIPTION"];
|
||||
break;
|
||||
}
|
||||
|
||||
$arraydbCaseTrackerObject[] = array(
|
||||
"cto_uid" => $row["CTO_UID"],
|
||||
"cto_type_obj" => $row["CTO_TYPE_OBJ"],
|
||||
"cto_uid_obj" => $row["CTO_UID_OBJ"],
|
||||
"cto_condition" => $row["CTO_CONDITION"],
|
||||
"cto_position" => (int)($row["CTO_POSITION"]),
|
||||
"obj_title" => $titleObj,
|
||||
"obj_description" => $descriptionObj
|
||||
);
|
||||
}
|
||||
|
||||
//Set data
|
||||
\G::LoadClass("ArrayPeer");
|
||||
|
||||
global $_DBArray;
|
||||
|
||||
$_DBArray = (isset($_SESSION["_DBArray"]))? $_SESSION["_DBArray"] : "";
|
||||
$_DBArray["CASE_TRACKER_OBJECT"] = $arraydbCaseTrackerObject;
|
||||
|
||||
$_SESSION["_DBArray"] = $_DBArray;
|
||||
|
||||
$criteria = new \Criteria("dbarray");
|
||||
|
||||
$criteria->setDBArrayTable("CASE_TRACKER_OBJECT");
|
||||
$criteria->addAscendingOrderByColumn("cto_position");
|
||||
|
||||
$rsCriteria = \ArrayBasePeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
while ($rsCriteria->next()) {
|
||||
$row = $rsCriteria->getRow();
|
||||
|
||||
$arrayCaseTrackerObject[] = $row;
|
||||
}
|
||||
|
||||
return $arrayCaseTrackerObject;
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
333
workflow/engine/src/BusinessModel/CaseTrackerObject.php
Normal file
333
workflow/engine/src/BusinessModel/CaseTrackerObject.php
Normal file
@@ -0,0 +1,333 @@
|
||||
<?php
|
||||
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
|
||||
*
|
||||
* @param string $processUid Unique id of Process
|
||||
* @param string $type Type of Step (DYNAFORM, INPUT_DOCUMENT, OUTPUT_DOCUMENT)
|
||||
* @param string $objectUid Unique id of Object
|
||||
* @param int $position Position
|
||||
* @param string $caseTrackerObjectUidExclude Unique id of Case Tracker Object to exclude
|
||||
*
|
||||
* return bool Return true if exists the record in table CASE_TRACKER_OBJECT, false otherwise
|
||||
*/
|
||||
public function existsRecord($processUid, $type, $objectUid, $position = 0, $caseTrackerObjectUidExclude = "")
|
||||
{
|
||||
try {
|
||||
$criteria = new \Criteria("workflow");
|
||||
|
||||
$criteria->addSelectColumn(\CaseTrackerObjectPeer::CTO_UID);
|
||||
$criteria->add(\CaseTrackerObjectPeer::PRO_UID, $processUid, \Criteria::EQUAL);
|
||||
|
||||
if ($caseTrackerObjectUidExclude != "") {
|
||||
$criteria->add(\CaseTrackerObjectPeer::CTO_UID, $caseTrackerObjectUidExclude, \Criteria::NOT_EQUAL);
|
||||
}
|
||||
|
||||
if ($type != "") {
|
||||
$criteria->add(\CaseTrackerObjectPeer::CTO_TYPE_OBJ, $type, \Criteria::EQUAL);
|
||||
}
|
||||
|
||||
if ($objectUid != "") {
|
||||
$criteria->add(\CaseTrackerObjectPeer::CTO_UID_OBJ, $objectUid, \Criteria::EQUAL);
|
||||
}
|
||||
|
||||
if ($position > 0) {
|
||||
$criteria->add(\CaseTrackerObjectPeer::CTO_POSITION, $position, \Criteria::EQUAL);
|
||||
}
|
||||
|
||||
$rsCriteria = \CaseTrackerObjectPeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
if ($rsCriteria->next()) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create Case Tracker Object for a Process
|
||||
*
|
||||
* @param string $processUid Unique id of Process
|
||||
* @param array $arrayData Data
|
||||
*
|
||||
* return array Return data of the new Case Tracker Object created
|
||||
*/
|
||||
public function create($processUid, $arrayData)
|
||||
{
|
||||
try {
|
||||
$arrayData = array_change_key_case($arrayData, CASE_UPPER);
|
||||
|
||||
unset($arrayData["CTO_UID"]);
|
||||
|
||||
//Verify data
|
||||
$process = new \Process();
|
||||
|
||||
if (!$process->exists($processUid)) {
|
||||
throw (new \Exception(str_replace(array("{0}", "{1}"), array($processUid, "PROCESS"), "The UID \"{0}\" doesn't exist in table {1}")));
|
||||
}
|
||||
|
||||
if (!isset($arrayData["CTO_TYPE_OBJ"])) {
|
||||
throw (new \Exception(str_replace(array("{0}"), array("CTO_TYPE_OBJ"), "The \"{0}\" attribute is not defined")));
|
||||
}
|
||||
|
||||
if (!isset($arrayData["CTO_UID_OBJ"])) {
|
||||
throw (new \Exception(str_replace(array("{0}"), array("CTO_UID_OBJ"), "The \"{0}\" attribute is not defined")));
|
||||
}
|
||||
|
||||
$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"])) {
|
||||
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"])) {
|
||||
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}")));
|
||||
}
|
||||
|
||||
//Create
|
||||
$caseTrackerObject = new \CaseTrackerObject();
|
||||
|
||||
$arrayData["PRO_UID"] = $processUid;
|
||||
|
||||
if (!isset($arrayData["CTO_POSITION"])) {
|
||||
$criteria = new \Criteria("workflow");
|
||||
|
||||
$criteria->add(\CaseTrackerObjectPeer::PRO_UID, $processUid);
|
||||
|
||||
$arrayData["CTO_POSITION"] = \CaseTrackerObjectPeer::doCount($criteria) + 1;
|
||||
}
|
||||
|
||||
$caseTrackerObjectUid = $caseTrackerObject->create($arrayData);
|
||||
|
||||
//Return
|
||||
unset($arrayData["PRO_UID"]);
|
||||
|
||||
$arrayData = array_change_key_case($arrayData, CASE_LOWER);
|
||||
|
||||
unset($arrayData["cto_uid"]);
|
||||
|
||||
return array_merge(array("cto_uid" => $caseTrackerObjectUid), $arrayData);
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
///**
|
||||
// * 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
|
||||
|
||||
//
|
||||
// //In table CASE_TRACKER_OBJECT
|
||||
// $caseTrackerObject = new \CaseTrackerObject();
|
||||
// $caseTrackerObject->removeByObject("DYNAFORM", $caseTrackerObjectUid);
|
||||
// } catch (\Exception $e) {
|
||||
// throw $e;
|
||||
// }
|
||||
//}
|
||||
|
||||
/**
|
||||
* Get data of a Case Tracker Object
|
||||
*
|
||||
* @param string $caseTrackerObjectUid Unique id of Case Tracker Object
|
||||
*
|
||||
* return array Return an array with data of a Case Tracker Object
|
||||
*/
|
||||
public function getCaseTrackerObject($caseTrackerObjectUid)
|
||||
{
|
||||
try {
|
||||
//Verify data
|
||||
$caseTrackerObject = new \CaseTrackerObject();
|
||||
|
||||
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}")));
|
||||
}
|
||||
|
||||
//Get data
|
||||
$dynaform = new \Dynaform();
|
||||
$inputDocument = new \InputDocument();
|
||||
$outputDocument = new \OutputDocument();
|
||||
|
||||
$criteria = new \Criteria("workflow");
|
||||
|
||||
$criteria->add(\CaseTrackerObjectPeer::CTO_UID, $caseTrackerObjectUid, \Criteria::EQUAL);
|
||||
|
||||
$rsCriteria = \CaseTrackerObjectPeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
$rsCriteria->next();
|
||||
|
||||
$row = $rsCriteria->getRow();
|
||||
|
||||
$titleObj = "";
|
||||
$descriptionObj = "";
|
||||
|
||||
switch ($row["CTO_TYPE_OBJ"]) {
|
||||
case "DYNAFORM":
|
||||
$arrayData = $dynaform->load($row["CTO_UID_OBJ"]);
|
||||
|
||||
$titleObj = $arrayData["DYN_TITLE"];
|
||||
$descriptionObj = $arrayData["DYN_DESCRIPTION"];
|
||||
break;
|
||||
case "INPUT_DOCUMENT":
|
||||
$arrayData = $inputDocument->getByUid($row["CTO_UID_OBJ"]);
|
||||
|
||||
$titleObj = $arrayData["INP_DOC_TITLE"];
|
||||
$descriptionObj = $arrayData["INP_DOC_DESCRIPTION"];
|
||||
break;
|
||||
case "OUTPUT_DOCUMENT":
|
||||
$arrayData = $outputDocument->getByUid($row["CTO_UID_OBJ"]);
|
||||
|
||||
$titleObj = $arrayData["OUT_DOC_TITLE"];
|
||||
$descriptionObj = $arrayData["OUT_DOC_DESCRIPTION"];
|
||||
break;
|
||||
}
|
||||
|
||||
return array(
|
||||
"cto_uid" => $row["CTO_UID"],
|
||||
"cto_type_obj" => $row["CTO_TYPE_OBJ"],
|
||||
"cto_uid_obj" => $row["CTO_UID_OBJ"],
|
||||
"cto_condition" => $row["CTO_CONDITION"],
|
||||
"cto_position" => (int)($row["CTO_POSITION"]),
|
||||
"obj_title" => $titleObj,
|
||||
"obj_description" => $descriptionObj
|
||||
);
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
<?php
|
||||
namespace Services\Api\ProcessMaker\Project;
|
||||
|
||||
use \ProcessMaker\Services\Api;
|
||||
use \Luracast\Restler\RestException;
|
||||
|
||||
/**
|
||||
* Project\CaseTracker Api Controller
|
||||
*
|
||||
* @protected
|
||||
*/
|
||||
class CaseTracker extends Api
|
||||
{
|
||||
/**
|
||||
* @url GET /:projectUid/case-tracker/property
|
||||
*/
|
||||
public function doGetCaseTrackerProperty($projectUid)
|
||||
{
|
||||
try {
|
||||
$caseTracker = new \BusinessModel\CaseTracker();
|
||||
|
||||
$response = $caseTracker->getCaseTracker($projectUid);
|
||||
|
||||
return $response;
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @url PUT /:projectUid/case-tracker/property
|
||||
*
|
||||
* @param string $projectUid
|
||||
* @param CaseTrackerPutStructure $request_data
|
||||
*/
|
||||
public function doPutCaseTracker($projectUid, CaseTrackerPutStructure $request_data = null)
|
||||
{
|
||||
try {
|
||||
$caseTracker = new \BusinessModel\CaseTracker();
|
||||
|
||||
$arrayData = $caseTracker->getArrayDataFromRequestData($request_data);
|
||||
|
||||
$arrayData = $caseTracker->update($projectUid, $arrayData);
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @url GET /:projectUid/case-tracker/objects
|
||||
*/
|
||||
public function doGetCaseTrackerObjects($projectUid)
|
||||
{
|
||||
try {
|
||||
$caseTracker = new \BusinessModel\CaseTracker();
|
||||
|
||||
$response = $caseTracker->getCaseTrackerObjects($projectUid);
|
||||
|
||||
return $response;
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @url GET /:projectUid/case-tracker/available-objects
|
||||
*/
|
||||
public function doGetCaseTrackerAvailableObjects($projectUid)
|
||||
{
|
||||
try {
|
||||
$caseTracker = new \BusinessModel\CaseTracker();
|
||||
|
||||
$response = $caseTracker->getAvailableCaseTrackerObjects($projectUid);
|
||||
|
||||
return $response;
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,135 @@
|
||||
<?php
|
||||
namespace Services\Api\ProcessMaker\Project;
|
||||
|
||||
use \ProcessMaker\Services\Api;
|
||||
use \Luracast\Restler\RestException;
|
||||
|
||||
/**
|
||||
* Project\CaseTrackerObject Api Controller
|
||||
*
|
||||
* @protected
|
||||
*/
|
||||
class CaseTrackerObject extends Api
|
||||
{
|
||||
/**
|
||||
* @url GET /:projectUid/case-tracker/object/:caseTrackerObjectUid
|
||||
*/
|
||||
public function doGetCaseTrackerObject($caseTrackerObjectUid, $projectUid)
|
||||
{
|
||||
try {
|
||||
$caseTrackerObject = new \BusinessModel\CaseTrackerObject();
|
||||
|
||||
$response = $caseTrackerObject->getCaseTrackerObject($caseTrackerObjectUid);
|
||||
|
||||
return $response;
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @url POST /:projectUid/case-tracker/object
|
||||
*
|
||||
* @param string $projectUid
|
||||
* @param CaseTrackerObjectPostStructure $request_data
|
||||
*
|
||||
* @status 201
|
||||
*/
|
||||
public function doPostCaseTrackerObject($projectUid, CaseTrackerObjectPostStructure $request_data = null)
|
||||
{
|
||||
try {
|
||||
$caseTrackerObject = new \BusinessModel\CaseTrackerObject();
|
||||
|
||||
$arrayData = $caseTrackerObject->getArrayDataFromRequestData($request_data);
|
||||
|
||||
$arrayData = $caseTrackerObject->create($projectUid, $arrayData);
|
||||
|
||||
$response = $arrayData;
|
||||
|
||||
return $response;
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @url PUT /:projectUid/case-tracker/object/:caseTrackerObjectUid
|
||||
*
|
||||
* @param string $caseTrackerObjectUid
|
||||
* @param string $projectUid
|
||||
* @param CaseTrackerObjectPutStructure $request_data
|
||||
*/
|
||||
public function doPutCaseTrackerObject($caseTrackerObjectUid, $projectUid, CaseTrackerObjectPutStructure $request_data = null)
|
||||
{
|
||||
try {
|
||||
$caseTrackerObject = new \BusinessModel\CaseTrackerObject();
|
||||
|
||||
$arrayData = $caseTrackerObject->getArrayDataFromRequestData($request_data);
|
||||
|
||||
$arrayData = $caseTrackerObject->update($caseTrackerObjectUid, $arrayData);
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @url DELETE /:projectUid/case-tracker/object/:caseTrackerObjectUid
|
||||
*/
|
||||
public function doDeleteCaseTrackerObject($caseTrackerObjectUid, $projectUid)
|
||||
{
|
||||
try {
|
||||
$caseTrackerObject = new \BusinessModel\CaseTrackerObject();
|
||||
|
||||
$caseTrackerObject->delete($caseTrackerObjectUid);
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -26,6 +26,8 @@ debug = 1
|
||||
supervisors = "Services\Api\ProcessMaker\Project\ProcessSupervisors"
|
||||
process-permissions = "Services\Api\ProcessMaker\Project\ProcessPermissions"
|
||||
case-scheduler = "Services\Api\ProcessMaker\Project\CaseScheduler"
|
||||
case-tracker = "Services\Api\ProcessMaker\Project\CaseTracker"
|
||||
case-tracker-object = "Services\Api\ProcessMaker\Project\CaseTrackerObject"
|
||||
|
||||
[alias: projects]
|
||||
project = "Services\Api\ProcessMaker\Project"
|
||||
|
||||
Reference in New Issue
Block a user