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

        }

    }
Exemple #2
0
 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;
         }
     }
 }