HOR-509 "Departaments> Al dar click en todos para asignar..." SOLVED

Issue:
    Departaments> Al dar click en todos para asignar usuarios en Departamentos tarda demasiado y sale un error
Cause:
    El codigo en la seccion "assignedUsers" y "availableUsers" en departments_Ajax.php no son optimos
Solution:
    - Se implemento el metodo \ProcessMaker\BusinessModel\Department::getUsers() (Back-End)
    - Se agrego el pager a los grids en ADMIN>Users>Departments>Users (Front-End)
This commit is contained in:
Victor Saisa Lopez
2016-03-22 16:10:18 -04:00
parent e719e8ee82
commit 6470adda9b
5 changed files with 442 additions and 192 deletions

View File

@@ -63,6 +63,11 @@ $oHeadPublisher->addContent( 'departments/departmentUsers' ); //adding a html fi
G::LoadClass( 'configuration' );
$c = new Configurations();
$arrayConfigPage = $c->getConfiguration('departmentUsersList', 'pageSize', null, $_SESSION['USER_LOGGED']);
$arrayConfig = [];
$arrayConfig['pageSize'] = (isset($arrayConfigPage['pageSize']))? $arrayConfigPage['pageSize'] : 20;
$dep = new Department();
$dep->Load( $_GET['dUID'] );
@@ -73,6 +78,7 @@ $depart['DEP_MANAGER'] = $dep->getDepManager();
$oHeadPublisher->assign( 'DEPARTMENT', $depart );
$oHeadPublisher->assign( 'FORMATS', $c->getFormats() );
$oHeadPublisher->assign('CONFIG', $arrayConfig);
G::RenderPage( 'publish', 'extJs' );

View File

@@ -22,12 +22,6 @@
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
*/
G::LoadSystem('inputfilter');
$filter = new InputFilter();
$_POST = $filter->xssFilterHard($_POST);
$_REQUEST = $filter->xssFilterHard($_REQUEST);
function LookForChildren ($parent, $level, $aDepUsers)
{
G::LoadClass( 'configuration' );
@@ -251,7 +245,7 @@ switch ($_POST['action']) {
while ($oDataset->next()) {
$aRow = $oDataset->getRow();
$managerName = $aRow['USR_USERNAME'] ? " - Department Manager: ".$aRow['USR_USERNAME'] : 'No Manager';
$managerName = $aRow['USR_USERNAME'] ? " - Department Manager: ".$aRow['USR_USERNAME'] : 'No Manager';
}
}
@@ -282,55 +276,43 @@ switch ($_POST['action']) {
echo '{success: true}';
break;
case 'assignedUsers':
$filter = isset( $_POST['textFilter'] ) ? $_POST['textFilter'] : '';
$dep_uid = $_REQUEST['dUID'];
$oDept = new Department();
$oDept->Load( $dep_uid );
$manager = $oDept->getDepManager();
$oCriteria = new Criteria( 'workflow' );
$oCriteria->addSelectColumn( UsersPeer::USR_UID );
$oCriteria->addSelectColumn( UsersPeer::USR_USERNAME );
$oCriteria->addSelectColumn( UsersPeer::USR_FIRSTNAME );
$oCriteria->addSelectColumn( UsersPeer::USR_LASTNAME );
$oCriteria->addSelectColumn( UsersPeer::USR_STATUS );
$oCriteria->add( UsersPeer::DEP_UID, '' );
$oCriteria->add( UsersPeer::USR_STATUS, 'CLOSED', Criteria::NOT_EQUAL );
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->add( UsersPeer::DEP_UID, $dep_uid );
$oDataset = UsersPeer::doSelectRS( $oCriteria );
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$aUsers = array ();
while ($oDataset->next()) {
$aUsers[] = $oDataset->getRow();
$index = sizeof( $aUsers ) - 1;
$aUsers[$index]['USR_SUPERVISOR'] = ($manager == $aUsers[$index]['USR_UID']) ? true : false;
}
echo '{users:' . G::json_encode( $aUsers ) . '}';
break;
case 'availableUsers':
$filter = isset( $_POST['textFilter'] ) ? $_POST['textFilter'] : '';
$dep_uid = $_REQUEST['dUID'];
$oCriteria = new Criteria( 'workflow' );
$oCriteria->addSelectColumn( UsersPeer::USR_UID );
$oCriteria->addSelectColumn( UsersPeer::USR_USERNAME );
$oCriteria->addSelectColumn( UsersPeer::USR_FIRSTNAME );
$oCriteria->addSelectColumn( UsersPeer::USR_LASTNAME );
$oCriteria->addSelectColumn( UsersPeer::USR_STATUS );
$oCriteria->add( UsersPeer::DEP_UID, '' );
$oCriteria->add( UsersPeer::USR_STATUS, 'CLOSED', Criteria::NOT_EQUAL );
$response = [];
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 ) ) ) );
try {
$option = $_POST['option'];
$departmentUid = $_POST['departmentUid'];
$pageSize = $_POST['pageSize'];
$filter = $_POST['filter'];
$sortField = (isset($_POST['sort']) && $_POST['sort'] != 'USR_USERNAME')? $_POST['sort']: '';
$sortDir = (isset($_POST['dir']))? $_POST['dir']: 'ASC';
$start = (isset($_POST['start']))? $_POST['start']: 0;
$limit = (isset($_POST['limit']))? $_POST['limit']: $pageSize;
$department = new \ProcessMaker\BusinessModel\Department();
$result = $department->getUsers(
$departmentUid,
$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();
}
$oDataset = UsersPeer::doSelectRS( $oCriteria );
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$aUsers = array ();
while ($oDataset->next()) {
$aUsers[] = $oDataset->getRow();
}
echo '{users:' . G::json_encode( $aUsers ) . '}';
echo G::json_encode($response);
break;
case 'assignDepartmentToUserMultiple':
$DEP_UID = $_REQUEST['DEP_UID'];

File diff suppressed because it is too large Load Diff

View File

@@ -64,8 +64,12 @@ class Department extends Api
{
try {
$oDepartment = new \ProcessMaker\BusinessModel\Department();
$response = $oDepartment->getAssignedUser($dep_uid);
return $response;
$response = $oDepartment->getUsers(
$dep_uid, 'ASSIGNED', null, null, null, null, null, false
);
return $response['data'];
} catch (\Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
}
@@ -82,12 +86,16 @@ class Department extends Api
* @return array
*
*/
public function doGetAvailableUser($dep_uid, $start = 0, $limit = 0, $search = '')
public function doGetAvailableUser($dep_uid, $start = null, $limit = null, $search = null)
{
try {
$oDepartment = new \ProcessMaker\BusinessModel\Department();
$response = $oDepartment->getAvailableUser($dep_uid, $start, $limit, $search);
return $response;
$response = $oDepartment->getUsers(
$dep_uid, 'AVAILABLE', ['filter' => $search, 'filterOption' => ''], null, null, $start, $limit, false
);
return $response['data'];
} catch (\Exception $e) {
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
}

File diff suppressed because it is too large Load Diff