Cambiar la lógica para obtener los contadores

HOR-1447
Cambiar la lógica para obtener los contadores
This commit is contained in:
dheeyi william
2016-07-28 14:20:04 -04:00
parent d1507fdacf
commit c901b6052a
10 changed files with 229 additions and 46 deletions

View File

@@ -306,5 +306,18 @@ class ListCanceled extends BaseListCanceled {
return $data;
}
/**
* Returns the number of cases of a user
* @param $usrUid
* @return int
*/
public function getCountList($usrUid)
{
$criteria = new Criteria();
$criteria->add(ListCanceledPeer::USR_UID, $usrUid, Criteria::EQUAL);
$total = ListCanceledPeer::doCount($criteria);
return (int)$total;
}
} // ListCanceled

View File

@@ -320,5 +320,18 @@ class ListCompleted extends BaseListCompleted
return $data;
}
/**
* Returns the number of cases of a user
* @param $usrUid
* @return int
*/
public function getCountList($usrUid)
{
$criteria = new Criteria();
$criteria->add(ListCompletedPeer::USR_UID, $usrUid, Criteria::EQUAL);
$total = ListCompletedPeer::doCount($criteria);
return (int)$total;
}
} // ListCompleted

View File

@@ -598,5 +598,24 @@ class ListInbox extends BaseListInbox
return isset($aRow[$fieldName]) ? $aRow[$fieldName] : NULL;
}
/**
* Returns the number of cases of a user
* @param $usrUid
* @param string $appStatus
* @return int
*/
public function getCountList($usrUid, $appStatus = 'DRAFT')
{
$criteria = new Criteria();
$criteria->add(ListInboxPeer::USR_UID, $usrUid, Criteria::EQUAL);
if ($appStatus == 'TO_DO') {
$criteria->add(ListInboxPeer::APP_STATUS, 'TO_DO', Criteria::EQUAL);
} else {
$criteria->add(ListInboxPeer::APP_STATUS, 'DRAFT', Criteria::EQUAL);
}
$total = ListInboxPeer::doCount($criteria);
return (int)$total;
}
}

View File

@@ -405,5 +405,18 @@ class ListParticipatedLast extends BaseListParticipatedLast
}
BasePeer::doUpdate($criteriaWhere, $criteriaSet, $con);
}
/**
* Returns the number of cases of a user
* @param $usrUid
* @return int
*/
public function getCountList($usrUid)
{
$criteria = new Criteria();
$criteria->add(ListParticipatedLastPeer::USR_UID, $usrUid, Criteria::EQUAL);
$total = ListParticipatedLastPeer::doCount($criteria);
return (int)$total;
}
}

View File

@@ -328,5 +328,18 @@ class ListPaused extends BaseListPaused {
return $data;
}
/**
* Returns the number of cases of a user
* @param $usrUid
* @return int
*/
public function getCountList($usrUid)
{
$criteria = new Criteria();
$criteria->add(ListPausedPeer::USR_UID, $usrUid, Criteria::EQUAL);
$total = ListPausedPeer::doCount($criteria);
return (int)$total;
}
} // ListPaused

View File

@@ -460,5 +460,45 @@ class ListUnassigned extends BaseListUnassigned
return $tasks;
}
/**
* Returns the number of cases of a user
* @param $userUid
* @return int
*/
public function getCountList($userUid)
{
$criteria = new Criteria('workflow');
$tasks = $this->getSelfServiceTasks($userUid);
$arrayAppAssignSelfServiceValueData = $this->getSelfServiceCasesByEvaluate($userUid);
if (!empty($arrayAppAssignSelfServiceValueData)) {
//Self Service Value Based Assignment
$criterionAux = null;
foreach ($arrayAppAssignSelfServiceValueData as $value) {
if (is_null($criterionAux)) {
$criterionAux = $criteria->getNewCriterion(ListUnassignedPeer::APP_UID, $value["APP_UID"], Criteria::EQUAL)->addAnd(
$criteria->getNewCriterion(ListUnassignedPeer::DEL_INDEX, $value["DEL_INDEX"], Criteria::EQUAL))->addAnd(
$criteria->getNewCriterion(ListUnassignedPeer::TAS_UID, $value["TAS_UID"], Criteria::EQUAL));
} else {
$criterionAux = $criteria->getNewCriterion(ListUnassignedPeer::APP_UID, $value["APP_UID"], Criteria::EQUAL)->addAnd(
$criteria->getNewCriterion(ListUnassignedPeer::DEL_INDEX, $value["DEL_INDEX"], Criteria::EQUAL))->addAnd(
$criteria->getNewCriterion(ListUnassignedPeer::TAS_UID, $value["TAS_UID"], Criteria::EQUAL))->addOr(
$criterionAux
);
}
}
$criteria->add(
$criterionAux->addOr($criteria->getNewCriterion(ListUnassignedPeer::TAS_UID, $tasks, Criteria::IN))
);
} else {
//Self Service
$criteria->add(ListUnassignedPeer::TAS_UID, $tasks, Criteria::IN);
}
$total = ListUnassignedPeer::doCount($criteria);
return (int)$total;
}
}

