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
|
* 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
|
* @url DELETE /:grp_uid/user/:usr_uid
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user