/** * ─────────────────────────────────────────────────────────────────────────────────────────────────┐ * 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 * ────────────────────────────────────────────────────────────────────────────────────────────────── */ 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 getSchemaObjectFieldsMap(String objectName){ DescribeSObjectResult schemaType = getSchemaType(objectName); Map fieldsMap = schemaType.fields.getMap(); return fieldsMap; } public static String isAccessible(String fieldstocheck, DescribeSObjectResult schemaType){ String verifiedFields = ''; try{ if(schemaType.isAccessible()){ Map fieldsMap = schemaType.fields.getMap(); if(fieldsMap != null && !fieldsMap.isEmpty()){ List 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 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 fieldsMap = schemaType.getDescribe().fields.getMap(); if(fieldsMap != null && !fieldsMap.isEmpty()){ List 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 fieldsMap){ try{ if(fieldsMap != null && !fieldsMap.isEmpty()){ List 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 fieldsMap = schemaType.getDescribe().fields.getMap(); if(fieldsMap != null && !fieldsMap.isEmpty()){ List 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 fieldsMap = schemaType.getDescribe().fields.getMap(); if(fieldsMap != null && !fieldsMap.isEmpty()){ List 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 fieldsMap){ try{ if(fieldsMap !=null && !fieldsMap.isEmpty()){ List 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 fieldsMap = schemaType.getDescribe().fields.getMap(); if(fieldsMap != null && !fieldsMap.isEmpty()){ List 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 fieldsMap){ try{ if(fieldsMap !=null && !fieldsMap.isEmpty()){ List 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; } }