2014-11-07 17:19:35 -04:00
< ? php
require_once 'classes/model/om/BaseListUnassigned.php' ;
/**
* Skeleton subclass for representing a row from the 'LIST_UNASSIGNED' table .
*
2015-02-24 14:07:29 -04:00
*
2014-11-07 17:19:35 -04:00
*
* You should add additional methods to this class to meet the
* application requirements . This class will only be generated as
* long as it does not already exist in the output directory .
*
* @ package classes . model
*/
2017-02-22 12:12:22 -04:00
// @codingStandardsIgnoreStart
2014-11-07 17:19:35 -04:00
class ListUnassigned extends BaseListUnassigned
{
2017-04-21 12:04:57 -04:00
private $additionalClassName = '' ;
2016-06-22 11:27:43 -04:00
private $total = 0 ;
2017-04-21 12:04:57 -04:00
2014-11-07 17:19:35 -04:00
/**
2015-03-04 18:42:47 -04:00
* Create List Unassigned Table
2014-11-07 17:19:35 -04:00
*
* @ param type $data
* @ return type
*
*/
public function create ( $data )
{
2017-02-23 14:47:39 -04:00
if ( ! empty ( $data [ 'PRO_UID' ]) && empty ( $data [ 'PRO_ID' ])) {
2017-02-21 16:25:17 -04:00
$p = new Process ();
2017-02-20 11:15:23 -04:00
$data [ 'PRO_ID' ] = $p -> load ( $data [ 'PRO_UID' ])[ 'PRO_ID' ];
}
2017-02-20 13:08:08 -04:00
if ( ! empty ( $data [ 'TAS_UID' ])) {
2017-02-21 16:25:17 -04:00
$t = new Task ();
2017-02-20 13:08:08 -04:00
$data [ 'TAS_ID' ] = $t -> load ( $data [ 'TAS_UID' ])[ 'TAS_ID' ];
}
2017-02-22 12:12:22 -04:00
$con = Propel :: getConnection ( ListUnassignedPeer :: DATABASE_NAME );
2014-11-07 17:19:35 -04:00
try {
2017-02-22 12:12:22 -04:00
$this -> fromArray ( $data , BasePeer :: TYPE_FIELDNAME );
2014-11-07 17:19:35 -04:00
if ( $this -> validate ()) {
$result = $this -> save ();
} else {
2017-02-22 12:12:22 -04:00
$e = new Exception ( " Failed Validation in class " . get_class ( $this ) . " . " );
2014-11-07 17:19:35 -04:00
$e -> aValidationFailures = $this -> getValidationFailures ();
throw ( $e );
}
$con -> commit ();
return $result ;
2017-02-22 12:12:22 -04:00
} catch ( Exception $e ) {
2014-11-07 17:19:35 -04:00
$con -> rollback ();
throw ( $e );
}
}
/**
2015-03-04 18:42:47 -04:00
* Update List Unassigned Table
2014-11-07 17:19:35 -04:00
*
* @ param type $data
* @ return type
* @ throws type
*/
public function update ( $data )
{
2017-02-20 13:08:08 -04:00
if ( ! empty ( $data [ 'TAS_UID' ])) {
2017-02-21 16:25:17 -04:00
$t = new Task ();
2017-02-20 13:08:08 -04:00
$data [ 'TAS_ID' ] = $t -> load ( $data [ 'TAS_UID' ])[ 'TAS_ID' ];
}
2017-02-22 12:12:22 -04:00
$con = Propel :: getConnection ( ListUnassignedPeer :: DATABASE_NAME );
2014-11-07 17:19:35 -04:00
try {
$con -> begin ();
2017-02-22 12:12:22 -04:00
$this -> setNew ( false );
$this -> fromArray ( $data , BasePeer :: TYPE_FIELDNAME );
2014-11-07 17:19:35 -04:00
if ( $this -> validate ()) {
$result = $this -> save ();
$con -> commit ();
return $result ;
} else {
$con -> rollback ();
2017-02-22 12:12:22 -04:00
throw ( new Exception ( " Failed Validation in class " . get_class ( $this ) . " . " ));
2014-11-07 17:19:35 -04:00
}
} catch ( Exception $e ) {
$con -> rollback ();
throw ( $e );
}
}
/**
2015-03-04 18:42:47 -04:00
* Remove List Unassigned
2014-11-07 17:19:35 -04:00
*
* @ param type $seqName
* @ return type
* @ throws type
*
*/
2017-02-22 12:12:22 -04:00
public function remove ( $appUid , $delIndex )
2014-11-07 17:19:35 -04:00
{
2017-02-22 12:12:22 -04:00
$con = Propel :: getConnection ( ListUnassignedPeer :: DATABASE_NAME );
2014-11-07 17:19:35 -04:00
try {
2016-06-22 11:27:43 -04:00
$this -> setAppUid ( $appUid );
$this -> setDelIndex ( $delIndex );
2014-11-07 17:19:35 -04:00
$con -> begin ();
$this -> delete ();
$con -> commit ();
} catch ( Exception $e ) {
$con -> rollback ();
throw ( $e );
}
}
2017-02-22 12:12:22 -04:00
public function newRow ( $data , $delPreviusUsrUid )
2016-06-22 11:27:43 -04:00
{
2014-11-07 17:19:35 -04:00
$data [ 'DEL_PREVIOUS_USR_UID' ] = $delPreviusUsrUid ;
2017-02-21 16:36:51 -04:00
$data [ 'DEL_DUE_DATE' ] = isset ( $data [ 'DEL_TASK_DUE_DATE' ]) ? $data [ 'DEL_TASK_DUE_DATE' ] : '' ;
2014-11-07 17:19:35 -04:00
$criteria = new Criteria ();
2017-02-22 12:12:22 -04:00
$criteria -> addSelectColumn ( ApplicationPeer :: APP_NUMBER );
$criteria -> addSelectColumn ( ApplicationPeer :: APP_UPDATE_DATE );
$criteria -> add ( ApplicationPeer :: APP_UID , $data [ 'APP_UID' ], Criteria :: EQUAL );
2014-11-07 17:19:35 -04:00
$dataset = ApplicationPeer :: doSelectRS ( $criteria );
$dataset -> setFetchmode ( ResultSet :: FETCHMODE_ASSOC );
$dataset -> next ();
$aRow = $dataset -> getRow ();
$data = array_merge ( $data , $aRow );
$criteria = new Criteria ();
2016-07-18 14:13:01 -04:00
$criteria -> addSelectColumn ( ProcessPeer :: PRO_TITLE );
2017-02-22 12:12:22 -04:00
$criteria -> add ( ProcessPeer :: PRO_UID , $data [ 'PRO_UID' ], Criteria :: EQUAL );
2016-07-18 14:13:01 -04:00
$dataset = ProcessPeer :: doSelectRS ( $criteria );
2014-11-07 17:19:35 -04:00
$dataset -> setFetchmode ( ResultSet :: FETCHMODE_ASSOC );
$dataset -> next ();
$aRow = $dataset -> getRow ();
2016-07-18 14:13:01 -04:00
$data [ 'APP_PRO_TITLE' ] = $aRow [ 'PRO_TITLE' ];
2014-11-07 17:19:35 -04:00
$criteria = new Criteria ();
2016-07-18 14:13:01 -04:00
$criteria -> addSelectColumn ( TaskPeer :: TAS_TITLE );
2017-02-22 12:12:22 -04:00
$criteria -> add ( TaskPeer :: TAS_UID , $data [ 'TAS_UID' ], Criteria :: EQUAL );
2016-07-18 14:13:01 -04:00
$dataset = TaskPeer :: doSelectRS ( $criteria );
2014-11-07 17:19:35 -04:00
$dataset -> setFetchmode ( ResultSet :: FETCHMODE_ASSOC );
$dataset -> next ();
$aRow = $dataset -> getRow ();
2016-07-18 14:13:01 -04:00
$data [ 'APP_TAS_TITLE' ] = $aRow [ 'TAS_TITLE' ];
2014-11-07 17:19:35 -04:00
$data [ 'APP_PREVIOUS_USER' ] = '' ;
if ( $data [ 'DEL_PREVIOUS_USR_UID' ] != '' ) {
$criteria = new Criteria ();
$criteria -> addSelectColumn ( UsersPeer :: USR_USERNAME );
$criteria -> addSelectColumn ( UsersPeer :: USR_FIRSTNAME );
$criteria -> addSelectColumn ( UsersPeer :: USR_LASTNAME );
2017-02-22 12:12:22 -04:00
$criteria -> add ( UsersPeer :: USR_UID , $data [ 'DEL_PREVIOUS_USR_UID' ], Criteria :: EQUAL );
2014-11-07 17:19:35 -04:00
$dataset = UsersPeer :: doSelectRS ( $criteria );
$dataset -> setFetchmode ( ResultSet :: FETCHMODE_ASSOC );
$dataset -> next ();
$aRow = $dataset -> getRow ();
2016-06-22 11:27:43 -04:00
$data [ 'DEL_PREVIOUS_USR_USERNAME' ] = $aRow [ 'USR_USERNAME' ];
$data [ 'DEL_PREVIOUS_USR_FIRSTNAME' ] = $aRow [ 'USR_FIRSTNAME' ];
$data [ 'DEL_PREVIOUS_USR_LASTNAME' ] = $aRow [ 'USR_LASTNAME' ];
2014-11-07 17:19:35 -04:00
}
self :: create ( $data );
2016-06-22 11:27:43 -04:00
return true ;
2014-11-07 17:19:35 -04:00
}
2017-04-21 12:04:57 -04:00
/**
* This function add restriction in the query related to the filters
* @ param Criteria $criteria , must be contain only select of columns
* @ param array $filters
* @ param array $additionalColumns information about the new columns related to custom cases list
* @ throws PropelException
*/
public function loadFilters ( & $criteria , $filters , $additionalColumns = array ())
2014-11-07 17:19:35 -04:00
{
2017-05-31 10:53:22 -04:00
$filter = isset ( $filters [ 'filter' ]) ? $filters [ 'filter' ] : '' ;
$search = isset ( $filters [ 'search' ]) ? $filters [ 'search' ] : '' ;
$caseLink = isset ( $filters [ 'caseLink' ]) ? $filters [ 'caseLink' ] : '' ;
$process = isset ( $filters [ 'process' ]) ? $filters [ 'process' ] : '' ;
$category = isset ( $filters [ 'category' ]) ? $filters [ 'category' ] : '' ;
$dateFrom = isset ( $filters [ 'dateFrom' ]) ? $filters [ 'dateFrom' ] : '' ;
$dateTo = isset ( $filters [ 'dateTo' ]) ? $filters [ 'dateTo' ] : '' ;
2014-11-07 17:19:35 -04:00
2017-04-21 12:04:57 -04:00
//Filter Search
2014-11-07 17:19:35 -04:00
if ( $search != '' ) {
2017-05-31 10:53:22 -04:00
//Check if we need to search to the APP_UID
if ( ! empty ( $caseLink )) {
$criteria -> add ( ListUnassignedPeer :: APP_UID , $search , Criteria :: EQUAL );
} else {
//If we have additional tables configured in the custom cases list, prepare the variables for search
2017-06-02 12:26:03 -04:00
$casesList = new \ProcessMaker\BusinessModel\Cases ();
2017-06-05 10:33:42 -04:00
$casesList -> getSearchCriteriaListCases ( $criteria , __CLASS__ . 'Peer' , $search , $this -> additionalClassName , $additionalColumns );
2017-04-21 12:04:57 -04:00
}
2014-11-07 17:19:35 -04:00
}
2017-04-21 12:04:57 -04:00
//Filter Process Id
2014-11-07 17:19:35 -04:00
if ( $process != '' ) {
2017-02-22 12:12:22 -04:00
$criteria -> add ( ListUnassignedPeer :: PRO_UID , $process , Criteria :: EQUAL );
2014-11-07 17:19:35 -04:00
}
2017-04-21 12:04:57 -04:00
//Filter Category
2014-11-07 17:19:35 -04:00
if ( $category != '' ) {
$criteria -> addSelectColumn ( ProcessPeer :: PRO_CATEGORY );
$aConditions = array ();
$aConditions [] = array ( ListUnassignedPeer :: PRO_UID , ProcessPeer :: PRO_UID );
$aConditions [] = array ( ProcessPeer :: PRO_CATEGORY , " ' " . $category . " ' " );
$criteria -> addJoinMC ( $aConditions , Criteria :: INNER_JOIN );
}
}
2017-04-21 12:04:57 -04:00
/**
* This function get the information in the corresponding cases list
* @ param string $usr_uid , must be show cases related to this user
* @ param array $filters for apply in the result
2017-07-21 17:20:18 -04:00
* @ param callable $callbackRecord
2017-04-21 12:04:57 -04:00
* @ return array $data
* @ throws PropelException
*/
2017-07-21 17:20:18 -04:00
public function loadList ( $usr_uid , $filters = array (), callable $callbackRecord = null )
2014-11-07 17:19:35 -04:00
{
2016-06-07 11:50:15 -04:00
$pmTable = new PmTable ();
$criteria = $pmTable -> addPMFieldsToList ( 'unassigned' );
2017-04-21 12:04:57 -04:00
$this -> additionalClassName = $pmTable -> tableClassName ;
2017-06-02 12:29:07 -04:00
$additionalColumns = $criteria -> getSelectColumns ();
2014-11-07 17:19:35 -04:00
$criteria -> addSelectColumn ( ListUnassignedPeer :: APP_UID );
$criteria -> addSelectColumn ( ListUnassignedPeer :: DEL_INDEX );
$criteria -> addSelectColumn ( ListUnassignedPeer :: TAS_UID );
$criteria -> addSelectColumn ( ListUnassignedPeer :: PRO_UID );
$criteria -> addSelectColumn ( ListUnassignedPeer :: APP_NUMBER );
$criteria -> addSelectColumn ( ListUnassignedPeer :: APP_TITLE );
$criteria -> addSelectColumn ( ListUnassignedPeer :: APP_PRO_TITLE );
$criteria -> addSelectColumn ( ListUnassignedPeer :: APP_TAS_TITLE );
2016-06-22 11:27:43 -04:00
$criteria -> addSelectColumn ( ListUnassignedPeer :: APP_UPDATE_DATE );
$criteria -> addSelectColumn ( ListUnassignedPeer :: DEL_PREVIOUS_USR_USERNAME );
$criteria -> addSelectColumn ( ListUnassignedPeer :: DEL_PREVIOUS_USR_FIRSTNAME );
$criteria -> addSelectColumn ( ListUnassignedPeer :: DEL_PREVIOUS_USR_LASTNAME );
2014-11-07 17:19:35 -04:00
$criteria -> addSelectColumn ( ListUnassignedPeer :: DEL_PREVIOUS_USR_UID );
$criteria -> addSelectColumn ( ListUnassignedPeer :: DEL_DELEGATE_DATE );
$criteria -> addSelectColumn ( ListUnassignedPeer :: DEL_DUE_DATE );
$criteria -> addSelectColumn ( ListUnassignedPeer :: DEL_PRIORITY );
2016-06-22 11:27:43 -04:00
//Self Service Value Based Assignment
2017-07-21 17:20:18 -04:00
$criteria = $this -> getCriteriaWhereSelfService ( $criteria , $usr_uid );
2014-11-07 17:19:35 -04:00
2016-06-22 11:27:43 -04:00
//Apply some filters
2017-04-21 12:04:57 -04:00
self :: loadFilters ( $criteria , $filters , $additionalColumns );
2017-07-13 14:58:43 -04:00
//We will be defined the sort
$casesList = new \ProcessMaker\BusinessModel\Cases ();
$sort = $casesList -> getSortColumn (
__CLASS__ . 'Peer' ,
BasePeer :: TYPE_FIELDNAME ,
empty ( $filters [ 'sort' ]) ? " DEL_DELEGATE_DATE " : $filters [ 'sort' ],
2017-07-14 11:57:21 -04:00
" DEL_DELEGATE_DATE " ,
2017-07-13 14:58:43 -04:00
$this -> additionalClassName ,
$additionalColumns
);
2014-11-07 17:19:35 -04:00
$dir = isset ( $filters [ 'dir' ]) ? $filters [ 'dir' ] : " ASC " ;
$start = isset ( $filters [ 'start' ]) ? $filters [ 'start' ] : " 0 " ;
$limit = isset ( $filters [ 'limit' ]) ? $filters [ 'limit' ] : " 25 " ;
$paged = isset ( $filters [ 'paged' ]) ? $filters [ 'paged' ] : 1 ;
$count = isset ( $filters [ 'count' ]) ? $filters [ 'count' ] : 1 ;
if ( $dir == " DESC " ) {
$criteria -> addDescendingOrderByColumn ( $sort );
} else {
$criteria -> addAscendingOrderByColumn ( $sort );
}
2016-08-24 15:08:08 -04:00
$this -> total = ListUnassignedPeer :: doCount ( $criteria );
2014-11-07 17:19:35 -04:00
if ( $paged == 1 ) {
2017-02-22 12:12:22 -04:00
$criteria -> setLimit ( $limit );
$criteria -> setOffset ( $start );
2014-11-07 17:19:35 -04:00
}
$dataset = ListUnassignedPeer :: doSelectRS ( $criteria );
$dataset -> setFetchmode ( ResultSet :: FETCHMODE_ASSOC );
2017-02-22 12:12:22 -04:00
$aPriorities = array ( '1' => 'VL' , '2' => 'L' , '3' => 'N' , '4' => 'H' , '5' => 'VH' );
2016-06-22 11:27:43 -04:00
$data = array ();
2014-11-07 17:19:35 -04:00
while ( $dataset -> next ()) {
2015-05-05 16:51:53 -04:00
$aRow = ( is_null ( $callbackRecord )) ? $dataset -> getRow () : $callbackRecord ( $dataset -> getRow ());
2017-02-22 12:12:22 -04:00
$aRow [ 'DEL_PRIORITY' ] = ( isset ( $aRow [ 'DEL_PRIORITY' ]) &&
is_numeric ( $aRow [ 'DEL_PRIORITY' ]) &&
$aRow [ 'DEL_PRIORITY' ] <= 5 &&
$aRow [ 'DEL_PRIORITY' ] > 0 ) ? $aRow [ 'DEL_PRIORITY' ] : 3 ;
$aRow [ 'DEL_PRIORITY' ] = G :: LoadTranslation ( " ID_PRIORITY_ { $aPriorities [ $aRow [ 'DEL_PRIORITY' ]] } " );
2014-11-07 17:19:35 -04:00
$data [] = $aRow ;
}
2016-06-22 11:27:43 -04:00
return $data ;
2014-11-07 17:19:35 -04:00
}
2016-06-22 11:27:43 -04:00
2015-03-04 18:42:47 -04:00
/**
2017-07-21 17:20:18 -04:00
* Get SelfService Value Based
2015-03-04 18:42:47 -04:00
*
2016-06-22 11:27:43 -04:00
* @ param string $userUid
2017-07-21 17:20:18 -04:00
* @ return array $arrayAppAssignSelfServiceValueData
* @ throws Exception
2015-03-04 18:42:47 -04:00
*/
2016-06-22 11:27:43 -04:00
public function getSelfServiceCasesByEvaluate ( $userUid )
{
2015-03-04 18:42:47 -04:00
try {
2016-06-22 11:27:43 -04:00
G :: LoadClass ( " groups " );
2015-03-04 18:42:47 -04:00
2016-06-22 11:27:43 -04:00
$arrayAppAssignSelfServiceValueData = array ();
//Get APP_UIDs
$group = new Groups ();
$arrayUid = $group -> getActiveGroupsForAnUser ( $userUid ); //Set UIDs of Groups (Groups of User)
$arrayUid [] = $userUid ; //Set UID of User
2015-03-04 18:42:47 -04:00
$criteria = new Criteria ( " workflow " );
2016-06-22 11:27:43 -04:00
$criteria -> setDistinct ();
$criteria -> addSelectColumn ( AppAssignSelfServiceValuePeer :: APP_UID );
$criteria -> addSelectColumn ( AppAssignSelfServiceValuePeer :: DEL_INDEX );
$criteria -> addSelectColumn ( AppAssignSelfServiceValuePeer :: TAS_UID );
2017-02-22 12:12:22 -04:00
$criteria -> add (
AppAssignSelfServiceValuePeer :: ID ,
AppAssignSelfServiceValuePeer :: ID .
" IN (SELECT " . AppAssignSelfServiceValueGroupPeer :: ID .
" FROM " . AppAssignSelfServiceValueGroupPeer :: TABLE_NAME .
" WHERE " . AppAssignSelfServiceValueGroupPeer :: GRP_UID . " IN (' " .
implode ( " ',' " , $arrayUid ) . " ')) " ,
Criteria :: CUSTOM
);
2016-06-22 11:27:43 -04:00
$rsCriteria = AppAssignSelfServiceValuePeer :: doSelectRS ( $criteria );
2015-03-04 18:42:47 -04:00
$rsCriteria -> setFetchmode ( ResultSet :: FETCHMODE_ASSOC );
2016-06-22 11:27:43 -04:00
2015-03-04 18:42:47 -04:00
while ( $rsCriteria -> next ()) {
$row = $rsCriteria -> getRow ();
2016-06-22 11:27:43 -04:00
$arrayAppAssignSelfServiceValueData [] = array (
" APP_UID " => $row [ " APP_UID " ],
" DEL_INDEX " => $row [ " DEL_INDEX " ],
" TAS_UID " => $row [ " TAS_UID " ]
);
2015-03-04 18:42:47 -04:00
}
2016-06-22 11:27:43 -04:00
//Return
return $arrayAppAssignSelfServiceValueData ;
2015-03-04 18:42:47 -04:00
} catch ( Exception $e ) {
throw $e ;
}
}
2016-06-22 11:27:43 -04:00
/**
* get user ' s SelfService tasks
2017-07-21 17:20:18 -04:00
* @ param string $userUid
* @ return array $tasks
2016-06-22 11:27:43 -04:00
*/
public function getSelfServiceTasks ( $userUid = '' )
{
$rows [] = array ();
$tasks = array ();
//check self service tasks assigned directly to this user
$c = new Criteria ();
$c -> clearSelectColumns ();
$c -> addSelectColumn ( TaskPeer :: TAS_UID );
$c -> addSelectColumn ( TaskPeer :: PRO_UID );
$c -> addJoin ( TaskPeer :: PRO_UID , ProcessPeer :: PRO_UID , Criteria :: LEFT_JOIN );
$c -> addJoin ( TaskPeer :: TAS_UID , TaskUserPeer :: TAS_UID , Criteria :: LEFT_JOIN );
$c -> add ( ProcessPeer :: PRO_STATUS , 'ACTIVE' );
$c -> add ( TaskPeer :: TAS_ASSIGN_TYPE , 'SELF_SERVICE' );
$c -> add ( TaskPeer :: TAS_GROUP_VARIABLE , '' );
$c -> add ( TaskUserPeer :: USR_UID , $userUid );
$rs = TaskPeer :: doSelectRS ( $c );
$rs -> setFetchmode ( ResultSet :: FETCHMODE_ASSOC );
$rs -> next ();
$row = $rs -> getRow ();
while ( is_array ( $row )) {
$tasks [] = $row [ 'TAS_UID' ];
$rs -> next ();
$row = $rs -> getRow ();
}
//check groups assigned to SelfService task
G :: LoadClass ( 'groups' );
$group = new Groups ();
$aGroups = $group -> getActiveGroupsForAnUser ( $userUid );
$c = new Criteria ();
$c -> clearSelectColumns ();
$c -> addSelectColumn ( TaskPeer :: TAS_UID );
$c -> addSelectColumn ( TaskPeer :: PRO_UID );
$c -> addJoin ( TaskPeer :: PRO_UID , ProcessPeer :: PRO_UID , Criteria :: LEFT_JOIN );
$c -> addJoin ( TaskPeer :: TAS_UID , TaskUserPeer :: TAS_UID , Criteria :: LEFT_JOIN );
$c -> add ( ProcessPeer :: PRO_STATUS , 'ACTIVE' );
$c -> add ( TaskPeer :: TAS_ASSIGN_TYPE , 'SELF_SERVICE' );
$c -> add ( TaskPeer :: TAS_GROUP_VARIABLE , '' );
$c -> add ( TaskUserPeer :: USR_UID , $aGroups , Criteria :: IN );
$rs = TaskPeer :: doSelectRS ( $c );
$rs -> setFetchmode ( ResultSet :: FETCHMODE_ASSOC );
$rs -> next ();
$row = $rs -> getRow ();
while ( is_array ( $row )) {
$tasks [] = $row [ 'TAS_UID' ];
$rs -> next ();
$row = $rs -> getRow ();
}
return $tasks ;
}
2016-07-28 14:20:04 -04:00
/**
* Returns the number of cases of a user
2017-07-21 17:20:18 -04:00
* @ param string $userUid
2017-02-09 15:17:13 -04:00
* @ param array $filters
2017-07-21 17:20:18 -04:00
* @ return int $total
2016-07-28 14:20:04 -04:00
*/
2017-02-09 15:17:13 -04:00
public function getCountList ( $userUid , $filters = array ())
2016-07-28 14:20:04 -04:00
{
2017-07-21 17:20:18 -04:00
$criteria = $criteria = new Criteria ( 'workflow' );
$this -> getCriteriaWhereSelfService ( $criteria , $userUid );
$total = ListUnassignedPeer :: doCount ( $criteria );
return ( int ) $total ;
}
/**
* This function get the where criteria for the SelfService and SelfService value based
*
* @ param criteria $criteria
* @ param string $userUid
* @ return criteria $criteria
*/
public function getCriteriaWhereSelfService ( $criteria , $userUid )
{
2016-07-28 14:20:04 -04:00
$tasks = $this -> getSelfServiceTasks ( $userUid );
2017-07-21 17:20:18 -04:00
$aSelfServiceValueBased = $this -> getSelfServiceCasesByEvaluate ( $userUid );
2016-07-28 14:20:04 -04:00
2017-07-21 17:20:18 -04:00
if ( ! empty ( $aSelfServiceValueBased )) {
2016-07-28 14:20:04 -04:00
//Self Service Value Based Assignment
$criterionAux = null ;
2017-07-21 17:20:18 -04:00
//Load Self Service Value Based Assignment
$firstRow = current ( $aSelfServiceValueBased );
$criterionAux = sprintf ( " ((LIST_UNASSIGNED.APP_UID='%s' AND LIST_UNASSIGNED.DEL_INDEX=%d AND LIST_UNASSIGNED.TAS_UID='%s') " , $firstRow [ " APP_UID " ], $firstRow [ " DEL_INDEX " ], $firstRow [ " TAS_UID " ]);
foreach ( array_slice ( $aSelfServiceValueBased , 1 ) as $value ) {
$criterionAux .= sprintf ( " OR (LIST_UNASSIGNED.APP_UID='%s' AND LIST_UNASSIGNED.DEL_INDEX=%d AND LIST_UNASSIGNED.TAS_UID='%s') " , $value [ " APP_UID " ], $value [ " DEL_INDEX " ], $value [ " TAS_UID " ]);
2016-07-28 14:20:04 -04:00
}
2017-07-21 17:20:18 -04:00
$criterionAux .= " ) " ;
//And Load SelfService
2016-07-28 14:20:04 -04:00
$criteria -> add (
2017-07-21 17:20:18 -04:00
$criteria -> getNewCriterion ( ListUnassignedPeer :: TAS_UID , $tasks , Criteria :: IN ) -> addOr ( $criteria -> getNewCriterion ( ListUnassignedPeer :: TAS_UID , $criterionAux , Criteria :: CUSTOM ))
2016-07-28 14:20:04 -04:00
);
} else {
//Self Service
$criteria -> add ( ListUnassignedPeer :: TAS_UID , $tasks , Criteria :: IN );
}
2017-07-21 17:20:18 -04:00
return $criteria ;
2016-07-28 14:20:04 -04:00
}
2014-11-07 17:19:35 -04:00
}