PMCORE-2887

This commit is contained in:
Andrea Adamczyk
2021-03-17 12:25:11 -04:00
parent 9edceb3f5f
commit 01bde5f225
16 changed files with 966 additions and 3 deletions

View File

@@ -2,7 +2,11 @@
namespace ProcessMaker\Model;
use Exception;
use G;
use Illuminate\Database\Eloquent\Model;
use ProcessMaker\Model\Groupwf;
use ProcessMaker\Model\RbacUsers;
class GroupUser extends Model
{
@@ -57,5 +61,57 @@ class GroupUser extends Model
return $groups;
}
}
/**
* Verify if a user is already assigned to a group
*
* @param int $usrId
* @param int $grpId
*
* @return boolean
*/
public static function verifyUserIsInGroup($usrId, $grpId)
{
$query = GroupUser::select()->where('GRP_ID', $grpId)->where('USR_ID', $usrId);
if (empty($query->get()->values()->toArray())) {
return false;
}
return true;
}
/**
* Assign user to group
*
* @param string $usrUid
* @param int $usrId
* @param string $grpUid
* @param int $grpId
*
* @return void
* @throws Exception
*/
public static function assignUserToGroup($usrUid, $usrId, $grpUid, $grpId)
{
if (!RbacUsers::verifyUserExists($usrUid)) {
return ['message' => G::loadTranslation('ID_USER_NOT_REGISTERED_SYSTEM')];
}
if (!Groupwf::verifyGroupExists($grpUid)) {
return ['message' => G::loadTranslation('ID_GROUP_NOT_REGISTERED_SYSTEM')];
}
if (GroupUser::verifyUserIsInGroup($usrId, $grpId)) {
return ['message' => G::loadTranslation('ID_USER_ALREADY_EXISTS_GROUP')];
}
try {
$data = [
'GRP_UID' => $grpUid,
'GRP_ID' => $grpId,
'USR_UID' => $usrUid,
'USR_ID' => $usrId,
];
GroupUser::insert($data);
} catch (Exception $e) {
throw new Exception("Error: {$e->getMessage()}.");
}
}
}