Se agrega endpoint en ASSIGNESS y ADHOC ASSIGNESS para obtener todos los usuarios asignados, incluyendo los de los grupos

This commit is contained in:
Daniel Rojas
2014-04-01 14:58:55 -04:00
parent e2250cc6b0
commit a7b9616715
2 changed files with 302 additions and 1 deletions

View File

@@ -1937,5 +1937,254 @@ class Task
unset($array[$variable]);
}
}
}
/**
* Return a list of assignees of an activity
*
* @param string $sProcessUID {@min 32} {@max 32}
* @param string $sTaskUID {@min 32} {@max 32}
* @param string $filter
* @param int $start
* @param int $limit
* @param string $type
*
* return array
*
* @access public
*/
public function getTaskAssigneesAll($sProcessUID, $sTaskUID, $filter, $start, $limit, $type)
{
try {
$oProcess = \ProcessPeer::retrieveByPK( $sProcessUID );
if (is_null($oProcess)) {
throw (new \Exception( 'This id for `prj_uid`: '. $sProcessUID .' does not correspond to a registered process'));
}
$oActivity = \TaskPeer::retrieveByPK( $sTaskUID );
if (is_null($oActivity)) {
throw (new \Exception( 'This id for `act_uid`: '. $sTaskUID .' does not correspond to a registered activity'));
}
$aUsers = array();
$oTasks = new \Tasks();
$aAux = $oTasks->getGroupsOfTask($sTaskUID, 1);
$aGroupUids = array();
foreach ($aAux as $aGroup) {
$aGroupUids[] = $aGroup['GRP_UID'];
}
foreach ($aGroupUids as $results) {
$oCriteria = new \Criteria('workflow');
$oCriteria->addSelectColumn('USR_UID');
$oCriteria->add(\GroupUserPeer::GRP_UID, $results);
$oGroupDataset = \GroupUserPeer::doSelectRS($oCriteria);
$oGroupDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
while ($oGroupDataset->next()) {
$aGroupRow = $oGroupDataset->getRow();
$oGroupCriteria = new \Criteria('workflow');
$oGroupCriteria->addSelectColumn(\UsersPeer::USR_UID);
$oGroupCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME);
$oGroupCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME);
$oGroupCriteria->addSelectColumn(\UsersPeer::USR_USERNAME);
if ($filter != '') {
$oGroupCriteria->add($oGroupCriteria->getNewCriterion(\UsersPeer::USR_USERNAME, "%$filter%",
\Criteria::LIKE)->addOr($oGroupCriteria->getNewCriterion(\UsersPeer::USR_FIRSTNAME,
"%$filter%", \Criteria::LIKE))->addOr($oGroupCriteria->getNewCriterion(\UsersPeer::USR_LASTNAME,
"%$filter%", \Criteria::LIKE)));
}
$oGroupCriteria->add(\UsersPeer::USR_UID, $aGroupRow["USR_UID"]);
$oUserDataset = \UsersPeer::doSelectRS($oGroupCriteria);
$oUserDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$oUserDataset->next();
while ($aUserRow = $oUserDataset->getRow()) {
$aUsers[] = array('aas_uid' => $aUserRow['USR_UID'],
'aas_name' => $aUserRow['USR_FIRSTNAME'],
'aas_lastname' => $aUserRow['USR_LASTNAME'],
'aas_username' => $aUserRow['USR_USERNAME'],
'aas_type' => "user" );
$oUserDataset->next();
}
}
}
$oCriteria = new \Criteria('workflow');
$oCriteria->addSelectColumn(\UsersPeer::USR_UID);
$oCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME);
$oCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME);
$oCriteria->addSelectColumn(\UsersPeer::USR_USERNAME);
if ($filter != '') {
$oCriteria->add($oCriteria->getNewCriterion(\UsersPeer::USR_USERNAME, "%$filter%", \Criteria::LIKE)
->addOr($oCriteria->getNewCriterion(\UsersPeer::USR_FIRSTNAME, "%$filter%", \Criteria::LIKE))
->addOr($oCriteria->getNewCriterion(\UsersPeer::USR_LASTNAME, "%$filter%", \Criteria::LIKE )));
}
$oCriteria->addJoin(\TaskUserPeer::USR_UID, \UsersPeer::USR_UID, \Criteria::LEFT_JOIN);
$oCriteria->add(\TaskUserPeer::TAS_UID, $sTaskUID);
$oCriteria->add(\TaskUserPeer::TU_TYPE, 1);
$oCriteria->add(\TaskUserPeer::TU_RELATION, 1);
$oDataset = \TaskUserPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
if ($type == '' || $type == 'user') {
$aUsers[] = array('aas_uid' => $aRow['USR_UID'],
'aas_name' => $aRow['USR_FIRSTNAME'],
'aas_lastname' => $aRow['USR_LASTNAME'],
'aas_username' => $aRow['USR_USERNAME'],
'aas_type' => "user" );
}
$oDataset->next();
}
$aUsersGroups = array();
$exclude = array("");
for ($i = 0; $i<=count($aUsers)-1; $i++) {
if (!in_array(trim($aUsers[$i]["aas_uid"]) ,$exclude)) {
$aUsersGroups[] = $aUsers[$i];
$exclude[] = trim($aUsers[$i]["aas_uid"]);
}
}
if ($start) {
if ($start < 0) {
throw (new \Exception( 'Invalid value specified for `start`.'));
}
} else {
$start = 0;
}
if (isset($limit)) {
if ($limit < 0) {
throw (new \Exception( 'Invalid value specified for `limit`.'));
} else {
if ($limit == 0) {
return array();
}
}
} else {
$limit = 1000;
}
$aUsersGroups = $this->arrayPagination($aUsersGroups, $start, $limit);
return $aUsersGroups;
} catch (Exception $e) {
throw $e;
}
}
/**
* Return a list of adhoc assignees of an activity
*
* @param string $sProcessUID {@min 32} {@max 32}
* @param string $sTaskUID {@min 32} {@max 32}
* @param string $filter
* @param int $start
* @param int $limit
* @param string $type
*
* return array
*
* @access public
*/
public function getTaskAdhocAssigneesAll($sProcessUID, $sTaskUID, $filter, $start, $limit, $type)
{
try {
$oProcess = \ProcessPeer::retrieveByPK( $sProcessUID );
if (is_null($oProcess)) {
throw (new \Exception( 'This id for `prj_uid`: '. $sProcessUID .' does not correspond to a registered process'));
}
$oActivity = \TaskPeer::retrieveByPK( $sTaskUID );
if (is_null($oActivity)) {
throw (new \Exception( 'This id for `act_uid`: '. $sTaskUID .' does not correspond to a registered activity'));
}
$aUsers = array();
$oTasks = new \Tasks();
$aAux = $oTasks->getGroupsOfTask($sTaskUID, 2);
$aGroupUids = array();
foreach ($aAux as $aGroup) {
$aGroupUids[] = $aGroup['GRP_UID'];
}
foreach ($aGroupUids as $results) {
$oCriteria = new \Criteria('workflow');
$oCriteria->addSelectColumn('USR_UID');
$oCriteria->add(\GroupUserPeer::GRP_UID, $results);
$oGroupDataset = \GroupUserPeer::doSelectRS($oCriteria);
$oGroupDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
while ($oGroupDataset->next()) {
$aGroupRow = $oGroupDataset->getRow();
$oGroupCriteria = new \Criteria('workflow');
$oGroupCriteria->addSelectColumn(\UsersPeer::USR_UID);
$oGroupCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME);
$oGroupCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME);
$oGroupCriteria->addSelectColumn(\UsersPeer::USR_USERNAME);
if ($filter != '') {
$oGroupCriteria->add($oGroupCriteria->getNewCriterion(\UsersPeer::USR_USERNAME, "%$filter%",
\Criteria::LIKE)->addOr($oGroupCriteria->getNewCriterion(\UsersPeer::USR_FIRSTNAME,
"%$filter%", \Criteria::LIKE))->addOr($oGroupCriteria->getNewCriterion(\UsersPeer::USR_LASTNAME,
"%$filter%", \Criteria::LIKE)));
}
$oGroupCriteria->add(\UsersPeer::USR_UID, $aGroupRow["USR_UID"]);
$oUserDataset = \UsersPeer::doSelectRS($oGroupCriteria);
$oUserDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$oUserDataset->next();
while ($aUserRow = $oUserDataset->getRow()) {
$aUsers[] = array('aas_uid' => $aUserRow['USR_UID'],
'aas_name' => $aUserRow['USR_FIRSTNAME'],
'aas_lastname' => $aUserRow['USR_LASTNAME'],
'aas_username' => $aUserRow['USR_USERNAME'],
'aas_type' => "user" );
$oUserDataset->next();
}
}
}
$oCriteria = new \Criteria('workflow');
$oCriteria->addSelectColumn(\UsersPeer::USR_UID);
$oCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME);
$oCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME);
$oCriteria->addSelectColumn(\UsersPeer::USR_USERNAME);
if ($filter != '') {
$oCriteria->add($oCriteria->getNewCriterion(\UsersPeer::USR_USERNAME, "%$filter%", \Criteria::LIKE)
->addOr($oCriteria->getNewCriterion(\UsersPeer::USR_FIRSTNAME, "%$filter%", \Criteria::LIKE))
->addOr($oCriteria->getNewCriterion(\UsersPeer::USR_LASTNAME, "%$filter%", \Criteria::LIKE )));
}
$oCriteria->addJoin(\TaskUserPeer::USR_UID, \UsersPeer::USR_UID, \Criteria::LEFT_JOIN);
$oCriteria->add(\TaskUserPeer::TAS_UID, $sTaskUID);
$oCriteria->add(\TaskUserPeer::TU_TYPE, 2);
$oCriteria->add(\TaskUserPeer::TU_RELATION, 1);
$oDataset = \TaskUserPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
if ($type == '' || $type == 'user') {
$aUsers[] = array('aas_uid' => $aRow['USR_UID'],
'aas_name' => $aRow['USR_FIRSTNAME'],
'aas_lastname' => $aRow['USR_LASTNAME'],
'aas_username' => $aRow['USR_USERNAME'],
'aas_type' => "user" );
}
$oDataset->next();
}
$aUsersGroups = array();
$exclude = array("");
for ($i = 0; $i<=count($aUsers)-1; $i++) {
if (!in_array(trim($aUsers[$i]["aas_uid"]) ,$exclude)) {
$aUsersGroups[] = $aUsers[$i];
$exclude[] = trim($aUsers[$i]["aas_uid"]);
}
}
if ($start) {
if ($start < 0) {
throw (new \Exception( 'Invalid value specified for `start`.'));
}
} else {
$start = 0;
}
if (isset($limit)) {
if ($limit < 0) {
throw (new \Exception( 'Invalid value specified for `limit`.'));
} else {
if ($limit == 0) {
return array();
}
}
} else {
$limit = 1000;
}
$aUsersGroups = $this->arrayPagination($aUsersGroups, $start, $limit);
return $aUsersGroups;
} catch (Exception $e) {
throw $e;
}
}
}

