// Assign New User Roles and Groups from Existing User ax 2012
public void fromUserLookup(FormStringControl userLookupControl)
{
Query qry = new Query();
QueryBuildDataSource qbd;
QueryBuildRange qbr;
SysTableLookup sysTableLookup;
Userinfo userInfo;
systablelookup = SysTableLookup::newParameters(tableNum(UserInfo), userLookupControl);
SysTableLookup.addLookupfield(fieldNum(UserInfo, ID));
SysTableLookup.addLookupfield(fieldNum(UserInfo, NetworkAlias));
SysTableLookup.addLookupfield(fieldNum(UserInfo, Name));
qbd = qry.addDataSource(tableNum(userInfo));
qbd.addRange(fieldNum(UserInfo,Company)).value(curext());
sysTableLookup.parmQuery(qry);
sysTableLookup.performFormLookup();
}
public void toUserLookup(FormStringControl userLookupControl)
{
Query qry = new Query();
QueryBuildDataSource qbd;
QueryBuildRange qbr;
SysTableLookup sysTableLookup;
Userinfo userInfo;
systablelookup = SysTableLookup::newParameters(tableNum(UserInfo), userLookupControl);
SysTableLookup.addLookupfield(fieldNum(UserInfo, ID));
SysTableLookup.addLookupfield(fieldNum(UserInfo, NetworkAlias));
SysTableLookup.addLookupfield(fieldNum(UserInfo, Name));
qbd = qry.addDataSource(tableNum(userInfo));
qbd.addRange(fieldNum(UserInfo,Company)).value(curext());
qbr = qbd.addRange(fieldNum(UserInfo, Enable));
qbr.value('1');
sysTableLookup.parmQuery(qry);
sysTableLookup.performFormLookup();
}
//Function to copy USER ROLES
private boolean copyUserRoles()
{
boolean ret = true;
SecurityRole securityRole;
SecurityUserRole securityUserRole;
SecurityUserRole securityUserRoleExist;
SecurityUserRole securityUserRoleInsert;
OMUserRoleOrganization userRoleOrganization, userRoleOrganization_Insert;
List copiedUserRoles = new List(Types::String);
ListEnumerator lEnumerator;
setPrefix(strFmt("Copy user", fromUser, toUser));
try
{
select securityRole where securityRole.AotName == 'SystemUser';
delete_from securityUserRole where securityUserRole.User == toUser
&& securityUserRole.SecurityRole == securityRole.RecId;
while select securityUserRole
where securityUserRole.User == fromUser
notExists join * from securityUserRoleExist
where securityUserRoleExist.SecurityRole == securityUserRole.SecurityRole
&& securityUserRoleExist.User == toUser
{
select securityRole where securityRole.RecId == securityUserRole.SecurityRole;
copiedUserRoles.addStart(securityRole.Name);
securityUserRoleInsert.initValue();
securityUserRoleInsert.SecurityRole = securityUserRole.SecurityRole;
securityUserRoleInsert.User = toUser;
securityUserRoleInsert.insert();
securityUserRoleInsert.clear();
while select userRoleOrganization
where userRoleOrganization.User == fromUser
&& userRoleOrganization.SecurityRole == securityUserRole.SecurityRole
{
userRoleOrganization_Insert.initValue();
userRoleOrganization_Insert.OMHierarchyType = userRoleOrganization.OMHierarchyType;
userRoleOrganization_Insert.OMInternalOrganization = userRoleOrganization.OMInternalOrganization;
userRoleOrganization_Insert.SecurityRole = userRoleOrganization.SecurityRole;
userRoleOrganization_Insert.SecurityRoleAssignmentRule = userRoleOrganization.SecurityRoleAssignmentRule;
userRoleOrganization_Insert.User = toUser;
userRoleOrganization_Insert.insert();
userRoleOrganization_Insert.clear();
}
}
}
catch
{
ret = false;
}
if (ret)
{
lEnumerator = copiedUserRoles.getEnumerator();
if (copiedUserRoles.empty())
info(strFmt("User %1 and %2 have already the same user role",fromUser, toUser));
while (lEnumerator.moveNext())
{
info(strFmt('%1',lEnumerator.current()));
}
}
else
error(strFmt("User Roles aborted please review list"));
return ret;
}
//Function to copy USER OPTIONS
private boolean copyUserOptions()
{
boolean ret = true;
UserInfo userInfoSource;
UserInfo userInfoTarget;
SysUserInfo sysUserInfoSource;
SysUserInfo sysUserInfoTarget;
setPrefix(strFmt("Copy user options", fromUser, toUser));
try
{
select userInfoSource
where userInfoSource.id == fromUser
join sysUserInfoSource
where sysUserInfoSource.Id == userInfoSource.id;
ttsBegin;
select forUpdate userInfoTarget where userInfoTarget.id == toUser;
userInfoTarget.filterByGridOnByDefault = userInfoSource.filterByGridOnByDefault;
userInfoTarget.statuslineInfo = userInfoSource.statuslineInfo;
userInfoTarget.update();
select forUpdate sysUserInfoTarget where sysUserInfoTarget.Id == toUser;
sysUserInfoTarget.DefaultCountryRegion = sysUserInfoSource.DefaultCountryRegion;
sysUserInfoTarget.update();
ttsCommit;
}
catch
{
ret = false;
}
if (ret)
{
info(strFmt("User %1 and %2 have already the same user options ", fromUser, toUser));
}
else
error(strFmt("User Options aborted please review list "));
return ret;
}
//Function to copy USER GROUPS
private boolean copyUserGroups()
{
boolean ret = true;
UserGroupList userGroupList;
UserGroupList userGroupListExist;
UserGroupList userGroupListInsert;
List copiedGroups = new List(Types::String);
ListEnumerator lEnumerator;
setPrefix(strFmt("Copy user groups", fromUser, toUser));
try
{
while select userGroupList
where userGroupList.userId == fromUser
notExists join * from userGroupListExist
where userGroupListExist.groupId == userGroupList.groupId
&& userGroupListExist.userId == toUser
{
copiedGroups.addStart(userGroupList.groupId);
userGroupListInsert.initValue();
userGroupListInsert.groupId = userGroupList.groupId;
userGroupListInsert.userId = toUser;
userGroupListInsert.insert();
userGroupListInsert.clear();
}
}
catch
{
ret = false;
}
if (ret)
{
lEnumerator = copiedGroups.getEnumerator();
if (copiedGroups.empty())
info(strFmt("User %1 and %2 have already the same user Groups ",fromUser, toUser));
while (lEnumerator.moveNext())
{
info(strFmt('%1',lEnumerator.current()));
}
}
else
error(strFmt("User Groups aborted please review list "));
return ret;
}
No comments:
Post a Comment