You need to sign in to do that
Don't have an account?
KRITI LAHA 8
How to populate user's other fields from map
Hello all,
I have this below code. The output of this code is like, I am getting UserId, Status and Permission set list and I need other fields of the user should be populated. Can anyone please help me on this? Thanks
public class UserService {
private static String profileName = 'Chatter Free User';
private static String ps7Name = 'Test Chatter Free7';
Public static List<UserDetail> userDetailList = new List<UserDetail>();
private static List<String> ps1_ps10NameList = new List<String>{
'Test Chatter Free1','Test Chatter Free2','Test Chatter Free3','Test Chatter Free4','Test Chatter Free5','Test Chatter Free6','Test Chatter Free7','Test Chatter Free8','Test Chatter Free9','Test Chatter Free10'};
public static List<UserDetail> getUserPermissionDetails(){
Map<Id, User> userMap = new Map<Id, User>([SELECT Id
FROM User
WHERE Profile.Name = :profileName and Id IN (SELECT AssigneeId
FROM PermissionSetAssignment
WHERE PermissionSet.label = :ps7Name and PermissionSet.IsOwnedByProfile =false)]);
//System.debug(usermap);
Map<Id, List<String>> permissionSetMap = new Map<Id, List<String>>();
for(PermissionSetAssignment psa : [SELECT AssigneeId,Assignee.FirstName, Assignee.LastName, Assignee.profile.name, Assignee.Username, Assignee.Email, Assignee.Division, Assignee.Department, PermissionSet.label
FROM PermissionSetAssignment
WHERE AssigneeId = : userMap.keySet()
AND (PermissionSet.label IN :ps1_ps10NameList
OR PermissionSet.label NOT IN :ps1_ps10NameList)and PermissionSet.IsOwnedByProfile =false
ORDER BY AssigneeId, PermissionSet.label])
{
List<String> tempList = new List<String>();
if(permissionSetMap.containsKey(psa.AssigneeId))
tempList = permissionSetMap.get(psa.AssigneeId);
tempList.add(psa.PermissionSet.label);
permissionSetMap.put(psa.AssigneeId, tempList);
}
return evaluateUser(permissionSetMap);
}
private static List<UserDetail> evaluateUser(Map<Id, List<String>> permissionSetMap){
Boolean additional;
List<UserDetail> userDetailList = new List<UserDetail>();
List<String> foundList = new List<String>();
for(Id id : permissionSetMap.keySet())
{
UserDetail ud = new UserDetail();
additional = false;
/*system.debug(permissionSetMap.get(id));*/
foundList.clear();
for(String str : permissionSetMap.get(id)){
if(!ps1_ps10NameList.contains(str)){
additional = true;
}else{
foundList.add(str);
}
/*system.debug(userDetailList);*/
}
ud.Id = id;
ud.permissionSetList = permissionSetMap.get(id);
if(additional && ps1_ps10NameList.size() == foundList.size())
ud.status = 'No Change And Additional';
else if(additional && ps1_ps10NameList.size() != permissionSetMap.get(id).size())
ud.status = 'Missing And Additional';
else if(!additional && ps1_ps10NameList.size() != foundList.size())
ud.status = 'Missing';
else if(!additional && ps1_ps10NameList.size() == foundList.size())
ud.status = 'No Change';
userDetailList.add(ud);
}
System.debug(JSON.serializePretty(userDetailList));
return userDetailList;
}
public class UserDetail {
public Id id;
public List<String> permissionSetList;
public String status;
}
}
I have this below code. The output of this code is like, I am getting UserId, Status and Permission set list and I need other fields of the user should be populated. Can anyone please help me on this? Thanks
public class UserService {
private static String profileName = 'Chatter Free User';
private static String ps7Name = 'Test Chatter Free7';
Public static List<UserDetail> userDetailList = new List<UserDetail>();
private static List<String> ps1_ps10NameList = new List<String>{
'Test Chatter Free1','Test Chatter Free2','Test Chatter Free3','Test Chatter Free4','Test Chatter Free5','Test Chatter Free6','Test Chatter Free7','Test Chatter Free8','Test Chatter Free9','Test Chatter Free10'};
public static List<UserDetail> getUserPermissionDetails(){
Map<Id, User> userMap = new Map<Id, User>([SELECT Id
FROM User
WHERE Profile.Name = :profileName and Id IN (SELECT AssigneeId
FROM PermissionSetAssignment
WHERE PermissionSet.label = :ps7Name and PermissionSet.IsOwnedByProfile =false)]);
//System.debug(usermap);
Map<Id, List<String>> permissionSetMap = new Map<Id, List<String>>();
for(PermissionSetAssignment psa : [SELECT AssigneeId,Assignee.FirstName, Assignee.LastName, Assignee.profile.name, Assignee.Username, Assignee.Email, Assignee.Division, Assignee.Department, PermissionSet.label
FROM PermissionSetAssignment
WHERE AssigneeId = : userMap.keySet()
AND (PermissionSet.label IN :ps1_ps10NameList
OR PermissionSet.label NOT IN :ps1_ps10NameList)and PermissionSet.IsOwnedByProfile =false
ORDER BY AssigneeId, PermissionSet.label])
{
List<String> tempList = new List<String>();
if(permissionSetMap.containsKey(psa.AssigneeId))
tempList = permissionSetMap.get(psa.AssigneeId);
tempList.add(psa.PermissionSet.label);
permissionSetMap.put(psa.AssigneeId, tempList);
}
return evaluateUser(permissionSetMap);
}
private static List<UserDetail> evaluateUser(Map<Id, List<String>> permissionSetMap){
Boolean additional;
List<UserDetail> userDetailList = new List<UserDetail>();
List<String> foundList = new List<String>();
for(Id id : permissionSetMap.keySet())
{
UserDetail ud = new UserDetail();
additional = false;
/*system.debug(permissionSetMap.get(id));*/
foundList.clear();
for(String str : permissionSetMap.get(id)){
if(!ps1_ps10NameList.contains(str)){
additional = true;
}else{
foundList.add(str);
}
/*system.debug(userDetailList);*/
}
ud.Id = id;
ud.permissionSetList = permissionSetMap.get(id);
if(additional && ps1_ps10NameList.size() == foundList.size())
ud.status = 'No Change And Additional';
else if(additional && ps1_ps10NameList.size() != permissionSetMap.get(id).size())
ud.status = 'Missing And Additional';
else if(!additional && ps1_ps10NameList.size() != foundList.size())
ud.status = 'Missing';
else if(!additional && ps1_ps10NameList.size() == foundList.size())
ud.status = 'No Change';
userDetailList.add(ud);
}
System.debug(JSON.serializePretty(userDetailList));
return userDetailList;
}
public class UserDetail {
public Id id;
public List<String> permissionSetList;
public String status;
}
}