From 95f7189cfa8fec28bc2554a0b78f11bb6b6b74b9 Mon Sep 17 00:00:00 2001 From: "marcelo.cuiza" Date: Fri, 25 Sep 2015 21:24:21 -0400 Subject: [PATCH] PM-3508 --- workflow/engine/classes/model/Route.php | 43 ++++++++++++++++++- .../src/ProcessMaker/Services/Api/Project.php | 32 ++++++++++++++ 2 files changed, 74 insertions(+), 1 deletion(-) diff --git a/workflow/engine/classes/model/Route.php b/workflow/engine/classes/model/Route.php index c73aabf8b..d9b775482 100755 --- a/workflow/engine/classes/model/Route.php +++ b/workflow/engine/classes/model/Route.php @@ -317,5 +317,46 @@ class Route extends BaseRoute return $routes; } + + public function updateRouteOrder($data) + { + foreach($data as $i => $r) { + $aData = array_change_key_case($r, CASE_UPPER); + $route = Route::findOneBy(array(RoutePeer::PRO_UID => $aData['PRO_UID'], RoutePeer::ROU_NEXT_TASK => $aData['ROU_NEXT_TASK'])); + if(!empty($route)) { + $aData['ROU_UID'] = $route->getRouUid(); + $this->update($aData); + unset($aData); + } + } + } + + public function updateRouteOrderFromProject($prjUid) + { + $accountsArray = array(); + $criteria = new \Criteria("workflow"); + $criteria->clearSelectColumns(); + $criteria->addSelectColumn(\BpmnFlowPeer::FLO_POSITION); + $criteria->addSelectColumn(\BpmnFlowPeer::FLO_ELEMENT_DEST); + $criteria->addSelectColumn(\BpmnFlowPeer::PRJ_UID); + $criteria->addSelectColumn(\BpmnFlowPeer::FLO_TYPE); + $criteria->add(\BpmnFlowPeer::FLO_ELEMENT_ORIGIN_TYPE, 'bpmnGateway'); + $criteria->add(\BpmnFlowPeer::PRJ_UID, $prjUid); + $criteria->addAscendingOrderByColumn(BpmnFlowPeer::FLO_POSITION); + $result = \BpmnFlowPeer::doSelectRS($criteria); + $result->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $result->next(); + $j=0; + $k=1; + while ($aRow = $result->getRow()) { + $accountsArray[$j]['PRO_UID'] = $aRow['PRJ_UID']; + $accountsArray[$j]['ROU_NEXT_TASK'] = $aRow['FLO_ELEMENT_DEST']; + $accountsArray[$j]['ROU_CASE'] = $k++; + $result->next(); + $j++; + } + if(sizeof($accountsArray)) { + $this->updateRouteOrder($accountsArray); + } + } } - diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Project.php b/workflow/engine/src/ProcessMaker/Services/Api/Project.php index f610377de..75af982c3 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Project.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Project.php @@ -347,5 +347,37 @@ class Project extends Api throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); } } + + /** + * @url PUT /:prj_uid/update-route-order + * + * @param string $prj_uid {@min 32}{@max 32} + */ + public function doPutUpdateRouteOrder($prj_uid, $request_data) + { + try { + $oRoute = new \Route(); + $result = $oRoute->updateRouteOrder($request_data); + return $result; + } catch (\Exception $e) { + throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); + } + } + + /** + * @url PUT /:prj_uid/update-route-order-from-project + * + * @param string $prj_uid {@min 32}{@max 32} + */ + public function doPutUpdateRouteOrderFromProject($prj_uid) + { + try { + $oRoute = new \Route(); + $result = $oRoute->updateRouteOrderFromProject($prj_uid); + return $result; + } catch (\Exception $e) { + throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); + } + } }