Merge pull request #2124 from marcoAntonioNina/BUG-13402

BUG-13402 SOLR esta tratando de mostar la lista de casos para la carpeta... SOLVED
This commit is contained in:
julceslauhub
2013-11-08 08:29:19 -08:00
2 changed files with 83 additions and 21 deletions

View File

@@ -446,7 +446,11 @@ class AppSolr
$delegationIndexes[] = "APP_UNASSIGNED_USER_GROUP_DEL_INDEX_" . trim ($group ['GRP_UID']) . '_txt';
}
}
// Paused, add condition
if ($userUid != null && $action == 'paused') {
$solrSearchText .= "APP_PAUSED_USERS:" . $userUid . ' AND ';
$delegationIndexes[] = "APP_PAUSED_USER_DEL_INDEX_" . trim ($userUid) . '_txt';
}
//search action
if ($action == 'search'){
if($dateFrom != "" || $dateTo != "") {
@@ -515,12 +519,12 @@ class AppSolr
'resultFormat' => 'json'
);
$solrRequestData = Entity_SolrRequestData::createForRequestPagination ($data);
// use search index to return list of cases
$searchIndex = new BpmnEngine_Services_SearchIndex ($this->_solrIsEnabled, $this->_solrHost);
// execute query
$solrQueryResult = $searchIndex->getDataTablePaginatedList ($solrRequestData);
if($this->debug)
{
$this->afterSolrQueryTime = microtime (true);
@@ -770,7 +774,7 @@ class AppSolr
public function getCasesCount($userUid)
{
$casesCount = array ();
// get number of records in todo list
$data = $this->getAppGridData ($userUid, 0, 0, 'todo', null, null, null, null, null,
null, null, null, null, null, null, true);
@@ -787,7 +791,10 @@ class AppSolr
$data = $this->getAppGridData ($userUid, 0, 0, 'unassigned', null, null, null, null,
null, null, null, null, null, null, null, true);
$casesCount ['selfservice'] = $data ['totalCount'];
$data = $this->getAppGridData ($userUid, 0, 0, 'paused', null, null, null, null,
null, null, null, null, null, null, null, true);
$casesCount ['paused'] = $data ['totalCount'];
return $casesCount;
}
@@ -1309,7 +1316,6 @@ class AppSolr
*/
public function updateApplicationSearchIndex($aaAPPUIDs, $saveDBRecord = false)
{
if (empty ($aaAPPUIDs))
return;
@@ -1582,8 +1588,8 @@ class AppSolr
foreach ($indexes as $index) {
$aaAppData[] = $aaAllAppDelData [$index];
}
}
$result = $this->getApplicationIndexData ($aAPPUID ['APP_UID'], $aaAppData);
if($this->debug)
@@ -1642,6 +1648,7 @@ class AppSolr
$participatedUsersCompletedByUser = $result [11];
$unassignedUsers = $result [12];
$unassignedGroups = $result [13];
$pausedtUser = $result [14];
try {
@@ -1649,7 +1656,7 @@ class AppSolr
$xmlCurrentDoc = $this->buildSearchIndexDocumentPMOS2 ($documentInformation, $dynaformFieldTypes,
$lastUpdateDate, $maxPriority, $delLastIndex, $assignedUsers, $assignedUsersRead, $assignedUsersUnread,
$draftUser, $participatedUsers, $participatedUsersStartedByUser, $participatedUsersCompletedByUser,
$unassignedUsers, $unassignedGroups);
$unassignedUsers, $unassignedGroups,$pausedtUser);
//concat doc to the list of docs
$xmlDoc .= $xmlCurrentDoc;
@@ -1749,7 +1756,7 @@ class AppSolr
public function buildSearchIndexDocumentPMOS2($documentData, $dynaformFieldTypes, $lastUpdateDate,
$maxPriority, $delLastIndex, $assignedUsers, $assignedUsersRead, $assignedUsersUnread, $draftUser,
$participatedUsers, $participatedUsersStartedByUser, $participatedUsersCompletedByUser,
$unassignedUsers, $unassignedGroups)
$unassignedUsers, $unassignedGroups,$pausedtUser)
{
// build xml document
@@ -1889,7 +1896,7 @@ class AppSolr
$writer->text ($draftUser ['USR_UID']);
$writer->endElement ();
}
if (is_array ($participatedUsers) && ! empty ($participatedUsers)) {
foreach ($participatedUsers as $userUID) {
$writer->startElement ("field");
@@ -1964,6 +1971,19 @@ class AppSolr
$writer->endElement ();
}
}
if (! empty ($pausedtUser)) {
foreach ($pausedtUser as $paused) {
$writer->startElement ("field");
$writer->writeAttribute ('name', 'APP_PAUSED_USERS');
$writer->text ($paused ['USR_UID']);
$writer->endElement ();
$writer->startElement ("field");
$writer->writeAttribute ('name', 'APP_PAUSED_USER_DEL_INDEX_' . trim ($paused ['USR_UID']) . '_txt');
$writer->text ($paused ['DEL_INDEX']);
$writer->endElement ();
}
}
// get the serialized fields
if (! empty ($documentData ['APP_DATA']) && $documentData ['APP_DATA'] != "N;" ) {
@@ -2184,7 +2204,8 @@ class AppSolr
$indexes = $this->aaSearchRecords ($allAppDbData, array (
'DEL_THREAD_STATUS' => 'OPEN',
'DEL_FINISH_DATE' => 'NULL',
'APP_STATUS' => 'TO_DO' //, 'APP_THREAD_STATUS' => 'OPEN'
'APP_STATUS' => 'TO_DO', //, 'APP_THREAD_STATUS' => 'OPEN'
'APP_TYPE' => ''
));
foreach ($indexes as $index) {
$assignedUsers [] = array (
@@ -2263,6 +2284,19 @@ class AppSolr
'DEL_INDEX' => $allAppDbData [$index] ['DEL_INDEX']
);
}
$pausedUsers = array ();
$indexes = $this->aaSearchRecords ($allAppDbData, array (
'APP_TYPE' => 'PAUSE'
));
foreach ($indexes as $index) {
if ($allAppDbData [$index] ['APP_DISABLE_ACTION_USER'] == null || $allAppDbData [$index] ['APP_DISABLE_ACTION_USER'] == 0) {
$pausedUsers [] = array (
'USR_UID' => $allAppDbData [$index] ['USR_UID'],
'DEL_INDEX' => $allAppDbData [$index] ['DEL_INDEX']
);
}
}
// search information of unassigned users
// the unassigned users are the self service users and groups.
// the self service users are defined in the TASKs of the PROCESS.
@@ -2369,7 +2403,8 @@ class AppSolr
$participatedUsersStartedByUser,
$participatedUsersCompletedByUser,
$unassignedUsers,
$unassignedGroups
$unassignedGroups,
$pausedUsers
);
return $result;
@@ -2649,7 +2684,6 @@ class AppSolr
*/
public function getListApplicationUpdateDelegationData($aaAppUIDs)
{
$allAppDbData = array ();
$c = new Criteria ();
@@ -2685,17 +2719,22 @@ class AppSolr
$c->addSelectColumn ('ad.DEL_FINISHED');
$c->addSelectColumn ('ad.DEL_DELAYED');
$c->addSelectColumn ('ad.APP_OVERDUE_PERCENTAGE');
$c->addSelectColumn ('at.APP_THREAD_INDEX');
$c->addSelectColumn ('at.APP_THREAD_PARENT');
$c->addSelectColumn ('at.APP_THREAD_STATUS');
$c->addSelectColumn ('ade.APP_DELAY_UID');
$c->addSelectColumn ('ade.APP_TYPE');
$c->addSelectColumn ('ade.APP_DISABLE_ACTION_USER');
$c->addAsColumn("PRO_CATEGORY_UID", "pro.PRO_CATEGORY");
$c->addAlias ('capp', 'CONTENT');
$c->addAlias ('cpro', 'CONTENT');
$c->addAlias ('ad', 'APP_DELEGATION');
$c->addAlias ('at', 'APP_THREAD');
$c->addAlias ('ade', 'APP_DELAY');
$c->addAlias ("pro", ProcessPeer::TABLE_NAME);
$aConditions = array ();
@@ -2740,29 +2779,52 @@ class AppSolr
'at.APP_THREAD_INDEX'
);
$c->addJoinMC ($aConditions, Criteria::JOIN);
$aConditions = array ();
$aConditions [] = array (
'ad.APP_UID',
'ade.APP_UID'
);
$aConditions [] = array (
'ad.DEL_INDEX',
'ade.APP_DEL_INDEX'
);
//$aConditions [] = array (
// 'ade.APP_DISABLE_ACTION_USER',
// DBAdapter::getStringDelimiter () . 'null' . DBAdapter::getStringDelimiter ()
//);
$aConditions [] = array (
'ade.APP_DISABLE_ACTION_USER',
DBAdapter::getStringDelimiter () . '0' . DBAdapter::getStringDelimiter ()
);
$aConditions [] = array (
'ade.APP_TYPE',
DBAdapter::getStringDelimiter () . 'PAUSE' . DBAdapter::getStringDelimiter ()
);
$c->addJoinMC($aConditions, Criteria::LEFT_JOIN);
$arrayCondition = array();
$arrayCondition[] = array(ApplicationPeer::PRO_UID, "pro.PRO_UID");
$c->addJoinMC($arrayCondition, Criteria::LEFT_JOIN);
$c->add (ApplicationPeer::APP_UID, $aaAppUIDs, Criteria::IN);
$rs = ApplicationPeer::doSelectRS ($c);
$rs->setFetchmode (ResultSet::FETCHMODE_ASSOC);
$rs->next ();
$row = $rs->getRow ();
while (is_array ($row)) {
$allAppDbData [] = $row;
$rs->next ();
$row = $rs->getRow ();
}
//Propel::close();
return $allAppDbData;
}
}
/**
* Get the list of groups of unassigned users of the specified task from

View File

@@ -289,7 +289,7 @@ function getAllCounters ()
$aCount = $ApplicationSolrIndex->getCasesCount( $userUid );
//get paused count
$aCountMissing = $oAppCache->getAllCounters( array ('paused','completed','cancelled'), $userUid );
$aCountMissing = $oAppCache->getAllCounters( array ('completed','cancelled'), $userUid );
$aCount = array_merge( $aCount, $aCountMissing );
} else {