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:
@@ -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' );
|
||||
|
||||
|
||||
@@ -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
@@ -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
Reference in New Issue
Block a user