View File

@@ -4251,6 +4251,15 @@
<column name="DEL_CURRENT_USR_USERNAME" type="VARCHAR" size="100" default=""/>
<column name="DEL_CURRENT_USR_FIRSTNAME" type="VARCHAR" size="50" default=""/>
<column name="DEL_CURRENT_USR_LASTNAME" type="VARCHAR" size="50" default=""/>
<index name="usrListCompleted">
<index-column name="USR_UID"/>
<vendor type="mysql">
<parameter name="Table" value="LIST_COMPLETED"/>
<parameter name="Non_unique" value="1"/>
<parameter name="Key_name" value="usrListCompleted"/>
<parameter name="Seq_in_index" value="1"/>
</vendor>
</index>
</table>
<table name="LIST_PAUSED">
<vendor type="mysql">

View File

@@ -2393,7 +2393,8 @@ CREATE TABLE `LIST_COMPLETED`
`DEL_CURRENT_USR_USERNAME` VARCHAR(100) default '',
`DEL_CURRENT_USR_FIRSTNAME` VARCHAR(50) default '',
`DEL_CURRENT_USR_LASTNAME` VARCHAR(50) default '',
PRIMARY KEY (`APP_UID`)
PRIMARY KEY (`APP_UID`),
KEY `usrListCompleted`(`USR_UID`)
)ENGINE=InnoDB DEFAULT CHARSET='utf8' COMMENT='Completed list';
#-----------------------------------------------------------------------------
#-- LIST_PAUSED

View File

@@ -1106,4 +1106,20 @@ class Consolidated
$oCase->updateCase($appUid, $aData);
}
/**
* @param $usrUid
* @return int
*/
public function getCountList($usrUid)
{
$criteria = new Criteria();
$criteria->add(\CaseConsolidatedCorePeer::CON_STATUS, 'ACTIVE');
$criteria->addJoin(\CaseConsolidatedCorePeer::TAS_UID, \AppCacheViewPeer::TAS_UID, Criteria::LEFT_JOIN);
$criteria->add(\AppCacheViewPeer::USR_UID, $usrUid);
$criteria->add(\AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN');
$criteria->add(\AppCacheViewPeer::APP_STATUS, 'TO_DO');
$total = \CaseConsolidatedCorePeer::doCount($criteria);
return (int)$total;
}
}

View File

