diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php
index 341515363..3b7dfb4bf 100755
--- a/workflow/engine/classes/class.case.php
+++ b/workflow/engine/classes/class.case.php
@@ -30,24 +30,28 @@ require_once ("classes/model/AppCacheView.php");
require_once ("classes/model/AppDelay.php");
require_once ("classes/model/AppDelegation.php");
require_once ("classes/model/AppDocument.php");
+require_once ("classes/model/AppEvent.php");
+require_once ("classes/model/AppHistory.php");
require_once ("classes/model/AppMessage.php");
+require_once ("classes/model/AppNotes.php");
+require_once ("classes/model/AppOwner.php");
+require_once ("classes/model/AppSolrQueue.php");
require_once ("classes/model/AppThread.php");
require_once ("classes/model/CaseTracker.php");
require_once ("classes/model/CaseTrackerObject.php");
-require_once ('classes/model/Configuration.php');
+require_once ("classes/model/Configuration.php");
require_once ("classes/model/Content.php");
require_once ("classes/model/DbSource.php");
require_once ("classes/model/Dynaform.php");
require_once ("classes/model/InputDocument.php");
require_once ("classes/model/Language.php");
-require_once ('classes/model/AppMessage.php');
require_once ("classes/model/ObjectPermission.php");
require_once ("classes/model/OutputDocument.php");
require_once ("classes/model/Process.php");
require_once ("classes/model/ProcessUser.php");
require_once ("classes/model/ReportTable.php");
require_once ("classes/model/ReportVar.php");
-require_once ('classes/model/Route.php');
+require_once ("classes/model/Route.php");
require_once ("classes/model/Step.php");
require_once ("classes/model/StepSupervisor.php");
require_once ("classes/model/StepTrigger.php");
@@ -56,9 +60,8 @@ require_once ("classes/model/Task.php");
require_once ("classes/model/TaskUser.php");
require_once ("classes/model/Triggers.php");
require_once ("classes/model/Users.php");
-require_once ("classes/model/AppHistory.php");
-G::LoadClass('pmScript');
+G::LoadClass("pmScript");
/**
* A Cases object where you can do start, load, update, refresh about cases
@@ -1003,9 +1006,9 @@ class Cases
public function removeCase($sAppUid)
{
try {
- $oApplication = new Application();
$oAppDelegation = new AppDelegation();
$oAppDocument = new AppDocument();
+
//Delete the delegations of a application
$oCriteria2 = new Criteria('workflow');
$oCriteria2->add(AppDelegationPeer::APP_UID, $sAppUid);
@@ -1038,6 +1041,27 @@ class Cases
$oCriteria2 = new Criteria('workflow');
$oCriteria2->add(AppThreadPeer::APP_UID, $sAppUid);
AppThreadPeer::doDelete($oCriteria2);
+ //Delete the events from a application
+ $criteria = new Criteria("workflow");
+ $criteria->add(AppEventPeer::APP_UID, $sAppUid);
+ AppEventPeer::doDelete($criteria);
+ //Delete the histories from a application
+ $criteria = new Criteria("workflow");
+ $criteria->add(AppHistoryPeer::APP_UID, $sAppUid);
+ AppHistoryPeer::doDelete($criteria);
+ //Delete the notes from a application
+ $criteria = new Criteria("workflow");
+ $criteria->add(AppNotesPeer::APP_UID, $sAppUid);
+ AppNotesPeer::doDelete($criteria);
+ //Delete the owners from a application
+ $criteria = new Criteria("workflow");
+ $criteria->add(AppOwnerPeer::APP_UID, $sAppUid);
+ AppOwnerPeer::doDelete($criteria);
+ //Delete the SolrQueue from a application
+ $criteria = new Criteria("workflow");
+ $criteria->add(AppSolrQueuePeer::APP_UID, $sAppUid);
+ AppSolrQueuePeer::doDelete($criteria);
+
//Before delete verify if is a child case
$oCriteria2 = new Criteria('workflow');
$oCriteria2->add(SubApplicationPeer::APP_UID, $sAppUid);
@@ -1054,8 +1078,10 @@ class Cases
$oCriteria2 = new Criteria('workflow');
$oCriteria2->add(SubApplicationPeer::APP_PARENT, $sAppUid);
SubApplicationPeer::doDelete($oCriteria2);
- $oApp = new Application;
- $result = $oApp->remove($sAppUid);
+
+ //Delete record of the APPLICATION table (trigger: delete records of the APP_CACHE_VIEW table)
+ $application = new Application();
+ $result = $application->remove($sAppUid);
//delete application from index
if ($this->appSolr != null) {
diff --git a/workflow/engine/classes/class.pmFunctions.php b/workflow/engine/classes/class.pmFunctions.php
index 112916623..14fdd35cc 100755
--- a/workflow/engine/classes/class.pmFunctions.php
+++ b/workflow/engine/classes/class.pmFunctions.php
@@ -770,11 +770,10 @@ function WSProcessList()
/**
* @method
*
- * Returns a list of processes in the current workspace.
+ * Returns Email configuration.
*
* @name getEmailConfiguration
- * @label WS Get Email Configuration
- *
+ * @label Get Email Configuration
*
* @return array | $aFields | Array |Get current email configuration
*
@@ -1161,6 +1160,78 @@ function WSGetSession()
}
}
+/**
+ * @method
+ *
+ * Delete a specified case.
+ *
+ * @name WSDeleteCase
+ * @label WS Delete Case
+ * @link http://wiki.processmaker.com/index.php/ProcessMaker_Functions#WSDeleteCase.28.29
+ *
+ * @param string(32) | $caseUid | ID of the case | The unique ID of the case.
+ * @return array | $response | WS array | A WS Response associative array.
+ *
+ */
+function WSDeleteCase($caseUid)
+{
+ $client = WSOpen();
+
+ $sessionId = $_SESSION["WS_SESSION_ID"];
+
+ $params = array(
+ "sessionId" => $sessionId,
+ "caseUid" => $caseUid
+ );
+
+ $result = $client->__soapCall("deleteCase", array($params));
+
+ $response = array();
+ $response["status_code"] = $result->status_code;
+ $response["message"] = $result->message;
+ $response["time_stamp"] = $result->timestamp;
+
+ return $response;
+}
+
+/**
+ * @method
+ *
+ * Cancel a specified case.
+ *
+ * @name WSCancelCase
+ * @label WS Cancel Case
+ * @link http://wiki.processmaker.com/index.php/ProcessMaker_Functions#WSCancelCase.28.29
+ *
+ * @param string(32) | $caseUid | ID of the case | The unique ID of the case.
+ * @param int | $delIndex | Delegation index of the case | The delegation index of the current task in the case.
+ * @param string(32) | $userUid | ID user | The unique ID of the user who will cancel the case.
+ * @return array | $response | WS array | A WS Response associative array.
+ *
+ */
+function WSCancelCase($caseUid, $delIndex, $userUid)
+{
+ $client = WSOpen();
+
+ $sessionId = $_SESSION["WS_SESSION_ID"];
+
+ $params = array(
+ "sessionId" => $sessionId,
+ "caseUid" => $caseUid,
+ "delIndex" => $delIndex,
+ "userUid" => $userUid
+ );
+
+ $result = $client->__soapCall("cancelCase", array($params));
+
+ $response = array();
+ $response["status_code"] = $result->status_code;
+ $response["message"] = $result->message;
+ $response["time_stamp"] = $result->timestamp;
+
+ return $response;
+}
+
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/** Local Services Functions **/
@@ -1178,7 +1249,7 @@ function WSGetSession()
* @return array | $rows | List of tasks | A list of tasks
*
*/
-function PMFTaskCase($caseId) #its test was successfull
+function PMFTaskCase($caseId) //its test was successfull
{
G::LoadClass('wsBase');
$ws = new wsBase ();
@@ -1205,7 +1276,7 @@ function PMFTaskCase($caseId) #its test was successfull
* @return array | $rows | List of tasks | An array of tasks
*
*/
-function PMFTaskList($userId) #its test was successfull
+function PMFTaskList($userId) //its test was successfull
{
G::LoadClass('wsBase');
$ws = new wsBase ();
@@ -1231,7 +1302,7 @@ function PMFTaskList($userId) #its test was successfull
* @return array | $rows | List of users | An array of users
*
*/
-function PMFUserList() #its test was successfull
+function PMFUserList() //its test was successfull
{
G::LoadClass('wsBase');
$ws = new wsBase ();
@@ -1500,7 +1571,7 @@ function PMFGenerateOutputDocument($outputID, $sApplication=null, $index=null, $
* @return array | $rows | List of groups | An array of groups
*
*/
-function PMFGroupList() #its test was successfull
+function PMFGroupList() //its test was successfull
{
G::LoadClass('wsBase');
$ws = new wsBase ();
@@ -1527,7 +1598,7 @@ function PMFGroupList() #its test was successfull
* @return array | $rows | List of roles | This function returns an array of roles
*
*/
-function PMFRoleList() #its test was successfull
+function PMFRoleList() //its test was successfull
{
G::LoadClass('wsBase');
$ws = new wsBase ();
@@ -1554,7 +1625,7 @@ function PMFRoleList() #its test was successfull
* @return array | $rows | List of cases | A list of cases
*
*/
-function PMFCaseList($userId) #its test was successfull
+function PMFCaseList($userId) //its test was successfull
{
G::LoadClass('wsBase');
$ws = new wsBase ();
@@ -1580,7 +1651,7 @@ function PMFCaseList($userId) #its test was successfull
* @return array | $rows | Lis ot Processes | An array of tasks in the indicated case which have open delegations
*
*/
-function PMFProcessList() #its test was successfull
+function PMFProcessList() //its test was successfull
{
G::LoadClass('wsBase');
$ws = new wsBase ();
@@ -2205,7 +2276,7 @@ function PMFGetUserEmailAddress($id, $APP_UID=null, $prefix='usr')
* Get of the cases notes an application.
*
* @name PMFGetCaseNotes
- * @label Get of the cases notes an application.
+ * @label PMF Get of the cases notes an application.
*
* @param string(32) | $applicationID | Application ID | ID of the Application
* @param string(32) | $type or default value 'array' | type of the return value | type of the return value (array, object, string)
@@ -2220,3 +2291,57 @@ function PMFGetCaseNotes ($applicationID, $type='array', $userUid='')
return $response;
}
+/**
+ * @method
+ *
+ * Delete a specified case.
+ *
+ * @name PMFDeleteCase
+ * @label PMF Delete a specified case.
+ *
+ * @param string(32) | $caseUid | ID of the case | The unique ID of the case.
+ * @return int | $result | Result of the elimination | Returns 1 if the case is delete successfully; otherwise, returns 0 if an error occurred.
+ *
+ */
+function PMFDeleteCase($caseUid)
+{
+ G::LoadClass("wsBase");
+
+ $ws = new wsBase();
+ $result = $ws->deleteCase($caseUid);
+
+ if ($result->status_code == 0) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+/**
+ * @method
+ *
+ * Cancel a specified case.
+ *
+ * @name PMFCancelCase
+ * @label PMF Cancel a specified case.
+ *
+ * @param string(32) | $caseUid | ID of the case | The unique ID of the case.
+ * @param int | $delIndex | Delegation index of the case | The delegation index of the current task in the case.
+ * @param string(32) | $userUid | ID user | The unique ID of the user who will cancel the case.
+ * @return int | $result | Result of the cancelation | Returns 1 if the case is cancel successfully; otherwise, returns 0 if an error occurred.
+ *
+ */
+function PMFCancelCase($caseUid, $delIndex, $userUid)
+{
+ G::LoadClass("wsBase");
+
+ $ws = new wsBase();
+ $result = $ws->cancelCase($caseUid, $delIndex, $userUid);
+
+ if ($result->status_code == 0) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php
index 8dc96cde9..2f6fba4fb 100755
--- a/workflow/engine/classes/class.wsBase.php
+++ b/workflow/engine/classes/class.wsBase.php
@@ -2815,5 +2815,87 @@ class wsBase
return $result;
}
}
+
+ /**
+ * Delete case
+ * @param string caseUid : ID of the case.
+ * @return $result will return an object
+ */
+ public function deleteCase($caseUid)
+ {
+ try {
+ if (empty($caseUid)) {
+ $result = new wsResponse(100, G::LoadTranslation("ID_REQUIRED_FIELD") . " caseUid");
+
+ return $result;
+ }
+
+ $case = new Cases();
+ $case->removeCase($caseUid);
+
+ //Response
+ $res = new wsResponse(0, G::LoadTranslation("ID_COMMAND_EXECUTED_SUCCESSFULLY"));
+
+ $result = array(
+ "status_code" => $res->status_code,
+ "message" => $res->message,
+ "timestamp" => $res->timestamp
+ );
+
+ return $result;
+ } catch (Exception $e) {
+ $result = wsResponse(100, $e->getMessage());
+
+ return $result;
+ }
+ }
+
+ /**
+ * Cancel case
+ * @param string caseUid : ID of the case.
+ * @param int delIndex : Delegation index of the case.
+ * @param string userUid : The unique ID of the user who will cancel the case.
+ * @return $result will return an object
+ */
+ public function cancelCase($caseUid, $delIndex, $userUid)
+ {
+ try {
+ if (empty($caseUid)) {
+ $result = new wsResponse(100, G::LoadTranslation("ID_REQUIRED_FIELD") . " caseUid");
+
+ return $result;
+ }
+
+ if (empty($delIndex)) {
+ $result = new wsResponse(100, G::LoadTranslation("ID_REQUIRED_FIELD") . " delIndex");
+
+ return $result;
+ }
+
+ if (empty($userUid)) {
+ $result = new wsResponse(100, G::LoadTranslation("ID_REQUIRED_FIELD") . " userUid");
+
+ return $result;
+ }
+
+ $case = new Cases();
+ $case->cancelCase($caseUid, $delIndex, $userUid);
+
+ //Response
+ $res = new wsResponse(0, G::LoadTranslation("ID_COMMAND_EXECUTED_SUCCESSFULLY"));
+
+ $result = array(
+ "status_code" => $res->status_code,
+ "message" => $res->message,
+ "timestamp" => $res->timestamp
+ );
+
+ return $result;
+ } catch (Exception $e) {
+ $result = wsResponse(100, $e->getMessage());
+
+ return $result;
+ }
+ }
}
diff --git a/workflow/engine/methods/services/pmos2.wsdl b/workflow/engine/methods/services/pmos2.wsdl
index b0e8cc1a1..d8c65d08d 100755
--- a/workflow/engine/methods/services/pmos2.wsdl
+++ b/workflow/engine/methods/services/pmos2.wsdl
@@ -725,8 +725,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -913,10 +950,22 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1050,12 +1099,20 @@
-
+
+
+
+
+
+
+
+
+
@@ -1355,7 +1412,6 @@
-
@@ -1365,7 +1421,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
ProcessMaker Web Service
diff --git a/workflow/engine/methods/services/soap2.php b/workflow/engine/methods/services/soap2.php
index dafe153d7..6c82eb2c0 100755
--- a/workflow/engine/methods/services/soap2.php
+++ b/workflow/engine/methods/services/soap2.php
@@ -1062,6 +1062,46 @@ function ifPermission($sessionId, $permission)
return $sw;
}
+function deleteCase($params)
+{
+ $result = isValidSession($params->sessionId);
+
+ if ($result->status_code != 0) {
+ return $result;
+ }
+
+ if (ifPermission($params->sessionId, "PM_CASES") == 0) {
+ $result = new wsResponse(2, "You do not have privileges");
+
+ return $result;
+ }
+
+ $ws = new wsBase();
+ $result = $ws->deleteCase($params->caseUid);
+
+ return $result;
+}
+
+function cancelCase($params)
+{
+ $result = isValidSession($params->sessionId);
+
+ if ($result->status_code != 0) {
+ return $result;
+ }
+
+ if (ifPermission($params->sessionId, "PM_CASES") == 0) {
+ $result = new wsResponse(2, "You do not have privileges");
+
+ return $result;
+ }
+
+ $ws = new wsBase();
+ $result = $ws->cancelCase($params->caseUid, $params->delIndex, $params->userUid);
+
+ return $result;
+}
+
@@ -1102,5 +1142,7 @@ $server->addFunction("systemInformation");
$server->addFunction("importProcessFromLibrary");
$server->addFunction("removeUserFromGroup");
$server->addFunction("getCaseNotes");
+$server->addFunction("deleteCase");
+$server->addFunction("cancelCase");
$server->handle();