/** * Get the application delegation record from database * * @param string $arrayAppUid array of Application identifiers * @param string $action Action (todo, draft, paused, sent, selfservice, unassigned, search) * @param string $appStatus Status of Application * @return array of arrays with delegation information. */ public function getListApplicationDelegationData($arrayAppUid, $action, $appStatus) { $c = new Criteria(); $c->addSelectColumn(AppDelegationPeer::APP_UID); $c->addSelectColumn(AppDelegationPeer::DEL_INDEX); $c->addAsColumn('USR_NAME', 'u.USR_FIRSTNAME'); $c->addAsColumn('USR_LAST', 'u.USR_LASTNAME'); $c->addAsColumn('USR_PREV_NAME', 'uprev.USR_FIRSTNAME'); $c->addAsColumn('USR_PREV_LAST', 'uprev.USR_LASTNAME'); $c->addAsColumn('PREVIOUS_USR_UID', 'uprev.USR_UID'); $c->addAsColumn('APP_TAS_TITLE', 'ctastitle.CON_VALUE'); $c->addAsColumn('APP_THREAD_STATUS', 'at.APP_THREAD_STATUS'); $c->addSelectColumn(AppDelegationPeer::APP_OVERDUE_PERCENTAGE); $c->addSelectColumn(AppDelegationPeer::DEL_DELAYED); $c->addSelectColumn(AppDelegationPeer::DEL_DELAY_DURATION); $c->addSelectColumn(AppDelegationPeer::DEL_DELEGATE_DATE); $c->addSelectColumn(AppDelegationPeer::DEL_DURATION); $c->addSelectColumn(AppDelegationPeer::DEL_FINISH_DATE); $c->addSelectColumn(AppDelegationPeer::DEL_INIT_DATE); $c->addSelectColumn(AppDelegationPeer::DEL_QUEUE_DURATION); $c->addSelectColumn(AppDelegationPeer::DEL_TASK_DUE_DATE); $c->addSelectColumn(AppDelegationPeer::DEL_THREAD_STATUS); $c->addSelectColumn(AppDelegationPeer::TAS_UID); $c->addAlias("u", "USERS"); $c->addAlias("uprev", "USERS"); $c->addAlias("adprev", "APP_DELEGATION"); $c->addAlias("ctastitle", "CONTENT"); $c->addAlias("at", "APP_THREAD"); $arrayCondition = array(); $arrayCondition[] = array(AppDelegationPeer::APP_UID, ApplicationPeer::APP_UID); $c->addJoinMC($arrayCondition, Criteria::LEFT_JOIN); $arrayCondition = array(); $arrayCondition[] = array(AppDelegationPeer::USR_UID, "u.USR_UID"); $c->addJoinMC($arrayCondition, Criteria::LEFT_JOIN); $arrayCondition = array(); $arrayCondition[] = array(AppDelegationPeer::APP_UID, "adprev.APP_UID"); $arrayCondition[] = array(AppDelegationPeer::DEL_PREVIOUS, "adprev.DEL_INDEX"); $c->addJoinMC($arrayCondition, Criteria::LEFT_JOIN); $arrayCondition = array(); $arrayCondition[] = array(AppDelegationPeer::TAS_UID, "ctastitle.CON_ID"); $c->addJoinMC($arrayCondition, Criteria::LEFT_JOIN); $arrayCondition = array(); $arrayCondition[] = array("adprev.USR_UID", "uprev.USR_UID"); $c->addJoinMC($arrayCondition, Criteria::LEFT_JOIN); $arrayCondition = array(); $arrayCondition[] = array(AppDelegationPeer::APP_UID, "at.APP_UID"); $arrayCondition[] = array(AppDelegationPeer::DEL_THREAD, "at.APP_THREAD_INDEX"); $c->addJoinMC($arrayCondition, Criteria::LEFT_JOIN); $c->add(AppDelegationPeer::APP_UID, $arrayAppUid, Criteria::IN); //$c->add (AppDelegationPeer::DEL_INDEX, $delIndex); switch ($action) { case "sent": if (!empty($appStatus)) { $c->add(ApplicationPeer::APP_STATUS, $appStatus); } break; default: $appCacheView = new AppCacheView(); //Paused $sqlAppDelay = $appCacheView->getAppDelaySql(AppDelegationPeer::APP_UID, AppDelegationPeer::DEL_INDEX); //Criterions $criterionToDo = $c->getNewCriterion(ApplicationPeer::APP_STATUS, "TO_DO", CRITERIA::EQUAL)->addAnd($c->getNewCriterion(AppDelegationPeer::DEL_FINISH_DATE, null, Criteria::ISNULL))->addAnd($c->getNewCriterion("at.APP_THREAD_STATUS", "OPEN"))->addAnd($c->getNewCriterion(AppDelegationPeer::DEL_THREAD_STATUS, "OPEN")); $criterionDraft = $c->getNewCriterion(ApplicationPeer::APP_STATUS, "DRAFT", CRITERIA::EQUAL)->addAnd($c->getNewCriterion("at.APP_THREAD_STATUS", "OPEN"))->addAnd($c->getNewCriterion(AppDelegationPeer::DEL_THREAD_STATUS, "OPEN")); $criterionPaused = $c->getNewCriterion(ApplicationPeer::APP_STATUS, "PAUSED")->addAnd($c->getNewCriterion(AppDelegationPeer::APP_UID, AppDelegationPeer::APP_UID . " IN ({$sqlAppDelay})", Criteria::CUSTOM)); $criterionCancelled = $c->getNewCriterion(ApplicationPeer::APP_STATUS, "CANCELLED", CRITERIA::EQUAL)->addAnd($c->getNewCriterion(AppDelegationPeer::DEL_THREAD_STATUS, "CLOSED")); $criterionCompleted = $c->getNewCriterion(ApplicationPeer::APP_STATUS, "COMPLETED"); switch ($appStatus) { case "TO_DO": //ToDo $c->add($criterionToDo); break; case "DRAFT": //Draft $c->add($criterionDraft); break; case "PAUSED": //Paused $c->add($criterionPaused); break; case "CANCELLED": //Cancelled $c->add($criterionCancelled); break; case "COMPLETED": //Completed $c->add($criterionCompleted); break; default: //All status $c->add($criterionToDo)->addOr($criterionDraft)->addOr($criterionPaused)->addOr($criterionCancelled)->addOr($criterionCompleted); break; } break; } $c->add('ctastitle.CON_CATEGORY', 'TAS_TITLE'); $c->add('ctastitle.CON_LANG', 'en'); $rs = AppDelegationPeer::doSelectRS($c); $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); // echo $c->toString(); $rs->next(); $row = $rs->getRow(); $appDataRows = array(); while (is_array($row)) { $appDataRows[] = $row; $rs->next(); $row = $rs->getRow(); } return $appDataRows; }