Created
December 5, 2019 19:34
-
-
Save dhaniksahni/3345f4ac3745aee98db72163550e091c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
global class FieldExplorerController { | |
//Retrieve All Custom Object in Org | |
@Auraenabled(cacheable=true) | |
global static List<String> getAllCustomSObjects() | |
{ | |
List<String> sObjectList = new List<String>(); | |
for(Schema.SObjectType objTyp : Schema.getGlobalDescribe().Values()) | |
{ | |
Schema.DescribeSObjectResult describeSObjectResultObj = objTyp.getDescribe(); | |
if(describeSObjectResultObj.isCustom()) | |
{ | |
String name = objTyp.getDescribe().getName(); | |
if(!name.containsignorecase('history') && !name.containsignorecase('tag')&& | |
!name.containsignorecase('share') && !name.containsignorecase('feed')) | |
{ | |
sObjectList.add(name); | |
} | |
} | |
} | |
system.debug('SObjectList****' + sObjectList); | |
return sObjectList; | |
} | |
//Retrieve All Objects in org | |
@Auraenabled(cacheable=true) | |
public static List<string> getObjects() | |
{ | |
List<string> sObjectList = new List<string>(); | |
for(Schema.SObjectType objTyp : Schema.getGlobalDescribe().Values()){ | |
String name = objTyp.getDescribe().getName(); | |
if((!name.containsignorecase('history') && !name.containsignorecase('tag')&& | |
!name.containsignorecase('share') && !name.containsignorecase('feed')) && | |
name.toLowerCase().right(3) == '__c'){ | |
sObjectList.add(name); | |
} | |
} | |
return sObjectList; | |
} | |
//Get All fields of given object | |
@Auraenabled(cacheable=true) | |
public static List<FieldWrap> getFields(string objectName) | |
{ | |
Map<String, Schema.SObjectType> gd = Schema.getGlobalDescribe(); | |
Schema.SObjectType ctype = gd.get(objectName); | |
Map<String, Schema.SobjectField> fmap = ctype.getDescribe().fields.getMap(); | |
List<FieldWrap> strList = new List<FieldWrap>(); | |
for(String fieldName: fmap.keySet()) { | |
FieldWrap wmp = new FieldWrap(); | |
wmp.name = fmap.get(fieldName).getDescribe().getName(); | |
wmp.label = fmap.get(fieldName).getDescribe().getLabel(); | |
strList.add(wmp); | |
} | |
return strList; | |
} | |
//retrieve Orgs User | |
@Auraenabled(cacheable=true) | |
public static List<User> getOrgUsers() | |
{ | |
return [select id, name from User where isactive = true]; | |
} | |
//Get Access of all fields | |
@Auraenabled(cacheable=true) | |
public static List<FieldAccess> getObjectAccess(string objectName,string userId) | |
{ | |
List<FieldAccess> fields=new List<FieldAccess>(); | |
//Get DurableId of all fields for given user | |
List<UserFieldAccess> lists=[SELECT Durableid FROM UserFieldAccess | |
WHERE FieldDefinition.EntityDefinition.QualifiedApiName=:objectName | |
AND User.Id=:userId]; | |
List<string> ids=new List<string>(); | |
for(UserFieldAccess field:lists) | |
{ | |
ids.add(field.Durableid); | |
} | |
//Get Field access for given user | |
List<UserFieldAccess> accesses=[SELECT DurableId,EntityDefinitionId,FieldDefinition.QualifiedApiName,FieldDefinitionId,Id,IsAccessible,IsCreatable,IsUpdatable,UserId FROM UserFieldAccess | |
WHERE DurableId =:ids]; | |
//Create Access List | |
FieldAccess access; | |
for(UserFieldAccess field:accesses) | |
{ | |
access=new FieldAccess(); | |
access.Id=field.Id; | |
access.EntityDefinitionId=field.EntityDefinitionId; | |
access.FieldDefinitionId=field.FieldDefinitionId; | |
access.IsAccessible=field.IsAccessible; | |
access.IsUpdatable=field.IsUpdatable; | |
access.IsCreatable=field.IsCreatable; | |
access.FieldName=field.FieldDefinition.QualifiedApiName; | |
fields.add(access); | |
} | |
return fields; | |
} | |
//Get access of any fields | |
@Auraenabled(cacheable=true) | |
public static List<FieldAccess> getFieldsAccess(string objectName,string fieldName, string userId) | |
{ | |
List<FieldAccess> fields=new List<FieldAccess>(); | |
//Map<Id,User> users=new Map<Id, User>([select id, name from User where id=:userId]); | |
List<UserFieldAccess> lists=[SELECT Durableid FROM UserFieldAccess | |
WHERE FieldDefinition.EntityDefinition.QualifiedApiName=:objectName | |
AND FieldDefinition.QualifiedApiName=:fieldName | |
AND User.Id=:userId]; | |
List<string> ids=new List<string>(); | |
for(UserFieldAccess field:lists) | |
{ | |
ids.add(field.Durableid); | |
} | |
//Get Field access for given user | |
List<UserFieldAccess> accesses=[SELECT DurableId,EntityDefinitionId,FieldDefinition.QualifiedApiName,FieldDefinitionId,Id,IsAccessible,IsCreatable,IsUpdatable,UserId FROM UserFieldAccess | |
WHERE DurableId =:ids]; | |
//Create Access List | |
FieldAccess access; | |
for(UserFieldAccess field:accesses) | |
{ | |
access=new FieldAccess(); | |
access.Id=field.Id; | |
access.EntityDefinitionId=field.EntityDefinitionId; | |
access.FieldDefinitionId=field.FieldDefinitionId; | |
access.IsAccessible=field.IsAccessible; | |
access.IsUpdatable=field.IsUpdatable; | |
access.IsCreatable=field.IsCreatable; | |
access.FieldName=field.FieldDefinition.QualifiedApiName; | |
fields.add(access); | |
} | |
return fields; | |
} | |
public class FieldWrap | |
{ | |
@Auraenabled | |
public string Name{get;set;} | |
@Auraenabled | |
public string Label{get;set;} | |
} | |
public class FieldAccess | |
{ | |
@Auraenabled | |
public string Id{get;set;} | |
@Auraenabled | |
public string EntityDefinitionId{get;set;} | |
@Auraenabled | |
public string FieldDefinitionId{get;set;} | |
@Auraenabled | |
public boolean IsAccessible{get;set;} | |
@Auraenabled | |
public boolean IsUpdatable{get;set;} | |
@Auraenabled | |
public boolean IsCreatable{get;set;} | |
@Auraenabled | |
public string FieldName{get;set;} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment