HOR-474 "Asignacion de un rol a usuarios tarda demasiado " SOLVED
Issue:
Asignacion de un rol a usuarios tarda demasiado
Cause:
Los metodos Roles::getRoleUsers() y Roles::getAllUsers() no son optimos
Solution:
- Se a mejorado el metodo \ProcessMaker\BusinessModel\Role\User::getUsers() (Back-End)
- Se agrego el pager a los grids en ADMIN>Users>Roles>Users (Front-End)
HOR-474 "Asignacion de un rol a usuarios tarda demasiado " SOLVED
Issue:
Asignacion de un rol a usuarios tarda demasiado
Cause:
Los metodos Roles::getRoleUsers() y Roles::getAllUsers() no son optimos
Solution:
- Se a mejorado el metodo \ProcessMaker\BusinessModel\Role\User::getUsers() (Back-End)
- Se agrego el pager a los grids en ADMIN>Users>Roles>Users (Front-End)
HOR-474 "Asignacion de un rol a usuarios tarda demasiado " SOLVED
Issue:
Asignacion de un rol a usuarios tarda demasiado
Cause:
Los metodos Roles::getRoleUsers() y Roles::getAllUsers() no son optimos
Solution:
- Se a mejorado el metodo \ProcessMaker\BusinessModel\Role\User::getUsers() (Back-End)
- Se agrego el pager a los grids en ADMIN>Users>Roles>Users (Front-End)
This commit is contained in:
@@ -788,7 +788,7 @@ class RBAC
|
||||
*/
|
||||
public function getRoleUsers ($ROL_UID, $filter = '')
|
||||
{
|
||||
return $this->rolesObj->getRoleUsers( $ROL_UID, $filter );
|
||||
throw new Exception(__METHOD__ . ': The method is deprecated');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -859,7 +859,7 @@ class RBAC
|
||||
*/
|
||||
public function getAllUsers ($ROL_UID, $filter = '')
|
||||
{
|
||||
return $this->rolesObj->getAllUsers( $ROL_UID, $filter );
|
||||
throw new Exception(__METHOD__ . ': The method is deprecated');
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -398,85 +398,11 @@ class Roles extends BaseRoles {
|
||||
}
|
||||
|
||||
function getRoleUsers($ROL_UID, $filter='') {
|
||||
try {
|
||||
$criteria = new Criteria();
|
||||
$criteria->addSelectColumn(RolesPeer::ROL_UID);
|
||||
$criteria->addSelectColumn(RolesPeer::ROL_PARENT);
|
||||
$criteria->addSelectColumn(RolesPeer::ROL_SYSTEM);
|
||||
$criteria->addSelectColumn(RolesPeer::ROL_CODE);
|
||||
$criteria->addSelectColumn(RolesPeer::ROL_CREATE_DATE);
|
||||
$criteria->addSelectColumn(RolesPeer::ROL_UPDATE_DATE);
|
||||
$criteria->addSelectColumn(RolesPeer::ROL_STATUS);
|
||||
$criteria->addSelectColumn(RbacUsersPeer::USR_UID);
|
||||
$criteria->addSelectColumn(RbacUsersPeer::USR_USERNAME);
|
||||
$criteria->addSelectColumn(RbacUsersPeer::USR_FIRSTNAME);
|
||||
$criteria->addSelectColumn(RbacUsersPeer::USR_LASTNAME);
|
||||
$criteria->add(RolesPeer::ROL_UID, "", Criteria::NOT_EQUAL);
|
||||
$criteria->add(RolesPeer::ROL_UID, $ROL_UID);
|
||||
|
||||
$criteria->add(RbacUsersPeer::USR_STATUS, 0, Criteria::NOT_EQUAL);
|
||||
|
||||
$criteria->addJoin(RolesPeer::ROL_UID, UsersRolesPeer::ROL_UID);
|
||||
$criteria->addJoin(UsersRolesPeer::USR_UID, RbacUsersPeer::USR_UID);
|
||||
|
||||
if ($filter != ''){
|
||||
$criteria->add(
|
||||
$criteria->getNewCriterion(RbacUsersPeer::USR_USERNAME,'%'.$filter.'%',Criteria::LIKE)->addOr(
|
||||
$criteria->getNewCriterion(RbacUsersPeer::USR_FIRSTNAME,'%'.$filter.'%',Criteria::LIKE)->addOr(
|
||||
$criteria->getNewCriterion(RbacUsersPeer::USR_LASTNAME,'%'.$filter.'%',Criteria::LIKE)))
|
||||
);
|
||||
}
|
||||
|
||||
$oDataset = RolesPeer::doSelectRS($criteria);
|
||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
return $oDataset;
|
||||
|
||||
} catch( exception $e ) {
|
||||
throw $e;
|
||||
}
|
||||
throw new Exception(__METHOD__ . ': The method is deprecated');
|
||||
}
|
||||
|
||||
function getAllUsers($ROL_UID, $filter='') {
|
||||
try {
|
||||
$c = new Criteria();
|
||||
$c->addSelectColumn(RbacUsersPeer::USR_UID);
|
||||
$c->add(RolesPeer::ROL_UID, $ROL_UID);
|
||||
$c->addJoin(RolesPeer::ROL_UID, UsersRolesPeer::ROL_UID);
|
||||
$c->addJoin(UsersRolesPeer::USR_UID, RbacUsersPeer::USR_UID);
|
||||
|
||||
$result = RolesPeer::doSelectRS($c);
|
||||
$result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
$result->next();
|
||||
|
||||
$a = Array();
|
||||
while( $row = $result->getRow() ) {
|
||||
$a[] = $row['USR_UID'];
|
||||
$result->next();
|
||||
}
|
||||
|
||||
$criteria = new Criteria();
|
||||
|
||||
$criteria->addSelectColumn(RbacUsersPeer::USR_UID);
|
||||
$criteria->addSelectColumn(RbacUsersPeer::USR_USERNAME);
|
||||
$criteria->addSelectColumn(RbacUsersPeer::USR_FIRSTNAME);
|
||||
$criteria->addSelectColumn(RbacUsersPeer::USR_LASTNAME);
|
||||
$criteria->add(RbacUsersPeer::USR_STATUS, 1, Criteria::EQUAL);
|
||||
$criteria->add(RbacUsersPeer::USR_UID, $a, Criteria::NOT_IN);
|
||||
|
||||
if ($filter != ''){
|
||||
$criteria->add(
|
||||
$criteria->getNewCriterion(RbacUsersPeer::USR_USERNAME,'%'.$filter.'%',Criteria::LIKE)->addOr(
|
||||
$criteria->getNewCriterion(RbacUsersPeer::USR_FIRSTNAME,'%'.$filter.'%',Criteria::LIKE)->addOr(
|
||||
$criteria->getNewCriterion(RbacUsersPeer::USR_LASTNAME,'%'.$filter.'%',Criteria::LIKE)))
|
||||
);
|
||||
}
|
||||
|
||||
$oDataset = RbacUsersPeer::doSelectRS($criteria);
|
||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||
return $oDataset;
|
||||
} catch( exception $e ) {
|
||||
throw $e;
|
||||
}
|
||||
throw new Exception(__METHOD__ . ': The method is deprecated');
|
||||
}
|
||||
|
||||
function assignUserToRole($aData) {
|
||||
|
||||
@@ -1,42 +1,32 @@
|
||||
<?php
|
||||
/**
|
||||
* data_rolesUsers.php
|
||||
*
|
||||
* ProcessMaker Open Source Edition
|
||||
* Copyright (C) 2004 - 2008 Colosa Inc.23
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
|
||||
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
|
||||
*/
|
||||
$response = [];
|
||||
|
||||
$ROL_UID = $_GET['rUID'];
|
||||
$TYPE_DATA = $_GET["type"];
|
||||
try {
|
||||
$option = $_POST['option'];
|
||||
$roleUid = $_POST['roleUid'];
|
||||
|
||||
global $RBAC;
|
||||
$pageSize = $_POST['pageSize'];
|
||||
$filter = $_POST['filter'];
|
||||
|
||||
$filter = (isset( $_REQUEST['textFilter'] )) ? $_REQUEST['textFilter'] : '';
|
||||
$sortField = (isset($_POST['sort']))? $_POST['sort']: 'USR_FIRSTNAME';
|
||||
$sortDir = (isset($_POST['dir']))? $_POST['dir']: 'ASC';
|
||||
$start = (isset($_POST['start']))? $_POST['start']: 0;
|
||||
$limit = (isset($_POST['limit']))? $_POST['limit']: $pageSize;
|
||||
|
||||
if ($TYPE_DATA == 'list')
|
||||
$oDataset = $RBAC->getRoleUsers( $ROL_UID, $filter );
|
||||
if ($TYPE_DATA == 'show')
|
||||
$oDataset = $RBAC->getAllUsers( $ROL_UID, $filter );
|
||||
$roleUser = new \ProcessMaker\BusinessModel\Role\User();
|
||||
|
||||
$rows = Array ();
|
||||
while ($oDataset->next()) {
|
||||
$rows[] = $oDataset->getRow();
|
||||
$result = $roleUser->getUsers(
|
||||
$roleUid, $option, ['filter' => $filter, 'filterOption' => ''], $sortField, $sortDir, $start, $limit
|
||||
);
|
||||
|
||||
$response['status'] = 'OK';
|
||||
$response['success'] = true;
|
||||
$response['resultTotal'] = $result['total'];
|
||||
$response['resultRoot'] = $result['data'];
|
||||
} catch (Exception $e) {
|
||||
$response['status'] = 'ERROR';
|
||||
$response['message'] = $e->getMessage();
|
||||
}
|
||||
echo '{users: ' . G::json_encode( $rows ) . '}';
|
||||
|
||||
echo G::json_encode($response);
|
||||
|
||||
|
||||
@@ -48,8 +48,15 @@ $G_ID_SUB_MENU_SELECTED = 'ROLES';
|
||||
|
||||
$G_PUBLISH = new Publisher();
|
||||
|
||||
$configuration = new Configurations();
|
||||
$arrayConfigPage = $configuration->getConfiguration('roleUsersPermissionsList', 'pageSize', null, $_SESSION['USER_LOGGED']);
|
||||
|
||||
$arrayConfig = [];
|
||||
$arrayConfig['pageSize'] = (isset($arrayConfigPage['pageSize']))? $arrayConfigPage['pageSize'] : 20;
|
||||
|
||||
$oHeadPublisher = & headPublisher::getSingleton();
|
||||
$oHeadPublisher->assign("PARTNER_FLAG", (defined('PARTNER_FLAG')) ? PARTNER_FLAG : false);
|
||||
$oHeadPublisher->assign('CONFIG', $arrayConfig);
|
||||
$oHeadPublisher->addExtJsScript( 'roles/rolesUsersPermission', false ); //adding a javascript file .js
|
||||
$oHeadPublisher->addContent( 'roles/rolesUsersPermission' ); //adding a html file .html.
|
||||
|
||||
|
||||
@@ -2694,30 +2694,22 @@ class Cases
|
||||
}
|
||||
|
||||
//Number records total
|
||||
$criteriaCount = clone $criteria;
|
||||
|
||||
$criteriaCount->clearSelectColumns();
|
||||
$criteriaCount->addSelectColumn('COUNT(' . \UsersPeer::USR_UID . ') AS NUM_REC');
|
||||
|
||||
$rsCriteriaCount = \UsersPeer::doSelectRS($criteriaCount);
|
||||
$rsCriteriaCount->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
$result = $rsCriteriaCount->next();
|
||||
$row = $rsCriteriaCount->getRow();
|
||||
|
||||
$numRecTotal = (int)($row['NUM_REC']);
|
||||
$numRecTotal = \UsersPeer::doCount($criteria);
|
||||
|
||||
//Query
|
||||
$conf = new \Configurations();
|
||||
$sortFieldDefault = \UsersPeer::TABLE_NAME . '.' . $conf->userNameFormatGetFirstFieldByUsersTable();
|
||||
|
||||
if (!is_null($sortField) && trim($sortField) != '') {
|
||||
$sortField = strtoupper($sortField);
|
||||
|
||||
if (in_array(\UsersPeer::TABLE_NAME . '.' . $sortField, $criteria->getSelectColumns())) {
|
||||
$sortField = \UsersPeer::TABLE_NAME . '.' . $sortField;
|
||||
} else {
|
||||
$sortField = \UsersPeer::USR_FIRSTNAME;
|
||||
$sortField = $sortFieldDefault;
|
||||
}
|
||||
} else {
|
||||
$sortField = \UsersPeer::USR_FIRSTNAME;
|
||||
$sortField = $sortFieldDefault;
|
||||
}
|
||||
|
||||
if (!is_null($sortDir) && trim($sortDir) != '' && strtoupper($sortDir) == 'DESC') {
|
||||
|
||||
@@ -217,48 +217,6 @@ class User
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get criteria for User
|
||||
*
|
||||
* @param string $roleUid Unique id of Role
|
||||
* @param array $arrayUserUidExclude Unique id of Users to exclude
|
||||
*
|
||||
* return object
|
||||
*/
|
||||
public function getUserCriteria($roleUid, array $arrayUserUidExclude = null)
|
||||
{
|
||||
try {
|
||||
$criteria = new \Criteria("rbac");
|
||||
|
||||
$criteria->addSelectColumn(\RbacUsersPeer::USR_UID);
|
||||
$criteria->addSelectColumn(\RbacUsersPeer::USR_USERNAME);
|
||||
$criteria->addSelectColumn(\RbacUsersPeer::USR_FIRSTNAME);
|
||||
$criteria->addSelectColumn(\RbacUsersPeer::USR_LASTNAME);
|
||||
$criteria->addSelectColumn(\RbacUsersPeer::USR_STATUS);
|
||||
|
||||
$criteria->addAlias("USR", \RbacUsersPeer::TABLE_NAME);
|
||||
|
||||
$arrayCondition = array();
|
||||
$arrayCondition[] = array(\RbacUsersPeer::USR_UID, "USR.USR_UID", \Criteria::EQUAL);
|
||||
$criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN);
|
||||
|
||||
if ($roleUid != "") {
|
||||
$criteria->addJoin(\UsersRolesPeer::USR_UID, \RbacUsersPeer::USR_UID, \Criteria::LEFT_JOIN);
|
||||
$criteria->add(\UsersRolesPeer::ROL_UID, $roleUid, \Criteria::EQUAL);
|
||||
}
|
||||
|
||||
$criteria->add("USR.USR_USERNAME", "", \Criteria::NOT_EQUAL);
|
||||
|
||||
if (!is_null($arrayUserUidExclude) && is_array($arrayUserUidExclude)) {
|
||||
$criteria->add(\RbacUsersPeer::USR_UID, $arrayUserUidExclude, \Criteria::NOT_IN);
|
||||
}
|
||||
|
||||
return $criteria;
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get data of a User from a record
|
||||
*
|
||||
@@ -299,7 +257,11 @@ class User
|
||||
try {
|
||||
$arrayUser = array();
|
||||
|
||||
//Verify data
|
||||
$numRecTotal = 0;
|
||||
|
||||
//Verify data and Set variables
|
||||
$flagFilter = !is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData['filter']);
|
||||
|
||||
$process = new \ProcessMaker\BusinessModel\Process();
|
||||
$role = new \ProcessMaker\BusinessModel\Role();
|
||||
|
||||
@@ -314,56 +276,89 @@ class User
|
||||
|
||||
$process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), $this->arrayFieldNameForException);
|
||||
|
||||
//Get data
|
||||
if (!is_null($limit) && $limit . "" == "0") {
|
||||
return $arrayUser;
|
||||
//Set variables
|
||||
$filterName = 'filter';
|
||||
|
||||
if ($flagFilter) {
|
||||
$arrayAux = [
|
||||
'' => 'filter',
|
||||
'LEFT' => 'lfilter',
|
||||
'RIGHT' => 'rfilter'
|
||||
];
|
||||
|
||||
$filterName = $arrayAux[
|
||||
(isset($arrayFilterData['filterOption']))? $arrayFilterData['filterOption'] : ''
|
||||
];
|
||||
}
|
||||
|
||||
//SQL
|
||||
//Get data
|
||||
if (!is_null($limit) && (string)($limit) == '0') {
|
||||
return [
|
||||
'total' => $numRecTotal,
|
||||
'start' => (int)((!is_null($start))? $start : 0),
|
||||
'limit' => (int)((!is_null($limit))? $limit : 0),
|
||||
$filterName => ($flagFilter)? $arrayFilterData['filter'] : '',
|
||||
'data' => $arrayUser
|
||||
];
|
||||
}
|
||||
|
||||
//Query
|
||||
$criteria = new \Criteria('rbac');
|
||||
|
||||
$criteria->addSelectColumn(\RbacUsersPeer::USR_UID);
|
||||
$criteria->addSelectColumn(\RbacUsersPeer::USR_USERNAME);
|
||||
$criteria->addSelectColumn(\RbacUsersPeer::USR_FIRSTNAME);
|
||||
$criteria->addSelectColumn(\RbacUsersPeer::USR_LASTNAME);
|
||||
$criteria->addSelectColumn(\RbacUsersPeer::USR_STATUS);
|
||||
|
||||
$criteria->addJoin(\RbacUsersPeer::USR_UID, \UsersRolesPeer::USR_UID, \Criteria::LEFT_JOIN);
|
||||
|
||||
$criteria->add(\RbacUsersPeer::USR_USERNAME, '', \Criteria::NOT_EQUAL);
|
||||
|
||||
switch ($option) {
|
||||
case "USERS":
|
||||
//Criteria
|
||||
$criteria = $this->getUserCriteria($roleUid);
|
||||
$criteria->add(\UsersRolesPeer::ROL_UID, $roleUid, \Criteria::EQUAL);
|
||||
break;
|
||||
case "AVAILABLE-USERS":
|
||||
//Get Uids
|
||||
$arrayUid = array();
|
||||
|
||||
$criteria = $this->getUserCriteria($roleUid);
|
||||
|
||||
$rsCriteria = \RbacUsersPeer::doSelectRS($criteria);
|
||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||
|
||||
while ($rsCriteria->next()) {
|
||||
$row = $rsCriteria->getRow();
|
||||
|
||||
$arrayUid[] = $row["USR_UID"];
|
||||
}
|
||||
|
||||
//Criteria
|
||||
$criteria = $this->getUserCriteria("", $arrayUid);
|
||||
$criteria->add(\UsersRolesPeer::ROL_UID, $roleUid, \Criteria::NOT_EQUAL);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") {
|
||||
if ($flagFilter && trim($arrayFilterData['filter']) != '') {
|
||||
$arraySearch = [
|
||||
'' => '%' . $arrayFilterData['filter'] . '%',
|
||||
'LEFT' => $arrayFilterData['filter'] . '%',
|
||||
'RIGHT' => '%' . $arrayFilterData['filter']
|
||||
];
|
||||
|
||||
$search = $arraySearch[
|
||||
(isset($arrayFilterData['filterOption']))? $arrayFilterData['filterOption'] : ''
|
||||
];
|
||||
|
||||
$criteria->add(
|
||||
$criteria->getNewCriterion(\RbacUsersPeer::USR_USERNAME, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE)->addOr(
|
||||
$criteria->getNewCriterion(\RbacUsersPeer::USR_FIRSTNAME, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE)->addOr(
|
||||
$criteria->getNewCriterion(\RbacUsersPeer::USR_LASTNAME, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE)))
|
||||
$criteria->getNewCriterion(\RbacUsersPeer::USR_USERNAME, $search, \Criteria::LIKE)->addOr(
|
||||
$criteria->getNewCriterion(\RbacUsersPeer::USR_FIRSTNAME, $search, \Criteria::LIKE)->addOr(
|
||||
$criteria->getNewCriterion(\RbacUsersPeer::USR_LASTNAME, $search, \Criteria::LIKE)))
|
||||
);
|
||||
}
|
||||
|
||||
//SQL
|
||||
if (!is_null($sortField) && trim($sortField) != "") {
|
||||
//Number records total
|
||||
$numRecTotal = \RbacUsersPeer::doCount($criteria);
|
||||
|
||||
//Query
|
||||
$conf = new \Configurations();
|
||||
$sortFieldDefault = \RbacUsersPeer::TABLE_NAME . '.' . $conf->userNameFormatGetFirstFieldByUsersTable();
|
||||
|
||||
if (!is_null($sortField) && trim($sortField) != '') {
|
||||
$sortField = strtoupper($sortField);
|
||||
|
||||
if (in_array($sortField, array("USR_UID", "USR_USERNAME", "USR_FIRSTNAME", "USR_LASTNAME", "USR_STATUS"))) {
|
||||
$sortField = \RbacUsersPeer::TABLE_NAME . "." . $sortField;
|
||||
if (in_array(\RbacUsersPeer::TABLE_NAME . '.' . $sortField, $criteria->getSelectColumns())) {
|
||||
$sortField = \RbacUsersPeer::TABLE_NAME . '.' . $sortField;
|
||||
} else {
|
||||
$sortField = \RbacUsersPeer::USR_USERNAME;
|
||||
$sortField = $sortFieldDefault;
|
||||
}
|
||||
} else {
|
||||
$sortField = \RbacUsersPeer::USR_USERNAME;
|
||||
$sortField = $sortFieldDefault;
|
||||
}
|
||||
|
||||
if (!is_null($sortDir) && trim($sortDir) != "" && strtoupper($sortDir) == "DESC") {
|
||||
@@ -390,7 +385,13 @@ class User
|
||||
}
|
||||
|
||||
//Return
|
||||
return $arrayUser;
|
||||
return [
|
||||
'total' => $numRecTotal,
|
||||
'start' => (int)((!is_null($start))? $start : 0),
|
||||
'limit' => (int)((!is_null($limit))? $limit : 0),
|
||||
$filterName => ($flagFilter)? $arrayFilterData['filter'] : '',
|
||||
'data' => $arrayUser
|
||||
];
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
|
||||
@@ -38,9 +38,13 @@ class User extends Api
|
||||
public function doGetUsers($rol_uid, $filter = null, $start = null, $limit = null)
|
||||
{
|
||||
try {
|
||||
$response = $this->roleUser->getUsers($rol_uid, (preg_match("/^.*\/users$/", $this->restler->url))? "USERS" : "AVAILABLE-USERS", array("filter" => $filter), null, null, $start, $limit);
|
||||
$option = (preg_match('/^.*\/users$/', $this->restler->url))? 'USERS' : 'AVAILABLE-USERS';
|
||||
|
||||
return $response;
|
||||
$response = $this->roleUser->getUsers(
|
||||
$rol_uid, $option, ['filter' => $filter, 'filterOption' => ''], null, null, $start, $limit
|
||||
);
|
||||
|
||||
return $response['data'];
|
||||
} catch (\Exception $e) {
|
||||
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
|
||||
}
|
||||
|
||||
@@ -26,8 +26,6 @@ var storeA;
|
||||
var cmodelP;
|
||||
var smodelA;
|
||||
var smodelP;
|
||||
var storeU;
|
||||
var storeX;
|
||||
var cmodelU;
|
||||
var smodelU;
|
||||
var smodelX;
|
||||
@@ -54,6 +52,9 @@ var removeUAllButton;
|
||||
var backButton;
|
||||
var editForm;
|
||||
|
||||
var pagingUser;
|
||||
var pagingAvailableUser;
|
||||
|
||||
var sw_func_permissions;
|
||||
var sw_func_users;
|
||||
|
||||
@@ -83,12 +84,12 @@ GridByDefaultP = function(){
|
||||
|
||||
//Function DoSearch Available
|
||||
DoSearchU = function(){
|
||||
availableUGrid.store.load({params: {textFilter: searchTextU.getValue()}});
|
||||
pagingAvailableUser.moveFirst();
|
||||
};
|
||||
|
||||
//Function DoSearch Assigned
|
||||
DoSearchX = function(){
|
||||
assignedUGrid.store.load({params: {textFilter: searchTextX.getValue()}});
|
||||
pagingUser.moveFirst();
|
||||
};
|
||||
|
||||
//Load Grid By Default Available Members
|
||||
@@ -149,6 +150,11 @@ CancelEditPermissionsActionU = function(){
|
||||
|
||||
|
||||
Ext.onReady(function(){
|
||||
var loadMaskUserPermission = new Ext.LoadMask(Ext.getBody(), {msg: _("ID_LOADING_GRID")});
|
||||
|
||||
//Variables
|
||||
var pageSizeU = parseInt(CONFIG.pageSize);
|
||||
var pageSizeA = parseInt(CONFIG.pageSize);
|
||||
|
||||
sw_func_permissions = false;
|
||||
sw_func_users = false;
|
||||
@@ -404,34 +410,154 @@ Ext.onReady(function(){
|
||||
|
||||
});
|
||||
|
||||
storeU = new Ext.data.GroupingStore({
|
||||
proxy : new Ext.data.HttpProxy({
|
||||
url: 'data_rolesUsers?rUID=' + ROLES.ROL_UID + '&type=list'
|
||||
}),
|
||||
reader : new Ext.data.JsonReader( {
|
||||
root: 'users',
|
||||
fields : [
|
||||
{name : 'USR_UID'},
|
||||
{name : 'USR_USERNAME'},
|
||||
{name : 'USR_FIRSTNAME'},
|
||||
{name : 'USR_LASTNAME'}
|
||||
]
|
||||
})
|
||||
//Stores
|
||||
var storePageSize = new Ext.data.SimpleStore({
|
||||
fields: ["size"],
|
||||
data: [["20"], ["30"], ["40"], ["50"], ["100"]],
|
||||
autoLoad: true
|
||||
});
|
||||
|
||||
storeX = new Ext.data.GroupingStore({
|
||||
proxy : new Ext.data.HttpProxy({
|
||||
url: 'data_rolesUsers?rUID=' + ROLES.ROL_UID + '&type=show'
|
||||
}),
|
||||
reader : new Ext.data.JsonReader( {
|
||||
root: 'users',
|
||||
fields : [
|
||||
{name : 'USR_UID'},
|
||||
{name : 'USR_USERNAME'},
|
||||
{name : 'USR_FIRSTNAME'},
|
||||
{name : 'USR_LASTNAME'}
|
||||
]
|
||||
})
|
||||
var storeUser = new Ext.data.Store({
|
||||
proxy: new Ext.data.HttpProxy({
|
||||
url: "data_rolesUsers",
|
||||
method: "POST"
|
||||
}),
|
||||
|
||||
reader: new Ext.data.JsonReader({
|
||||
root: "resultRoot",
|
||||
totalProperty: "resultTotal",
|
||||
fields: [
|
||||
{name: 'USR_UID'},
|
||||
{name: 'USR_USERNAME'},
|
||||
{name: 'USR_FIRSTNAME'},
|
||||
{name: 'USR_LASTNAME'}
|
||||
]
|
||||
}),
|
||||
|
||||
remoteSort: true,
|
||||
|
||||
listeners: {
|
||||
beforeload: function (store)
|
||||
{
|
||||
loadMaskUserPermission.show();
|
||||
|
||||
this.baseParams = {
|
||||
"option": "USERS",
|
||||
"roleUid": ROLES.ROL_UID,
|
||||
"pageSize": pageSizeU,
|
||||
"filter": searchTextX.getValue()
|
||||
};
|
||||
},
|
||||
load: function (store, record, opt)
|
||||
{
|
||||
loadMaskUserPermission.hide();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var storeAvailableUser = new Ext.data.Store({
|
||||
proxy: new Ext.data.HttpProxy({
|
||||
url: "data_rolesUsers",
|
||||
method: "POST"
|
||||
}),
|
||||
|
||||
reader: new Ext.data.JsonReader({
|
||||
root: "resultRoot",
|
||||
totalProperty: "resultTotal",
|
||||
fields: [
|
||||
{name: 'USR_UID'},
|
||||
{name: 'USR_USERNAME'},
|
||||
{name: 'USR_FIRSTNAME'},
|
||||
{name: 'USR_LASTNAME'}
|
||||
]
|
||||
}),
|
||||
|
||||
remoteSort: true,
|
||||
|
||||
listeners: {
|
||||
beforeload: function (store)
|
||||
{
|
||||
loadMaskUserPermission.show();
|
||||
|
||||
this.baseParams = {
|
||||
"option": "AVAILABLE-USERS",
|
||||
"roleUid": ROLES.ROL_UID,
|
||||
"pageSize": pageSizeA,
|
||||
"filter": searchTextU.getValue()
|
||||
};
|
||||
},
|
||||
load: function (store, record, opt)
|
||||
{
|
||||
loadMaskUserPermission.hide();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
//Components
|
||||
var cboPageSizeUser = new Ext.form.ComboBox({
|
||||
id: "cboPageSizeUser",
|
||||
|
||||
mode: "local",
|
||||
triggerAction: "all",
|
||||
store: storePageSize,
|
||||
valueField: "size",
|
||||
displayField: "size",
|
||||
width: 50,
|
||||
editable: false,
|
||||
|
||||
listeners: {
|
||||
select: function (combo, record, index)
|
||||
{
|
||||
pageSizeU = parseInt(record.data["size"]);
|
||||
|
||||
pagingUser.pageSize = pageSizeU;
|
||||
pagingUser.moveFirst();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
pagingUser = new Ext.PagingToolbar({
|
||||
id: "pagingUser",
|
||||
|
||||
pageSize: pageSizeU,
|
||||
store: storeUser,
|
||||
displayInfo: true,
|
||||
displayMsg: _("ID_GRID_PAGE_DISPLAYING_ITEMS"),
|
||||
emptyMsg: _("ID_NO_RECORDS_FOUND"),
|
||||
items: ["-", _("ID_PAGE_SIZE") + " ", cboPageSizeUser]
|
||||
});
|
||||
|
||||
var cboPageSizeAvailableUser = new Ext.form.ComboBox({
|
||||
id: "cboPageSizeAvailableUser",
|
||||
|
||||
mode: "local",
|
||||
triggerAction: "all",
|
||||
store: storePageSize,
|
||||
valueField: "size",
|
||||
displayField: "size",
|
||||
width: 50,
|
||||
editable: false,
|
||||
|
||||
listeners: {
|
||||
select: function (combo, record, index)
|
||||
{
|
||||
pageSizeA = parseInt(record.data["size"]);
|
||||
|
||||
pagingAvailableUser.pageSize = pageSizeA;
|
||||
pagingAvailableUser.moveFirst();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
pagingAvailableUser = new Ext.PagingToolbar({
|
||||
id: "pagingAvailableUser",
|
||||
|
||||
pageSize: pageSizeA,
|
||||
store: storeAvailableUser,
|
||||
displayInfo: true,
|
||||
displayMsg: _("ID_GRID_PAGE_DISPLAYING_ITEMS"),
|
||||
emptyMsg: _("ID_NO_RECORDS_FOUND"),
|
||||
items: ["-", _("ID_PAGE_SIZE") + " ", cboPageSizeAvailableUser]
|
||||
});
|
||||
|
||||
cmodelU = new Ext.grid.ColumnModel({
|
||||
@@ -510,7 +636,7 @@ Ext.onReady(function(){
|
||||
title : _('ID_AVAILABLE_USERS'),
|
||||
region : 'center',
|
||||
ddGroup : 'assignedUGridDDGroup',
|
||||
store : storeX,
|
||||
store: storeAvailableUser,
|
||||
cm : cmodelU,
|
||||
sm : smodelX,
|
||||
enableDragDrop : true,
|
||||
@@ -528,7 +654,7 @@ Ext.onReady(function(){
|
||||
columnLines : false,
|
||||
viewConfig : {forceFit:true},
|
||||
tbar: [cancelEditPermissionsUButton,{xtype: 'tbfill'},'-',searchTextU, clearTextButtonU],
|
||||
//bbar: [{xtype: 'tbfill'}, assignUAllButton],
|
||||
bbar: pagingAvailableUser,
|
||||
listeners: {rowdblclick: AssignUserAction},
|
||||
hidden : true
|
||||
});
|
||||
@@ -537,7 +663,7 @@ Ext.onReady(function(){
|
||||
layout : 'fit',
|
||||
title : _('ID_ASSIGNED_USERS'),
|
||||
ddGroup : 'availableUGridDDGroup',
|
||||
store : storeU,
|
||||
store: storeUser,
|
||||
cm : cmodelU,
|
||||
sm : smodelU,
|
||||
enableDragDrop : false,
|
||||
@@ -554,7 +680,8 @@ Ext.onReady(function(){
|
||||
frame : false,
|
||||
columnLines : false,
|
||||
viewConfig : {forceFit:true},
|
||||
tbar : [editPermissionsUButton,{xtype: 'tbfill'},'-',searchTextX, clearTextButtonX]
|
||||
tbar: [editPermissionsUButton, {xtype: "tbfill"}, "-", searchTextX, clearTextButtonX],
|
||||
bbar: pagingUser
|
||||
});
|
||||
|
||||
buttonsUPanel = new Ext.Panel({
|
||||
@@ -613,6 +740,9 @@ Ext.onReady(function(){
|
||||
}
|
||||
});
|
||||
|
||||
cboPageSizeUser.setValue(pageSizeU);
|
||||
cboPageSizeAvailableUser.setValue(pageSizeA);
|
||||
|
||||
//LOAD ALL PANELS
|
||||
viewport = new Ext.Viewport({
|
||||
layout: 'border',
|
||||
|
||||
Reference in New Issue
Block a user