@@ -10,6 +10,74 @@ use \UsersPeer;
*/
class Lists {
/**
* @var array
*/
private $mapList;
/**
* @var \ListInbox
*/
private $ListInbox;
/**
* @var \ListInbox
*/
private $ListDraft;
/**
* @var \ListCanceled
*/
private $ListCanceled;
/**
* @var \ListParticipatedLast
*/
private $ListParticipated;
/**
* @var \ListPaused
*/
private $ListPaused;
/**
* @var \ListCompleted
*/
private $ListCompleted;
/**
* @var Consolidated
*/
private $ListConsolidated;
/**
* @var \ListUnassigned
*/
private $ListSelfService;
/**
* Lists constructor.
*/
public function __construct()
{
$this->mapList = array(
'ListInbox' => 'CASES_INBOX',
'ListDraft' => 'CASES_DRAFT',
'ListCanceled' => 'CASES_CANCELLED',
'ListParticipated' => 'CASES_SENT',
'ListPaused' => 'CASES_PAUSED',
'ListCompleted' => 'CASES_COMPLETED',
/*----------------------------------********---------------------------------*/
'ListConsolidated' => 'CONSOLIDATED_CASES',
/*----------------------------------********---------------------------------*/
'ListSelfService' => 'CASES_SELFSERVICE'
);
$this->ListInbox = new \ListInbox();
$this->ListDraft = new \ListInbox();
$this->ListCanceled = new \ListCanceled();
$this->ListParticipated = new \ListParticipatedLast();
$this->ListPaused = new \ListPaused();
$this->ListCompleted = new \ListCompleted();
/*----------------------------------********---------------------------------*/
$this->ListConsolidated = new Consolidated();
/*----------------------------------********---------------------------------*/
$this->ListSelfService = new \ListUnassigned();
}
/**
* Get list for Cases
*
@@ -190,56 +258,34 @@ class Lists {
/**
* Get counters for lists
*
* @access public
* @param array $userId, User Uid
* @param $userId
* @return array
*
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com>
* @copyright Colosa - Bolivia
*/
public function getCounters($userId)
{
$criteria = new Criteria();
$criteria->addSelectColumn(UsersPeer::USR_TOTAL_INBOX);
$criteria->addSelectColumn(UsersPeer::USR_TOTAL_DRAFT);
$criteria->addSelectColumn(UsersPeer::USR_TOTAL_CANCELLED);
$criteria->addSelectColumn(UsersPeer::USR_TOTAL_PARTICIPATED);
$criteria->addSelectColumn(UsersPeer::USR_TOTAL_PAUSED);
$criteria->addSelectColumn(UsersPeer::USR_TOTAL_COMPLETED);
$criteria->add( UsersPeer::USR_UID, $userId, Criteria::EQUAL );
$dataset = UsersPeer::doSelectRS($criteria);
$dataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$dataset->next();
$aRow = $dataset->getRow();
$oAppCache = new \AppCacheView();
$totalUnassigned = $oAppCache->getListCounters('selfservice', $userId, false);
$response = array(
array('count' => $aRow['USR_TOTAL_INBOX'], 'item' => 'CASES_INBOX'),
array('count' => $aRow['USR_TOTAL_DRAFT'], 'item' => 'CASES_DRAFT'),
array('count' => $aRow['USR_TOTAL_CANCELLED'], 'item' => 'CASES_CANCELLED'),
array('count' => $aRow['USR_TOTAL_PARTICIPATED'], 'item' => 'CASES_SENT'),
array('count' => $aRow['USR_TOTAL_PAUSED'], 'item' => 'CASES_PAUSED'),
array('count' => $aRow['USR_TOTAL_COMPLETED'], 'item' => 'CASES_COMPLETED'),
array('count' => $totalUnassigned, 'item' => 'CASES_SELFSERVICE')
);
/*----------------------------------********---------------------------------*/
$licensedFeatures = & \PMLicensedFeatures::getSingleton();
if ($licensedFeatures->verifyfeature('7TTeDBQeWRoZTZKYjh4eFpYUlRDUUEyVERPU3FxellWank=')) {
$criteria = new Criteria();
$criteria->add(\CaseConsolidatedCorePeer::CON_STATUS, 'ACTIVE');
$criteria->addJoin(\CaseConsolidatedCorePeer::TAS_UID, \AppCacheViewPeer::TAS_UID, Criteria::LEFT_JOIN);
$criteria->add(\AppCacheViewPeer::USR_UID, $userId);
$criteria->add(\AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN');
$criteria->add(\AppCacheViewPeer::APP_STATUS, 'TO_DO');
$total = \CaseConsolidatedCorePeer::doCount( $criteria );
$response[] = array('count' => $total, 'item' => 'CONSOLIDATED_CASES');
$list = $this->mapList;
$response = array();
foreach ($list as $listObject => $item) {
switch ($listObject) {
case 'ListInbox':
$total = $this->$listObject->getCountList($userId, 'TO_DO');
array_push($response, (array('count' => $total, 'item' => $item)));
break;
/*----------------------------------********---------------------------------*/
case 'ListConsolidated':
$licensedFeatures = &\PMLicensedFeatures::getSingleton();
if ($licensedFeatures->verifyfeature('7TTeDBQeWRoZTZKYjh4eFpYUlRDUUEyVERPU3FxellWank=')) {
$total = $this->$listObject->getCountList($userId);
array_push($response, (array('count' => $total, 'item' => $item)));
}
break;
/*----------------------------------********---------------------------------*/
default:
$totalInbox = $this->$listObject->getCountList($userId);
array_push($response, (array('count' => $totalInbox, 'item' => $item)));
break;
}
}
/*----------------------------------********---------------------------------*/
return $response;
}
}