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();