public function isRouteOpen($sAppUid, $sTasUid) { try { $c = new Criteria(); $c->clearSelectColumns(); $c->addSelectColumn('COUNT(*)'); $c->add(AppDelegationPeer::APP_UID, $sAppUid); $c->add(AppDelegationPeer::TAS_UID, $sTasUid); $c->add(AppDelegationPeer::DEL_THREAD_STATUS, 'OPEN'); $rs = RoutePeer::doSelectRs($c); $rs->next(); $row = $rs->getRow(); $open = ($row[0] >= 1); if ($open) { return true; } $c->clearSelectColumns(); $c->addSelectColumn(AppDelegationPeer::DEL_INDEX); $c->addSelectColumn(AppDelegationPeer::USR_UID); $c->addSelectColumn(AppDelegationPeer::DEL_TYPE); $c->addSelectColumn(AppDelegationPeer::DEL_THREAD); $c->addSelectColumn(AppDelegationPeer::DEL_THREAD_STATUS); $c->addSelectColumn(RoutePeer::ROU_UID); $c->addSelectColumn(RoutePeer::ROU_NEXT_TASK); $c->addSelectColumn(RoutePeer::ROU_CASE); $c->addSelectColumn(RoutePeer::ROU_TYPE); $c->addJoin(AppDelegationPeer::TAS_UID, RoutePeer::TAS_UID); $c->add(AppDelegationPeer::APP_UID, $sAppUid); $c->add(RoutePeer::ROU_NEXT_TASK, $sTasUid); $rs = RoutePeer::doSelectRs($c); $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); $rs->next(); $row = $rs->getRow(); $sql = 'SELECT D.*,R.* ' . 'FROM ROUTE R LEFT JOIN APP_DELEGATION D ON (R.TAS_UID=D.TAS_UID) WHERE APP_UID="' . $sAppUid . '" AND ROU_NEXT_TASK="' . $sTasUid . '"'; while (is_array($row)) { switch ($row['DEL_THREAD_STATUS']) { case 'OPEN': //case 'NONE': $open = true; break; case 'CLOSED': //case 'DONE': //case 'NOTDONE': break; case '': case null: default: $open = $this->isRouteOpen($sAppUid, $row['TAS_UID']); break; } if ($open) { return true; } $rs->next(); $row = $rs->getRow(); } return false; } catch (exception $e) { throw ($e); } }
public function verifyTaskbetween($PRO_UID, $taskFrom, $taskTo, $taskVerify) { $criteria = new Criteria('workflow'); $criteria->addSelectColumn(RoutePeer::ROU_NEXT_TASK); $criteria->add(RoutePeer::PRO_UID, $PRO_UID); $criteria->add(RoutePeer::TAS_UID, $taskFrom); $dataset = RoutePeer::doSelectRs($criteria); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); if ($dataset->next()) { $routeData = $dataset->getRow(); switch ($routeData['ROU_NEXT_TASK']) { case $taskVerify: return true; break; case $taskTo: case '-1': return false; break; default: return $this->verifyTaskbetween($PRO_UID, $routeData['ROU_NEXT_TASK'], $taskTo, $taskVerify); break; } } }