2012-10-09 10:45:20 -04:00
< ? php
2017-08-01 12:16:06 -04:00
use ProcessMaker\Plugins\PluginRegistry ;
2012-10-09 10:45:20 -04:00
class Applications
{
2017-03-01 09:58:38 -04:00
/**
* This function return information by searching cases
*
* The query is related to advanced search with diferents filters
* We can search by process , status of case , category of process , users , delegate date from and to
*
* @ param string $userUid
* @ param integer $start for the pagination
* @ param integer $limit for the pagination
* @ param string $search
* @ param integer $process the pro_id
* @ param integer $status of the case
* @ param string $dir if the order is DESC or ASC
* @ param string $sort name of column by sort
* @ param string $category uid for the process
* @ param date $dateFrom
* @ param date $dateTo
* @ return array $result result of the query
*/
2017-01-10 13:41:43 -04:00
public function searchAll (
$userUid ,
$start = null ,
$limit = null ,
$search = null ,
$process = null ,
$status = null ,
$dir = null ,
$sort = null ,
2017-01-13 19:11:14 -04:00
$category = null ,
$dateFrom = null ,
2017-02-09 15:17:13 -04:00
$dateTo = null
2017-01-10 13:41:43 -04:00
) {
2017-03-01 09:58:38 -04:00
//Exclude the Task Dummies in the delegations
2017-01-10 13:41:43 -04:00
$arrayTaskTypeToExclude = array ( " WEBENTRYEVENT " , " END-MESSAGE-EVENT " , " START-MESSAGE-EVENT " , " INTERMEDIATE-THROW-MESSAGE-EVENT " , " INTERMEDIATE-CATCH-MESSAGE-EVENT " );
2017-03-01 09:58:38 -04:00
//Start the connection to database
2017-02-09 15:17:13 -04:00
$con = Propel :: getConnection ( AppDelegationPeer :: DATABASE_NAME );
$con -> begin ();
2017-03-01 09:58:38 -04:00
$stmt = $con -> createStatement ();
$sqlData = " SELECT
2017-02-09 15:17:13 -04:00
STRAIGHT_JOIN APPLICATION . APP_NUMBER ,
APPLICATION . APP_UID ,
APPLICATION . APP_STATUS ,
APPLICATION . APP_STATUS AS APP_STATUS_LABEL ,
APPLICATION . PRO_UID ,
APPLICATION . APP_CREATE_DATE ,
APPLICATION . APP_FINISH_DATE ,
APPLICATION . APP_UPDATE_DATE ,
APPLICATION . APP_TITLE ,
APP_DELEGATION . USR_UID ,
APP_DELEGATION . TAS_UID ,
APP_DELEGATION . DEL_INDEX ,
APP_DELEGATION . DEL_LAST_INDEX ,
APP_DELEGATION . DEL_DELEGATE_DATE ,
APP_DELEGATION . DEL_INIT_DATE ,
APP_DELEGATION . DEL_FINISH_DATE ,
APP_DELEGATION . DEL_TASK_DUE_DATE ,
APP_DELEGATION . DEL_RISK_DATE ,
APP_DELEGATION . DEL_THREAD_STATUS ,
APP_DELEGATION . DEL_PRIORITY ,
APP_DELEGATION . DEL_DURATION ,
APP_DELEGATION . DEL_QUEUE_DURATION ,
APP_DELEGATION . DEL_STARTED ,
APP_DELEGATION . DEL_DELAY_DURATION ,
APP_DELEGATION . DEL_FINISHED ,
APP_DELEGATION . DEL_DELAYED ,
APP_DELEGATION . DEL_DELAY_DURATION ,
TASK . TAS_TITLE AS APP_TAS_TITLE ,
2017-05-18 09:46:19 -04:00
TASK . TAS_TYPE AS APP_TAS_TYPE ,
2017-02-09 15:17:13 -04:00
USERS . USR_LASTNAME ,
USERS . USR_FIRSTNAME ,
USERS . USR_USERNAME ,
PROCESS . PRO_TITLE AS APP_PRO_TITLE
FROM APP_DELEGATION
" ;
2017-03-01 09:58:38 -04:00
$sqlData .= " LEFT JOIN APPLICATION ON (APP_DELEGATION.APP_NUMBER = APPLICATION.APP_NUMBER) " ;
$sqlData .= " LEFT JOIN TASK ON (APP_DELEGATION.TAS_ID = TASK.TAS_ID) " ;
$sqlData .= " LEFT JOIN USERS ON (APP_DELEGATION.USR_ID = USERS.USR_ID) " ;
$sqlData .= " LEFT JOIN PROCESS ON (APP_DELEGATION.PRO_ID = PROCESS.PRO_ID) " ;
2017-02-09 15:17:13 -04:00
2017-03-01 09:58:38 -04:00
$sqlData .= " WHERE TASK.TAS_TYPE NOT IN (' " . implode ( " ',' " , $arrayTaskTypeToExclude ) . " ') " ;
2017-01-10 13:41:43 -04:00
switch ( $status ) {
case 1 : //DRAFT
2017-03-01 09:58:38 -04:00
$sqlData .= " AND APP_DELEGATION.DEL_THREAD_STATUS='OPEN' " ;
$sqlData .= " AND APPLICATION.APP_STATUS_ID = 1 " ;
2017-01-10 13:41:43 -04:00
break ;
case 2 : //TO_DO
2017-03-01 09:58:38 -04:00
$sqlData .= " AND APP_DELEGATION.DEL_THREAD_STATUS='OPEN' " ;
$sqlData .= " AND APPLICATION.APP_STATUS_ID = 2 " ;
2017-01-10 13:41:43 -04:00
break ;
case 3 : //COMPLETED
2017-03-01 09:58:38 -04:00
$sqlData .= " AND APPLICATION.APP_STATUS_ID = 3 " ;
$sqlData .= " AND APP_DELEGATION.DEL_LAST_INDEX = 1 " ;
2017-01-10 13:41:43 -04:00
break ;
case 4 : //CANCELLED
2017-03-01 09:58:38 -04:00
$sqlData .= " AND APPLICATION.APP_STATUS_ID = 4 " ;
$sqlData .= " AND APP_DELEGATION.DEL_LAST_INDEX = 1 " ;
2017-01-10 13:41:43 -04:00
break ;
case " PAUSED " : //This status is not considered in the search, maybe we can add in the new versions
2017-03-01 09:58:38 -04:00
$sqlData .= " AND APPLICATION.APP_STATUS = 'TO_DO' " ;
2017-01-10 13:41:43 -04:00
break ;
2017-01-13 19:11:14 -04:00
default : //All status
2017-03-01 09:58:38 -04:00
$sqlData .= " AND (APP_DELEGATION.DEL_THREAD_STATUS = 'OPEN' " ;
$sqlData .= " OR (APP_DELEGATION.DEL_THREAD_STATUS = 'CLOSED' AND APP_DELEGATION.DEL_LAST_INDEX = 1)) " ;
2017-01-10 13:41:43 -04:00
break ;
}
2017-03-01 09:58:38 -04:00
2017-01-10 13:41:43 -04:00
if ( ! empty ( $userUid )) {
2017-03-01 09:58:38 -04:00
$sqlData .= " AND APP_DELEGATION.USR_ID = " . $userUid ;
2017-01-10 13:41:43 -04:00
}
2017-03-01 09:58:38 -04:00
2017-01-10 13:41:43 -04:00
if ( ! empty ( $process )) {
2017-03-01 09:58:38 -04:00
$sqlData .= " AND APP_DELEGATION.PRO_ID = " . $process ;
2017-01-10 13:41:43 -04:00
}
2017-03-01 09:58:38 -04:00
2017-01-10 13:41:43 -04:00
if ( ! empty ( $category )) {
2017-02-09 15:17:13 -04:00
$category = mysql_real_escape_string ( $category );
2017-03-01 09:58:38 -04:00
$sqlData .= " AND PROCESS.PRO_CATEGORY = ' { $category } ' " ;
2017-01-10 13:41:43 -04:00
}
2017-03-01 09:58:38 -04:00
2017-01-10 13:41:43 -04:00
if ( ! empty ( $search )) {
2017-02-15 18:05:47 -04:00
//In the filter search we check in the following columns: APP_NUMBER APP_TAS_TITLE APP_TITLE
2017-03-01 09:58:38 -04:00
$sqlData .= " AND (APPLICATION.APP_TITLE LIKE '% { $search } %' OR APP_DELEGATION.APP_NUMBER LIKE '% { $search } %' OR TASK.TAS_TITLE LIKE '% { $search } %') " ;
2017-01-10 13:41:43 -04:00
}
2017-03-01 09:58:38 -04:00
2017-02-09 15:17:13 -04:00
if ( ! empty ( $dateFrom )) {
2017-03-01 09:58:38 -04:00
$sqlData .= " AND APP_DELEGATION.DEL_DELEGATE_DATE >= ' { $dateFrom } ' " ;
2017-01-13 19:11:14 -04:00
}
2017-03-01 09:58:38 -04:00
2017-02-09 15:17:13 -04:00
if ( ! empty ( $dateTo )) {
2017-01-13 19:11:14 -04:00
$dateTo = $dateTo . " 23:59:59 " ;
2017-03-01 09:58:38 -04:00
$sqlData .= " AND APP_DELEGATION.DEL_DELEGATE_DATE <= ' { $dateTo } ' " ;
2017-01-13 19:11:14 -04:00
}
2017-01-10 13:41:43 -04:00
2017-03-01 09:58:38 -04:00
//Add the additional filters
2017-02-16 16:06:14 -04:00
if ( ! empty ( $sort )) {
2017-02-16 15:00:57 -04:00
switch ( $sort ) {
case 'APP_NUMBER' :
//The order by APP_DELEGATION.APP_NUMBER is must be fast than APPLICATION.APP_NUMBER
$sort = 'APP_DELEGATION.APP_NUMBER' ;
break ;
case 'APP_CURRENT_USER' :
2017-03-01 09:58:38 -04:00
//The column APP_CURRENT_USER is result of concat those fields
2017-02-16 15:00:57 -04:00
$sort = 'USR_LASTNAME, USR_FIRSTNAME' ;
break ;
2017-02-09 15:17:13 -04:00
}
2017-03-01 09:58:38 -04:00
$sqlData .= " ORDER BY " . $sort ;
2017-02-09 15:17:13 -04:00
}
2017-03-01 09:58:38 -04:00
//Sorts the records in descending order by default
2017-02-09 15:17:13 -04:00
if ( ! empty ( $dir )) {
2017-03-01 09:58:38 -04:00
$sqlData .= " " . $dir ;
2017-02-09 15:17:13 -04:00
}
2017-03-01 09:58:38 -04:00
//Define the number of records by return
2017-05-15 08:55:44 -04:00
if ( empty ( $limit )) {
$limit = 25 ;
}
2017-02-09 15:17:13 -04:00
if ( ! empty ( $start )) {
2017-03-01 09:58:38 -04:00
$sqlData .= " LIMIT $start , " . $limit ;
2017-01-10 13:41:43 -04:00
} else {
2017-03-01 09:58:38 -04:00
$sqlData .= " LIMIT " . $limit ;
2017-01-10 13:41:43 -04:00
}
2017-03-01 09:58:38 -04:00
$oDataset = $stmt -> executeQuery ( $sqlData );
2017-01-10 13:41:43 -04:00
$result = array ();
2017-03-01 09:58:38 -04:00
//By performance enable always the pagination
$result [ 'totalCount' ] = $start + $limit + 1 ;
2017-01-10 13:41:43 -04:00
$rows = array ();
$aPriorities = array ( '1' => 'VL' , '2' => 'L' , '3' => 'N' , '4' => 'H' , '5' => 'VH' );
while ( $oDataset -> next ()) {
$aRow = $oDataset -> getRow ();
if ( isset ( $aRow [ 'APP_STATUS' ] )) {
$aRow [ 'APP_STATUS_LABEL' ] = G :: LoadTranslation ( " ID_ { $aRow [ 'APP_STATUS' ] } " );
}
if ( isset ( $aRow [ 'DEL_PRIORITY' ] )) {
$aRow [ 'DEL_PRIORITY' ] = G :: LoadTranslation ( " ID_PRIORITY_ { $aPriorities [ $aRow [ 'DEL_PRIORITY' ]] } " );
}
$aRow [ " APP_CURRENT_USER " ] = $aRow [ " USR_LASTNAME " ] . ' ' . $aRow [ " USR_FIRSTNAME " ];
$aRow [ " APPDELCR_APP_TAS_TITLE " ] = '' ;
$aRow [ " USRCR_USR_UID " ] = $aRow [ " USR_UID " ];
$aRow [ " USRCR_USR_FIRSTNAME " ] = $aRow [ " USR_FIRSTNAME " ];
$aRow [ " USRCR_USR_LASTNAME " ] = $aRow [ " USR_LASTNAME " ];
$aRow [ " USRCR_USR_USERNAME " ] = $aRow [ " USR_USERNAME " ];
$aRow [ " APP_OVERDUE_PERCENTAGE " ] = '' ;
$rows [] = $aRow ;
}
$result [ 'data' ] = $rows ;
return $result ;
}
2012-10-31 10:45:21 -04:00
public function getAll (
$userUid ,
$start = null ,
$limit = null ,
$action = null ,
$filter = null ,
$search = null ,
$process = null ,
$status = null ,
$type = null ,
$dateFrom = null ,
$dateTo = null ,
$callback = null ,
$dir = null ,
$sort = " APP_CACHE_VIEW.APP_NUMBER " ,
2013-07-25 11:14:29 -04:00
$category = null ,
2014-03-24 10:39:05 -04:00
$configuration = true ,
2016-03-08 14:48:37 -04:00
$paged = true ,
$newerThan = '' ,
$oldestThan = ''
2012-10-31 10:45:21 -04:00
) {
$callback = isset ( $callback ) ? $callback : " stcCallback1001 " ;
$dir = isset ( $dir ) ? $dir : " DESC " ;
2014-06-16 11:47:23 -04:00
if ( isset ( $sort )) {
$parser = new PHPSQLParser ( $sort );
$sort = $parser -> parsed ;
$sort = $sort [ '' ][ 0 ];
}
2012-10-31 10:45:21 -04:00
$sort = isset ( $sort ) ? $sort : " " ;
$start = isset ( $start ) ? $start : " 0 " ;
$limit = isset ( $limit ) ? $limit : " 25 " ;
$filter = isset ( $filter ) ? $filter : " " ;
$search = isset ( $search ) ? $search : " " ;
$process = isset ( $process ) ? $process : " " ;
$category = isset ( $category ) ? $category : " " ;
$status = isset ( $status ) ? $status : " " ;
$action = isset ( $action ) ? $action : " todo " ;
$type = isset ( $type ) ? $type : " extjs " ;
$dateFrom = isset ( $dateFrom ) ? $dateFrom : " " ;
$dateTo = isset ( $dateTo ) ? $dateTo : " " ;
2012-10-09 10:45:20 -04:00
$oAppCache = new AppCacheView ();
2013-07-25 11:14:29 -04:00
if ( $configuration == true ) {
//get data configuration
$conf = new Configurations ();
$confCasesList = $conf -> getConfiguration ( " casesList " , ( $action == " search " || $action == " simple_search " ) ? " search " : $action );
$oAppCache -> confCasesList = $confCasesList ;
}
2015-02-20 17:12:49 -04:00
2015-04-29 10:26:24 -04:00
$delimiter = DBAdapter :: getStringDelimiter ();
2012-10-09 10:45:20 -04:00
// get the action based list
switch ( $action ) {
2012-10-31 10:45:21 -04:00
case " draft " :
$Criteria = $oAppCache -> getDraftListCriteria ( $userUid );
$CriteriaCount = $oAppCache -> getDraftCountCriteria ( $userUid );
2012-10-09 10:45:20 -04:00
break ;
2012-10-31 10:45:21 -04:00
case " sent " :
$Criteria = $oAppCache -> getSentListCriteria ( $userUid );
$CriteriaCount = $oAppCache -> getSentCountCriteria ( $userUid );
if ( ! empty ( $status )) {
$Criteria -> add ( AppCacheViewPeer :: APP_STATUS , $status );
$CriteriaCount -> add ( AppCacheViewPeer :: APP_STATUS , $status );
}
2012-10-09 10:45:20 -04:00
break ;
2012-10-31 10:45:21 -04:00
case " selfservice " :
case " unassigned " :
//$userUid can't be empty or null
$Criteria = $oAppCache -> getUnassignedListCriteria ( $userUid );
$CriteriaCount = $oAppCache -> getUnassignedCountCriteria ( $userUid );
2012-10-09 10:45:20 -04:00
break ;
2012-10-31 10:45:21 -04:00
case " paused " :
$Criteria = $oAppCache -> getPausedListCriteria ( $userUid );
$CriteriaCount = $oAppCache -> getPausedCountCriteria ( $userUid );
2012-10-09 10:45:20 -04:00
break ;
2012-10-31 10:45:21 -04:00
case " completed " :
$Criteria = $oAppCache -> getCompletedListCriteria ( $userUid );
$CriteriaCount = $oAppCache -> getCompletedCountCriteria ( $userUid );
2012-10-09 10:45:20 -04:00
break ;
2012-10-31 10:45:21 -04:00
case " cancelled " :
$Criteria = $oAppCache -> getCancelledListCriteria ( $userUid );
$CriteriaCount = $oAppCache -> getCancelledCountCriteria ( $userUid );
2012-10-09 10:45:20 -04:00
break ;
2012-10-31 10:45:21 -04:00
case " search " :
//$Criteria = $oAppCache->getSearchListCriteria();
//$CriteriaCount = $oAppCache->getSearchCountCriteria();
switch ( $status ) {
case " TO_DO " :
$Criteria = $oAppCache -> getToDoListCriteria ( $userUid );
$CriteriaCount = $oAppCache -> getToDoCountCriteria ( $userUid );
break ;
case " DRAFT " :
$Criteria = $oAppCache -> getDraftListCriteria ( $userUid );
$CriteriaCount = $oAppCache -> getDraftCountCriteria ( $userUid );
break ;
case " PAUSED " :
$Criteria = $oAppCache -> getPausedListCriteria ( $userUid );
$CriteriaCount = $oAppCache -> getPausedCountCriteria ( $userUid );
break ;
case " CANCELLED " :
$Criteria = $oAppCache -> getCancelledListCriteria ( $userUid );
$CriteriaCount = $oAppCache -> getCancelledCountCriteria ( $userUid );
break ;
case " COMPLETED " :
$Criteria = $oAppCache -> getCompletedListCriteria ( $userUid );
$CriteriaCount = $oAppCache -> getCompletedCountCriteria ( $userUid );
2015-02-20 17:12:49 -04:00
2015-02-06 10:11:27 -04:00
$Criteria -> add ( AppCacheViewPeer :: DEL_LAST_INDEX , " 1 " );
$CriteriaCount -> add ( AppCacheViewPeer :: DEL_LAST_INDEX , " 1 " );
2012-10-31 10:45:21 -04:00
break ;
default :
//All status
$Criteria = $oAppCache -> getAllCasesListCriteria2 ( $userUid );
$CriteriaCount = $oAppCache -> getAllCasesCountCriteria2 ( $userUid );
break ;
}
2012-10-09 10:45:20 -04:00
break ;
2012-10-31 10:45:21 -04:00
case " simple_search " :
2012-10-09 10:45:20 -04:00
$Criteria = $oAppCache -> getSimpleSearchListCriteria ();
$CriteriaCount = $oAppCache -> getSimpleSearchCountCriteria ();
break ;
2012-10-31 10:45:21 -04:00
case " to_revise " :
$Criteria = $oAppCache -> getToReviseListCriteria ( $userUid );
$CriteriaCount = $oAppCache -> getToReviseCountCriteria ( $userUid );
2012-10-09 10:45:20 -04:00
break ;
2012-10-31 10:45:21 -04:00
case " to_reassign " :
2016-08-29 10:12:08 -04:00
GLOBAL $RBAC ;
if ( $RBAC -> userCanAccess ( 'PM_REASSIGNCASE' ) == 1 ){
$Criteria = $oAppCache -> getToReassignListCriteria ( $userUid );
$CriteriaCount = $oAppCache -> getToReassignCountCriteria ( $userUid );
} else {
$Criteria = $oAppCache -> getToReassignSupervisorListCriteria ( $userUid );
$CriteriaCount = $oAppCache -> getToReassignSupervisorCountCriteria ( $userUid );
}
2012-10-09 10:45:20 -04:00
break ;
2012-10-31 10:45:21 -04:00
case " all " :
$Criteria = $oAppCache -> getAllCasesListCriteria ( $userUid );
$CriteriaCount = $oAppCache -> getAllCasesCountCriteria ( $userUid );
2012-10-09 10:45:20 -04:00
break ;
2012-10-31 10:45:21 -04:00
case " gral " :
//General criteria probably will be deprecated
2012-10-09 10:45:20 -04:00
$Criteria = $oAppCache -> getGeneralListCriteria ();
$CriteriaCount = $oAppCache -> getGeneralCountCriteria ();
break ;
2012-10-31 10:45:21 -04:00
case " todo " :
$Criteria = $oAppCache -> getToDoListCriteria ( $userUid );
$CriteriaCount = $oAppCache -> getToDoCountCriteria ( $userUid );
break ;
2012-10-09 10:45:20 -04:00
default :
2012-10-31 10:45:21 -04:00
//All status
$Criteria = $oAppCache -> getAllCasesListCriteria2 ( $userUid );
$CriteriaCount = $oAppCache -> getAllCasesCountCriteria2 ( $userUid );
2012-10-09 10:45:20 -04:00
break ;
}
2015-02-20 17:12:49 -04:00
$arrayTaskTypeToExclude = array ( " WEBENTRYEVENT " , " END-MESSAGE-EVENT " , " START-MESSAGE-EVENT " , " INTERMEDIATE-THROW-MESSAGE-EVENT " , " INTERMEDIATE-CATCH-MESSAGE-EVENT " );
2016-06-10 11:09:01 -04:00
$Criteria -> addSelectColumn ( AppCacheViewPeer :: TAS_UID );
$Criteria -> addSelectColumn ( AppCacheViewPeer :: PRO_UID );
2015-02-20 17:12:49 -04:00
$Criteria -> addJoin ( AppCacheViewPeer :: TAS_UID , TaskPeer :: TAS_UID , Criteria :: LEFT_JOIN );
$Criteria -> add ( TaskPeer :: TAS_TYPE , $arrayTaskTypeToExclude , Criteria :: NOT_IN );
$CriteriaCount -> addJoin ( AppCacheViewPeer :: TAS_UID , TaskPeer :: TAS_UID , Criteria :: LEFT_JOIN );
$CriteriaCount -> add ( TaskPeer :: TAS_TYPE , $arrayTaskTypeToExclude , Criteria :: NOT_IN );
2012-10-09 10:45:20 -04:00
$Criteria -> addAlias ( 'CU' , 'USERS' );
$Criteria -> addJoin ( AppCacheViewPeer :: USR_UID , 'CU.USR_UID' , Criteria :: LEFT_JOIN );
2012-11-14 17:15:13 -04:00
$Criteria -> addAsColumn ( 'USR_UID' , 'CU.USR_UID' );
2012-10-09 10:45:20 -04:00
$Criteria -> addAsColumn ( 'USR_FIRSTNAME' , 'CU.USR_FIRSTNAME' );
$Criteria -> addAsColumn ( 'USR_LASTNAME' , 'CU.USR_LASTNAME' );
$Criteria -> addAsColumn ( 'USR_USERNAME' , 'CU.USR_USERNAME' );
2014-04-01 15:22:38 -04:00
$CriteriaCount -> addAlias ( 'CU' , 'USERS' );
$CriteriaCount -> addJoin ( AppCacheViewPeer :: USR_UID , 'CU.USR_UID' , Criteria :: LEFT_JOIN );
$CriteriaCount -> addAsColumn ( 'USR_UID' , 'CU.USR_UID' );
$CriteriaCount -> addAsColumn ( 'USR_FIRSTNAME' , 'CU.USR_FIRSTNAME' );
$CriteriaCount -> addAsColumn ( 'USR_LASTNAME' , 'CU.USR_LASTNAME' );
$CriteriaCount -> addAsColumn ( 'USR_USERNAME' , 'CU.USR_USERNAME' );
2013-02-13 14:10:20 -04:00
//Current delegation
2015-04-29 10:26:24 -04:00
$appdelcrTableName = AppCacheViewPeer :: TABLE_NAME ;
$appdelcrAppTasTitle = " APPDELCR.APP_TAS_TITLE " ;
$appdelcrAppTasTitleCount = $appdelcrAppTasTitle ;
switch ( $action ) {
case " sent " :
$appdelcrTableName = AppDelegationPeer :: TABLE_NAME ;
$appdelcrAppTasTitle = " (SELECT CON_VALUE FROM CONTENT WHERE CON_ID = APPDELCR.TAS_UID AND CON_LANG = " . $delimiter . SYS_LANG . $delimiter . " AND CON_CATEGORY = " . $delimiter . " TAS_TITLE " . $delimiter . " ) " ;
$appdelcrAppTasTitleCount = " APPDELCR.TAS_UID " ;
break ;
case " to_reassign " :
$appdelcrAppTasTitle = " APP_CACHE_VIEW.APP_TAS_TITLE " ;
$appdelcrAppTasTitleCount = $appdelcrAppTasTitle ;
break ;
2013-03-08 10:59:16 -04:00
}
2015-04-29 10:26:24 -04:00
$Criteria -> addAsColumn ( " APPDELCR_APP_TAS_TITLE " , $appdelcrAppTasTitle );
$CriteriaCount -> addAsColumn ( " APPDELCR_APP_TAS_TITLE " , $appdelcrAppTasTitleCount );
2013-02-15 16:26:51 -04:00
$Criteria -> addAsColumn ( " USRCR_USR_UID " , " USRCR.USR_UID " );
$Criteria -> addAsColumn ( " USRCR_USR_FIRSTNAME " , " USRCR.USR_FIRSTNAME " );
$Criteria -> addAsColumn ( " USRCR_USR_LASTNAME " , " USRCR.USR_LASTNAME " );
$Criteria -> addAsColumn ( " USRCR_USR_USERNAME " , " USRCR.USR_USERNAME " );
2014-04-01 15:22:38 -04:00
$CriteriaCount -> addAsColumn ( " USRCR_USR_UID " , " USRCR.USR_UID " );
$CriteriaCount -> addAsColumn ( " USRCR_USR_FIRSTNAME " , " USRCR.USR_FIRSTNAME " );
$CriteriaCount -> addAsColumn ( " USRCR_USR_LASTNAME " , " USRCR.USR_LASTNAME " );
$CriteriaCount -> addAsColumn ( " USRCR_USR_USERNAME " , " USRCR.USR_USERNAME " );
2015-04-29 10:26:24 -04:00
$Criteria -> addAlias ( " APPDELCR " , $appdelcrTableName );
2013-02-13 14:10:20 -04:00
$Criteria -> addAlias ( " USRCR " , UsersPeer :: TABLE_NAME );
2015-04-29 10:26:24 -04:00
$CriteriaCount -> addAlias ( " APPDELCR " , $appdelcrTableName );
2014-04-01 15:22:38 -04:00
$CriteriaCount -> addAlias ( " USRCR " , UsersPeer :: TABLE_NAME );
2013-02-13 14:10:20 -04:00
$arrayCondition = array ();
2015-04-29 10:26:24 -04:00
$arrayCondition [] = array ( AppCacheViewPeer :: APP_UID , " APPDELCR.APP_UID " );
$arrayCondition [] = array ( " APPDELCR.DEL_LAST_INDEX " , 1 );
2013-02-13 14:10:20 -04:00
$Criteria -> addJoinMC ( $arrayCondition , Criteria :: LEFT_JOIN );
2014-04-01 15:22:38 -04:00
$CriteriaCount -> addJoinMC ( $arrayCondition , Criteria :: LEFT_JOIN );
2013-02-13 14:10:20 -04:00
$arrayCondition = array ();
2015-04-29 10:26:24 -04:00
$arrayCondition [] = array ( " APPDELCR.USR_UID " , " USRCR.USR_UID " );
2013-02-13 14:10:20 -04:00
$Criteria -> addJoinMC ( $arrayCondition , Criteria :: LEFT_JOIN );
2014-04-01 15:22:38 -04:00
$CriteriaCount -> addJoinMC ( $arrayCondition , Criteria :: LEFT_JOIN );
2013-02-13 14:10:20 -04:00
//Previous user
2014-04-23 16:28:02 -04:00
2012-10-31 10:45:21 -04:00
if (( $action == " todo " || $action == " selfservice " || $action == " unassigned " || $action == " paused " || $action == " to_revise " || $action == " sent " ) || ( $status == " TO_DO " || $status == " DRAFT " || $status == " PAUSED " || $status == " CANCELLED " || $status == " COMPLETED " )) {
2012-10-09 10:45:20 -04:00
$Criteria -> addAlias ( 'PU' , 'USERS' );
$Criteria -> addJoin ( AppCacheViewPeer :: PREVIOUS_USR_UID , 'PU.USR_UID' , Criteria :: LEFT_JOIN );
$Criteria -> addAsColumn ( 'PREVIOUS_USR_FIRSTNAME' , 'PU.USR_FIRSTNAME' );
$Criteria -> addAsColumn ( 'PREVIOUS_USR_LASTNAME' , 'PU.USR_LASTNAME' );
$Criteria -> addAsColumn ( 'PREVIOUS_USR_USERNAME' , 'PU.USR_USERNAME' );
2014-04-01 15:22:38 -04:00
$CriteriaCount -> addAlias ( 'PU' , 'USERS' );
$CriteriaCount -> addJoin ( AppCacheViewPeer :: PREVIOUS_USR_UID , 'PU.USR_UID' , Criteria :: LEFT_JOIN );
$CriteriaCount -> addAsColumn ( 'PREVIOUS_USR_FIRSTNAME' , 'PU.USR_FIRSTNAME' );
$CriteriaCount -> addAsColumn ( 'PREVIOUS_USR_LASTNAME' , 'PU.USR_LASTNAME' );
$CriteriaCount -> addAsColumn ( 'PREVIOUS_USR_USERNAME' , 'PU.USR_USERNAME' );
2012-10-09 10:45:20 -04:00
}
2012-10-31 10:45:21 -04:00
/*
2012-10-09 10:45:20 -04:00
if ( ! is_array ( $confCasesList )) {
$rows = $this -> getDefaultFields ( $action );
$result = $this -> genericJsonResponse ( '' , array (), $rows , 20 , '' );
//$conf->saveObject($result,'casesList',$action,'','','');
}
2012-10-31 10:45:21 -04:00
*/
2012-10-09 10:45:20 -04:00
2012-11-05 15:14:51 -04:00
//Add the process filter
if ( ! empty ( $process )) {
$Criteria -> add ( AppCacheViewPeer :: PRO_UID , $process , Criteria :: EQUAL );
$CriteriaCount -> add ( AppCacheViewPeer :: PRO_UID , $process , Criteria :: EQUAL );
2012-10-09 10:45:20 -04:00
}
2012-11-05 15:14:51 -04:00
//Add the category filter
if ( ! empty ( $category )) {
2012-12-12 13:39:22 -04:00
require_once 'classes/model/Process.php' ;
2012-11-05 15:14:51 -04:00
$Criteria -> addAlias ( " CP " , " PROCESS " );
$Criteria -> add ( " CP.PRO_CATEGORY " , $category , Criteria :: EQUAL );
$Criteria -> addJoin ( AppCacheViewPeer :: PRO_UID , " CP.PRO_UID " , Criteria :: LEFT_JOIN );
$Criteria -> addAsColumn ( " CATEGORY_UID " , " CP.PRO_CATEGORY " );
$CriteriaCount -> addAlias ( " CP " , " PROCESS " );
$CriteriaCount -> add ( " CP.PRO_CATEGORY " , $category , Criteria :: EQUAL );
$CriteriaCount -> addJoin ( AppCacheViewPeer :: PRO_UID , " CP.PRO_UID " , Criteria :: LEFT_JOIN );
$CriteriaCount -> addAsColumn ( " CATEGORY_UID " , " CP.PRO_CATEGORY " );
2012-10-09 10:45:20 -04:00
}
// add the user filter
2012-10-31 10:45:21 -04:00
/*
2012-10-09 10:45:20 -04:00
if ( $user != '' ) {
$Criteria -> add ( AppCacheViewPeer :: USR_UID , $user , Criteria :: EQUAL );
$CriteriaCount -> add ( AppCacheViewPeer :: USR_UID , $user , Criteria :: EQUAL );
}
if ( $status != '' ) {
$Criteria -> add ( AppCacheViewPeer :: APP_STATUS , $status , Criteria :: EQUAL );
$CriteriaCount -> add ( AppCacheViewPeer :: APP_STATUS , $status , Criteria :: EQUAL );
}
2012-10-31 10:45:21 -04:00
*/
2012-10-09 10:45:20 -04:00
2013-05-07 17:16:14 +00:00
if ( $dateFrom != " " ) {
if ( $dateTo != " " ) {
if ( $dateFrom == $dateTo ) {
$dateSame = $dateFrom ;
$dateFrom = $dateSame . " 00:00:00 " ;
$dateTo = $dateSame . " 23:59:59 " ;
} else {
$dateFrom = $dateFrom . " 00:00:00 " ;
$dateTo = $dateTo . " 23:59:59 " ;
}
$Criteria -> add ( $Criteria -> getNewCriterion ( AppCacheViewPeer :: DEL_DELEGATE_DATE , $dateFrom , Criteria :: GREATER_EQUAL ) -> addAnd ( $Criteria -> getNewCriterion ( AppCacheViewPeer :: DEL_DELEGATE_DATE , $dateTo , Criteria :: LESS_EQUAL ) ) );
2016-03-08 14:48:37 -04:00
$CriteriaCount -> add ( $CriteriaCount -> getNewCriterion ( AppCacheViewPeer :: DEL_DELEGATE_DATE , $dateFrom , Criteria :: GREATER_EQUAL ) -> addAnd ( $CriteriaCount -> getNewCriterion ( AppCacheViewPeer :: DEL_DELEGATE_DATE , $dateTo , Criteria :: LESS_EQUAL ) ) );
2012-10-09 10:45:20 -04:00
} else {
2013-05-07 17:16:14 +00:00
$dateFrom = $dateFrom . " 00:00:00 " ;
2012-10-09 10:45:20 -04:00
$Criteria -> add ( AppCacheViewPeer :: DEL_DELEGATE_DATE , $dateFrom , Criteria :: GREATER_EQUAL );
$CriteriaCount -> add ( AppCacheViewPeer :: DEL_DELEGATE_DATE , $dateFrom , Criteria :: GREATER_EQUAL );
}
2013-05-07 17:16:14 +00:00
} elseif ( $dateTo != " " ) {
$dateTo = $dateTo . " 23:59:59 " ;
2012-10-09 10:45:20 -04:00
$Criteria -> add ( AppCacheViewPeer :: DEL_DELEGATE_DATE , $dateTo , Criteria :: LESS_EQUAL );
$CriteriaCount -> add ( AppCacheViewPeer :: DEL_DELEGATE_DATE , $dateTo , Criteria :: LESS_EQUAL );
}
2016-03-08 14:48:37 -04:00
if ( $newerThan != '' ) {
if ( $oldestThan != '' ) {
$Criteria -> add (
$Criteria -> getNewCriterion ( AppCacheViewPeer :: DEL_DELEGATE_DATE , $newerThan , Criteria :: GREATER_THAN ) -> addAnd (
$Criteria -> getNewCriterion ( AppCacheViewPeer :: DEL_DELEGATE_DATE , $oldestThan , Criteria :: LESS_THAN ))
);
$CriteriaCount -> add (
$CriteriaCount -> getNewCriterion ( AppCacheViewPeer :: DEL_DELEGATE_DATE , $newerThan , Criteria :: GREATER_THAN ) -> addAnd (
$CriteriaCount -> getNewCriterion ( AppCacheViewPeer :: DEL_DELEGATE_DATE , $oldestThan , Criteria :: LESS_THAN ))
);
} else {
$Criteria -> add ( AppCacheViewPeer :: DEL_DELEGATE_DATE , $newerThan , Criteria :: GREATER_THAN );
$CriteriaCount -> add ( AppCacheViewPeer :: DEL_DELEGATE_DATE , $newerThan , Criteria :: GREATER_THAN );
}
} else {
if ( $oldestThan != '' ) {
$Criteria -> add ( AppCacheViewPeer :: DEL_DELEGATE_DATE , $oldestThan , Criteria :: LESS_THAN );
$CriteriaCount -> add ( AppCacheViewPeer :: DEL_DELEGATE_DATE , $oldestThan , Criteria :: LESS_THAN );
}
}
2012-10-09 10:45:20 -04:00
//add the filter
if ( $filter != '' ) {
switch ( $filter ) {
case 'read' :
$Criteria -> add ( AppCacheViewPeer :: DEL_INIT_DATE , null , Criteria :: ISNOTNULL );
$CriteriaCount -> add ( AppCacheViewPeer :: DEL_INIT_DATE , null , Criteria :: ISNOTNULL );
break ;
case 'unread' :
$Criteria -> add ( AppCacheViewPeer :: DEL_INIT_DATE , null , Criteria :: ISNULL );
$CriteriaCount -> add ( AppCacheViewPeer :: DEL_INIT_DATE , null , Criteria :: ISNULL );
break ;
case 'started' :
$Criteria -> add ( AppCacheViewPeer :: DEL_INDEX , 1 , Criteria :: EQUAL );
$CriteriaCount -> add ( AppCacheViewPeer :: DEL_INDEX , 1 , Criteria :: EQUAL );
break ;
case 'completed' :
$Criteria -> add ( AppCacheViewPeer :: APP_STATUS , 'COMPLETED' , Criteria :: EQUAL );
$CriteriaCount -> add ( AppCacheViewPeer :: APP_STATUS , 'COMPLETED' , Criteria :: EQUAL );
break ;
}
}
2012-12-11 10:26:10 -04:00
//Add the search filter
2012-10-09 10:45:20 -04:00
if ( $search != '' ) {
$oTmpCriteria = '' ;
2012-12-11 10:26:10 -04:00
//If there is PMTable for this case list
if ( is_array ( $oAppCache -> confCasesList ) && count ( $oAppCache -> confCasesList ) > 0 && isset ( $oAppCache -> confCasesList [ " PMTable " ]) && trim ( $oAppCache -> confCasesList [ " PMTable " ]) != " " ) {
//Default configuration fields array
$defaultFields = $oAppCache -> getDefaultFields ();
//Getting the table name
$additionalTableUid = $oAppCache -> confCasesList [ " PMTable " ];
$additionalTable = AdditionalTablesPeer :: retrieveByPK ( $additionalTableUid );
$tableName = $additionalTable -> getAddTabName ();
$additionalTable = new AdditionalTables ();
$tableData = $additionalTable -> load ( $additionalTableUid , true );
$tableField = array ();
foreach ( $tableData [ " FIELDS " ] as $arrayField ) {
$tableField [] = $arrayField [ " FLD_NAME " ];
}
$oNewCriteria = new Criteria ( " workflow " );
$sw = 0 ;
foreach ( $oAppCache -> confCasesList [ " second " ][ " data " ] as $fieldData ) {
if ( ! in_array ( $fieldData [ " name " ], $defaultFields )) {
if ( in_array ( $fieldData [ " name " ], $tableField )) {
$fieldName = $tableName . " . " . $fieldData [ " name " ];
if ( $sw == 0 ) {
$oTmpCriteria = $oNewCriteria -> getNewCriterion ( $fieldName , " % " . $search . " % " , Criteria :: LIKE );
} else {
$oTmpCriteria = $oNewCriteria -> getNewCriterion ( $fieldName , " % " . $search . " % " , Criteria :: LIKE ) -> addOr ( $oTmpCriteria );
}
$sw = 1 ;
2012-10-09 10:45:20 -04:00
}
}
}
2012-12-11 10:26:10 -04:00
2012-10-09 10:45:20 -04:00
//add the default and hidden DEL_INIT_DATE
}
// the criteria adds new fields if there are defined PM Table Fields in the cases list
if ( $oTmpCriteria != '' ) {
2016-06-07 16:52:49 -04:00
$Criteria -> add (
$Criteria -> getNewCriterion ( AppCacheViewPeer :: APP_TITLE , '%' . $search . '%' , Criteria :: LIKE ) -> addOr (
$Criteria -> getNewCriterion ( AppCacheViewPeer :: APP_TAS_TITLE , '%' . $search . '%' , Criteria :: LIKE ) -> addOr (
$Criteria -> getNewCriterion ( AppCacheViewPeer :: APP_UID , $search , Criteria :: EQUAL ) -> addOr (
$Criteria -> getNewCriterion ( AppCacheViewPeer :: APP_NUMBER , $search , Criteria :: EQUAL ) -> addOr (
$oTmpCriteria
)))));
2012-10-09 10:45:20 -04:00
} else {
2016-06-07 16:52:49 -04:00
$Criteria -> add (
$Criteria -> getNewCriterion ( AppCacheViewPeer :: APP_TITLE , '%' . $search . '%' , Criteria :: LIKE ) -> addOr (
$Criteria -> getNewCriterion ( AppCacheViewPeer :: APP_TAS_TITLE , '%' . $search . '%' , Criteria :: LIKE ) -> addOr (
$Criteria -> getNewCriterion ( AppCacheViewPeer :: APP_UID , $search , Criteria :: EQUAL ) -> addOr (
$Criteria -> getNewCriterion ( AppCacheViewPeer :: APP_NUMBER , $search , Criteria :: EQUAL )
))));
2012-10-09 10:45:20 -04:00
}
// the count query needs to be the normal criteria query if there are defined PM Table Fields in the cases list
if ( $oTmpCriteria != '' ) {
$CriteriaCount = $Criteria ;
} else {
2016-06-07 16:52:49 -04:00
$CriteriaCount -> add (
$CriteriaCount -> getNewCriterion ( AppCacheViewPeer :: APP_TITLE , '%' . $search . '%' , Criteria :: LIKE ) -> addOr (
$CriteriaCount -> getNewCriterion ( AppCacheViewPeer :: APP_TAS_TITLE , '%' . $search . '%' , Criteria :: LIKE ) -> addOr (
$CriteriaCount -> getNewCriterion ( AppCacheViewPeer :: APP_UID , $search , Criteria :: EQUAL ) -> addOr (
$CriteriaCount -> getNewCriterion ( AppCacheViewPeer :: APP_NUMBER , $search , Criteria :: EQUAL )
))));
2012-10-09 10:45:20 -04:00
}
}
2012-10-31 10:45:21 -04:00
// this is the optimal way or query to render the cases search list
// fixing the bug related to the wrong data displayed in the list
/*
if ( $action == 'search' ) {
$oDatasetIndex = AppCacheViewPeer :: doSelectRS ( $Criteria );
$oDatasetIndex -> setFetchmode ( ResultSet :: FETCHMODE_ASSOC );
$oDatasetIndex -> next ();
$maxDelIndexList = array ();
// a list of MAX_DEL_INDEXES is required in order to validate the right row
while ( $aRow = $oDatasetIndex -> getRow ()) {
$maxDelIndexList [] = $aRow [ 'MAX_DEL_INDEX' ];
$oDatasetIndex -> next ();
}
// adding the validation condition in order to get the right row using the group by sentence
$Criteria -> add ( AppCacheViewPeer :: DEL_INDEX , $maxDelIndexList , Criteria :: IN );
//
//$params = array($maxDelIndexList);
}
*/
2012-10-09 10:45:20 -04:00
//here we count how many records exists for this criteria.
//BUT there are some special cases, and if we dont optimize them the server will crash.
2014-03-24 10:39:05 -04:00
$doCountAlreadyExecuted = $paged ;
2012-10-09 10:45:20 -04:00
//case 1. when the SEARCH action is selected and none filter, search criteria is defined,
//we need to count using the table APPLICATION, because APP_CACHE_VIEW takes 3 seconds
2012-10-31 10:45:21 -04:00
/*
2012-10-09 10:45:20 -04:00
if ( $action == 'search' && $filter == '' && $search == '' && $process == '' && $status == '' && $dateFrom == '' && $dateTo == '' && $category == '' ) {
$totalCount = $oAppCache -> getSearchAllCount ();
$doCountAlreadyExecuted = true ;
}
if ( $category != '' ) {
$totalCount = $oAppCache -> getSearchCountCriteria ();
$doCountAlreadyExecuted = true ;
}
2012-10-31 10:45:21 -04:00
*/
2013-12-13 09:58:16 -04:00
$tableNameAux = '' ;
2014-03-24 10:39:05 -04:00
$totalCount = 0 ;
if ( $doCountAlreadyExecuted == true ) {
2012-10-09 10:45:20 -04:00
// in the case of reassign the distinct attribute shows a diferent count result comparing to the
// original list
2012-11-05 15:14:51 -04:00
//Check also $distinct in the method getListCounters(), this in AppCacheView.php
$distinct = true ;
2014-11-04 11:51:59 -04:00
if ( $action != " sent " && (( $action == " todo " || $action == " selfservice " || $action == " unassigned " || $action == " to_reassign " || $action == " to_revise " ) || ( $status == " TO_DO " ))) {
2012-10-09 10:45:20 -04:00
$distinct = false ;
}
2012-11-05 15:14:51 -04:00
2012-10-09 10:45:20 -04:00
// first check if there is a PMTable defined within the list,
// the issue that brokes the normal criteria query seems to be fixed
if ( isset ( $oAppCache -> confCasesList [ 'PMTable' ] ) && ! empty ( $oAppCache -> confCasesList [ 'PMTable' ] )) {
// then
$oAdditionalTables = AdditionalTablesPeer :: retrieveByPK ( $oAppCache -> confCasesList [ 'PMTable' ] );
$tableName = $oAdditionalTables -> getAddTabName ();
2013-12-13 09:58:16 -04:00
$tableNameAux = $tableName ;
2012-10-09 10:45:20 -04:00
$tableName = strtolower ( $tableName );
$tableNameArray = explode ( '_' , $tableName );
foreach ( $tableNameArray as $item ) {
$newTableName [] = ucfirst ( $item );
}
$tableName = implode ( '' , $newTableName );
// so the pm table class can be invoqued from the pm table model clases
if ( ! class_exists ( $tableName )) {
require_once ( PATH_DB . SYS_SYS . PATH_SEP . " classes " . PATH_SEP . $tableName . " .php " );
}
}
2013-01-09 15:43:08 -04:00
$totalCount = AppCacheViewPeer :: doCount ( $CriteriaCount , $distinct );
2012-10-09 10:45:20 -04:00
}
2013-03-21 17:19:54 -04:00
//Add sortable options
2014-10-07 14:47:25 -04:00
$sortBk = $sort ;
if ( $sortBk != " " ) {
$sort = " " ;
2013-03-21 17:19:54 -04:00
//Current delegation (*)
2016-01-29 14:06:48 -04:00
if ( $action == 'sent' || $action == 'simple_search' || $action == 'to_reassign' ) {
2014-10-07 14:47:25 -04:00
switch ( $sortBk ) {
2013-03-21 17:19:54 -04:00
case " APP_CACHE_VIEW.APP_CURRENT_USER " :
2013-06-18 16:25:05 -04:00
$sort = " USRCR_ " . $conf -> userNameFormatGetFirstFieldByUsersTable ();
2013-03-21 17:19:54 -04:00
break ;
case " APP_CACHE_VIEW.APP_TAS_TITLE " :
2015-04-29 10:26:24 -04:00
$sort = " APPDELCR_APP_TAS_TITLE " ;
2013-03-21 17:19:54 -04:00
break ;
}
}
2014-10-07 14:47:25 -04:00
2013-12-13 09:58:16 -04:00
if ( isset ( $oAppCache -> confCasesList [ 'PMTable' ] ) && ! empty ( $oAppCache -> confCasesList [ 'PMTable' ] ) && $tableNameAux != '' ) {
2014-10-07 14:47:25 -04:00
$sortTable = explode ( " . " , $sortBk );
2013-12-12 10:27:58 -04:00
2013-12-13 09:58:16 -04:00
$additionalTableUid = $oAppCache -> confCasesList [ " PMTable " ];
2014-10-07 14:47:25 -04:00
2013-12-13 09:58:16 -04:00
require_once 'classes/model/Fields.php' ;
$oCriteria = new Criteria ( 'workflow' );
$oCriteria -> addSelectColumn ( FieldsPeer :: FLD_UID );
$oCriteria -> addSelectColumn ( FieldsPeer :: FLD_INDEX );
$oCriteria -> addSelectColumn ( FieldsPeer :: FLD_NAME );
$oCriteria -> addSelectColumn ( FieldsPeer :: FLD_DESCRIPTION );
$oCriteria -> addSelectColumn ( FieldsPeer :: FLD_TYPE );
$oCriteria -> addSelectColumn ( FieldsPeer :: FLD_SIZE );
$oCriteria -> addSelectColumn ( FieldsPeer :: FLD_NULL );
$oCriteria -> addSelectColumn ( FieldsPeer :: FLD_AUTO_INCREMENT );
$oCriteria -> addSelectColumn ( FieldsPeer :: FLD_KEY );
$oCriteria -> addSelectColumn ( FieldsPeer :: FLD_FOREIGN_KEY );
$oCriteria -> addSelectColumn ( FieldsPeer :: FLD_FOREIGN_KEY_TABLE );
$oCriteria -> addSelectColumn ( FieldsPeer :: FLD_DYN_NAME );
$oCriteria -> addSelectColumn ( FieldsPeer :: FLD_DYN_UID );
$oCriteria -> addSelectColumn ( FieldsPeer :: FLD_FILTER );
$oCriteria -> add ( FieldsPeer :: ADD_TAB_UID , $additionalTableUid );
$oCriteria -> add ( FieldsPeer :: FLD_NAME , $sortTable [ 1 ]);
$oCriteria -> addAscendingOrderByColumn ( FieldsPeer :: FLD_INDEX );
$oDataset = FieldsPeer :: doSelectRS ( $oCriteria );
2015-12-03 17:30:42 -04:00
if ( $oDataset -> next ()) {
2013-12-13 09:58:16 -04:00
$sort = $tableNameAux . " . " . $sortTable [ 1 ];
2013-12-12 10:27:58 -04:00
}
}
2013-03-21 17:19:54 -04:00
2015-12-03 17:30:42 -04:00
$arraySelectColumn = $Criteria -> getSelectColumns ();
if ( ! in_array ( $sort , $arraySelectColumn )) {
2014-10-07 14:47:25 -04:00
$sort = $sortBk ;
2015-12-03 17:30:42 -04:00
if ( ! in_array ( $sort , $arraySelectColumn )) {
$sort = AppCacheViewPeer :: APP_NUMBER ; //DEFAULT VALUE
}
2014-10-07 14:47:25 -04:00
}
2013-03-21 17:19:54 -04:00
if ( $dir == " DESC " ) {
$Criteria -> addDescendingOrderByColumn ( $sort );
2012-10-09 10:45:20 -04:00
} else {
2013-03-21 17:19:54 -04:00
$Criteria -> addAscendingOrderByColumn ( $sort );
2012-10-09 10:45:20 -04:00
}
}
//limit the results according the interface
$Criteria -> setLimit ( $limit );
$Criteria -> setOffset ( $start );
//execute the query
2014-08-28 15:55:40 -04:00
$oDataset = AppCacheViewPeer :: doSelectRS ( $Criteria , Propel :: getDbConnection ( 'workflow_ro' ) );
2014-06-16 11:47:23 -04:00
2012-10-09 10:45:20 -04:00
$oDataset -> setFetchmode ( ResultSet :: FETCHMODE_ASSOC );
2014-08-11 09:42:53 -04:00
2012-10-09 10:45:20 -04:00
$result = array ();
$result [ 'totalCount' ] = $totalCount ;
$rows = array ();
2013-07-25 11:14:29 -04:00
$aPriorities = array ( '1' => 'VL' , '2' => 'L' , '3' => 'N' , '4' => 'H' , '5' => 'VH' );
2012-10-09 10:45:20 -04:00
$index = $start ;
2014-08-11 09:42:53 -04:00
while ( $oDataset -> next ()) {
$aRow = $oDataset -> getRow ();
2012-10-09 10:45:20 -04:00
//$aRow = $oAppCache->replaceRowUserData($aRow);
/*
* For participated cases , we want the last step in the case , not only the last step this user participated . To do that we get every case information again for the last step . ( This could be solved by a subquery , but Propel might not support it and subqueries can be slower for larger
* datasets ) .
*/
/* if ( $action == 'sent' || $action == 'search' ) {
$maxCriteria = new Criteria ( 'workflow' );
$maxCriteria -> add ( AppCacheViewPeer :: APP_UID , $aRow [ 'APP_UID' ], Criteria :: EQUAL );
$maxCriteria -> addDescendingOrderByColumn ( AppCacheViewPeer :: DEL_INDEX );
$maxCriteria -> setLimit ( 1 );
$maxDataset = AppCacheViewPeer :: doSelectRS ( $maxCriteria );
$maxDataset -> setFetchmode ( ResultSet :: FETCHMODE_ASSOC );
$maxDataset -> next ();
$newData = $maxDataset -> getRow ();
foreach ( $aRow as $col => $value ) {
if ( array_key_exists ( $col , $newData ))
$aRow [ $col ] = $newData [ $col ];
}
$maxDataset -> close ();
} */
2016-01-29 14:06:48 -04:00
//Current delegation (*)
if ( $action == 'sent' || $action == 'simple_search' || $action == 'to_reassign' ) {
2013-02-13 14:10:20 -04:00
//Current task
2015-04-29 10:26:24 -04:00
$aRow [ " APP_TAS_TITLE " ] = $aRow [ " APPDELCR_APP_TAS_TITLE " ];
2013-02-13 14:10:20 -04:00
//Current user
2014-04-23 16:28:02 -04:00
//if ($action != "to_reassign" ) {
if (( $action != " to_reassign " ) && ( $action != " search " ) && ( $action != " to revise " )) {
2013-03-28 10:45:26 -04:00
$aRow [ " USR_UID " ] = $aRow [ " USRCR_USR_UID " ];
$aRow [ " USR_FIRSTNAME " ] = $aRow [ " USRCR_USR_FIRSTNAME " ];
$aRow [ " USR_LASTNAME " ] = $aRow [ " USRCR_USR_LASTNAME " ];
$aRow [ " USR_USERNAME " ] = $aRow [ " USRCR_USR_USERNAME " ];
}
2013-02-13 14:10:20 -04:00
}
//Unassigned user
2012-10-09 10:45:20 -04:00
if ( ! isset ( $aRow [ 'APP_CURRENT_USER' ] )) {
2013-02-13 14:10:20 -04:00
$aRow [ 'APP_CURRENT_USER' ] = " [ " . strtoupper ( G :: LoadTranslation ( " ID_UNASSIGNED " )) . " ] " ;
2012-10-09 10:45:20 -04:00
}
// replacing the status data with their respective translation
if ( isset ( $aRow [ 'APP_STATUS' ] )) {
2014-03-27 12:17:06 -04:00
$aRow [ 'APP_STATUS_LABEL' ] = G :: LoadTranslation ( " ID_ { $aRow [ 'APP_STATUS' ] } " );
2012-10-09 10:45:20 -04:00
}
// replacing the priority data with their respective translation
if ( isset ( $aRow [ 'DEL_PRIORITY' ] )) {
$aRow [ 'DEL_PRIORITY' ] = G :: LoadTranslation ( " ID_PRIORITY_ { $aPriorities [ $aRow [ 'DEL_PRIORITY' ]] } " );
}
$rows [] = $aRow ;
}
$result [ 'data' ] = $rows ;
return $result ;
}
//TODO: Encapsulates these and another default generation functions inside a class
/**
* generate all the default fields
*
* @ return Array $fields
*/
public function setDefaultFields ()
{
$fields = array ();
$fields [ 'APP_NUMBER' ] = array ( 'name' => 'APP_NUMBER' , 'fieldType' => 'case field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_NUMBER' ), 'width' => 40 , 'align' => 'left'
);
$fields [ 'APP_UID' ] = array ( 'name' => 'APP_UID' , 'fieldType' => 'key' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_UID' ), 'width' => 80 , 'align' => 'left'
);
$fields [ 'DEL_INDEX' ] = array ( 'name' => 'DEL_INDEX' , 'fieldType' => 'key' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_DEL_INDEX' ), 'width' => 50 , 'align' => 'left'
);
$fields [ 'TAS_UID' ] = array ( 'name' => 'TAS_UID' , 'fieldType' => 'case field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_TAS_UID' ), 'width' => 80 , 'align' => 'left'
);
$fields [ 'USR_UID' ] = array ( 'name' => 'USR_UID' , 'fieldType' => 'case field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_USR_UID' ), 'width' => 80 , 'align' => 'left' , 'hidden' => true
);
$fields [ 'PREVIOUS_USR_UID' ] = array ( 'name' => 'PREVIOUS_USR_UID' , 'fieldType' => 'case field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_PREVIOUS_USR_UID' ), 'width' => 80 , 'align' => 'left' , 'hidden' => true
);
$fields [ 'APP_TITLE' ] = array ( 'name' => 'APP_TITLE' , 'fieldType' => 'case field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_TITLE' ), 'width' => 140 , 'align' => 'left'
);
$fields [ 'APP_PRO_TITLE' ] = array ( 'name' => 'APP_PRO_TITLE' , 'fieldType' => 'case field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_PRO_TITLE' ), 'width' => 140 , 'align' => 'left'
);
$fields [ 'APP_TAS_TITLE' ] = array ( 'name' => 'APP_TAS_TITLE' , 'fieldType' => 'case field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_TAS_TITLE' ), 'width' => 140 , 'align' => 'left'
);
$fields [ 'APP_DEL_PREVIOUS_USER' ] = array ( 'name' => 'APP_DEL_PREVIOUS_USER' , 'fieldType' => 'case field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_DEL_PREVIOUS_USER' ), 'width' => 120 , 'align' => 'left'
);
$fields [ 'APP_CURRENT_USER' ] = array ( 'name' => 'APP_CURRENT_USER' , 'fieldType' => 'case field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_CURRENT_USER' ), 'width' => 120 , 'align' => 'left'
);
$fields [ 'USR_FIRSTNAME' ] = array ( 'name' => 'USR_FIRSTNAME' , 'fieldType' => 'case field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_CURRENT_USER' ), 'width' => 120 , 'align' => 'left'
);
$fields [ 'USR_LASTNAME' ] = array ( 'name' => 'USR_LASTNAME' , 'fieldType' => 'case field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_CURRENT_USER' ), 'width' => 120 , 'align' => 'left'
);
$fields [ 'DEL_TASK_DUE_DATE' ] = array ( 'name' => 'DEL_TASK_DUE_DATE' , 'fieldType' => 'case field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_DEL_TASK_DUE_DATE' ), 'width' => 100 , 'align' => 'left'
);
$fields [ 'APP_UPDATE_DATE' ] = array ( 'name' => 'APP_UPDATE_DATE' , 'fieldType' => 'case field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_UPDATE_DATE' ), 'width' => 100 , 'align' => 'left'
);
$fields [ 'DEL_PRIORITY' ] = array ( 'name' => 'DEL_PRIORITY' , 'fieldType' => 'case field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_DEL_PRIORITY' ), 'width' => 80 , 'align' => 'left'
);
$fields [ 'APP_STATUS' ] = array ( 'name' => 'APP_STATUS' , 'fieldType' => 'case field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_STATUS' ), 'width' => 80 , 'align' => 'left'
);
$fields [ 'APP_FINISH_DATE' ] = array ( 'name' => 'APP_FINISH_DATE' , 'fieldType' => 'case field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_FINISH_DATE' ), 'width' => 100 , 'align' => 'left'
);
$fields [ 'APP_DELAY_UID' ] = array ( 'name' => 'APP_DELAY_UID' , 'fieldType' => 'delay field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_DELAY_UID' ), 'width' => 100 , 'align' => 'left'
);
$fields [ 'APP_THREAD_INDEX' ] = array ( 'name' => 'APP_THREAD_INDEX' , 'fieldType' => 'delay field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_THREAD_INDEX' ), 'width' => 100 , 'align' => 'left'
);
$fields [ 'APP_DEL_INDEX' ] = array ( 'name' => 'APP_DEL_INDEX' , 'fieldType' => 'delay field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_DEL_INDEX' ), 'width' => 100 , 'align' => 'left'
);
$fields [ 'APP_TYPE' ] = array ( 'name' => 'APP_TYPE' , 'fieldType' => 'delay field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_TYPE' ), 'width' => 100 , 'align' => 'left'
);
$fields [ 'APP_DELEGATION_USER' ] = array ( 'name' => 'APP_DELEGATION_USER' , 'fieldType' => 'delay field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_DELEGATION_USER' ), 'width' => 100 , 'align' => 'left'
);
$fields [ 'APP_ENABLE_ACTION_USER' ] = array ( 'name' => 'APP_ENABLE_ACTION_USER' , 'fieldType' => 'delay field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_ENABLE_ACTION_USER' ), 'width' => 100 , 'align' => 'left'
);
$fields [ 'APP_ENABLE_ACTION_DATE' ] = array ( 'name' => 'APP_ENABLE_ACTION_DATE' , 'fieldType' => 'delay field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_AAPP_ENABLE_ACTION_DATE' ), 'width' => 100 , 'align' => 'left'
);
$fields [ 'APP_DISABLE_ACTION_USER' ] = array ( 'name' => 'APP_DISABLE_ACTION_USER' , 'fieldType' => 'delay field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_DISABLE_ACTION_USER' ), 'width' => 100 , 'align' => 'left'
);
$fields [ 'APP_DISABLE_ACTION_DATE' ] = array ( 'name' => 'APP_DISABLE_ACTION_DATE' , 'fieldType' => 'delay field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_DISABLE_ACTION_DATE' ), 'width' => 100 , 'align' => 'left'
);
$fields [ 'APP_AUTOMATIC_DISABLED_DATE' ] = array ( 'name' => 'APP_AUTOMATIC_DISABLED_DATE' , 'fieldType' => 'delay field' , 'label' => G :: loadTranslation ( 'ID_CASESLIST_APP_AUTOMATIC_DISABLED_DATE' ), 'width' => 100 , 'align' => 'left'
);
return $fields ;
}
/**
* this function return the default fields for a default case list
*
* @ param $action
* @ return an array with the default fields for an specific case list ( action )
*/
public function getDefaultFields ( $action )
{
$rows = array ();
switch ( $action ) {
case 'todo' : // #, Case, task, process, sent by, due date, Last Modify, Priority
$fields = $this -> setDefaultFields ();
$rows [] = $fields [ 'APP_UID' ];
$rows [] = $fields [ 'DEL_INDEX' ];
$rows [] = $fields [ 'USR_UID' ];
$rows [] = $fields [ 'PREVIOUS_USR_UID' ];
$rows [] = $fields [ 'APP_NUMBER' ];
$rows [] = $fields [ 'APP_TITLE' ];
$rows [] = $fields [ 'APP_PRO_TITLE' ];
$rows [] = $fields [ 'APP_TAS_TITLE' ];
$rows [] = $fields [ 'APP_DEL_PREVIOUS_USER' ];
$rows [] = $fields [ 'DEL_TASK_DUE_DATE' ];
$rows [] = $fields [ 'APP_UPDATE_DATE' ];
$rows [] = $fields [ 'DEL_PRIORITY' ];
break ;
case 'draft' : //#, Case, task, process, due date, Last Modify, Priority },
$fields = $this -> setDefaultFields ();
$rows [] = $fields [ 'APP_UID' ];
$rows [] = $fields [ 'DEL_INDEX' ];
$rows [] = $fields [ 'USR_UID' ];
$rows [] = $fields [ 'PREVIOUS_USR_UID' ];
$rows [] = $fields [ 'APP_NUMBER' ];
$rows [] = $fields [ 'APP_TITLE' ];
$rows [] = $fields [ 'APP_PRO_TITLE' ];
$rows [] = $fields [ 'APP_TAS_TITLE' ];
$rows [] = $fields [ 'DEL_TASK_DUE_DATE' ];
$rows [] = $fields [ 'APP_UPDATE_DATE' ];
$rows [] = $fields [ 'DEL_PRIORITY' ];
break ;
case 'sent' : // #, Case, task, process, current user, sent by, Last Modify, Status
$fields = $this -> setDefaultFields ();
$rows [] = $fields [ 'APP_UID' ];
$rows [] = $fields [ 'DEL_INDEX' ];
$rows [] = $fields [ 'USR_UID' ];
$rows [] = $fields [ 'PREVIOUS_USR_UID' ];
$rows [] = $fields [ 'APP_NUMBER' ];
$rows [] = $fields [ 'APP_TITLE' ];
$rows [] = $fields [ 'APP_PRO_TITLE' ];
$rows [] = $fields [ 'APP_TAS_TITLE' ];
$rows [] = $fields [ 'APP_DEL_PREVIOUS_USER' ];
$rows [] = $fields [ 'APP_CURRENT_USER' ];
$rows [] = $fields [ 'APP_UPDATE_DATE' ];
$rows [] = $fields [ 'APP_STATUS' ];
$rows [] = $fields [ 'USR_FIRSTNAME' ];
$rows [] = $fields [ 'USR_LASTNAME' ];
break ;
case 'unassigned' : //#, Case, task, process, completed by user, finish date
$fields = $this -> setDefaultFields ();
$rows [] = $fields [ 'APP_UID' ];
$rows [] = $fields [ 'DEL_INDEX' ];
$rows [] = $fields [ 'USR_UID' ];
$rows [] = $fields [ 'PREVIOUS_USR_UID' ];
$rows [] = $fields [ 'APP_NUMBER' ];
$rows [] = $fields [ 'APP_TITLE' ];
$rows [] = $fields [ 'APP_PRO_TITLE' ];
$rows [] = $fields [ 'APP_TAS_TITLE' ];
$rows [] = $fields [ 'APP_DEL_PREVIOUS_USER' ];
$rows [] = $fields [ 'APP_UPDATE_DATE' ];
break ;
case 'paused' : //#, Case, task, process, sent by
$fields = $this -> setDefaultFields ();
$rows [] = $fields [ 'APP_UID' ];
$rows [] = $fields [ 'DEL_INDEX' ];
$rows [] = $fields [ 'USR_UID' ];
$rows [] = $fields [ 'PREVIOUS_USR_UID' ];
$rows [] = $fields [ 'APP_NUMBER' ];
$rows [] = $fields [ 'APP_TITLE' ];
$rows [] = $fields [ 'APP_PRO_TITLE' ];
$rows [] = $fields [ 'APP_TAS_TITLE' ];
$rows [] = $fields [ 'APP_DEL_PREVIOUS_USER' ];
$rows [] = $fields [ 'APP_UPDATE_DATE' ];
$rows [] = $fields [ 'APP_THREAD_INDEX' ];
$rows [] = $fields [ 'APP_DEL_INDEX' ];
break ;
case 'completed' : //#, Case, task, process, completed by user, finish date
$fields = $this -> setDefaultFields ();
$rows [] = $fields [ 'APP_UID' ];
$rows [] = $fields [ 'DEL_INDEX' ];
$rows [] = $fields [ 'USR_UID' ];
$rows [] = $fields [ 'PREVIOUS_USR_UID' ];
$rows [] = $fields [ 'APP_NUMBER' ];
$rows [] = $fields [ 'APP_TITLE' ];
$rows [] = $fields [ 'APP_PRO_TITLE' ];
$rows [] = $fields [ 'APP_TAS_TITLE' ];
$rows [] = $fields [ 'APP_DEL_PREVIOUS_USER' ];
$rows [] = $fields [ 'APP_UPDATE_DATE' ];
$rows [] = $fields [ 'USR_UID' ];
$rows [] = $fields [ 'PREVIOUS_USR_UID' ];
break ;
case 'cancelled' : //#, Case, task, process, due date, Last Modify
$fields = $this -> setDefaultFields ();
$rows [] = $fields [ 'APP_UID' ];
$rows [] = $fields [ 'DEL_INDEX' ];
$rows [] = $fields [ 'USR_UID' ];
$rows [] = $fields [ 'PREVIOUS_USR_UID' ];
$rows [] = $fields [ 'APP_NUMBER' ];
$rows [] = $fields [ 'APP_TITLE' ];
$rows [] = $fields [ 'APP_PRO_TITLE' ];
$rows [] = $fields [ 'APP_TAS_TITLE' ];
$rows [] = $fields [ 'APP_DEL_PREVIOUS_USER' ];
$rows [] = $fields [ 'APP_UPDATE_DATE' ];
$rows [] = $fields [ 'USR_UID' ];
$rows [] = $fields [ 'PREVIOUS_USR_UID' ];
break ;
case 'to_revise' : //#, Case, task, process, due date, Last Modify
$fields = $this -> setDefaultFields ();
$rows [] = $fields [ 'APP_UID' ];
$rows [] = $fields [ 'DEL_INDEX' ];
$rows [] = $fields [ 'USR_UID' ];
$rows [] = $fields [ 'PREVIOUS_USR_UID' ];
$rows [] = $fields [ 'APP_NUMBER' ];
$rows [] = $fields [ 'APP_TITLE' ];
$rows [] = $fields [ 'APP_PRO_TITLE' ];
$rows [] = $fields [ 'APP_TAS_TITLE' ];
$rows [] = $fields [ 'APP_DEL_PREVIOUS_USER' ];
$rows [] = $fields [ 'APP_CURRENT_USER' ];
$rows [] = $fields [ 'DEL_PRIORITY' ];
$rows [] = $fields [ 'APP_STATUS' ];
break ;
case 'to_reassign' : //#, Case, task, process, due date, Last Modify
$fields = $this -> setDefaultFields ();
$rows [] = $fields [ 'APP_NUMBER' ];
$rows [] = $fields [ 'TAS_UID' ];
$rows [] = $fields [ 'DEL_INDEX' ];
$rows [] = $fields [ 'USR_UID' ];
$rows [] = $fields [ 'PREVIOUS_USR_UID' ];
$rows [] = $fields [ 'APP_UID' ];
$rows [] = $fields [ 'APP_TITLE' ];
$rows [] = $fields [ 'APP_PRO_TITLE' ];
$rows [] = $fields [ 'APP_TAS_TITLE' ];
$rows [] = $fields [ 'APP_CURRENT_USER' ];
$rows [] = $fields [ 'APP_UPDATE_DATE' ];
$rows [] = $fields [ 'APP_STATUS' ];
break ;
case 'all' : //#, Case, task, process, due date, Last Modify
$fields = $this -> setDefaultFields ();
$rows [] = $fields [ 'APP_UID' ];
$rows [] = $fields [ 'DEL_INDEX' ];
$rows [] = $fields [ 'USR_UID' ];
$rows [] = $fields [ 'PREVIOUS_USR_UID' ];
$rows [] = $fields [ 'APP_NUMBER' ];
$rows [] = $fields [ 'APP_TITLE' ];
$rows [] = $fields [ 'APP_PRO_TITLE' ];
$rows [] = $fields [ 'APP_TAS_TITLE' ];
$rows [] = $fields [ 'APP_CURRENT_USER' ];
$rows [] = $fields [ 'APP_DEL_PREVIOUS_USER' ];
$rows [] = $fields [ 'APP_UPDATE_DATE' ];
$rows [] = $fields [ 'APP_STATUS' ];
break ;
case 'gral' : //#, Case, task, process, due date, Last Modify
$fields = $this -> setDefaultFields ();
$rows [] = $fields [ 'APP_UID' ];
$rows [] = $fields [ 'DEL_INDEX' ];
$rows [] = $fields [ 'USR_UID' ];
$rows [] = $fields [ 'PREVIOUS_USR_UID' ];
$rows [] = $fields [ 'APP_NUMBER' ];
$rows [] = $fields [ 'APP_TITLE' ];
$rows [] = $fields [ 'APP_PRO_TITLE' ];
$rows [] = $fields [ 'APP_TAS_TITLE' ];
$rows [] = $fields [ 'APP_CURRENT_USER' ];
$rows [] = $fields [ 'APP_DEL_PREVIOUS_USER' ];
$rows [] = $fields [ 'APP_UPDATE_DATE' ];
$rows [] = $fields [ 'APP_STATUS' ];
break ;
}
return $rows ;
}
/**
* set the generic Json Response , using two array for the grid stores and a string for the pmtable name
*
* @ param string $pmtable
* @ param array $first
* @ param array $second
* @ return $response a json string
*/
public function genericJsonResponse ( $pmtable , $first , $second , $rowsperpage , $dateFormat )
{
$firstGrid [ 'totalCount' ] = count ( $first );
$firstGrid [ 'data' ] = $first ;
$secondGrid [ 'totalCount' ] = count ( $second );
$secondGrid [ 'data' ] = $second ;
$result = array ();
$result [ 'first' ] = $firstGrid ;
$result [ 'second' ] = $secondGrid ;
$result [ 'PMTable' ] = isset ( $pmtable ) ? $pmtable : '' ;
$result [ 'rowsperpage' ] = isset ( $rowsperpage ) ? $rowsperpage : 20 ;
$result [ 'dateformat' ] = isset ( $dateFormat ) && $dateFormat != '' ? $dateFormat : 'M d, Y' ;
return $result ;
}
public function getSteps ( $appUid , $index , $tasUid , $proUid )
{
$steps = Array ();
$case = new Cases ();
$step = new Step ();
$appDocument = new AppDocument ();
$caseSteps = $step -> getAllCaseSteps ( $proUid , $tasUid , $appUid );
//getting externals steps
2017-08-01 12:16:06 -04:00
$oPluginRegistry = PluginRegistry :: loadSingleton ();
2012-10-09 10:45:20 -04:00
$eSteps = $oPluginRegistry -> getSteps ();
$externalSteps = array ();
2017-08-01 12:16:06 -04:00
/** @var \ProcessMaker\Plugins\Interfaces\StepDetail $externalStep */
2012-10-09 10:45:20 -04:00
foreach ( $eSteps as $externalStep ) {
2017-08-01 12:16:06 -04:00
$externalSteps [ $externalStep -> getStepId ()] = $externalStep ;
2012-10-09 10:45:20 -04:00
}
//getting the case record
if ( $appUid ) {
$caseData = $case -> loadCase ( $appUid );
$pmScript = new PMScript ();
$pmScript -> setFields ( $caseData [ 'APP_DATA' ] );
}
$externalStepCount = 0 ;
foreach ( $caseSteps as $caseStep ) {
// if it has a condition
if ( trim ( $caseStep -> getStepCondition () ) != '' ) {
$pmScript -> setScript ( $caseStep -> getStepCondition () );
if ( ! $pmScript -> evaluate ()) {
//evaluated false, jump & continue with the others steps
continue ;
}
}
$stepUid = $caseStep -> getStepUidObj ();
$stepType = $caseStep -> getStepTypeObj ();
$stepPosition = $caseStep -> getStepPosition ();
$stepItem = array ();
$stepItem [ 'id' ] = $stepUid ;
$stepItem [ 'type' ] = $stepType ;
switch ( $stepType ) {
case 'DYNAFORM' :
$oDocument = DynaformPeer :: retrieveByPK ( $stepUid );
$stepItem [ 'title' ] = $oDocument -> getDynTitle ();
$stepItem [ 'url' ] = " cases/cases_Step?UID= $stepUid &TYPE= $stepType &POSITION= $stepPosition &ACTION=EDIT " ;
2015-01-10 12:05:27 -04:00
$stepItem [ 'version' ] = $oDocument -> getDynVersion ();
2012-10-09 10:45:20 -04:00
break ;
case 'OUTPUT_DOCUMENT' :
$oDocument = OutputDocumentPeer :: retrieveByPK ( $caseStep -> getStepUidObj () );
$outputDoc = $appDocument -> getObject ( $appUid , $index , $caseStep -> getStepUidObj (), 'OUTPUT' );
$stepItem [ 'title' ] = $oDocument -> getOutDocTitle ();
if ( $outputDoc [ 'APP_DOC_UID' ]) {
$stepItem [ 'url' ] = " cases/cases_Step?UID= $stepUid &TYPE= $stepType &POSITION= $stepPosition &ACTION=VIEW&DOC= { $outputDoc [ 'APP_DOC_UID' ] } " ;
} else {
$stepItem [ 'url' ] = " cases/cases_Step?UID= $stepUid &TYPE= $stepType &POSITION= $stepPosition &ACTION=GENERATE " ;
}
break ;
case 'INPUT_DOCUMENT' :
$oDocument = InputDocumentPeer :: retrieveByPK ( $stepUid );
$stepItem [ 'title' ] = $oDocument -> getInpDocTitle ();
$stepItem [ 'url' ] = " cases/cases_Step?UID= $stepUid &TYPE= $stepType &POSITION= $stepPosition &ACTION=ATTACH " ;
break ;
case 'EXTERNAL' :
$stepTitle = 'unknown ' . $caseStep -> getStepUidObj ();
2017-08-01 12:16:06 -04:00
$oPluginRegistry = PluginRegistry :: loadSingleton ();
2012-10-09 10:45:20 -04:00
$externalStep = $externalSteps [ $caseStep -> getStepUidObj ()];
2017-08-01 12:16:06 -04:00
$stepItem [ 'id' ] = $externalStep -> getStepId ();
$stepItem [ 'title' ] = $externalStep -> getStepTitle ();
$stepItem [ 'url' ] = " cases/cases_Step?UID= { $externalStep -> getStepId () } &TYPE=EXTERNAL&POSITION= $stepPosition &ACTION=EDIT " ;
2012-10-09 10:45:20 -04:00
break ;
}
$steps [] = $stepItem ;
}
//last, assign task
$stepItem = array ();
$stepItem [ 'id' ] = '-1' ;
$stepItem [ 'type' ] = '' ;
$stepItem [ 'title' ] = G :: LoadTranslation ( 'ID_ASSIGN_TASK' );
$stepItem [ 'url' ] = " cases/cases_Step?TYPE=ASSIGN_TASK&UID=-1&POSITION=10000&ACTION=ASSIGN " ;
$steps [] = $stepItem ;
return $steps ;
}
}