View File

@@ -240,5 +240,57 @@ class Assignee extends Api
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
}
/**
* @url GET /:prjUid/activity/:actUid/assignee/all
*
* @param string $prjUid {@min 32} {@max 32}
* @param string $actUid {@min 32} {@max 32}
* @param string $filter
* @param int $start
* @param int $limit
* @param string $type
*
*/
public function doGetActivityAssigneesAll($prjUid, $actUid, $filter = '', $start = null, $limit = null, $type = '')
{
$response = array();
try {
$task = new \BusinessModel\Task();
$arrayData = $task->getTaskAssigneesAll($prjUid, $actUid, $filter, $start, $limit, $type);
//Response
$response = $arrayData;
} catch (\Exception $e) {
//Response
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
return $response;
}
/**
* @url GET /:prjUid/activity/:actUid/adhoc-assignee/all
*
* @param string $prjUid {@min 32} {@max 32}
* @param string $actUid {@min 32} {@max 32}
* @param string $filter
* @param int $start
* @param int $limit
* @param string $type
*
*/
public function doGetActivityAdhocAssigneesAll($prjUid, $actUid, $filter = '', $start = null, $limit = null, $type = '')
{
$response = array();
try {
$task = new \BusinessModel\Task();
$arrayData = $task->getTaskAdhocAssigneesAll($prjUid, $actUid, $filter, $start, $limit, $type);
//Response
$response = $arrayData;
} catch (\Exception $e) {
//Response
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
return $response;
}
}