SyncMadeEasy/force-app/main/default/classes/CheckAccessibility.cls

315 lines
15 KiB
OpenEdge ABL

/**
* ─────────────────────────────────────────────────────────────────────────────────────────────────┐
* This class is use for check fields and Object level access.
* Shopify API Documentation: https://shopify.dev/docs/admin-api/rest/reference
* Create Shopify Store: https://www.shopify.com/signup?itcat=identity&itterm=create-new-store
* Shopify API Release 2020: https://www.shopify.in/partners/blog/shopify-api-release-january-2020
* What is Person Account in Salesforce ? https://help.salesforce.com/articleView?id=account_person.htm&type=5
* ──────────────────────────────────────────────────────────────────────────────────────────────────
* @author Sumit <sumit@hicShopify.com>
* ──────────────────────────────────────────────────────────────────────────────────────────────────
*/
global class CheckAccessibility{
public static Boolean isPersonAccount = null;
public static Boolean checkPersonAccountEnabled(){
System.debug('THIS IS THE VALUE OF isPersonAccount: '+isPersonAccount);
if(isPersonAccount == null){
isPersonAccount = Schema.sObjectType.Account.fields.getMap().containsKey( 'ispersonaccount' );
if(Test.isRunningTest()){
isPersonAccount = true;
}
}
System.debug('THIS IS THE VALUE OF isPersonAccount After Filling : '+isPersonAccount);
return isPersonAccount;
}
public static DescribeSObjectResult getSchemaType(String objectName){
return Schema.getGlobalDescribe().get(objectName).getDescribe();
}
public static Map<String, SObjectField> getSchemaObjectFieldsMap(String objectName){
DescribeSObjectResult schemaType = getSchemaType(objectName);
Map<String, SObjectField> fieldsMap = schemaType.fields.getMap();
return fieldsMap;
}
public static String isAccessible(String fieldstocheck, DescribeSObjectResult schemaType){
String verifiedFields = '';
try{
if(schemaType.isAccessible()){
Map<String, SObjectField> fieldsMap = schemaType.fields.getMap();
if(fieldsMap != null && !fieldsMap.isEmpty()){
List<String> fieldstocheckList = fieldstocheck.split(',');
for(String fieldtoverify : fieldstocheckList){
fieldtoverify = fieldtoverify.trim().toLowerCase();
if(fieldsMap.containsKey(fieldtoverify)){
DescribeFieldResult fieldSchema = fieldsMap.get(fieldtoverify).getDescribe();
if(fieldSchema.isAccessible()){
verifiedFields += fieldtoverify+',';
}
}
}
if(fieldstocheckList.contains('RecordType.DeveloperName')){
DescribeSObjectResult recordTypeSchema = Schema.getGlobalDescribe().get('RecordType').getDescribe();
if (fieldsMap.containsKey('RecordTypeId') && recordTypeSchema.isAccessible()) {
Map<String, SObjectField> recordTypeFieldsMap = recordTypeSchema.fields.getMap();
for(String fieldtoverify : fieldstocheckList){
if(fieldtoverify == 'RecordType.DeveloperName'){
fieldtoverify = fieldtoverify.trim();
DescribeFieldResult fieldSchema = recordTypeFieldsMap.get(fieldtoverify).getDescribe();
if(recordTypeFieldsMap.containsKey('developerName') &&
fieldSchema.isAccessible() ){
verifiedFields += 'RecordType.DeveloperName'+',';
}
}
}
}
}
if(verifiedFields!= ''){
verifiedFields = verifiedFields.substring(0, verifiedFields.length() - 1);
}
return verifiedFields;
}
}
return verifiedFields;
}catch(Exception ex){
System.debug('@@@ this is the schema Exception ::: '+ex.getMessage()+' with line number ::: '+ex.getLineNumber());
}
return verifiedFields;
}
global static String isAccessible(String fieldstocheck,String sObjectName){
String verifiedFields = '';
sObjectName = sObjectName.trim();
sObjectType schemaType = Schema.getGlobalDescribe().get(sObjectName) ;
try{
if(sObjectName != null && sObjectName != ''){
if(schemaType.getDescribe().isAccessible()){
Map<String, SObjectField> fieldsMap = schemaType.getDescribe().fields.getMap();
if(fieldsMap != null && !fieldsMap.isEmpty()){
List<String> fieldstocheckList = fieldstocheck.split(',');
for(String fieldtoverify : fieldstocheckList){
fieldtoverify = fieldtoverify.trim();
if(fieldsMap.containsKey(fieldtoverify) &&
fieldsMap.get(fieldtoverify).getDescribe().isAccessible() ){
verifiedFields += fieldtoverify+',';
}
}
if(verifiedFields!= ''){
verifiedFields = verifiedFields.substring(0, verifiedFields.length() - 1);
}
return verifiedFields;
}
}
}
return verifiedFields;
}catch(Exception e){
}
return verifiedFields;
}
global static Boolean isUpsertable(String fieldstocheck,Map<String, SObjectField> fieldsMap){
try{
if(fieldsMap != null && !fieldsMap.isEmpty()){
List<String> fieldstocheckList = fieldstocheck.split(',');
for(String fieldtoverify : fieldstocheckList){
fieldtoverify = fieldtoverify.trim();
if(fieldsMap.containsKey(fieldtoverify.toLowerCase())){
if(fieldsMap.get(fieldtoverify).getDescribe().isCreateable() ||
fieldsMap.get(fieldtoverify).getDescribe().isUpdateable() ||
fieldsMap.get(fieldtoverify).getDescribe().isAccessible()){
return true;
}
else{
return false;
}
}
else{
return false;
}
}
return true;
}
}catch(Exception e){
}
return false;
}
global static Boolean isUpsertable(String fieldstocheck,String sObjectName){
try{
sObjectName = sObjectName.trim();
sObjectType schemaType = Schema.getGlobalDescribe().get(sObjectName);
if(sObjectName != null && sObjectName != ''){
if(schemaType.getDescribe().isCreateable() ||
schemaType.getDescribe().isUpdateable() ||
schemaType.getDescribe().isAccessible()){
Map<String, SObjectField> fieldsMap = schemaType.getDescribe().fields.getMap();
if(fieldsMap != null && !fieldsMap.isEmpty()){
List<String> fieldstocheckList = fieldstocheck.split(',');
for(String fieldtoverify : fieldstocheckList){
fieldtoverify = fieldtoverify.trim();
System.debug('***** fieldsMap.containsKey(fieldtoverify) '+fieldsMap.containsKey(fieldtoverify) );
if(fieldsMap.containsKey(fieldtoverify) ){
if(fieldsMap.get(fieldtoverify).getDescribe().isCreateable() ||
fieldsMap.get(fieldtoverify).getDescribe().isUpdateable() ||
fieldsMap.get(fieldtoverify).getDescribe().isAccessible()){
System.debug('****');
}else{
return false;
}
}
else{
return false;
}
}
return true;
}
}
}
}catch(Exception e){
System.debug('*************Error'+e.getMessage()+' At Line '+e.getLineNumber());
}
return false;
}
global static Boolean isDeletable(String sObjectName){
try{
sObjectName = sObjectName.trim();
sObjectType schemaType = Schema.getGlobalDescribe().get(sObjectName);
if(sObjectName != null && sObjectName != ''){
if(schemaType.getDescribe().isDeletable() ||
schemaType.getDescribe().isAccessible()){
return true;
}
}
}catch(Exception e){
}
return false;
}
global static Boolean isInsertable(String fieldstocheck,String sObjectName){
try{
sObjectName = sObjectName.trim();
sObjectType schemaType = Schema.getGlobalDescribe().get(sObjectName);
if(sObjectName != null && sObjectName != ''){
if(schemaType.getDescribe().isCreateable()||
schemaType.getDescribe().isAccessible()){
Map<String, SObjectField> fieldsMap = schemaType.getDescribe().fields.getMap();
if(fieldsMap != null && !fieldsMap.isEmpty()){
List<String> fieldstocheckList = fieldstocheck.split(',');
for(String fieldtoverify : fieldstocheckList){
fieldtoverify = fieldtoverify.trim();
if(fieldsMap.containsKey(fieldtoverify) &&
fieldsMap.get(fieldtoverify).getDescribe().isCreateable() ||
fieldsMap.get(fieldtoverify).getDescribe().isAccessible()){
return true;
}
else{
return false;
}
}
return true;
}
}
}
}catch(Exception e){
}
return false;
}
public static Boolean isInsertable(String fieldstocheck,Map<String, SObjectField> fieldsMap){
try{
if(fieldsMap !=null && !fieldsMap.isEmpty()){
List<String> fieldstocheckList = fieldstocheck.split(',');
for(String fieldtoverify : fieldstocheckList){
fieldtoverify = fieldtoverify.trim();
if(fieldsMap.containsKey(fieldtoverify) &&
fieldsMap.get(fieldtoverify).getDescribe().isCreateable() ||
fieldsMap.get(fieldtoverify).getDescribe().isAccessible()){
return true;
}
else{
return false;
}
}
return true;
}
// }
// }
}catch(Exception e){
}
return false;
}
global static Boolean isUpdateable(String fieldstocheck,String sObjectName){
try{
sObjectName = sObjectName.trim();
sObjectType schemaType = Schema.getGlobalDescribe().get(sObjectName);
if(sObjectName != null && sObjectName != ''){
if(schemaType.getDescribe().isUpdateable()||
schemaType.getDescribe().isAccessible()){
Map<String, SObjectField> fieldsMap = schemaType.getDescribe().fields.getMap();
if(fieldsMap != null && !fieldsMap.isEmpty()){
List<String> fieldstocheckList = fieldstocheck.split(',');
for(String fieldtoverify : fieldstocheckList){
fieldtoverify = fieldtoverify.trim();
if(fieldsMap.containsKey(fieldtoverify) &&
fieldsMap.get(fieldtoverify).getDescribe().isUpdateable() ||
fieldsMap.get(fieldtoverify).getDescribe().isAccessible()){
return true;
}
else{
return false;
}
}
return true;
}
}
}
}catch(Exception e){
}
return false;
}
global static Boolean isUpdateable(String fieldstocheck,Map<String, SObjectField> fieldsMap){
try{
if(fieldsMap !=null && !fieldsMap.isEmpty()){
List<String> fieldstocheckList = fieldstocheck.split(',');
for(String fieldtoverify : fieldstocheckList){
fieldtoverify = fieldtoverify.trim();
if(fieldsMap.containsKey(fieldtoverify) &&
fieldsMap.get(fieldtoverify).getDescribe().isUpdateable() ||
fieldsMap.get(fieldtoverify).getDescribe().isAccessible()){
return true;
}
else{
return false;
}
}
return true;
}
// }
// }
}catch(Exception e){
}
return false;
}
}