From d83e2b2d46b1a90d9504ad6a379e17a7358680d1 Mon Sep 17 00:00:00 2001 From: Brayan Osmar Pereyra Suxo Date: Wed, 14 May 2014 15:56:05 -0400 Subject: [PATCH 1/2] Correcion de PUT en PROJECT --- .../engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php | 2 +- workflow/engine/src/ProcessMaker/Services/Api/Project.php | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php b/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php index 0e0d1880b..35d3267b0 100644 --- a/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php +++ b/workflow/engine/src/ProcessMaker/Project/Adapter/BpmnWorkflow.php @@ -668,6 +668,7 @@ class BpmnWorkflow extends Project\Bpmn $diagram = isset($projectData["diagrams"]) && isset($projectData["diagrams"][0]) ? $projectData["diagrams"][0] : array(); $result = array(); + $projectData['prj_uid'] = $prjUid; $bwp = BpmnWorkflow::load($prjUid); $projectRecord = array_change_key_case($projectData, CASE_UPPER); $bwp->update($projectRecord); @@ -799,7 +800,6 @@ class BpmnWorkflow extends Project\Bpmn $bwp->removeGateway($gatewayData["GAT_UID"]); } } - /* * Diagram's Events Handling */ diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Project.php b/workflow/engine/src/ProcessMaker/Services/Api/Project.php index 0cc1147e2..7efa49eb7 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Project.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Project.php @@ -63,6 +63,9 @@ class Project extends Api public function post($prj_name, $request_data) { try { + if (!isset($request_data['prj_author'])) { + $request_data['prj_author'] = $this->getUserId(); + } return Adapter\BpmnWorkflow::createFromStruct($request_data); } catch (\Exception $e) { throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); From 965acde86e0a65cdcb545ed4e26798a902d425ff Mon Sep 17 00:00:00 2001 From: Brayan Osmar Pereyra Suxo Date: Thu, 15 May 2014 15:55:39 -0400 Subject: [PATCH 2/2] Arreglo de query para listar usuarios de usuarios q inician un caso --- .../BusinessModel/ProjectUser.php | 41 +++++++++++++------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ProjectUser.php b/workflow/engine/src/ProcessMaker/BusinessModel/ProjectUser.php index db858723b..f57feff9a 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/ProjectUser.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/ProjectUser.php @@ -108,26 +108,43 @@ class ProjectUser throw (new \Exception( 'This id for prj_uid: '. $sProcessUID .' does not correspond to a registered process')); } $aUsers = array(); - $sDelimiter = \DBAdapter::getStringDelimiter(); + $usersIds = array(); + $oCriteria = new \Criteria('workflow'); - $oCriteria->setDistinct(); - $oCriteria->addSelectColumn(\UsersPeer::USR_UID); - $oCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME); - $oCriteria->addSelectColumn(\UsersPeer::USR_USERNAME); - $oCriteria->addJoin(\TaskUserPeer::USR_UID, \UsersPeer::USR_UID, \Criteria::LEFT_JOIN); - $oCriteria->addJoin(\TaskUserPeer::TAS_UID, \TaskPeer::TAS_UID, \Criteria::LEFT_JOIN); + $oCriteria->addSelectColumn(\TaskUserPeer::USR_UID); + $oCriteria->addJoin(\TaskPeer::TAS_UID, \TaskUserPeer::TAS_UID, \Criteria::LEFT_JOIN); $oCriteria->add(\TaskPeer::PRO_UID, $sProcessUID); $oCriteria->add(\TaskUserPeer::TU_TYPE, 1); $oCriteria->add(\TaskUserPeer::TU_RELATION, 1); - $oCriteria->addGroupByColumn(\TaskUserPeer::USR_UID); $oDataset = \TaskUserPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { + while ($oDataset->next()) { + $aRow = $oDataset->getRow(); + if (!in_array($aRow['USR_UID'], $usersIds)) { + $usersIds[] = $aRow['USR_UID']; + } + } + + $oCriteria = new \Criteria('workflow'); + $oCriteria->addSelectColumn(\GroupUserPeer::USR_UID); + $oCriteria->addJoin(\TaskPeer::TAS_UID, \TaskUserPeer::TAS_UID, \Criteria::LEFT_JOIN); + $oCriteria->addJoin(\TaskUserPeer::TAS_UID, \GroupUserPeer::GRP_UID, \Criteria::LEFT_JOIN); + $oCriteria->add(\TaskPeer::PRO_UID, $sProcessUID); + $oCriteria->add(\TaskUserPeer::TU_TYPE, 1); + $oCriteria->add(\TaskUserPeer::TU_RELATION, 2); + $oDataset = \TaskUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + while ($oDataset->next()) { + $aRow = $oDataset->getRow(); + if (!in_array($aRow['USR_UID'], $usersIds)) { + $usersIds[] = $aRow['USR_UID']; + } + } + + foreach($usersIds as $value) { \G::LoadClass( 'case' ); $oCase = new \Cases(); - $startTasks = $oCase->getStartCases( $aRow['USR_UID'] ); + $startTasks = $oCase->getStartCases( $value ); foreach ($startTasks as $task) { if ((isset( $task['pro_uid'] )) && ($task['pro_uid'] == $sProcessUID) ) { $taskValue = explode( '(', $task['value'] );