HOR-908 "Batch assignment of users to a group"
This commit is contained in:
@@ -169,6 +169,115 @@ class User
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Assign users to groups
|
||||
*
|
||||
* @param array $arrayData Data of users and groups
|
||||
*
|
||||
* return array Return result
|
||||
*/
|
||||
public function createBatch(array $arrayData)
|
||||
{
|
||||
try {
|
||||
//Verify data
|
||||
if (empty($arrayData)) {
|
||||
throw new \Exception(\G::LoadTranslation('ID_INFORMATION_EMPTY'));
|
||||
}
|
||||
|
||||
$arrayAux = [];
|
||||
|
||||
foreach ($arrayData as $value) {
|
||||
$arrayAux = $value;
|
||||
|
||||
if (!isset($arrayAux['groupUid'])){
|
||||
throw new \Exception(\G::LoadTranslation('ID_DOES_NOT_EXIST', ['groupUid']));
|
||||
}
|
||||
|
||||
if (gettype($arrayAux['groupUid']) != 'string'){
|
||||
throw new \Exception(\G::LoadTranslation('ID_INVALID_VALUE_STRING', ['groupUid']));
|
||||
}
|
||||
|
||||
if (!isset($arrayAux['users'])) {
|
||||
throw new \Exception(\G::LoadTranslation('ID_DOES_NOT_EXIST', ['users']));
|
||||
}
|
||||
|
||||
if(gettype($arrayAux['users']) != 'array') {
|
||||
throw new \Exception(\G::LoadTranslation('ID_INVALID_VALUE_ARRAY', ['users']));
|
||||
}
|
||||
}
|
||||
|
||||
//Assign
|
||||
$group = new \Groupwf();
|
||||
|
||||
$arrayResult = [];
|
||||
$arrayUsrGrp = [];
|
||||
|
||||
foreach ($arrayData as $value) {
|
||||
$flagAssignGrp = 1;
|
||||
$arrayMsg = [];
|
||||
|
||||
$arrayUsrGrp = $value;
|
||||
|
||||
//Verify data
|
||||
$grpUid = \GroupwfPeer::retrieveByPK($arrayUsrGrp['groupUid']);
|
||||
|
||||
if (is_null($grpUid)) {
|
||||
$arrayMsg['groupUid'] = [$arrayUsrGrp['groupUid'] => 'GROUP_NOT_EXISTS'];
|
||||
$flagAssignGrp = 0;
|
||||
}
|
||||
|
||||
if ($flagAssignGrp == 1) {
|
||||
$arrayMsg['groupUid'] = [$arrayUsrGrp['groupUid'] => 'GROUP_EXISTS'];
|
||||
|
||||
$arrayUsr = $arrayUsrGrp['users'];
|
||||
$arrayResultUsr = [];
|
||||
|
||||
foreach ($arrayUsr as $valueUidUser) {
|
||||
$flagAssignUsr = 1;
|
||||
|
||||
//Verify data
|
||||
$userUid = \UsersPeer::retrieveByPK($valueUidUser);
|
||||
|
||||
if (is_null($userUid)) {
|
||||
$arrayResultUsr[$valueUidUser] = 'USER_NOT_EXISTS';
|
||||
$flagAssignUsr = 0;
|
||||
}
|
||||
|
||||
if ($flagAssignUsr == 1 && $userUid->getUsrStatus() == 'CLOSED') {
|
||||
$arrayResultUsr[$valueUidUser] = 'USER_INACTIVE';
|
||||
$flagAssignUsr = 0;
|
||||
}
|
||||
|
||||
$groupUser = \GroupUserPeer::retrieveByPK($arrayUsrGrp['groupUid'], $valueUidUser);
|
||||
|
||||
if ($flagAssignUsr == 1 && !is_null($groupUser)) {
|
||||
$arrayResultUsr[$valueUidUser] = 'USER_ALREADY_ASSIGNED';
|
||||
$flagAssignUsr = 0;
|
||||
}
|
||||
|
||||
//Assign
|
||||
if ($flagAssignUsr == 1) {
|
||||
$group = new \Groups();
|
||||
|
||||
$group->addUserToGroup($arrayUsrGrp['groupUid'], $valueUidUser);
|
||||
|
||||
$arrayResultUsr[$valueUidUser] = 'USER_SUCCESSFULLY_ASSIGNED';
|
||||
}
|
||||
|
||||
$arrayMsg['users'] = $arrayResultUsr;
|
||||
}
|
||||
}
|
||||
|
||||
$arrayResult[] = $arrayMsg;
|
||||
}
|
||||
|
||||
//Return
|
||||
return $arrayResult;
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unassign User of the Group
|
||||
*
|
||||
|
||||
@@ -31,6 +31,36 @@ class User extends Api
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @url POST /batch-users
|
||||
*
|
||||
* @param array $request_data
|
||||
*
|
||||
* @status 201
|
||||
*/
|
||||
public function doPostBatchUsers($request_data)
|
||||
{
|
||||
try {
|
||||
$user = new \ProcessMaker\BusinessModel\User();
|
||||
|
||||
$usrUid = $this->getUserId();
|
||||
|
||||
if (!$user->checkPermission($usrUid, 'PM_USERS')) {
|
||||
throw new \Exception(\G::LoadTranslation('ID_USER_NOT_HAVE_PERMISSION', array($usrUid)));
|
||||
}
|
||||
|
||||
$groupUser = new \ProcessMaker\BusinessModel\Group\User();
|
||||
$groupUser->setFormatFieldNameInUppercase(false);
|
||||
|
||||
$arrayData = $groupUser->createBatch($request_data);
|
||||
|
||||
//Return
|
||||
return $arrayData;
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @url DELETE /:grp_uid/user/:usr_uid
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user