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

5310 lines
363 KiB
OpenEdge ABL

/**
* ─────────────────────────────────────────────────────────────────────────────────────────────────┐
* This class is handle for all Aura Component's Controller.
* 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>
* ──────────────────────────────────────────────────────────────────────────────────────────────────
*/
public with sharing class AddDeleteController {
//Wrapper class for field mapping
public class FieldWrapper{
@AuraEnabled
public String filedlabel{get;set;}
@AuraEnabled
public String filedApiName{get;set;}
@AuraEnabled
public String dataType{get;set;}
}
//Use @AuraEnabled to enable client- and server-side access to the method
@AuraEnabled
public static String getUserName() {
return userinfo.getName();
}
/**************************************getSampeledata*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Use for get all sample records from the Shopify's store with limit of 5 in each recoord
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static list<string> getSampeledata(String store){
list<string> listofallsampledata = new list<string>();
List<HIC_ShopifySync__HIC_Configuration__c > configurationList = new List<HIC_ShopifySync__HIC_Configuration__c >();
String query = 'Select '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c, name, HIC_ShopifySync__Collection_Sync__c, HIC_ShopifySync__Draft_Order_Sync__c, HIC_ShopifySync__Inventory_Location_Sync__c, HIC_ShopifySync__Opportunity_Sync__c, HIC_ShopifySync__Order_Sync__c,HIC_ShopifySync__BatchRunOnce__c,HIC_ShopifySync__BatchisAborted__c,HIC_ShopifySync__ProductVariantBatchCompleted__c,HIC_ShopifySync__Batch_Is_Processing__c, HIC_ShopifySync__Shopify_URL__c, HIC_ShopifySync__API_Key__c, HIC_ShopifySync__Private_Key_Password__c, HIC_ShopifySync__Opportunity__c, HIC_ShopifySync__Order__c, HIC_ShopifySync__Opportunity_Line_Item__c, HIC_ShopifySync__Order_Line_Item__c, HIC_ShopifySync__Order_Fulfillment__c, HIC_ShopifySync__Person_Account__c ','HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c where '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c', 'HIC_ShopifySync__HIC_Configuration__c')+' = \''+store+'\' LIMIT 49999';
configurationList = database.query(query);
System.debug('configurationList-'+configurationList);
listofallsampledata = getlistofobjecforsample('products.json',configurationList,listofallsampledata);
listofallsampledata = getlistofobjecforsample('customers.json',configurationList,listofallsampledata);
if(configurationList[0].HIC_ShopifySync__Collection_Sync__c){
listofallsampledata = getlistofobjecforsample('custom_collections.json',configurationList,listofallsampledata);
}else{
listofallsampledata.add('null');
}
if(configurationList[0].HIC_ShopifySync__Order_Sync__c == True ){
listofallsampledata = getlistofobjecforsample('orders.json',configurationList,listofallsampledata);
}else{
listofallsampledata.add('null');
}
if(configurationList[0].HIC_ShopifySync__Draft_Order_Sync__c ){
listofallsampledata = getlistofobjecforsample('draft_orders.json',configurationList,listofallsampledata);
}else{
listofallsampledata.add('null');
}
if(configurationList[0].HIC_ShopifySync__Inventory_Location_Sync__c ){
listofallsampledata = getlistofobjecforsample('locations.json',configurationList,listofallsampledata);
}else{
listofallsampledata.add('null');
}
if(!listofallsampledata.isEmpty()){
return listofallsampledata;
}else{
return null;
}
}
/**************************************getlistofobjecforsample*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Use for get all sample records from the Shopify's store with limit of 5 in each recoord
* @param String objectname - Shopify's Entity Name (Oject Name)
* @param list<HIC_ShopifySync__HIC_Configuration__c> configurationList - ListofConfigurationSettings
* @param list<String> listofallsampledata - list of all sample records
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static list<String> getlistofobjecforsample(String objectname,list<HIC_ShopifySync__HIC_Configuration__c> configurationList, list<String> listofallsampledata){
String JSONbody;
if(configurationList.isEmpty()) return null;
JSONbody = HIC_ShopifyUtility.fetchAllDataUsingId(objectname+'?limit=5',configurationList);
if((JSONbody == '' || JSONbody == null || JSONbody == '{}') ) {
listofallsampledata.add('null');
}else{
Map<String, Object> meta = (Map<String, Object>) JSON.deserializeUntyped(JSONbody);
if(!meta.isEmpty() && meta.containsKey(objectname.remove('.json'))){
List<Object> objectList = (List<Object>) meta.get(objectname.remove('.json'));
if((objectList.isEmpty() || objectList == null ) && objectname == 'custom_collections.json'){
JSONbody = HIC_ShopifyUtility.fetchAllDataUsingId('smart_collections.json?limit=5',configurationList);
if((JSONbody == '' || JSONbody == null || JSONbody == '{}') ) {
listofallsampledata.add('null');
return listofallsampledata;
}else{
Map<String, Object> metanew = (Map<String, Object>) JSON.deserializeUntyped(JSONbody);
if(!meta.isEmpty() && metanew.containsKey('smart_collections')){
objectList = (List<Object>) metanew.get('smart_collections');
}
}
}
if(!objectList.isEmpty() && objectList != null ){
listofallsampledata.add(JSON.serialize(objectList));
}else{
listofallsampledata.add('null');
}
}
}
return listofallsampledata;
}
/**************************************getusertimezone*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Use for get user time zone
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static string getusertimezone(){
TimeZone tz = UserInfo.getTimeZone();
String GMTValue = tz.getDisplayName();
return UserInfo.getTimeZone().getDisplayName().trim().substring(4,7);
}
/**************************************getListofLogs*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get list of all Shopify Logs records from Salesforce
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled()
public static List<HIC_ShopifySync__Shopify_Log__c> getListofLogs(){
List<HIC_ShopifySync__Shopify_Log__c> listoflogs = new List<HIC_ShopifySync__Shopify_Log__c>();
listoflogs = [select id,name,HIC_ShopifySync__Error_id__c,Createddate,LastModifieddate,HIC_ShopifySync__Shopify_Id__c,HIC_ShopifySync__Is_Webhook__c,HIC_ShopifySync__Info__c,HIC_ShopifySync__Second_Info__c,HIC_ShopifySync__Third_Info__c,HIC_ShopifySync__Store__c from HIC_ShopifySync__Shopify_Log__c WITH SECURITY_ENFORCED order by createdDate desc Limit 2000];
if(!listoflogs.isempty()){
Map<String, Schema.SObjectType> sObjectMap = Schema.getGlobalDescribe();
Map<String,String> mapofObjectApivsLabel = new Map<String,String>();
String labelobj = '';
for(HIC_ShopifySync__Shopify_Log__c obj : listoflogs){
labelobj = '';
if(String.isNotBlank(obj.name)){
if(mapofObjectApivsLabel.containskey(obj.name)){
obj.name = mapofObjectApivsLabel.get(obj.name);
}else if(sObjectMap.containskey(obj.name)){
labelobj = sObjectMap.get(obj.name).getDescribe().getLabel();
mapofObjectApivsLabel.put(obj.name,labelobj);
obj.name = labelobj;
}
}
}
system.debug('listoflogs--->'+listoflogs);
return listoflogs;
}
return null;
}
// wrapper class use for Shopify Logs
public class displaylogwrapper{
@AuraEnabled
public list<HIC_ShopifySync__Shopify_Log__c> listoflogs {get;set;}
@AuraEnabled
public String usertimezone {get;set;}
}
/**************************************saveCurrencyISOCode*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Save Currency ISOCode Selected from User
* @param String CurrencyISOCodeValue - CurrencyISOCode
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static boolean saveCurrencyISOCode(String CurrencyISOCodeValue){
system.debug('CurrencyISOCodeValue -- '+CurrencyISOCodeValue);
String currencyvalue;
Boolean Ischanged = false;
String store = 'Default';
if(CurrencyISOCodeValue == null || CurrencyISOCodeValue == '') return true;
map<string,object> mapofcurrencyvalue = (map<string,object>) JSON.deserializeUntyped(CurrencyISOCodeValue);
if( !mapofcurrencyvalue.isEmpty() && mapofcurrencyvalue != null && mapofcurrencyvalue.containskey('CurrencyISOCode') && mapofcurrencyvalue.containskey('IsChanged') ){
currencyvalue = String.valueof(mapofcurrencyvalue.get('CurrencyISOCode'));
Ischanged = boolean.valueof(mapofcurrencyvalue.get('IsChanged'));
store = String.valueof(mapofcurrencyvalue.get('store'));
}
Boolean multiCurrencyEnabled = true;
List<HIC_ShopifySync__HIC_Field_Mapping__c > currencyMappingList = new List<HIC_ShopifySync__HIC_Field_Mapping__c >();
String query = '';
String CurrencyShopifyFieldValue = '';
if(multiCurrencyEnabled){
//Update Currency
if(Ischanged){
updateIschangeCurrencyconfigupdate(store);
}
query = ' select '+CheckAccessibility.isAccessible('name,HIC_ShopifySync__Store_External_ID__c,HIC_ShopifySync__External_ID__c,HIC_ShopifySync__GQL_Field_API__c,HIC_ShopifySync__SF_Field__c, HIC_ShopifySync__Shopify_Fields__c, HIC_ShopifySync__Nested__c , HIC_ShopifySync__IsSFID__c','HIC_ShopifySync__HIC_Field_Mapping__c')+' from HIC_ShopifySync__HIC_Field_Mapping__c where ' +CheckAccessibility.isAccessible('HIC_ShopifySync__SF_Field__c','HIC_ShopifySync__HIC_Field_Mapping__c') +'= \'CurrencyISOCODE\' AND ' +CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c', 'HIC_ShopifySync__HIC_Field_Mapping__c')+' = \''+store+'\' LIMIT 49999';
currencyMappingList = database.query(query);
if(currencyvalue == null || currencyvalue == '') return true;
for(HIC_ShopifySync__HIC_Field_Mapping__c allcurrency : currencyMappingList){
allcurrency.Id = null;
allcurrency.HIC_ShopifySync__Shopify_Fields__c = currencyvalue ;
allcurrency.HIC_ShopifySync__Store_External_ID__c = store+allcurrency.HIC_ShopifySync__External_ID__c;
}
try{
//update Configuration
upsert currencyMappingList HIC_ShopifySync__Store_External_ID__c ;
return true;
}catch(exception e){
return false;
}
}else{
return true;
}
}
/**************************************updateIschangeCurrencyconfigupdate*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Update Currency into the configuration
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static void updateIschangeCurrencyconfigupdate(String store){
List<HIC_ShopifySync__HIC_Configuration__c> config = new List<HIC_ShopifySync__HIC_Configuration__c>();
config = database.query('select '+Checkaccessibility.isAccessible('HIC_ShopifySync__IsCurrencyChanged__c,name','HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c where '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c', 'HIC_ShopifySync__HIC_Configuration__c')+' = \''+store+'\' LIMIT 49999');
if(config.isEmpty()) return;
config[0].HIC_ShopifySync__IsCurrencyChanged__c = true;
try{
upsert config name ;
}catch(exception e){
}
}
/**************************************getlistofCurrencyISOCode*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get List of Currency from Salesforce
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static list<String> getlistofCurrencyISOCode(String store){
List<HIC_ShopifySync__HIC_Field_Mapping__c > currencyMappingList = new List<HIC_ShopifySync__HIC_Field_Mapping__c >();
try{
Boolean multiCurrencyEnabled = Schema.getGlobalDescribe().containsKey('CurrencyType');
list<String> ListofcurrncyvalueAndValue = new list<String>();
String query = ' select '+CheckAccessibility.isAccessible('name,HIC_ShopifySync__External_ID__c,HIC_ShopifySync__SF_Field__c, HIC_ShopifySync__Shopify_Fields__c,HIC_ShopifySync__GQL_Field_API__c, HIC_ShopifySync__Nested__c , HIC_ShopifySync__IsSFID__c','HIC_ShopifySync__HIC_Field_Mapping__c')+' from HIC_ShopifySync__HIC_Field_Mapping__c where '+CheckAccessibility.isAccessible('HIC_ShopifySync__Object_Name__c','HIC_ShopifySync__HIC_Field_Mapping__c')+ ' = \'order\' And ' +CheckAccessibility.isAccessible('HIC_ShopifySync__SF_Field__c','HIC_ShopifySync__HIC_Field_Mapping__c') +'= \'CurrencyISOCODE\' And '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c','HIC_ShopifySync__HIC_Field_Mapping__c')+' = \''+store+'\' limit 49999';
currencyMappingList = database.query(query);
if(currencyMappingList.isEmpty()){
currencyMappingList.add(processFieldMappingSobjectWithAllFields('Opportunity','CurrencyISOCODE','','',true,false,'PICKLIST','string',store));
currencyMappingList.add(processFieldMappingSobjectWithAllFields('Order','CurrencyISOCODE','','',true,false,'PICKLIST','string',store));
currencyMappingList.add(processFieldMappingSobjectWithAllFields('DraftOrder','CurrencyISOCODE','','',true,false,'PICKLIST','string',store));
currencyMappingList.add(processFieldMappingSobjectWithAllFields('Product2','CurrencyISOCODE','','',true,false,'PICKLIST','string',store));
upsert currencyMappingList HIC_ShopifySync__Store_External_ID__c;
}
if(multiCurrencyEnabled){
String ListType = 'List<CurrencyType>';
List<sobject> listOfAllCurrencyCode = (List<SObject>)Type.forName(ListType).newInstance();
list<CurrencyISOList> Listofcurrency = new list<CurrencyISOList>();
listOfAllCurrencyCode = database.query('SELECT id,ISOCode FROM CurrencyType WHERE IsActive=TRUE WITH SECURITY_ENFORCED limit 999');
for(sobject obj1 : listOfAllCurrencyCode){
CurrencyISOList CurrencyWrapper = new CurrencyISOList();
CurrencyWrapper.ISOCode = String.valueof(obj1.get('ISOCode'));
Listofcurrency.add(CurrencyWrapper);
}
if(currencyMappingList[0].HIC_ShopifySync__Shopify_Fields__c != null && currencyMappingList[0].HIC_ShopifySync__Shopify_Fields__c != ''){
ListofcurrncyvalueAndValue.add(currencyMappingList[0].HIC_ShopifySync__Shopify_Fields__c);
}else{
ListofcurrncyvalueAndValue.add(UserInfo.getDefaultCurrency());
}
ListofcurrncyvalueAndValue.add(JSON.serialize(Listofcurrency));
return ListofcurrncyvalueAndValue;
}else{
if( !currencyMappingList.isEmpty() && currencyMappingList[0].HIC_ShopifySync__Shopify_Fields__c != null && currencyMappingList[0].HIC_ShopifySync__Shopify_Fields__c != ''){
ListofcurrncyvalueAndValue.add(currencyMappingList[0].HIC_ShopifySync__Shopify_Fields__c);
}else{
ListofcurrncyvalueAndValue.add(UserInfo.getDefaultCurrency());
}
ListofcurrncyvalueAndValue.add('');
return ListofcurrncyvalueAndValue;
}
}catch(Exception e){
return null;
}
}
//Wrapper list for Currency
public class CurrencyISOList{
@AuraEnabled
public String ISOCode;
}
/**************************************Deletesitefromconfig*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Delete Site URL From Configuration
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static boolean Deletesitefromconfig(){
List<HIC_ShopifySync__Configuration__c> config = new List<HIC_ShopifySync__Configuration__c>();
config = database.query('select '+Checkaccessibility.isAccessible('HIC_ShopifySync__Salesforce_Site_URL__c,name ','HIC_ShopifySync__Configuration__c')+' from HIC_ShopifySync__Configuration__c where '+Checkaccessibility.isAccessible('Name','HIC_ShopifySync__Configuration__c')+' = \'Default\' limit 1');
if(config.isEmpty()) return false;
if(config[0].HIC_ShopifySync__Salesforce_Site_URL__c != null && config[0].HIC_ShopifySync__Salesforce_Site_URL__c != ''){
config[0].HIC_ShopifySync__Salesforce_Site_URL__c = null;
}
try{
database.update(config) ;
return true;
}catch(exception e){
return false;
}
}
/**************************************CheckSitefromConfiguration*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get last saved Salesforce Site URL in Configuration
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static string CheckSitefromConfiguration(){
List<HIC_ShopifySync__Configuration__c> config = new List<HIC_ShopifySync__Configuration__c>();
config = database.query('select '+Checkaccessibility.isAccessible('HIC_ShopifySync__Salesforce_Site_URL__c,name ','HIC_ShopifySync__Configuration__c')+' from HIC_ShopifySync__Configuration__c where '+Checkaccessibility.isAccessible('Name','HIC_ShopifySync__Configuration__c')+' = \'Default\' limit 1');
if(config.isEmpty()) return 'false';
if(config[0].HIC_ShopifySync__Salesforce_Site_URL__c != null && config[0].HIC_ShopifySync__Salesforce_Site_URL__c != '') {
return config[0].HIC_ShopifySync__Salesforce_Site_URL__c;
} else{
return 'false';
}
}
/**************************************savesiteurlconfig*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Save Salesforce's Site URL into Configuration settings
* @param String siteurl - Salesforce's Site URl Selected by User
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static boolean savesiteurlconfig(String siteurl){
List<HIC_ShopifySync__Configuration__c> config = new List<HIC_ShopifySync__Configuration__c>();
config = database.query('select '+Checkaccessibility.isAccessible('HIC_ShopifySync__Salesforce_Site_URL__c,name ','HIC_ShopifySync__Configuration__c')+' from HIC_ShopifySync__Configuration__c where '+Checkaccessibility.isAccessible('Name','HIC_ShopifySync__Configuration__c')+' = \'Default\' limit 1');
if(config.isEmpty()) return false;
config[0].HIC_ShopifySync__Salesforce_Site_URL__c = siteurl;
try{
upsert config name ;
return true;
}catch(exception e){
return false;
}
}
/**************************************batchabortedconfigupdate*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Update Configuration When Batch is Abort or get Any error on the Batch
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static boolean batchabortedconfigupdate(){
List<HIC_ShopifySync__Configuration__c> config = new List<HIC_ShopifySync__Configuration__c>();
config = database.query('select '+Checkaccessibility.isAccessible('HIC_ShopifySync__BatchisAborted__c,HIC_ShopifySync__IsCurrencyChanged__c,name ','HIC_ShopifySync__Configuration__c')+' from HIC_ShopifySync__Configuration__c where '+Checkaccessibility.isAccessible('Name','HIC_ShopifySync__Configuration__c')+' = \'Default\' limit 1');
if(config.isEmpty()) return false;
config[0].HIC_ShopifySync__BatchisAborted__c = true;
try{
upsert config name ;
return true;
}catch(exception e){
return false;
}
}
/**************************************updateconfigurationpbatchprocessingfield*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Update Configuration When Batch Processig is completed
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static boolean updateconfigurationpbatchprocessingfield(String store){
List<HIC_ShopifySync__HIC_Configuration__c> config = new List<HIC_ShopifySync__HIC_Configuration__c>();
config = database.query('select '+Checkaccessibility.isAccessible('HIC_ShopifySync__IsCurrencyChanged__c,HIC_ShopifySync__Batch_Is_Processing__c,HIC_ShopifySync__BatchisAborted__c,name ','HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c where '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c', 'HIC_ShopifySync__HIC_Configuration__c')+' = \''+store+'\' LIMIT 49999');
if(config.isempty()) return false;
config[0].HIC_ShopifySync__Batch_Is_Processing__c = false;
config[0].HIC_ShopifySync__BatchisAborted__c = false;
config[0].HIC_ShopifySync__IsCurrencyChanged__c = false;
try{
upsert config name ;
return true;
}catch(exception e){
return false;
}
}
/**************************************returnDomainUrl*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get Salesforce Base URl for Authentication
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static string returnDomainUrl(){
return URL.getSalesforceBaseUrl().toExternalForm();
}
/**************************************CheckSiteClassandPageAccess*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Check package class access in Site User
* Apex class Name: AuthenticateAllApexClass
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static boolean CheckSiteClassandPageAccess(String Guestuserid){
List<SObject> siteList = new List<SObject>();
list<SiteWrapper> listofsitewrapper = new list<SiteWrapper>();
siteList = database.query('SELECT '+Checkaccessibility.isAccessible('GuestUserId, Name,MasterLabel, Subdomain, OptionsRequireHttps, UrlPathPrefix', 'Site') +' FROM Site WHERE '+Checkaccessibility.isAccessible('Status','Site') + ' = \'Active\' and '+Checkaccessibility.isAccessible('GuestUserId','Site') + ' = \''+Guestuserid+'\' Limit 1');
if(!Test.isRunningTest()){
if(siteList.isEmpty()) return false;
}
boolean SiteAccess = false;
list<Apexclass> listofApexclass = new list<Apexclass>();
list<Apexclass> listofAllApexclass = new list<Apexclass>();
list<Apexpage> listofApexPage = new list<Apexpage>();
list<Apexpage> listofALlApexPage = new list<Apexpage>();
list<user> listofuser = new list<user>();
Integer NumberOfApexClass =0;
Integer NumberOfApexPage=0;
listofuser = [select id,profileid from user where usertype= 'Guest' and id =: Guestuserid WITH SECURITY_ENFORCED];
if(!listofuser.isEmpty()){
String profileid = listofuser[0].profileid;
NumberOfApexClass = Integer.valueof(System.Label.NumberofApexClasses);
listofApexclass = [SELECT NamespacePrefix, Name FROM ApexClass WHERE Id IN (SELECT SetupEntityId FROM SetupEntityAccess WHERE Parent.Profileid =: profileid ) and NamespacePrefix = 'HIC_ShopifySync' and name = 'AuthenticateAllApexClass' WITH SECURITY_ENFORCED limit 1 ];
if(!listofApexclass.isEmpty() && listofApexclass != null ){
return true;
}
}
return false;
}
/**************************************CreateAuthenticateURL*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Create RemoteSite Setting for Authentication URL
* https://test.salesforce.com
* https://login.salesforce.com
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static void CreateAuthenticateURL(){
Organization orgRecord;
String URL = '';
if(Schema.sObjectType.organization.isAccessible() && Schema.sObjectType.organization.fields.issandbox.isAccessible() && Schema.sObjectType.organization.fields.id.isAccessible() ){
orgRecord = [select id,issandbox from organization LIMIT 1];
if(orgRecord.issandbox){
URL = 'https://test.salesforce.com';
}else{
URL = 'https://login.salesforce.com';
}
}
if(URL != ''){
if(!CheckingRemotesiteExistence(URL)){
createRemoteSiteSettings(URL);
}
}
}
/**************************************createRemoteSiteSettings*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Create RemoteSite Setting for Authentication URL
* @param String URL - URL for Create RemoteSite Setting
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static void createRemoteSiteSettings(String URL){
try{
if(URL == null || URL == '' || CheckingRemotesiteExistence(URL))return;
MetadataServiceNew.MetadataPort service = createService();
MetadataServiceNew.RemoteSiteSetting remoteSiteSettings = new MetadataServiceNew.RemoteSiteSetting();
remoteSiteSettings.fullName = 'HICShopifysyncmadeeasy'+DateTime.now().getTime();
remoteSiteSettings.url = URL;
remoteSiteSettings.description='HIC Shopify Made Easy';
remoteSiteSettings.isActive=true;
remoteSiteSettings.disableProtocolSecurity=false;
if(!Test.isRunningTest()){
MetadataServiceNew.AsyncResult[] results = service.create(new List<MetadataServiceNew.Metadata> { remoteSiteSettings });
MetadataServiceNew.AsyncResult[] checkResults = service.checkStatus(new List<string> {string.ValueOf(results[0].Id)});
}
}catch(Exception e){
}
}
/**************************************createToolingRemoteSiteSettings*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Create RemoteSite Setting for Tooling API URL
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static String createToolingRemoteSiteSettings(){
String SFdomainUrl = URL.getSalesforceBaseUrl().toExternalForm();
if(CheckingRemotesiteExistence(SFdomainUrl)) return 'true';
try{
MetadataServiceNew.MetadataPort service = createService();
MetadataServiceNew.RemoteSiteSetting remoteSiteSettings = new MetadataServiceNew.RemoteSiteSetting();
remoteSiteSettings.fullName = 'HICShopifysyncmadeeasy'+DateTime.now().getTime();
remoteSiteSettings.url = SFdomainUrl;
remoteSiteSettings.description='HIC Shopify Made Easy';
remoteSiteSettings.isActive=true;
remoteSiteSettings.disableProtocolSecurity=false;
if(!Test.isRunningTest()){
MetadataServiceNew.AsyncResult[] results = service.create(new List<MetadataServiceNew.Metadata> { remoteSiteSettings });
MetadataServiceNew.AsyncResult[] checkResults = service.checkStatus(new List<string> {string.ValueOf(results[0].Id)});
}
if(Test.isRunningTest()){
throw new applicationException();
}
return 'true';
}catch(Exception e){
String Exceptionmessage = e.getMessage();
if(Test.isRunningTest()){
Exceptionmessage = 'apex job=test/serviceshttps:google.com';
}
if(Exceptionmessage == null || Exceptionmessage == '' || !Exceptionmessage.containsignorecase('=')) return 'false';
list<String> messagefirstpartlist = Exceptionmessage.split('=');
if(messagefirstpartlist.isEmpty() && messagefirstpartlist.size() != 1 && (messagefirstpartlist[1] == null || messagefirstpartlist[1] == '') ) return 'false';
String URl = messagefirstpartlist[1];
list<String> messageSecondpartlist = URl.split('/services');
if(messageSecondpartlist.isEmpty()) return 'false';
return messageSecondpartlist[0];
}
}
/**************************************createService*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* MetaData Service Class
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
public static MetadataServiceNew.MetadataPort createService(){
MetadataServiceNew.MetadataPort service = new MetadataServiceNew.MetadataPort();
service.SessionHeader = new MetadataServiceNew.SessionHeader_element();
service.SessionHeader.sessionId = UserInfo.getSessionId();
return service;
}
/**************************************CheckshopifycertificateandRemotesite*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Verfiy RemoteSite Setting exist or not
* @param String Urltype - certificate/RemoteSite based on value check existance
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static boolean CheckshopifycertificateandRemotesite(String Urltype){
boolean exist = false;
System.debug('Urltype---'+Urltype);
String SFdomainUrl = URL.getSalesforceBaseUrl().toExternalForm();
try{
HttpRequest req = new HttpRequest();
req.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionID()); //Get user Session ID
req.setHeader('Content-Type', 'application/json');
String query;
if(Urltype == 'certificate'){
query='select+id,+DeveloperName+from+Certificate+where+DeveloperName=+\'Shopify\'+and+ExpirationDate+>=+today';
}else{
query='select+id,+EndpointUrl+from+Remotesitesetting+where+EndpointUrl=+\''+SFdomainUrl+'\'';
}
req.setEndpoint(SFdomainUrl+'/services/data/v58.0/tooling/query/?q='+query);
req.setMethod('GET');
req.setTimeout(120000);
Http h = new Http();
HttpResponse response;
String CertificateResponse;
if(!Test.isRunningTest()){
response = h.send(req);
CertificateResponse = response.getBody().trim();
}else{
CertificateResponse = '{"size":1,"totalSize":1,"done":true,"queryLocator":null,"entityTypeName":"Certificate","records":[{"attributes":{"type":"Certificate","url":"/services/data/v58.0/tooling/sobjects/Certificate/0P12v000006b5K9CAI"},"Id":"0P12v000006b5K9CAI","DeveloperName":"Shopify"}]}';
}
Map<String,object> mapofcertificate = (Map<String,object>) JSON.deserializeUntyped(CertificateResponse);
if(!mapofcertificate.isempty() && mapofcertificate != null && mapofcertificate.containskey('size')){
if(Integer.valueof(mapofcertificate.get('size')) > 0){
exist = true;
}
}
return exist;
}catch(Exception e){
return exist;
}
}
/**************************************CheckingRemotesiteExistence*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Verfiy RemoteSite Setting exist or not
* @param String SFdomainUrl - RemoteSite based on value check existance
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static boolean CheckingRemotesiteExistence(String SFdomainUrl){
boolean exist = false;
String OrgURl = URL.getSalesforceBaseUrl().toExternalForm();
try{
HttpRequest req = new HttpRequest();
req.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionID()); //Get user Session ID
req.setHeader('Content-Type', 'application/json');
String query='select+id,+EndpointUrl+from+Remotesitesetting+where+EndpointUrl=+\''+SFdomainUrl+'\'';
req.setEndpoint(OrgURl+'/services/data/v58.0/tooling/query/?q='+query);
req.setMethod('GET');
req.setTimeout(120000);
Http h = new Http();
HttpResponse response;
String RemotesitesettingResponse;
if(!Test.isRunningTest()){
response = h.send(req);
RemotesitesettingResponse = response.getBody().trim();
}else{
RemotesitesettingResponse = '{"size":0,"totalSize":1,"done":true,"queryLocator":null,"entityTypeName":"Certificate","records":[{"attributes":{"type":"Certificate","url":"/services/data/v58.0/tooling/sobjects/Certificate/0P12v000006b5K9CAI"},"Id":"0P12v000006b5K9CAI","DeveloperName":"Shopify"}]}';
}
System.debug('response---- '+ RemotesitesettingResponse);
if(RemotesitesettingResponse == null || RemotesitesettingResponse =='') return false;
Map<String,object> mapofRemoteSitesettings = (Map<String,object>) JSON.deserializeUntyped(RemotesitesettingResponse);
if(!mapofRemoteSitesettings.isempty() && mapofRemoteSitesettings != null && mapofRemoteSitesettings.containskey('size')){
if(Integer.valueof(mapofRemoteSitesettings.get('size')) > 0){
exist = true;
}
}
return exist;
}Catch(Exception e){
System.debug('Exception---- '+ e);
return exist;
}
}
/**************************************getWriteReviewURL*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get URL For Shopify APP Review
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static string getWriteReviewURL(){
list<Document> listofDocument = new list<Document>();
list<DocumentWrapper> listofDocumentWrapper = new list<DocumentWrapper>();
listofDocument = [SELECT Id, Name,Url, FolderId, Folder.Name FROM Document WHERE Folder.Name = 'Hic Shopify made easy logo' and URl != null WITH SECURITY_ENFORCED limit 100];
if(listofDocument.isEmpty()) return null;
for(Document dc : listofDocument){
// MapofDocumentNameVsURL.put(dc.name,dc.Url);
DocumentWrapper DcObj = new DocumentWrapper();
DcObj.name = dc.name;
DcObj.Url = dc.Url;
listofDocumentWrapper.add(DcObj);
}
return JSON.serialize(listofDocumentWrapper);
}
//Wrapper class for Documents
public class DocumentWrapper{
@AuraEnabled
public String name{get;set;}
@AuraEnabled
public String Url{get;set;}
}
/**************************************getUIThemeDescription*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get Salesforce Currennt Theme
* Lightnig / Classic
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static String getUIThemeDescription() {
String theme = UserInfo.getUiThemeDisplayed();
return theme;
}
/**************************************CheckingBatchDetails*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get Current batch status and errors
* @param String ObjectName - Shopify Entity's Name (Object name)
* @param String ApexClassName - batch Class name for check current status
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@auraEnabled
public static String CheckingBatchDetails(String ObjectName,String ApexClassName, String store){
List<ApexClass> apList = new List<ApexClass>([Select Id,name from ApexClass where Name =: ApexClassName]);
map<String,String> MapOfApexClassvsObjectName = new map<String,String>();
if(apList.isEmpty()) return 'Not Class present';
if(ObjectName == 'Product2' || ObjectName == 'HIC_ShopifySync__Variant__c' || ObjectName == 'Account' || ObjectName == 'Contact' || ObjectName == 'Order' || ObjectName == 'Opportunity' || ObjectName == 'Draftorder' || ObjectName == 'HIC_ShopifySync__Inventory__c'){
List<HIC_ShopifySync__HIC_Configuration__c> config = new List<HIC_ShopifySync__HIC_Configuration__c>();
config = database.query('select '+Checkaccessibility.isAccessible('id,HIC_ShopifySync__Enable_Draft_Order__c,HIC_ShopifySync__AccountContactBatchCompleted__c,HIC_ShopifySync__ProductVariantBatchCompleted__c,HIC_ShopifySync__DraftOrderBatchCompleted__c,HIC_ShopifySync__InventoryBatchCompleted__c,HIC_ShopifySync__Collection__c,HIC_ShopifySync__OrderBatchCompleted__c,HIC_ShopifySync__Batch_Is_Processing__c ,HIC_ShopifySync__Refresh_Token__c,name,HIC_ShopifySync__API_Key__c, HIC_ShopifySync__Shopify_URL__c,HIC_ShopifySync__Opportunity__c, HIC_ShopifySync__Private_Key_Password__c, HIC_ShopifySync__Salesforce_Site_URL__c, HIC_ShopifySync__Opportunity_Sync__c, HIC_ShopifySync__Inventory_Location_Sync__c, HIC_ShopifySync__Collection_Sync__c, HIC_ShopifySync__Product_Sync__c, HIC_ShopifySync__Customer_Sync__c, HIC_ShopifySync__Order_Sync__c, HIC_ShopifySync__Draft_Order_Sync__c, HIC_ShopifySync__Salesforce_Pricebook__c','HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c where '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c', 'HIC_ShopifySync__HIC_Configuration__c')+' = \''+store+'\' LIMIT 49999');
list<AsyncApexJob> listofAsyncApexJobNotCompleted = new list<AsyncApexJob>();
listofAsyncApexJobNotCompleted = [SELECT ApexClassID,Status FROM AsyncApexJob
WHERE JobType='BatchApex'
AND (Status = 'Processing' OR Status = 'Holding' OR Status = 'Queued' OR Status = 'Preparing')
AND ApexClassID =: apList[0].Id ORDER BY createddate DESC limit 1 ] ;
if(!config.isEmpty()){
if(listofAsyncApexJobNotCompleted.isEmpty() && config[0].HIC_ShopifySync__ProductVariantBatchCompleted__c == true && (ObjectName == 'Product2' || ObjectName == 'HIC_ShopifySync__Variant__c')){
Integer totalCount = GetRealtimeData(ObjectName);
return 'Completed'+String.valueOf(totalCount);
}
if(listofAsyncApexJobNotCompleted.isEmpty() && config[0].HIC_ShopifySync__AccountContactBatchCompleted__c == true && (ObjectName == 'Account' || ObjectName == 'Contact')){
Integer totalCount = GetRealtimeData(ObjectName);
return 'Completed'+String.valueOf(totalCount);
}
if((listofAsyncApexJobNotCompleted.isEmpty() || config[0].HIC_ShopifySync__Draft_Order_Sync__c) && config[0].HIC_ShopifySync__OrderBatchCompleted__c == true && (ObjectName == 'Order' || ObjectName == 'Opportunity')){
Integer totalCount = GetRealtimeData(ObjectName);
return 'Completed'+String.valueOf(totalCount);
}
if(listofAsyncApexJobNotCompleted.isEmpty() && config[0].HIC_ShopifySync__InventoryBatchCompleted__c == true && ObjectName == 'HIC_ShopifySync__Inventory__c' ){
Integer totalCount = GetRealtimeData(ObjectName);
return 'Completed'+String.valueOf(totalCount);
}
if(listofAsyncApexJobNotCompleted.isEmpty() && config[0].HIC_ShopifySync__DraftOrderBatchCompleted__c == true && ObjectName == 'Draftorder' ){
Integer totalCount = GetRealtimeData(ObjectName);
return 'Completed'+String.valueOf(totalCount);
}
}
}
list<AsyncApexJob> listofAsyncApexJob = new list<AsyncApexJob>();
listofAsyncApexJob = [SELECT ApexClassID,Status,ExtendedStatus FROM AsyncApexJob
WHERE JobType='BatchApex'
AND (Status = 'Processing' OR Status = 'Holding' OR Status = 'Queued' OR Status = 'Preparing' OR Status = 'Aborted' OR Status = 'Completed' OR Status = 'Failed')
AND ApexClassID =: apList[0].Id ORDER BY createddate DESC limit 1 ] ;
String ResultValue ;
if(!listofAsyncApexJob.isEmpty() ){
if(listofAsyncApexJob[0].Status == 'Processing' || listofAsyncApexJob[0].Status == 'Completed' || listofAsyncApexJob[0].Status == 'Preparing' || listofAsyncApexJob[0].Status == 'Holding1' || listofAsyncApexJob[0].Status == 'Queued'){
if(ObjectName != null && ObjectName != '' ){
Integer totalCount = GetRealtimeData(ObjectName);
if(listofAsyncApexJob[0].Status == 'Processing' || listofAsyncApexJob[0].Status == 'Preparing' || listofAsyncApexJob[0].Status == 'Holding1' || listofAsyncApexJob[0].Status == 'Queued'){
ResultValue = String.valueOf(totalCount);
}else if(listofAsyncApexJob[0].Status == 'Completed' ){
list<AsyncApexJob> listofAsyncApexJobNotCompleted = new list<AsyncApexJob>();
listofAsyncApexJobNotCompleted = [SELECT ApexClassID,Status FROM AsyncApexJob
WHERE JobType='BatchApex'
AND (Status = 'Processing' OR Status = 'Holding1' OR Status = 'Queued' OR Status = 'Preparing')
AND ApexClassID =: apList[0].Id ORDER BY createddate DESC limit 1 ] ;
if(ObjectName == 'Product2' || ObjectName == 'HIC_ShopifySync__Variant__c' || ObjectName == 'Account' || ObjectName == 'Contact' || ObjectName == 'Draftorder' || ObjectName == 'Opportunity' || ObjectName == 'Order' || ObjectName == 'HIC_ShopifySync__Inventory__c'){
ResultValue = String.valueOf(totalCount);
}else if(listofAsyncApexJobNotCompleted.isEmpty()){
ResultValue = 'Completed'+String.valueOf(totalCount);
}else{
ResultValue = String.valueOf(totalCount);
}
}
return ResultValue;
}
}else if(listofAsyncApexJob[0].Status == 'Aborted' || listofAsyncApexJob[0].Status == 'Failed' ){
list<AsyncApexJob> listofAsyncApexJobNotCompleted = new list<AsyncApexJob>();
listofAsyncApexJobNotCompleted = [SELECT ApexClassID,Status FROM AsyncApexJob
WHERE JobType='BatchApex'
AND (Status = 'Processing' OR Status = 'Holding1' OR Status = 'Queued' OR Status = 'Preparing')
AND ApexClassID =: apList[0].Id ORDER BY createddate DESC limit 1 ] ;
if(listofAsyncApexJobNotCompleted.isEmpty()){
string abortError;
if(listofAsyncApexJob[0].ExtendedStatus != null && listofAsyncApexJob[0].ExtendedStatus != ''){
abortError = '-'+ listofAsyncApexJob[0].ExtendedStatus;
}
if(abortError != null && abortError != ''){
return ResultValue = 'Aborted' + abortError;
}
return ResultValue = 'Aborted';
}else{
return String.valueOf(GetRealtimeData(ObjectName));
}
}
}
return '';
}
/**************************************CheckingBatchDetails*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get Shopify Record counts based on Object name
* @param String ObjectName - Shopify Entity's Name (Object name)
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
public static Integer GetRealtimeData(String ObjectName){
string query;
list<AggregateResult> groupedResults = new list<AggregateResult>();
if(ObjectName == 'Order'){
query = 'SELECT count(Id) totalCount FROM ' +ObjectName+ ' Where HIC_ShopifySync__Shopify_Id__c != null And recordtype.name = \'Order\' AND recordtype.NamespacePrefix = \'HIC_ShopifySync\' ';
}else if(ObjectName == 'DraftOrder'){
ObjectName = 'Order';
query = 'SELECT count(Id) totalCount FROM ' +ObjectName+ ' Where HIC_ShopifySync__Shopify_Id__c != null And recordtype.name = \'Draft Order\' AND recordtype.NamespacePrefix = \'HIC_ShopifySync\' ';
}else{
query = 'SELECT count(Id) totalCount FROM ' +ObjectName+ ' Where HIC_ShopifySync__Shopify_Id__c != null';
}
groupedResults = Database.query(query);
Object totalCount = groupedResults[0].get('totalCount');
return (Integer) totalCount ;
}
/**************************************getConfigrationForDynamicRow*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get Configuration for check current User what select like Opportunity/draft Orerd
* If not selected then based on configuration will hide and show field mapping
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static String getConfigrationForDynamicRow(string store){
List <HIC_ShopifySync__HIC_Configuration__c> config = new List <HIC_ShopifySync__HIC_Configuration__c>();//HIC_ShopifySync__Draft_Order_Sync__c
String FieldsToQueryforconfig = 'id, HIC_ShopifySync__Draft_Order_Sync__c, HIC_ShopifySync__Update_Identified_Contact_Records__c, HIC_ShopifySync__Update_Identified_Account_Records__c, HIC_ShopifySync__Upsert_Account_basis_on_Customer_Company__c, HIC_ShopifySync__Upsert_Customer_basis_on_Email__c, HIC_ShopifySync__DNCDAMissingAccounts__c, HIC_ShopifySync__Shopify_Objects__c, HIC_ShopifySync__Turn_on_DND_synced_Customers__c, HIC_ShopifySync__Private_Key_Password__c, Name, HIC_ShopifySync__Product_Sync__c, HIC_ShopifySync__Shopify_URL__c,HIC_ShopifySync__Batch_Is_Processing__c,HIC_ShopifySync__Inventory_Location__c,HIC_ShopifySync__Specify_Close_Date__c,HIC_ShopifySync__Default_Account__c,HIC_ShopifySync__Default_Field_Mapping__c,HIC_ShopifySync__Order__c, HIC_ShopifySync__Opportunity__c, HIC_ShopifySync__Opportunity_Line_Item__c, HIC_ShopifySync__Order_Fulfillment__c, HIC_ShopifySync__Enable_Draft_Order__c,HIC_ShopifySync__Account_Contact__c,HIC_ShopifySync__Person_Account__c';
config = Database.query('select '+ Checkaccessibility.isAccessible(FieldsToQueryforconfig,'HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c where '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c', 'HIC_ShopifySync__HIC_Configuration__c')+' = \''+store+'\' LIMIT 1');
if(config != null && !config.isEmpty()){
return JSON.serialize(config[0]);
}else{
return null;
}
}
/*********************************************************
@Name : getEverythingForAccount
@Return type : list of Object Mapping
@Description : Method to get Account fieldMapping.
********************************************************/
@AuraEnabled(cacheable=true)
public static List <String> getEverythingForAccount(String store){
List <String> ListOfEverything = new List <String>();
String FieldsToQueryforShopifyFields = 'Name,HIC_ShopifySync__GQL_Field_API__c,HIC_ShopifySync__UI_Label_Name__c,HIC_ShopifySync__Field_Name__c,HIC_ShopifySync__Data_Type__c,HIC_ShopifySync__Nested__c';
List <HIC_ShopifySync__HIC_Configuration__c> config = new List <HIC_ShopifySync__HIC_Configuration__c>();
String FieldsToQueryforconfig = 'id,HIC_ShopifySync__Store__c, Name,HIC_ShopifySync__Batch_Is_Processing__c,HIC_ShopifySync__Specify_Close_Date__c,HIC_ShopifySync__Default_Account__c,HIC_ShopifySync__Default_Field_Mapping__c,HIC_ShopifySync__Order__c, HIC_ShopifySync__Opportunity__c, HIC_ShopifySync__Opportunity_Line_Item__c, HIC_ShopifySync__Order_Fulfillment__c, HIC_ShopifySync__Enable_Draft_Order__c,HIC_ShopifySync__Account_Contact__c,HIC_ShopifySync__Person_Account__c';
config = Database.query('select '+ Checkaccessibility.isAccessible(FieldsToQueryforconfig,'HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c where '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c', 'HIC_ShopifySync__HIC_Configuration__c')+' = \''+store+'\' LIMIT 1');
//Method - 0 (Business and Person Account 0-4)
List<FieldWrapper> OptionalfieldWrapperList = new List<FieldWrapper>();
List<FieldWrapper> RequiredfieldForWrapperList = new List<FieldWrapper>();
List<FieldWrapper> RequiredfieldForPersonAccountWrapperList = new List<FieldWrapper>();
FieldWrapper wrapper= new FieldWrapper();
Schema.DescribeFieldResult fieldResult;
Map<String, Schema.SObjectField> fieldMap = Schema.SObjectType.Account.fields.getMap();
for(String keyfield : fieldMap.keySet() ){
fieldResult = fieldMap.get(keyfield).getDescribe();
if(keyfield != 'ownerid' && keyfield != 'jigsaw' && keyfield != 'HIC_ShopifySync__shopify_id__c' && keyfield !='billinglatitude' && keyfield !='billinglongitude' && keyfield !='billinggeocodeaccuracy' && keyfield !='shippinglatitude' && keyfield !='shippinglongitude' && keyfield !='shippinggeocodeaccuracy' && keyfield !='otherlatitude' && keyfield !='otherlongitude' && keyfield !='othergeocodeaccuracy' && keyfield !='mailinglatitude' && keyfield !='mailinglongitude' && keyfield !='mailinggeocodeaccuracy' && keyfield !='personotherlatitude' && keyfield !='personemail' && keyfield !='personemailbouncedreason' && keyfield !='personemailbounceddate' && keyfield !='personotherlongitude' && keyfield !='personothergeocodeaccuracy' && keyfield !='personmailinglatitude' && keyfield !='personmailinglongitude' && keyfield !='personmailinggeocodeaccuracy' && keyfield != 'recordtypeid' && keyfield != 'parentid' && keyfield != 'currencyisocode' ){
//Account optional field Mapping
if((fieldResult.isNillable() || fieldResult.getType() == Schema.DisplayType.Boolean) && fieldResult.isUpdateable() && fieldResult.isCreateable() ){
if(keyfield != 'name' && keyfield != 'lastname' && !keyfield.Contains('__pc') && !keyfield.contains('person')
&& config[0].HIC_ShopifySync__Account_Contact__c && keyfield != 'firstname' && keyfield != 'salutation' &&
!fieldResult.isDependentPicklist() && !fieldResult.isRestrictedPicklist() && !fieldResult.isCalculated() && keyfield != 'cleanstatus' && keyfield != 'jigsaw'){
if(String.valueOf(fieldResult.getType()) != 'REFERENCE'){ //(fieldResult.isUpdateable() || fieldResult.isCreateable()) &&
wrapper = new FieldWrapper();
wrapper.filedlabel = String.valueOf( fieldResult.getLabel() );
wrapper.filedApiName = String.valueOf( fieldResult.getName() );
wrapper.dataType = String.valueOf( fieldResult.getType() );
OptionalfieldWrapperList.add(wrapper);
}
}else if(keyfield != 'name' && keyfield != 'lastname' && keyfield != 'cleanstatus' && keyfield != 'salutation' &&
!fieldResult.isDependentPicklist() && !fieldResult.isCalculated() && keyfield != 'HIC_ShopifySync__shopify_id__pc'
&& !config[0].HIC_ShopifySync__Account_Contact__c && keyfield != 'jigsaw'){
if(String.valueOf(fieldResult.getType()) != 'REFERENCE'){ //(fieldResult.isUpdateable() || fieldResult.isCreateable()) &&
wrapper = new FieldWrapper();
wrapper.filedlabel = String.valueOf( fieldResult.getLabel() );
wrapper.filedApiName = String.valueOf( fieldResult.getName() );
wrapper.dataType = String.valueOf( fieldResult.getType() );
OptionalfieldWrapperList.add(wrapper);
}
}
}
//Account Required Field Mapping
if((fieldResult.isUpdateable() || fieldResult.isCreateable()) && !fieldResult.isRestrictedPicklist() && String.valueOf(fieldResult.getType()) != 'REFERENCE' && String.valueOf(fieldResult.getType()) != 'BOOLEAN'){
if(keyfield == 'name'){
FieldWrapper businesswrapper = new FieldWrapper();
businesswrapper.filedlabel = String.valueOf( fieldResult.getLabel() );
businesswrapper.filedApiName = String.valueOf( fieldResult.getName() );
businesswrapper.dataType = String.valueOf( fieldResult.getType() );
RequiredfieldForWrapperList.add(businesswrapper);
}else if( !fieldResult.isNillable() && keyfield != 'name'){
FieldWrapper businesswrapper= new FieldWrapper();
businesswrapper.filedlabel = String.valueOf( fieldResult.getLabel() );
businesswrapper.filedApiName = String.valueOf( fieldResult.getName() );
businesswrapper.dataType = String.valueOf( fieldResult.getType() );
RequiredfieldForWrapperList.add(businesswrapper);
}
if(keyfield == 'lastname'){
FieldWrapper personwrapper = new FieldWrapper();
personwrapper.filedlabel = String.valueOf( fieldResult.getLabel() );
personwrapper.filedApiName = String.valueOf( fieldResult.getName() );
personwrapper.dataType = String.valueOf( fieldResult.getType() );
RequiredfieldForPersonAccountWrapperList.add(personwrapper);
}
}
}
}
if(OptionalfieldWrapperList != null && !OptionalfieldWrapperList.isEmpty()){
ListOfEverything.add(JSON.serialize( OptionalfieldWrapperList ));
}else{
ListOfEverything.add('Null');
}
if(RequiredfieldForWrapperList != null && !RequiredfieldForWrapperList.isEmpty()){
ListOfEverything.add(JSON.serialize( RequiredfieldForWrapperList )); //2 - 1
}else{
ListOfEverything.add('Null');
}
if(RequiredfieldForPersonAccountWrapperList != null && !RequiredfieldForPersonAccountWrapperList.isEmpty()){
ListOfEverything.add(JSON.serialize( RequiredfieldForPersonAccountWrapperList )); //2 - 1
}else{
ListOfEverything.add('Null');
}
/*********************************************************
@Name : getShopifyFields
@Parameters : Object name
@Return type : String
@Description : Method to get Account's shopify fieldMapping .
********************************************************/
//Method - 2
ListOfEverything.add(HIC_ShopifyUtility.getShopifyFields('Account'));
system.debug('ListOfEverything'+ListOfEverything);
/*********************************************************
@Name : getShopifyFields
@Parameters : Object Name
@Return type : String
@Description : Method to get Account's Default fieldMapping .
********************************************************/
//Method - 3
ListOfEverything.add(HIC_ShopifyUtility.getDefaultFieldMapping('Account', config[0].HIC_ShopifySync__Person_Account__c, store));
if(!ListOfEverything.isEmpty() && ListOfEverything != null ){
return ListOfEverything;
}else{
return null;
}
}
/*********************************************************
@Name : getEverythingForContact
@Return type : list of Object Mapping
@Description : Method to get Conatct fieldMapping.
********************************************************/
@AuraEnabled(cacheable=true)
public static List <String> getEverythingForContact(String store){
List <String> ListOfEverything = new List <String>();
String FieldsToQueryforShopifyFields = 'Name,HIC_ShopifySync__UI_Label_Name__c,HIC_ShopifySync__GQL_Field_API__c,HIC_ShopifySync__Field_Name__c,HIC_ShopifySync__Data_Type__c,HIC_ShopifySync__Nested__c';
List <HIC_ShopifySync__HIC_Configuration__c> config = new List <HIC_ShopifySync__HIC_Configuration__c>();
String FieldsToQueryforconfig = 'id, HIC_ShopifySync__Store__cName,HIC_ShopifySync__Batch_Is_Processing__c,HIC_ShopifySync__Specify_Close_Date__c,HIC_ShopifySync__Default_Account__c,HIC_ShopifySync__Default_Field_Mapping__c,HIC_ShopifySync__Order__c, HIC_ShopifySync__Opportunity__c, HIC_ShopifySync__Opportunity_Line_Item__c, HIC_ShopifySync__Order_Fulfillment__c, HIC_ShopifySync__Enable_Draft_Order__c,HIC_ShopifySync__Account_Contact__c,HIC_ShopifySync__Person_Account__c';
config = Database.query('select '+ Checkaccessibility.isAccessible(FieldsToQueryforconfig,'HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c where '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c', 'HIC_ShopifySync__HIC_Configuration__c')+' = \''+store+'\' LIMIT 1'); //Method - 0 (contact 0-4)
List<FieldWrapper> OptionalfieldWrapperList = new List<FieldWrapper>();
List<FieldWrapper> RequiredfieldForWrapperList = new List<FieldWrapper>();
FieldWrapper wrapper= new FieldWrapper();
Schema.DescribeFieldResult fieldResult;
Map<String, Schema.SObjectField> fieldMap = Schema.SObjectType.Contact.fields.getMap();
for(String keyfield : fieldMap.keySet() ){
fieldResult = fieldMap.get(keyfield).getDescribe();
if(keyfield != 'recordtypeid' && keyfield !='billinglatitude' && keyfield !='billinglongitude' && keyfield !='billinggeocodeaccuracy' && keyfield !='shippinglatitude' && keyfield !='shippinglongitude' && keyfield !='shippinggeocodeaccuracy' && keyfield !='otherlatitude' && keyfield !='otherlongitude' && keyfield !='othergeocodeaccuracy' && keyfield !='mailinglatitude' && keyfield !='mailinglongitude' && keyfield !='mailinggeocodeaccuracy' && keyfield !='personotherlatitude' && keyfield !='personemail' && keyfield !='personemailbouncedreason' && keyfield !='personemailbounceddate' && keyfield !='personotherlongitude' && keyfield !='personothergeocodeaccuracy' && keyfield !='personmailinglatitude' && keyfield !='personmailinglongitude' && keyfield !='personmailinggeocodeaccuracy' && keyfield != 'parentid' && keyfield != 'currencyisocode'
/*&& String.valueOf(fieldResult.getType()) != 'BOOLEAN'*/ && keyfield != 'ownerid' && keyfield != 'HIC_ShopifySync__shopify_id__c' && String.valueOf(fieldResult.getType()) != 'REFERENCE'
&& (fieldResult.isUpdateable() || fieldResult.isCreateable()) && !fieldResult.isDependentPicklist() && !fieldResult.isRestrictedPicklist() && !fieldResult.isCalculated() && keyfield != 'cleanstatus' && keyfield != 'email' && keyfield != 'jigsaw'){
// Contact Optional Fields
if( (fieldResult.isNillable() || fieldResult.getType() == Schema.DisplayType.Boolean)){
wrapper= new FieldWrapper();
wrapper.filedlabel = String.valueOf( fieldResult.getLabel() );
wrapper.filedApiName = String.valueOf( fieldResult.getName() );
wrapper.dataType = String.valueOf( fieldResult.getType() );
OptionalfieldWrapperList.add(wrapper);
}else
//Conatact Required Fields
if(!fieldResult.isNillable()){
wrapper = new FieldWrapper();
wrapper.filedlabel = String.valueOf( fieldResult.getLabel() );
wrapper.filedApiName = String.valueOf( fieldResult.getName() );
wrapper.dataType = String.valueOf( fieldResult.getType() );
RequiredfieldForWrapperList.add(wrapper);
}
}
}
if(OptionalfieldWrapperList != null && !OptionalfieldWrapperList.isEmpty()){
ListOfEverything.add(JSON.serialize( OptionalfieldWrapperList ));
}else{
ListOfEverything.add('Null');
}
//Method - 5
if(RequiredfieldForWrapperList != null && !RequiredfieldForWrapperList.isEmpty()){
ListOfEverything.add(JSON.serialize( RequiredfieldForWrapperList )); //2 - 1
}else{
ListOfEverything.add('Null');
}
/*********************************************************
@Name : getShopifyFields
@Parameters : Object name
@Return type : String
@Description : Method to get Contact's shopify fieldMapping .
********************************************************/
//Method - 6
ListOfEverything.add(HIC_ShopifyUtility.getShopifyFields('Contact'));
/*********************************************************
@Name : getShopifyFields
@Parameters : Object Name
@Return type : String
@Description : Method to get Contact's Default fieldMapping .
********************************************************/
//Method - 7
ListOfEverything.add(HIC_ShopifyUtility.getDefaultFieldMapping('Contact', false,store));
if(!ListOfEverything.isEmpty() && ListOfEverything != null ){
return ListOfEverything;
}else{
return null;
}
}
/*********************************************************
@Name : getEverythingForOpportunity
@Parameters :
@Return type : list of Object Mapping
@Description : Method to get Opportunity fieldMapping.
********************************************************/
@AuraEnabled
public static List <String> getEverythingForOpportunity(String store){
List <String> ListOfEverything = new List <String>();
String FieldsToQueryforShopifyFields = 'Name,HIC_ShopifySync__GQL_Field_API__c,HIC_ShopifySync__UI_Label_Name__c,HIC_ShopifySync__Field_Name__c,HIC_ShopifySync__Data_Type__c,HIC_ShopifySync__Nested__c';
List <HIC_ShopifySync__HIC_Configuration__c> config = new List <HIC_ShopifySync__HIC_Configuration__c>();
String FieldsToQueryforconfig = 'id, Name,HIC_ShopifySync__Batch_Is_Processing__c,HIC_ShopifySync__Specify_Close_Date__c,HIC_ShopifySync__Default_Account__c,HIC_ShopifySync__Default_Field_Mapping__c,HIC_ShopifySync__Order__c, HIC_ShopifySync__Opportunity__c, HIC_ShopifySync__Opportunity_Line_Item__c, HIC_ShopifySync__Order_Fulfillment__c, HIC_ShopifySync__Enable_Draft_Order__c,HIC_ShopifySync__Account_Contact__c,HIC_ShopifySync__Person_Account__c';
config = Database.query('select '+ Checkaccessibility.isAccessible(FieldsToQueryforconfig,'HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c where '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c', 'HIC_ShopifySync__HIC_Configuration__c')+' = \''+store+'\' LIMIT 1');
List<FieldWrapper> OptionalfieldWrapperList = new List<FieldWrapper>();
List<FieldWrapper> RequiredfieldForWrapperList = new List<FieldWrapper>();
FieldWrapper wrapper= new FieldWrapper();
Schema.DescribeFieldResult fieldResult;
Map<String, Schema.SObjectField> fieldMap = Schema.SObjectType.Opportunity.fields.getMap();
for(String keyfield : fieldMap.keySet() ){
fieldResult = fieldMap.get(keyfield).getDescribe();
if(/*String.valueOf(fieldResult.getType()) != 'BOOLEAN' &&*/ (fieldResult.isUpdateable() || fieldResult.isCreateable()) && String.valueOf(fieldResult.getType()) != 'REFERENCE' && keyfield != 'recordtypeid' && keyfield != 'parentid' && keyfield != 'currencyisocode'
&& keyfield != 'ownerid' && keyfield !='billinglatitude' && keyfield !='billinglongitude' && keyfield !='billinggeocodeaccuracy' && keyfield !='shippinglatitude' && keyfield !='shippinglongitude' && keyfield !='shippinggeocodeaccuracy' && keyfield !='otherlatitude' && keyfield !='otherlongitude' && keyfield !='othergeocodeaccuracy' && keyfield !='mailinglatitude' && keyfield !='mailinglongitude' && keyfield !='mailinggeocodeaccuracy' && keyfield !='personotherlatitude' && keyfield !='personemail' && keyfield !='personemailbouncedreason' && keyfield !='personemailbounceddate' && keyfield !='personotherlongitude' && keyfield !='personothergeocodeaccuracy' && keyfield !='personmailinglatitude' && keyfield !='personmailinglongitude' && keyfield !='personmailinggeocodeaccuracy' && keyfield != 'CurrencyISOCODE' && keyfield != 'HIC_ShopifySync__shopify_id__c' &&
!fieldResult.isDependentPicklist() && !fieldResult.isRestrictedPicklist() && !fieldResult.isCalculated()){
//Opportunity Optional field Mapping
if((fieldResult.isNillable() || fieldResult.getType() == Schema.DisplayType.Boolean)){
wrapper = new FieldWrapper();
wrapper.filedlabel = String.valueOf( fieldResult.getLabel() );
wrapper.filedApiName = String.valueOf( fieldResult.getName() );
wrapper.dataType = String.valueOf( fieldResult.getType() );
OptionalfieldWrapperList.add(wrapper);
}
//Opportunity Required Field Mapping
if(String.valueOf(fieldResult.getType()) != 'BOOLEAN' && !fieldResult.isNillable() && !fieldResult.isRestrictedPicklist() && keyfield != 'stagename' ){
wrapper= new FieldWrapper();
wrapper.filedlabel = String.valueOf( fieldResult.getLabel() );
wrapper.filedApiName = String.valueOf( fieldResult.getName() );
wrapper.dataType = String.valueOf( fieldResult.getType() );
RequiredfieldForWrapperList.add(wrapper);
}
}
}
if(OptionalfieldWrapperList != null && !OptionalfieldWrapperList.isEmpty()){
ListOfEverything.add(JSON.serialize( OptionalfieldWrapperList ));
}else{
ListOfEverything.add('Null');
}
//Method - 9
if(RequiredfieldForWrapperList != null && !RequiredfieldForWrapperList.isEmpty()){
ListOfEverything.add(JSON.serialize( RequiredfieldForWrapperList )); //2 - 1
}else{
ListOfEverything.add('Null');
}
/*********************************************************
@Name : getShopifyFields
@Parameters : Object name
@Return type : String
@Description : Method to get opportunity's shopify fieldMapping (Order and Opportunity shopify's fields are same).
********************************************************/
//Method - 10
ListOfEverything.add(HIC_ShopifyUtility.getShopifyFields('Order'));
/*********************************************************
@Name : getShopifyFields
@Parameters : Object Name
@Return type : String
@Description : Method to get opportunity's Default fieldMapping .
********************************************************/
//Method - 11
ListOfEverything.add(HIC_ShopifyUtility.getDefaultFieldMapping('opportunity', false,store));
if(!ListOfEverything.isEmpty() && ListOfEverything != null ){
return ListOfEverything;
}else{
return null;
}
}
/*********************************************************
@Name : getEverythingForOppandOppProduct
@Parameters :
@Return type : list of Object Mapping
@Description : Method to get Opportunity and Opportunity product fieldMapping.
********************************************************/
@AuraEnabled
public static List <String> getEverythingForOppProduct(String store){
List <String> ListOfEverything = new List <String>();
String FieldsToQueryforShopifyFields = 'Name,HIC_ShopifySync__GQL_Field_API__c,HIC_ShopifySync__UI_Label_Name__c,HIC_ShopifySync__Field_Name__c,HIC_ShopifySync__Data_Type__c,HIC_ShopifySync__Nested__c';
List <HIC_ShopifySync__HIC_Configuration__c> config = new List <HIC_ShopifySync__HIC_Configuration__c>();
String FieldsToQueryforconfig = 'id, Name,HIC_ShopifySync__Batch_Is_Processing__c,HIC_ShopifySync__Specify_Close_Date__c,HIC_ShopifySync__Default_Account__c,HIC_ShopifySync__Default_Field_Mapping__c,HIC_ShopifySync__Order__c, HIC_ShopifySync__Opportunity__c, HIC_ShopifySync__Opportunity_Line_Item__c, HIC_ShopifySync__Order_Fulfillment__c, HIC_ShopifySync__Enable_Draft_Order__c,HIC_ShopifySync__Account_Contact__c,HIC_ShopifySync__Person_Account__c';
config = Database.query('select '+ Checkaccessibility.isAccessible(FieldsToQueryforconfig,'HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c where '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c', 'HIC_ShopifySync__HIC_Configuration__c')+' = \''+store+'\' LIMIT 1');
List<FieldWrapper> OptionalfieldWrapperList = new List<FieldWrapper>();
List<FieldWrapper> RequiredfieldForWrapperList = new List<FieldWrapper>();
FieldWrapper wrapper= new FieldWrapper();
Schema.DescribeFieldResult fieldResult;
Map<String, Schema.SObjectField> fieldMap = Schema.SObjectType.OpportunityLineItem.fields.getMap();
//Method 12 (Opportunity Line item )
for(String keyfield : fieldMap.keySet() ){
fieldResult = fieldMap.get(keyfield).getDescribe();
if((fieldResult.isUpdateable() || fieldResult.isCreateable()) && String.valueOf(fieldResult.getType()) != 'REFERENCE'&& keyfield != 'totalprice' && keyfield !='billinglatitude' && keyfield !='billinglongitude' && keyfield !='billinggeocodeaccuracy' && keyfield !='shippinglatitude' && keyfield !='shippinglongitude' && keyfield !='shippinggeocodeaccuracy' && keyfield !='otherlatitude' && keyfield !='otherlongitude' && keyfield !='othergeocodeaccuracy' && keyfield !='mailinglatitude' && keyfield !='mailinglongitude' && keyfield !='mailinggeocodeaccuracy' && keyfield !='personotherlatitude' && keyfield !='personemail' && keyfield !='personemailbouncedreason' && keyfield !='personemailbounceddate' && keyfield !='personotherlongitude' && keyfield !='personothergeocodeaccuracy' && keyfield !='personmailinglatitude' && keyfield !='personmailinglongitude' && keyfield !='personmailinggeocodeaccuracy' && keyfield != 'unitprice' && keyfield != 'HIC_ShopifySync__shopify_id__c' &&
!fieldResult.isDependentPicklist() && !fieldResult.isRestrictedPicklist() && !fieldResult.isCalculated()){
//Opportunity Line item Optional field Mapping
if((fieldResult.isNillable() || fieldResult.getType() == Schema.DisplayType.Boolean)){
wrapper = new FieldWrapper();
wrapper.filedlabel = String.valueOf( fieldResult.getLabel() );
wrapper.filedApiName = String.valueOf( fieldResult.getName() );
wrapper.dataType = String.valueOf( fieldResult.getType() );
OptionalfieldWrapperList.add(wrapper);
}
//Opportunity Line item Required Field Mapping
if(!fieldResult.isNillable() && (fieldResult.isUpdateable() || fieldResult.isCreateable()) && String.valueOf(fieldResult.getType()) != 'REFERENCE' &&
String.valueOf(fieldResult.getType()) != 'BOOLEAN' && !fieldResult.isRestrictedPicklist() && keyfield != 'stagename' ){
wrapper= new FieldWrapper();
wrapper.filedlabel = String.valueOf( fieldResult.getLabel() );
wrapper.filedApiName = String.valueOf( fieldResult.getName() );
wrapper.dataType = String.valueOf( fieldResult.getType() );
RequiredfieldForWrapperList.add(wrapper);
}
}
}
if(OptionalfieldWrapperList != null && !OptionalfieldWrapperList.isEmpty()){
ListOfEverything.add(JSON.serialize( OptionalfieldWrapperList ));
}else{
ListOfEverything.add('Null');
}
//Method - 13
if(RequiredfieldForWrapperList != null && !RequiredfieldForWrapperList.isEmpty()){
ListOfEverything.add(JSON.serialize( RequiredfieldForWrapperList )); //2 - 1
}else{
ListOfEverything.add('Null');
}
/*********************************************************
@Name : getShopifyFields
@Parameters : Object name
@Return type : String
@Description : Method to get OpportunityLineItem's shopify fieldMapping (OrderItem and OpportunityLineItem shopify's fields are same).
********************************************************/
//Method - 14
ListOfEverything.add(HIC_ShopifyUtility.getShopifyFields('OrderItem'));
/*********************************************************
@Name : getShopifyFields
@Parameters : Object Name
@Return type : String
@Description : Method to get OpportunityLineItem's Default fieldMapping .
********************************************************/
//Method - 15
ListOfEverything.add(HIC_ShopifyUtility.getDefaultFieldMapping('OpportunityLineItem', false, store));
// Method - 16
if(!ListOfEverything.isEmpty() && ListOfEverything != null ){
return ListOfEverything;
}else{
return null;
}
}
/*********************************************************
@Name : getEverythingForAccougetEverythingForOrderOrderPrdDrfOrderandDrfOrdProductntContactOppandOppProduct
@Parameters :
@Return type : list of Object Mapping
@Description : Method to get Order OrderPrd DrfOrder and DrfOrd Product fieldMapping.
********************************************************/
@AuraEnabled
public static List <String> getEverythingForOrderOrderPrdDrfOrderandDrfOrdProduct(String store){
List <String> ListOfEverything = new List <String>();
List <HIC_ShopifySync__HIC_Configuration__c> config = new List <HIC_ShopifySync__HIC_Configuration__c>();
String FieldsToQueryforShopifyFields = 'Name,HIC_ShopifySync__GQL_Field_API__c,HIC_ShopifySync__UI_Label_Name__c,HIC_ShopifySync__Field_Name__c,HIC_ShopifySync__Data_Type__c,HIC_ShopifySync__Nested__c';
String FieldsToQueryforconfig = 'id, Name,HIC_ShopifySync__Batch_Is_Processing__c,HIC_ShopifySync__Specify_Close_Date__c,HIC_ShopifySync__Default_Account__c,HIC_ShopifySync__Default_Field_Mapping__c,HIC_ShopifySync__Order__c, HIC_ShopifySync__Opportunity__c, HIC_ShopifySync__Opportunity_Line_Item__c, HIC_ShopifySync__Order_Fulfillment__c, HIC_ShopifySync__Enable_Draft_Order__c,HIC_ShopifySync__Account_Contact__c,HIC_ShopifySync__Person_Account__c';
config = Database.query('select '+ Checkaccessibility.isAccessible(FieldsToQueryforconfig,'HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c where '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c', 'HIC_ShopifySync__HIC_Configuration__c')+' = \''+store+'\' LIMIT 1');
List<FieldWrapper> OptionalfieldWrapperList = new List<FieldWrapper>();
List<FieldWrapper> RequiredfieldForWrapperList = new List<FieldWrapper>();
FieldWrapper wrapper= new FieldWrapper();
Schema.DescribeFieldResult fieldResult;
//Method 0 ( Order)
Map<String, Schema.SObjectField> fieldMap = Schema.SObjectType.Order.fields.getMap();
for(String keyfield : fieldMap.keySet() ){
fieldResult = fieldMap.get(keyfield).getDescribe();
if((fieldResult.isUpdateable() || fieldResult.isCreateable()) && String.valueOf(fieldResult.getType()) != 'REFERENCE'
&& keyfield != 'activateddate' && keyfield !='billinglatitude' && keyfield !='billinglongitude' && keyfield !='billinggeocodeaccuracy' && keyfield !='shippinglatitude' && keyfield !='shippinglongitude' && keyfield !='shippinggeocodeaccuracy' && keyfield !='otherlatitude' && keyfield !='otherlongitude' && keyfield !='othergeocodeaccuracy' && keyfield !='mailinglatitude' && keyfield !='mailinglongitude' && keyfield !='mailinggeocodeaccuracy' && keyfield !='personotherlatitude' && keyfield !='personemail' && keyfield !='personemailbouncedreason' && keyfield !='personemailbounceddate' && keyfield !='personotherlongitude' && keyfield !='personothergeocodeaccuracy' && keyfield !='personmailinglatitude' && keyfield !='personmailinglongitude' && keyfield !='personmailinggeocodeaccuracy' && keyfield != 'activatedby' && keyfield != 'currencyisocode' && keyfield != 'status' && keyfield != 'HIC_ShopifySync__shopify_id__c' &&
!fieldResult.isDependentPicklist() && !fieldResult.isRestrictedPicklist() && !fieldResult.isCalculated() ){
//Order Optional field Mapping
if((fieldResult.isNillable() || fieldResult.getType() == Schema.DisplayType.Boolean)){
wrapper = new FieldWrapper();
wrapper.filedlabel = String.valueOf( fieldResult.getLabel() );
wrapper.filedApiName = String.valueOf( fieldResult.getName() );
wrapper.dataType = String.valueOf( fieldResult.getType() );
OptionalfieldWrapperList.add(wrapper);
}
//Order Required Field Mapping
if(!fieldResult.isNillable() && (fieldResult.isUpdateable() || fieldResult.isCreateable()) && String.valueOf(fieldResult.getType()) != 'REFERENCE' &&
String.valueOf(fieldResult.getType()) != 'BOOLEAN' && !fieldResult.isRestrictedPicklist() && keyfield != 'statuscode' && keyfield != 'status'){
wrapper= new FieldWrapper();
wrapper.filedlabel = String.valueOf( fieldResult.getLabel() );
wrapper.filedApiName = String.valueOf( fieldResult.getName() );
wrapper.dataType = String.valueOf( fieldResult.getType() );
RequiredfieldForWrapperList.add(wrapper);
}
}
}
if(OptionalfieldWrapperList != null && !OptionalfieldWrapperList.isEmpty()){
ListOfEverything.add(JSON.serialize( OptionalfieldWrapperList ));
}else{
ListOfEverything.add('Null');
}
//Method - 1
if(RequiredfieldForWrapperList != null && !RequiredfieldForWrapperList.isEmpty()){
ListOfEverything.add(JSON.serialize( RequiredfieldForWrapperList )); //2 - 1
}else{
ListOfEverything.add('Null');
}
/*********************************************************
@Name : getShopifyFields
@Parameters : Object name
@Return type : String
@Description : Method to get Order's shopify fieldMapping
********************************************************/
//Method - 2
ListOfEverything.add(HIC_ShopifyUtility.getShopifyFields('Order'));
/*********************************************************
@Name : getShopifyFields
@Parameters : Object Name
@Return type : String
@Description : Method to get Order's Default fieldMapping .
********************************************************/
//Method - 3
ListOfEverything.add(HIC_ShopifyUtility.getDefaultFieldMapping('Order', false,store));
//Method 4 ( OrderItem)
OptionalfieldWrapperList = new List<FieldWrapper>();
RequiredfieldForWrapperList = new List<FieldWrapper>();
fieldMap = new Map<String, Schema.SObjectField>();
fieldMap = Schema.SObjectType.OrderItem.fields.getMap();
for(String keyfield : fieldMap.keySet() ){
fieldResult = fieldMap.get(keyfield).getDescribe();
if((fieldResult.isUpdateable() || fieldResult.isCreateable()) && String.valueOf(fieldResult.getType()) != 'REFERENCE' && keyfield != 'HIC_ShopifySync__shopify_id__c' && keyfield !='billinglatitude' && keyfield !='billinglongitude' && keyfield !='billinggeocodeaccuracy' && keyfield !='shippinglatitude' && keyfield !='shippinglongitude' && keyfield !='shippinggeocodeaccuracy' && keyfield !='otherlatitude' && keyfield !='otherlongitude' && keyfield !='othergeocodeaccuracy' && keyfield !='mailinglatitude' && keyfield !='mailinglongitude' && keyfield !='mailinggeocodeaccuracy' && keyfield !='personotherlatitude' && keyfield !='personemail' && keyfield !='personemailbouncedreason' && keyfield !='personemailbounceddate' && keyfield !='personotherlongitude' && keyfield !='personothergeocodeaccuracy' && keyfield !='personmailinglatitude' && keyfield !='personmailinglongitude' && keyfield !='personmailinggeocodeaccuracy' && keyfield != 'unitprice' &&
!fieldResult.isDependentPicklist() && !fieldResult.isRestrictedPicklist() && !fieldResult.isCalculated()){
//OrderItem Optional fields
if((fieldResult.isNillable() || fieldResult.getType() == Schema.DisplayType.Boolean)){
wrapper = new FieldWrapper();
wrapper.filedlabel = String.valueOf( fieldResult.getLabel() );
wrapper.filedApiName = String.valueOf( fieldResult.getName() );
wrapper.dataType = String.valueOf( fieldResult.getType() );
OptionalfieldWrapperList.add(wrapper);
}
//OrderItem Required Field Mapping
if(!fieldResult.isNillable() && (fieldResult.isUpdateable() || fieldResult.isCreateable()) && String.valueOf(fieldResult.getType()) != 'REFERENCE' &&
String.valueOf(fieldResult.getType()) != 'BOOLEAN' && !fieldResult.isRestrictedPicklist() && keyfield != 'statuscode' && keyfield != 'unitprice'){
wrapper= new FieldWrapper();
wrapper.filedlabel = String.valueOf( fieldResult.getLabel() );
wrapper.filedApiName = String.valueOf( fieldResult.getName() );
wrapper.dataType = String.valueOf( fieldResult.getType() );
RequiredfieldForWrapperList.add(wrapper);
}
}
}
if(OptionalfieldWrapperList != null && !OptionalfieldWrapperList.isEmpty()){
ListOfEverything.add(JSON.serialize( OptionalfieldWrapperList ));
}else{
ListOfEverything.add('Null');
}
//Method - 5
if(RequiredfieldForWrapperList != null && !RequiredfieldForWrapperList.isEmpty()){
ListOfEverything.add(JSON.serialize( RequiredfieldForWrapperList )); //2 - 1
}else{
ListOfEverything.add('Null');
}
/*********************************************************
@Name : getShopifyFields
@Parameters : Object name
@Return type : String
@Description : Method to get OrderItem's shopify fieldMapping.
********************************************************/
//Method - 6
ListOfEverything.add(HIC_ShopifyUtility.getShopifyFields('OrderItem'));
/*********************************************************
@Name : getShopifyFields
@Parameters : Object Name
@Return type : String
@Description : Method to get Order's Default fieldMapping .
********************************************************/
//Method - 7
ListOfEverything.add(HIC_ShopifyUtility.getDefaultFieldMapping('OrderItem', false,store));
//Draft Order Shopify Fields
/*********************************************************
@Name : getShopifyFields
@Parameters : Object name
@Return type : String
@Description : Method to get Draft Order's shopify fieldMapping.
********************************************************/
//Method - 8
ListOfEverything.add(HIC_ShopifyUtility.getShopifyFields('DraftOrder'));
/*********************************************************
@Name : getShopifyFields
@Parameters : Object Name
@Return type : String
@Description : Method to get Order's Default fieldMapping .
********************************************************/
//Method - 9
ListOfEverything.add(HIC_ShopifyUtility.getDefaultFieldMapping('DraftOrder', false,store));
//Draft Order Item Shopify Fields
/*********************************************************
@Name : getShopifyFields
@Parameters : Object name
@Return type : String
@Description : Method to get Draft Order's shopify fieldMapping.
********************************************************/
//Method - 10
ListOfEverything.add(HIC_ShopifyUtility.getShopifyFields('DraftOrderItem'));
/*********************************************************
@Name : getShopifyFields
@Parameters : Object Name
@Return type : String
@Description : Method to get Order's Default fieldMapping .
********************************************************/
//Method - 11
ListOfEverything.add(HIC_ShopifyUtility.getDefaultFieldMapping('DraftOrderItem', false,store));
if(!ListOfEverything.isEmpty() && ListOfEverything != null ){
return ListOfEverything;
}else{
return null;
}
}
/*********************************************************
@Name : getEverythingForProductAndVariant
@Parameters :
@Return type : list of Object Mapping
@Description : Method to get Product and Variant fieldMapping.
********************************************************/
@AuraEnabled
public static List <String> getEverythingForProductAndVariant(String store){
List <String> ListOfEverything = new List <String>();
List <HIC_ShopifySync__HIC_Configuration__c> config = new List <HIC_ShopifySync__HIC_Configuration__c>();
String FieldsToQueryforShopifyFields = 'Name,HIC_ShopifySync__GQL_Field_API__c,HIC_ShopifySync__UI_Label_Name__c,HIC_ShopifySync__Field_Name__c,HIC_ShopifySync__Data_Type__c,HIC_ShopifySync__Nested__c';
String FieldsToQueryforconfig = 'id, Name,HIC_ShopifySync__Batch_Is_Processing__c,HIC_ShopifySync__Specify_Close_Date__c,HIC_ShopifySync__Default_Account__c,HIC_ShopifySync__Default_Field_Mapping__c,HIC_ShopifySync__Order__c, HIC_ShopifySync__Opportunity__c, HIC_ShopifySync__Product_Sync__c, HIC_ShopifySync__Opportunity_Line_Item__c, HIC_ShopifySync__Order_Fulfillment__c, HIC_ShopifySync__Enable_Draft_Order__c,HIC_ShopifySync__Account_Contact__c,HIC_ShopifySync__Person_Account__c';
config = Database.query('select '+ Checkaccessibility.isAccessible(FieldsToQueryforconfig,'HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c where '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c', 'HIC_ShopifySync__HIC_Configuration__c')+' = \''+store+'\' LIMIT 1');
List<FieldWrapper> OptionalfieldWrapperList = new List<FieldWrapper>();
List<FieldWrapper> RequiredfieldForWrapperList = new List<FieldWrapper>();
FieldWrapper wrapper= new FieldWrapper();
Schema.DescribeFieldResult fieldResult;
//Method 0 ( Product2)
Map<String, Schema.SObjectField> fieldMap = Schema.SObjectType.Product2.fields.getMap();
for(String keyfield : fieldMap.keySet() ){
fieldResult = fieldMap.get(keyfield).getDescribe();
if((fieldResult.isUpdateable() || fieldResult.isCreateable()) && String.valueOf(fieldResult.getType()) != 'REFERENCE'
&& keyfield != 'currencyisocode' && keyfield != 'status' && keyfield != 'HIC_ShopifySync__shopify_id__c' &&
!fieldResult.isDependentPicklist() && !fieldResult.isRestrictedPicklist() && !fieldResult.isCalculated() ){
//Product Optional field Mapping
if((fieldResult.isNillable() || fieldResult.getType() == Schema.DisplayType.Boolean)){
wrapper = new FieldWrapper();
wrapper.filedlabel = String.valueOf( fieldResult.getLabel() );
wrapper.filedApiName = String.valueOf( fieldResult.getName() );
wrapper.dataType = String.valueOf( fieldResult.getType() );
OptionalfieldWrapperList.add(wrapper);
}
//Product Required Field Mapping
if(!fieldResult.isNillable() && (fieldResult.isUpdateable() || fieldResult.isCreateable()) && String.valueOf(fieldResult.getType()) != 'REFERENCE' &&
String.valueOf(fieldResult.getType()) != 'BOOLEAN' && !fieldResult.isRestrictedPicklist()){
wrapper= new FieldWrapper();
wrapper.filedlabel = String.valueOf( fieldResult.getLabel() );
wrapper.filedApiName = String.valueOf( fieldResult.getName() );
wrapper.dataType = String.valueOf( fieldResult.getType() );
RequiredfieldForWrapperList.add(wrapper);
}
}
}
if(OptionalfieldWrapperList != null && !OptionalfieldWrapperList.isEmpty()){
ListOfEverything.add(JSON.serialize( OptionalfieldWrapperList ));
}else{
ListOfEverything.add('Null');
}
//Method - 1
if(RequiredfieldForWrapperList != null && !RequiredfieldForWrapperList.isEmpty()){
ListOfEverything.add(JSON.serialize( RequiredfieldForWrapperList )); //2 - 1
}else{
ListOfEverything.add('Null');
}
/*********************************************************
@Name : getShopifyFields
@Parameters : Object name
@Return type : String
@Description : Method to get Product's shopify fieldMapping
********************************************************/
//Method - 2
ListOfEverything.add(HIC_ShopifyUtility.getShopifyFields('Product2'));
/*********************************************************
@Name : getShopifyFields
@Parameters : Object Name
@Return type : String
@Description : Method to get Product's Default fieldMapping .
********************************************************/
//Method - 3
ListOfEverything.add(HIC_ShopifyUtility.getDefaultFieldMapping('Product2', false,store));
//Method 4 ( Variant)
OptionalfieldWrapperList = new List<FieldWrapper>();
RequiredfieldForWrapperList = new List<FieldWrapper>();
fieldMap = new Map<String, Schema.SObjectField>();
fieldMap = Schema.SObjectType.HIC_ShopifySync__Variant__c.fields.getMap();
for(String keyfield : fieldMap.keySet() ){
fieldResult = fieldMap.get(keyfield).getDescribe();
if((fieldResult.isUpdateable() || fieldResult.isCreateable()) && String.valueOf(fieldResult.getType()) != 'REFERENCE' && keyfield != 'HIC_ShopifySync__shopify_id__c' && keyfield != 'HIC_ShopifySync__Inventory_Item_Id__c' && !fieldResult.isDependentPicklist() && keyfield != 'HIC_ShopifySync__Store__c' && keyfield != 'HIC_ShopifySync__Store_External_Id__c' && !fieldResult.isRestrictedPicklist() && !fieldResult.isCalculated()){
//Variant Optional fields
if((fieldResult.isNillable() || fieldResult.getType() == Schema.DisplayType.Boolean)){
wrapper = new FieldWrapper();
wrapper.filedlabel = String.valueOf( fieldResult.getLabel() );
wrapper.filedApiName = String.valueOf( fieldResult.getName() );
wrapper.dataType = String.valueOf( fieldResult.getType() );
OptionalfieldWrapperList.add(wrapper);
}
//Variant Required Field Mapping
if(!fieldResult.isNillable() && (fieldResult.isUpdateable() || fieldResult.isCreateable()) && String.valueOf(fieldResult.getType()) != 'REFERENCE' &&
String.valueOf(fieldResult.getType()) != 'BOOLEAN' && !fieldResult.isRestrictedPicklist()){
wrapper= new FieldWrapper();
wrapper.filedlabel = String.valueOf( fieldResult.getLabel() );
wrapper.filedApiName = String.valueOf( fieldResult.getName() );
wrapper.dataType = String.valueOf( fieldResult.getType() );
RequiredfieldForWrapperList.add(wrapper);
}
}
}
if(OptionalfieldWrapperList != null && !OptionalfieldWrapperList.isEmpty()){
ListOfEverything.add(JSON.serialize( OptionalfieldWrapperList ));
}else{
ListOfEverything.add('Null');
}
//Method - 5
if(RequiredfieldForWrapperList != null && !RequiredfieldForWrapperList.isEmpty()){
ListOfEverything.add(JSON.serialize( RequiredfieldForWrapperList )); //2 - 1
}else{
ListOfEverything.add('Null');
}
/*********************************************************
@Name : getShopifyFields
@Parameters : Object name
@Return type : String
@Description : Method to get Variant's shopify fieldMapping.
********************************************************/
//Method - 6
ListOfEverything.add(HIC_ShopifyUtility.getShopifyFields('Variant__c'));
/*********************************************************
@Name : getShopifyFields
@Parameters : Object Name
@Return type : String
@Description : Method to get Variant's Default fieldMapping .
********************************************************/
//Method - 7
ListOfEverything.add(HIC_ShopifyUtility.getDefaultFieldMapping('HIC_ShopifySync__Variant__c', false,store));
if(!ListOfEverything.isEmpty() && ListOfEverything != null ){
return ListOfEverything;
}else{
return null;
}
}
/**************************************getEverything*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get List of records
* list[0] List of Account based on search keyword entered by user
* list[1] List of Opportunity Stage value
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static List <String> getEverything(){
List <String> ListOfEverything = new List <String>();
//Method 14
List<Account> accts = new List<Account>();
accts = [select id,name from Account order by lastmodifiedDate desc limit 10];
if(accts != null && !accts.isEmpty() ){
ListOfEverything.add(JSON.serialize( accts ));
}else{
ListOfEverything.add('Null');
}
//Method 15
List<String> pickListValuesList= new List<String>();
Schema.DescribeFieldResult fieldResult = Opportunity.stageName.getDescribe();
List<Schema.PickListEntry> ple = fieldResult.getPickListValues();
for( Schema.PickListEntry pickListVal : ple){
pickListValuesList.add(pickListVal.getLabel());
}
if(pickListValuesList != null && !pickListValuesList.isEmpty() ){
ListOfEverything.add(JSON.serialize( pickListValuesList ));
}else{
ListOfEverything.add('Null');
}
//Method 16
//Depreceated
List<String> pickListValuesListForOppConRole= new List<String>();
Schema.DescribeFieldResult fieldResultForOppConRole = OpportunityContactRole.Role.getDescribe();
List<Schema.PickListEntry> pleForOppConRole = fieldResultForOppConRole.getPickListValues();
for( Schema.PickListEntry pickListVal : pleForOppConRole){
pickListValuesListForOppConRole.add(pickListVal.getLabel());
}
if(pickListValuesListForOppConRole != null && !pickListValuesListForOppConRole.isEmpty() ){
ListOfEverything.add(JSON.serialize( pickListValuesListForOppConRole ));
}else{
ListOfEverything.add('Null');
}
if(!ListOfEverything.isEmpty() && ListOfEverything != null ){
return ListOfEverything;
}else{
return null;
}
}
/**************************************CheckingFieldExisting*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Verify last mapped Salesforce Field Exist or not
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
public static boolean CheckingFieldExisting(String FieldName , String sObjectName){
Boolean Exist = false;
if(sObjectName != null && sObjectName != '' && FieldName != '' && FieldName != null){
if(Schema.getGlobalDescribe().get(sObjectName).getDescribe().isAccessible()){
sObjectType schemaType = Schema.getGlobalDescribe().get(sObjectName) ;
Map<String, SObjectField> fieldsMap = schemaType.getDescribe().fields.getMap();
if(fieldsMap != null && !fieldsMap.isEmpty()){
if(fieldsMap.containsKey(FieldName)){
Exist = true;
return Exist;
}
}
}
}
return Exist;
}
/**************************************getIsPerson*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Check Salesforce Org have PersonAccount Enabled or not
* What is Person Account in Salesforce ? https://help.salesforce.com/articleView?id=account_person.htm&type=5
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static boolean getIsPerson(){
return Schema.sObjectType.Account.fields.getMap().containsKey( 'isPersonAccount' );
}
/**************************************getIsPerson*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Check Salesforce Org have PersonAccount Enabled or not
* What is the Person Account ? https://help.salesforce.com/articleView?id=account_person.htm&type=5
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static String getGeneral(String store){
store =store.replace('https://','').replace('.myshopify.com','').remove('/').remove('"');
System.debug('store url'+store);
List<HIC_ShopifySync__HIC_Configuration__c> config = new List<HIC_ShopifySync__HIC_Configuration__c>();
String fieldtocheck = 'id, Name, HIC_ShopifySync__Store__c, HIC_ShopifySync__Shopify_URL__c, HIC_ShopifySync__BatchRunOnce__c, HIC_ShopifySync__Order_Sync__c, HIC_ShopifySync__Draft_Order_Sync__c,HIC_ShopifySync__Inventory_Location_Sync__c,HIC_ShopifySync__Product_Sync__c,HIC_ShopifySync__Batch_Is_Processing__c, HIC_ShopifySync__Order__c, HIC_ShopifySync__Opportunity__c, HIC_ShopifySync__Opportunity_Line_Item__c, HIC_ShopifySync__Collection_Sync__c, HIC_ShopifySync__Order_Fulfillment__c, HIC_ShopifySync__Enable_Draft_Order__c, HIC_ShopifySync__Account_Contact__c, HIC_ShopifySync__Person_Account__c, HIC_ShopifySync__Inventory_Location__c, HIC_ShopifySync__Collection__c';
config = database.query('select '+Checkaccessibility.isAccessible(fieldtocheck, 'HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c where '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c', 'HIC_ShopifySync__HIC_Configuration__c')+' = \''+store+'\' LIMIT 49999');
System.debug('config'+config);
return JSON.serialize(config[0] );
}
/**************************************getDefaultAccForConts*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get Default Account ID
* Saved in Field Mapping
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static HIC_ShopifySync__HIC_Field_Mapping__c getDefaultAccForConts(string store){
System.debug('store in default Account method'+store);
List<HIC_ShopifySync__HIC_Field_Mapping__c> fm = new List<HIC_ShopifySync__HIC_Field_Mapping__c>();
list<Account> AccountExisting = new list<Account>();
String fieldtocheck = 'id,HIC_ShopifySync__GQL_Field_API__c, Name, HIC_ShopifySync__Default_Value__c, HIC_ShopifySync__Shopify_Fields__c';
//System.debug('select '+Checkaccessibility.isAccessible(fieldtocheck, 'HIC_ShopifySync__HIC_Field_Mapping__c')+' from HIC_ShopifySync__HIC_Field_Mapping__c where '+Checkaccessibility.isAccessible('HIC_ShopifySync__External_ID__c', 'HIC_ShopifySync__HIC_Field_Mapping__c')+' = \'Contact-Accountid\' and '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c','HIC_ShopifySync__HIC_Field_Mapping__c')+' = \''+store+'\' limit 49999');
fm = database.query('select '+Checkaccessibility.isAccessible(fieldtocheck, 'HIC_ShopifySync__Field_Mapping__c')+' from HIC_ShopifySync__HIC_Field_Mapping__c where '+Checkaccessibility.isAccessible('HIC_ShopifySync__External_ID__c', 'HIC_ShopifySync__HIC_Field_Mapping__c')+' = \'Contact-Accountid\' and '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c','HIC_ShopifySync__HIC_Field_Mapping__c')+' = \''+store+'\' limit 49999');
return fm[0];
}
/**************************************getActivePricebook*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get list of Active PriceBook from Salesforce
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static String getActivePricebook(){
List<Pricebook2> pricebookList = new List<Pricebook2>();
pricebookList = database.query('select '+Checkaccessibility.isAccessible('id,name', 'pricebook2')+' from pricebook2 where '+Checkaccessibility.isAccessible('IsActive', 'pricebook2')+' = true LIMIT 10000');
if( !pricebookList.isEmpty() ){
return JSON.serialize( pricebookList );
}
return null;
}
/**************************************getErrorMailList*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get list of Email for send email notifications after Batch process complete
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static String getErrorMailList(){
List<HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c> listOfErrorMails = new List<HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c>();
listOfErrorMails = database.query('select '+Checkaccessibility.isAccessible('id,name', 'HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c')+' from HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c LIMIT 10000');
if(!listOfErrorMails.isEmpty()){
return JSON.serialize( listOfErrorMails );
}else{
HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c errorMailMapping = new HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c();
if(CheckAccessibility.isUpdateable('name','HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c')){
errorMailMapping.name = UserInfo.getUserEmail();
}
List<HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c> WithuserlistOfErrorMails = new List<HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c>();
WithuserlistOfErrorMails.add(errorMailMapping);
return JSON.serialize( WithuserlistOfErrorMails );
}
}
/**************************************getErrorMailList*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get Current Login in User Salesforce Org ID
* Used when use raise the case or try to contact our support team
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static string getOrgId(){
try{
return 'Organization Id' + String.valueof(UserInfo.getOrganizationId());
}catch(exception e){
return '';
}
}
/**************************************Checkemaildeliverability*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Verify Salesforce Org deliveribilty on or not.
* Having email send limits or not
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static boolean Checkemaildeliverability(){
Boolean emailsTurnedOn = false;
try {
Messaging.reserveSingleEmailCapacity(0);
emailsTurnedOn = true;
} catch (System.NoAccessException e) {
}
return emailsTurnedOn;
}
/**************************************SendingMailtoShopifySupport*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Send user message to our Support team
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static boolean SendingMailtoShopifySupport(String Issue){
boolean emailsend = false;
List <String> toAddresses = new List <String>();
toAddresses.add('support@syncmadeasy.com');
String subject = 'Organization Id ' + String.valueof(UserInfo.getOrganizationId());
Messaging.SingleEmailMessage email =new Messaging.SingleEmailMessage();
email.setSubject(subject);
if(!toAddresses.isEmpty() ){
System.debug('addrress****_-'+toAddresses);
email.setToAddresses(toAddresses );
email.setPlainTextBody(String.valueof(UserInfo.getName()) + ', \n ' + Issue);
try{
Messaging.SendEmailResult [] r = Messaging.sendEmail(new Messaging.SingleEmailMessage[] {email});
emailsend = true;
}catch(Exception e){
return emailsend;
}
}
return emailsend;
}
/**************************************getSiteURLs*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get User Site URls in Salesforce
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
// @AuraEnabled
// public static String getSiteURLs(){
// // List<Site> siteList = new List<Site>();
// List<SObject> siteList = new List<SObject>();
// list<SiteWrapper> listofsitewrapper = new list<SiteWrapper>();
// siteList = database.query('SELECT '+Checkaccessibility.isAccessible('id,GuestUserId, Name,MasterLabel, Subdomain, OptionsRequireHttps, UrlPathPrefix', 'Site') +' FROM Site WHERE '+Checkaccessibility.isAccessible('Status','Site') + ' = \'Active\' Limit 1000');
// system.debug('+++siteList'+siteList);
// set<String> setofsiteid = new set<String>();
// Map<String,String> mapofsiteidvssiteurl = new Map<String,String>();
// for(SObject s: siteList) {
// setofsiteid.add(String.valueof(s.id));
// }
// List<String> siteFullUrlList = new List<String>();
// // list<SiteDetail> listOfsitedetail = new list<SiteDetail>();
// list<SObject> listOfsitedetail = new list<SObject>();
// String sitedetail;
// Organization org = database.query('SELECT '+Checkaccessibility.isAccessible('InstanceName,Name, IsSandbox, OrganizationType','Organization')+' FROM Organization LIMIT 1');
// if(siteList != null && siteList.size() != 0) {
// // listOfsitedetail = [select DurableId,SecureURL from SiteDetail where DurableId IN :setofsiteid WITH SECURITY_ENFORCED limit 4999];
// Schema.DescribeSObjectResult siteSchema = Schema.getGlobalDescribe().get('Site').getDescribe();
// if(siteSchema != null){
// List<String> accessibleFields = new List<String>();
// if (Schema.SObjectType.SiteDetail.fields.Id.isAccessible()) {
// accessibleFields.add('Id');
// }
// if (Schema.SObjectType.SiteDetail.fields.DurableId.isAccessible()) {
// accessibleFields.add('DurableId');
// }
// if (Schema.SObjectType.SiteDetail.fields.SecureURL.isAccessible()) {
// accessibleFields.add('SecureURL');
// }
// String fieldList = String.join(accessibleFields, ',');
// if (Schema.SObjectType.SiteDetail.isAccessible()) {
// sitedetail = 'SELECT ' + fieldList + ' FROM SiteDetail WHERE DurableId IN :setofsiteid WITH SECURITY_ENFORCED LIMIT 4999';
// listOfsitedetail = Database.query(sitedetail);
// System.debug(listOfsitedetail);
// } else {
// System.debug('Not accessible.');
// }
// for (SObject sd : listOfsitedetail) {
// String durableId = (String)sd.get('durableid');
// String secureUrl = (String)sd.get('secureurl');
// mapofsiteidvssiteurl.put(durableid, secureurl.removeEnd('/'));
// }
// } else {
// System.debug('Yo dont have access of this site!');
// }
// // for(Site s: siteList) {
// // string siteFullUrl;
// // SiteWrapper sitewrapper = new SiteWrapper();
// // sitewrapper.siteUrl = mapofsiteidvssiteurl.get(String.valueof(s.id).left(15));
// // sitewrapper.siteguestid = s.GuestUserId;
// // sitewrapper.Name = s.name;
// // sitewrapper.id = s.id;
// // listofsitewrapper.add(sitewrapper);
// // //siteFullUrlList.add(siteFullUrl);
// // }
// for (SObject s : siteList) {
// SiteWrapper siteWrapper = new SiteWrapper();
// siteWrapper.siteUrl = mapofsiteidvssiteurl.get(String.valueOf(s.get('Id')).left(15));
// siteWrapper.siteGuestId = (String)s.get('GuestUserId');
// siteWrapper.name = (String)s.get('Name');
// siteWrapper.id = (String)s.get('Id');
// listofsitewrapper.add(siteWrapper);
// }
// }
// if( !listofsitewrapper.isEmpty() ){
// return JSON.serialize( listofsitewrapper );
// }
// return null;
// }
@AuraEnabled
public static String getSiteURLs() {
List<SObject> siteList = new List<SObject>();
list<SiteWrapper> listofsitewrapper = new List<SiteWrapper>();
DescribeSObjectResult siteSchema = Schema.getGlobalDescribe().get('Site').getDescribe();
if(siteSchema.isAccessible()){
String query=
'SELECT ' +
Checkaccessibility.isAccessible(
'id,GuestUserId, Name,MasterLabel, Subdomain, UrlPathPrefix',
siteSchema
) +
' FROM Site WHERE ' +
Checkaccessibility.isAccessible('Status', siteSchema) +
' = \'Active\' Limit 1000';
String finalQuery = String.escapeSingleQuotes(query).remove('\\');
siteList=Database.query(finalQuery);
system.debug('+++siteList' + siteList);
set<String> setofsiteid = new Set<String>();
Map<String, String> mapofsiteidvssiteurl = new Map<String, String>();
for (SObject s : siteList) {
setofsiteid.add(String.valueof(s.id));
}
List<String> siteFullUrlList = new List<String>();
// list<SiteDetail> listOfsitedetail = new List<SiteDetail>();
String siteDetailQuery = 'SELECT DurableId, SecureURL ' +
'FROM SiteDetail ' +
'WHERE DurableId IN :setofsiteid ' +
'WITH USER_MODE ' +
'LIMIT 4999';
String finalSiteDetailQuery = String.escapeSingleQuotes(siteDetailQuery).remove('\\');
List<SObject> listOfsitedetail = Database.query(finalSiteDetailQuery);
system.debug('@@@ listOfsitedetail : '+listOfsitedetail);
if (siteList != null && siteList.size() != 0) {
// listOfsitedetail = [
// SELECT DurableId, SecureURL
// FROM SiteDetail
// WHERE DurableId IN :setofsiteid
// WITH USER_MODE
// LIMIT 4999
// ];
for (SObject sd : listOfsitedetail) {
String durableId = (String)sd.get('durableid');
String secureUrl = (String)sd.get('secureurl');
mapofsiteidvssiteurl.put(durableid, secureurl.removeEnd('/'));
}
for (SObject s : siteList) {
SiteWrapper siteWrapper = new SiteWrapper();
siteWrapper.siteUrl = mapofsiteidvssiteurl.get(String.valueOf(s.get('Id')).left(15));
siteWrapper.siteGuestId = (String)s.get('GuestUserId');
siteWrapper.name = (String)s.get('Name');
siteWrapper.id = (String)s.get('Id');
listofsitewrapper.add(siteWrapper);
}
}
if (!listofsitewrapper.isEmpty()) {
return JSON.serialize(listofsitewrapper);
}
}else{
return 'No access to site.';
}
return null;
}
//Wrapper class for Salesfroce site details
public class SiteWrapper{
@AuraEnabled
public String id{get;set;}
@AuraEnabled
public String siteUrl{get;set;}
@AuraEnabled
public String siteguestid{get;set;}
@AuraEnabled
Public String Name{get;set;}
}
/**************************************DeleteCustomSettting*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Deleting the field mapping into the Salesforce When every user delete the mapped data into the Salesforce.
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static void DeleteCustomSettting(string DeletedCustomSetting,string store){
system.debug('DeletecustomSettingRecords--> '+DeletedCustomSetting);
if(Test.isRunningTest()){
DeletedCustomSetting = '["Order-name","Account-HIC_Shopify__TAG__c","Account-BillingStreet","Account-BillingCity"]';
}
if(DeletedCustomSetting != null && DeletedCustomSetting != '' ){
List<string> listofcusotmsetting = new List<string>();
listofcusotmsetting = (List<string>)JSON.deserialize(DeletedCustomSetting,List<string>.class);
//system.debug('listofcusotmsetting' + listofcusotmsetting);
if(!listofcusotmsetting.isEmpty()){
List<HIC_ShopifySync__HIC_Field_Mapping__c > listofallcustomSetting = new List<HIC_ShopifySync__HIC_Field_Mapping__c >();
String query = ' select '+CheckAccessibility.isAccessible('id','HIC_ShopifySync__HIC_Field_Mapping__c')+' from HIC_ShopifySync__HIC_Field_Mapping__c where HIC_ShopifySync__External_ID__c in : listofcusotmsetting AND '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c','HIC_ShopifySync__HIC_Field_Mapping__c')+' = \''+store+'\' LIMIT 49999';
listofallcustomSetting = database.query(query);
//system.debug('listofallcustomSetting--> '+listofallcustomSetting);
if(!listofallcustomSetting.isEmpty()){
if(CheckAccessibility.isDeletable('HIC_ShopifySync__HIC_Field_Mapping__c'))
database.delete (listofallcustomSetting,false);
}
}
}
}
/**************************************saveEmailSettings*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Save Emails into Salesforce for send email notifications
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static void saveEmailSettings(string emaiList){
String sObjectName = 'HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c'.trim();
sObjectType schemaType = Schema.getGlobalDescribe().get(sObjectName) ;
Map<String, SObjectField> fieldsMap = schemaType.getDescribe().fields.getMap();
if(emaiList != null && emaiList != '' && emaiList != '["null"]') {
system.debug('emaiList---->'+emaiList);
if(Schema.sObjectType.HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c.isAccessible() && (Schema.sObjectType.HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c.isCreateable() || Schema.sObjectType.HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c.isUpdateable()) ){
List <HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c> emailListfrompage = new List <HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c>();
emailListfrompage = (List<HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c>)JSON.deserialize(emaiList,List<HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c>.class);
List<HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c> listOfErrorMails = new List<HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c>();
listOfErrorMails = database.query('select '+Checkaccessibility.isAccessible('id', 'HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c')+' from HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c LIMIT 10000');
set<HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c> setofemailsfrompage = new set<HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c> ();
for(HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c pagemail :emailListfrompage ){
HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c emailObjct = new HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c();
if(Checkaccessibility.isUpsertable('name', fieldsMap)){
if(pagemail.name != null && pagemail.name != ''){
emailObjct.name = pagemail.name ;
setofemailsfrompage.add(emailObjct);
}
}
}
set<HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c> setofemailsfrombackend = new set<HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c> ();
setofemailsfrombackend.addall(listOfErrorMails);
list<HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c> listtodeleteEmails = new list<HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c>();
for(HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c emailsfordelete : setofemailsfrombackend ){
if(!setofemailsfrompage.contains(emailsfordelete)){
listtodeleteEmails.add(emailsfordelete);
}
}
system.debug('listtodeleteEmails-->'+listtodeleteEmails);
system.debug('listtodeleteEmails Size-->'+listtodeleteEmails.size());
if(!listtodeleteEmails.isempty()){
if(CheckAccessibility.isDeletable('HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c'))
database.delete(listtodeleteEmails,false);
}
list<HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c> listtoInsertNewEmails = new list<HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c>();
if(!setofemailsfrompage.isEmpty()){
for(HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c emailsfordelete : setofemailsfrompage ){
if(!setofemailsfrombackend.contains(emailsfordelete)){
listtoInsertNewEmails.add(emailsfordelete);
}
}
}
if(!listtoInsertNewEmails.isempty()){
if(CheckAccessibility.isUpsertable('name',fieldsMap))
database.upsert(listtoInsertNewEmails,false);
}
}
}
}
/**************************************syncShopify*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Called When Batch Processing is Completed / Started
* Update the Configuration setting base in the requirements
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static void syncShopify(string store){
List<HIC_ShopifySync__HIC_Configuration__c > configurationList = new List<HIC_ShopifySync__HIC_Configuration__c >();
String query = 'Select '+CheckAccessibility.isAccessible('name,HIC_ShopifySync__Store__c,HIC_ShopifySync__BatchRunOnce__c,HIC_ShopifySync__BatchisAborted__c,HIC_ShopifySync__Collection__c,HIC_ShopifySync__CollectionsBatchCompleted__c,HIC_ShopifySync__ProductVariantBatchCompleted__c,HIC_ShopifySync__AccountContactBatchCompleted__c,HIC_ShopifySync__DraftOrderBatchCompleted__c,HIC_ShopifySync__OrderBatchCompleted__c,HIC_ShopifySync__InventoryBatchCompleted__c,HIC_ShopifySync__Default_Field_Mapping__c,HIC_ShopifySync__Specify_Close_Date__c,HIC_ShopifySync__Inventory_Location__c, HIC_ShopifySync__Draft_Order_Sync__c, HIC_ShopifySync__Enable_Draft_Order__c,HIC_ShopifySync__Batch_Is_Processing__c, HIC_ShopifySync__Shopify_URL__c, HIC_ShopifySync__API_Key__c, HIC_ShopifySync__Private_Key_Password__c, HIC_ShopifySync__Opportunity__c, HIC_ShopifySync__Order__c, HIC_ShopifySync__Opportunity_Line_Item__c, HIC_ShopifySync__Order_Line_Item__c, HIC_ShopifySync__Order_Fulfillment__c, HIC_ShopifySync__Person_Account__c ','HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c where '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c', 'HIC_ShopifySync__HIC_Configuration__c')+' = \''+store+'\' LIMIT 49999';
configurationList = database.query(query);
if(configurationList.isEmpty())return;
configurationList[0].HIC_ShopifySync__BatchRunOnce__c = true;
configurationList[0].HIC_ShopifySync__Batch_Is_Processing__c = true;
configurationList[0].HIC_ShopifySync__BatchisAborted__c = false;
if(!configurationList[0].HIC_ShopifySync__ProductVariantBatchCompleted__c){
HIC_ShopifyUtility.fetchProducts(configurationList,store);
}
else if(!configurationList[0].HIC_ShopifySync__AccountContactBatchCompleted__c){
HIC_ShopifyUtility.fetchCustomer(configurationList,store);
}
else if(!configurationList[0].HIC_ShopifySync__OrderBatchCompleted__c && (configurationList[0].HIC_ShopifySync__Order__c || configurationList[0].HIC_ShopifySync__Opportunity__c)){
HIC_ShopifyUtility.fetchOrderAndOpportunity(configurationList,store);
}
else if(!configurationList[0].HIC_ShopifySync__CollectionsBatchCompleted__c && configurationList[0].HIC_ShopifySync__Collection__c ){
HIC_ShopifyUtility.processCollections(configurationList,store);
}
else if(!configurationList[0].HIC_ShopifySync__InventoryBatchCompleted__c && configurationList[0].HIC_ShopifySync__Inventory_Location__c){
HIC_ShopifyUtility.fetchLocations(configurationList,store);
}
else if(!configurationList[0].HIC_ShopifySync__DraftOrderBatchCompleted__c && configurationList[0].HIC_ShopifySync__Draft_Order_Sync__c){
HIC_ShopifyUtility.fetchDraftOrders(configurationList,store);
}
else{
HIC_ShopifyUtility.fetchProducts(configurationList,store);
configurationList[0].HIC_ShopifySync__ProductVariantBatchCompleted__c = false;
}
update configurationList;
}
/**************************************getRecordTypeByName*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get all the Salesforce recordtypes base on Object name
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static String getRecordTypeByName(string Objectname, string store){
List<HIC_ShopifySync__HIC_Field_Mapping__c> fm = new List<HIC_ShopifySync__HIC_Field_Mapping__c>();
fm = database.query('select '+Checkaccessibility.isAccessible('id, Name, HIC_ShopifySync__Default_Value__c, HIC_ShopifySync__GQL_Field_API__c,HIC_ShopifySync__Shopify_Fields__c','HIC_ShopifySync__HIC_Field_Mapping__c') +' from HIC_ShopifySync__HIC_Field_Mapping__c where '+Checkaccessibility.isAccessible('HIC_ShopifySync__Object_Name__c','HIC_ShopifySync__HIC_Field_Mapping__c')+' = \''+Objectname+'\' and '+Checkaccessibility.isAccessible('HIC_ShopifySync__SF_Field__c','HIC_ShopifySync__HIC_Field_Mapping__c') +' = \'RecordTypeId\' and '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c','HIC_ShopifySync__HIC_Field_Mapping__c')+' = \''+store+'\' LIMIT 49999');
if(!fm.isEmpty() && fm[0].HIC_ShopifySync__Shopify_Fields__c != null && fm[0].HIC_ShopifySync__Shopify_Fields__c != ''){
return fm[0].HIC_ShopifySync__Shopify_Fields__c;
}
return null;
}
/**************************************getPerAccRecordTypeList*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get list of the personAccount Salesforce recordtypes
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static String getPerAccRecordTypeList(){
List<RecordType> recordTypes = new List<RecordType>();
string personaccenablefield = Checkaccessibility.isAccessible('isPersonType','RecordType');
if(personaccenablefield == null || personaccenablefield == '' ){
recordTypes = database.query('SELECT '+Checkaccessibility.isAccessible('DeveloperName,Id,IsActive,Name,SobjectType', 'RecordType')+' FROM RecordType where '+Checkaccessibility.isAccessible('SobjectType','RecordType')+ ' = \'Account\' and '+Checkaccessibility.isAccessible('isActive', 'RecordType')+' = true limit 200');
}else{
recordTypes = database.query('SELECT '+Checkaccessibility.isAccessible('DeveloperName,Id,IsActive,Name,SobjectType', 'RecordType')+' FROM RecordType where '+Checkaccessibility.isAccessible('SobjectType','RecordType')+ ' = \'Account\' and '+Checkaccessibility.isAccessible('isActive', 'RecordType')+' = true and '+personaccenablefield+' = true limit 200');
}
if( !recordTypes.isEmpty() ){
return JSON.serialize( recordTypes );
}
return null;
}
/**************************************getAccRecordTypeList*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get list of the Bussiness Account Salesforce recordtypes
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static String getAccRecordTypeList(){
List<RecordType> recordTypes = new List<RecordType>();
string personAccountEnable = Checkaccessibility.isAccessible('isPersonType','RecordType');
if(personAccountEnable == null || personAccountEnable == ''){
recordTypes = database.query('SELECT '+ Checkaccessibility.isAccessible('DeveloperName,Id,IsActive,Name,SobjectType', 'RecordType')+ ' FROM RecordType where '+Checkaccessibility.isAccessible('SobjectType','RecordType')+' = \'Account\' and '+Checkaccessibility.isAccessible('IsActive', 'RecordType')+' = true limit 200');
}else{
recordTypes = database.query('SELECT '+ Checkaccessibility.isAccessible('DeveloperName,Id,IsActive,Name,SobjectType', 'RecordType')+ ' FROM RecordType where '+Checkaccessibility.isAccessible('SobjectType','RecordType')+' = \'Account\' and '+Checkaccessibility.isAccessible('IsActive', 'RecordType')+' = true and '+personAccountEnable+' = false limit 200');
}
if( !recordTypes.isEmpty() ){
return JSON.serialize( recordTypes );
}
return null;
}
/**************************************getConRecordTypeList*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get list of the Contact Salesforce recordtypes
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static String getConRecordTypeList(){
List<RecordType> recordTypes = new List<RecordType>();
recordTypes = database.query('SELECT '+Checkaccessibility.isAccessible('DeveloperName,Id,IsActive,Name,SobjectType', 'RecordType') +' FROM RecordType where '+Checkaccessibility.isAccessible('SobjectType','RecordType')+' = \'Contact\' and '+Checkaccessibility.isAccessible('IsActive', 'RecordType')+' = true limit 200');
System.debug('***recordTypes***'+recordTypes);
if( !recordTypes.isEmpty() ){
return JSON.serialize( recordTypes );
}
return null;
}
/**************************************getConRecordTypeList*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get list of the Order Salesforce recordtypes
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static String getOrdRecordTypeList(){
//System.debug('*****getConRecordTypeList***');
List<RecordType> recordTypes = new List<RecordType>();
string query = 'SELECT '+Checkaccessibility.isAccessible('DeveloperName,Id,IsActive,Name,SobjectType', 'RecordType') +' FROM RecordType where '+Checkaccessibility.isAccessible('SobjectType','RecordType')+' = \'Order\' and '+Checkaccessibility.isAccessible('IsActive', 'RecordType')+ ' = true and '+Checkaccessibility.isAccessible('DeveloperName', 'RecordType')+'!= \'Draft_Order\' limit 200';
recordTypes = database.query(query);
if( !recordTypes.isEmpty() ){
return JSON.serialize( recordTypes );
}
return null;
}
/**************************************getConRecordTypeList*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get list of the Draft Order Salesforce recordtypes
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static String getDraftOrdRecordTypeList(){
//System.debug('*****getConRecordTypeList***');
List<RecordType> recordTypes = new List<RecordType>();
recordTypes = database.query('SELECT '+Checkaccessibility.isAccessible('DeveloperName,Id,IsActive,Name,SobjectType', 'RecordType') +' FROM RecordType where '+Checkaccessibility.isAccessible('SobjectType','RecordType')+' = \'Order\' and '+Checkaccessibility.isAccessible('IsActive', 'RecordType')+' = true limit 200');
System.debug('***recordTypes***'+recordTypes);
if( !recordTypes.isEmpty() ){
return JSON.serialize( recordTypes );
}
return null;
}
/**************************************getConRecordTypeList*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get list of the Opportunity Salesforce recordtypes
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static String getOppRecordTypeList(){
//System.debug('*****getConRecordTypeList***');
List<RecordType> recordTypes = new List<RecordType>();
recordTypes = database.query('SELECT '+Checkaccessibility.isAccessible('DeveloperName,Id,IsActive,Name,SobjectType', 'RecordType') +' FROM RecordType where '+Checkaccessibility.isAccessible('SobjectType','RecordType')+' = \'Opportunity\' and '+Checkaccessibility.isAccessible('IsActive', 'RecordType')+' = true limit 200');
System.debug('***recordTypes***'+recordTypes);
if( !recordTypes.isEmpty() ){
return JSON.serialize( recordTypes );
}
return null;
}
/**************************************fetchAccount*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get list of Account base on search keyword
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static List < account > fetchAccount(String searchKeyWord) {
String searchKey = searchKeyWord + '%';
List < Account > returnList = new List < Account > ();
List < Account > lstOfAccount = database.query('select '+Checkaccessibility.isAccessible('id, Name','account')+' from account where '+Checkaccessibility.isAccessible('Name','account')+' LIKE: searchKey Limit 10');
for (Account acc: lstOfAccount) {
returnList.add(acc);
}
return returnList;
}
/**************************************saveConfigration*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Save Configuration setting based on User
* If Check true then its called from Step -2 else Other
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static boolean saveConfigration( String configObj, String check ){
try{
List<HIC_ShopifySync__Configuration__c> cyptokeyquery = new List<HIC_ShopifySync__Configuration__c>();
cyptokeyquery = database.query('select '+Checkaccessibility.isAccessible('id,HIC_ShopifySync__Cryptokey__c','HIC_ShopifySync__Configuration__c')+' from HIC_ShopifySync__Configuration__c where '+Checkaccessibility.isAccessible('Name','HIC_ShopifySync__Configuration__c')+' = \'Default\' limit 1');
if(cyptokeyquery.isEmpty()) return null;
HIC_ShopifySync__HIC_Configuration__c config = new HIC_ShopifySync__HIC_Configuration__c();
config = ( HIC_ShopifySync__HIC_Configuration__c )JSON.deserialize(configObj, HIC_ShopifySync__HIC_Configuration__c.class);
String store = '';
if(config.HIC_ShopifySync__Shopify_URL__c != null)
store = config.HIC_ShopifySync__Shopify_URL__c.replace('https://','').replace('.myshopify.com','').removeEnd('/');
if(store != '') config.HIC_ShopifySync__Store__c = store;
config.name = store;
//List<HIC_ShopifySync__HIC_Configuration__c> storeConfigList = new List<HIC_ShopifySync__HIC_Configuration__c>();
//storeConfigList = database.query('select '+Checkaccessibility.isAccessible('id','HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c where '+Checkaccessibility.isAccessible('Name','HIC_ShopifySync__HIC_Configuration__c')+' = \''+store+'\' limit 1');
List<HIC_ShopifySync__HIC_Field_Mapping__c> storeFMappingList = [SELECT name, HIC_ShopifySync__Default_Value__c,HIC_ShopifySync__GQL_Field_API__c, HIC_ShopifySync__External_ID__c, HIC_ShopifySync__IsSFID__c, HIC_ShopifySync__Nested__c, HIC_ShopifySync__Object_Name__c, HIC_ShopifySync__SF_Field__c, HIC_ShopifySync__SF_Field_Type__c, HIC_ShopifySync__Shopify_Fields__c, HIC_ShopifySync__Shopify_Field_Type__c, HIC_ShopifySync__Store__c, HIC_ShopifySync__Store_External_ID__c FROM HIC_ShopifySync__HIC_Field_Mapping__c where HIC_ShopifySync__Store__c =:store LIMIT 49999];
if(storeFMappingList.isEmpty()){
List<HIC_ShopifySync__HIC_Field_Mapping__c> InitialList = new List<HIC_ShopifySync__HIC_Field_Mapping__c>();
List<HIC_ShopifySync__HIC_Field_Mapping__c> listOfFieldMappingofFixedFields = [SELECT name, HIC_ShopifySync__Default_Value__c, HIC_ShopifySync__GQL_Field_API__c,HIC_ShopifySync__External_ID__c, HIC_ShopifySync__IsSFID__c, HIC_ShopifySync__Nested__c, HIC_ShopifySync__Object_Name__c, HIC_ShopifySync__SF_Field__c, HIC_ShopifySync__SF_Field_Type__c, HIC_ShopifySync__Shopify_Fields__c, HIC_ShopifySync__Shopify_Field_Type__c, HIC_ShopifySync__Store__c, HIC_ShopifySync__Store_External_ID__c FROM HIC_ShopifySync__HIC_Field_Mapping__c where HIC_ShopifySync__Store__c = 'Default' LIMIT 49999];
if(!listOfFieldMappingofFixedFields.isEmpty()){
System.debug('listOfFieldMappingofFixedFields-->if');
for(HIC_ShopifySync__HIC_Field_Mapping__c fixedField : listOfFieldMappingofFixedFields ){
HIC_ShopifySync__HIC_Field_Mapping__c cloned = fixedField.clone(false,false,false,false);
InitialList.add(cloned);
}
}
for(HIC_ShopifySync__HIC_Field_Mapping__c checkname :InitialList ){
checkname.HIC_ShopifySync__Store__c = store;
checkname.HIC_ShopifySync__Store_External_ID__c = store+checkname.HIC_ShopifySync__External_ID__c;
if(checkname.name != null && checkname.name != ''){
checkname.name = checkFieldLengthAndReturnValue(checkname.name);
}
}
if(!InitialList.isEmpty()){
upsert InitialList HIC_ShopifySync__Store_External_ID__c;
}
}
if(check == 'True'){
String PASSWORD = String.valueof(config.HIC_ShopifySync__Private_Key_Password__c);
System.debug('Password------'+PASSWORD);
if(PASSWORD.containsIgnoreCase('True')){
System.debug('Password------in '+PASSWORD);
PASSWORD = PASSWORD.removeEnd('True');
If(!Test.isRunningTest()){
Blob cryptoKey1 = Blob.valueOf(String.valueOf(cyptokeyquery[0].HIC_ShopifySync__Cryptokey__c));
Blob data = EncodingUtil.base64Decode(PASSWORD);
Blob decryptedData = Crypto.decryptWithManagedIV('AES128', cryptoKey1, data);
String dryptDatapsd = decryptedData.toString();
if(dryptDatapsd != null && dryptDatapsd != ''){
config.HIC_ShopifySync__Private_Key_Password__c = dryptDatapsd;
}
}
}
System.debug('in true section');
config.HIC_ShopifySync__Product_Sync__c = true;
config.HIC_ShopifySync__Customer_Sync__c = true;
List <HIC_ShopifySync__HIC_Configuration__c> configList = new List <HIC_ShopifySync__HIC_Configuration__c>();
configList = [Select HIC_ShopifySync__Enable_Draft_Order__c, HIC_ShopifySync__Collection_Sync__c, HIC_ShopifySync__Inventory_Location__c, HIC_ShopifySync__Customer_Sync__c, HIC_ShopifySync__Draft_Order_Sync__c, HIC_ShopifySync__Inventory_Location_Sync__c, HIC_ShopifySync__Opportunity_Sync__c, HIC_ShopifySync__Order_Sync__c, HIC_ShopifySync__Product_Sync__c from HIC_ShopifySync__HIC_Configuration__c Where Name = :store Limit 1];
if(configList != null && !configList.isEmpty()){
system.debug('*****Pricebookvalue**'+ config.HIC_ShopifySync__Salesforce_Pricebook__c );
system.debug('**configList[0].HIC_ShopifySync__Collection_Sync__c ** -->'+configList[0].HIC_ShopifySync__Collection_Sync__c );
system.debug('**config.HIC_ShopifySync__Collection_Sync__c ** -->'+ config.HIC_ShopifySync__Collection_Sync__c );
if(configList[0].HIC_ShopifySync__Collection_Sync__c == True && config.HIC_ShopifySync__Collection_Sync__c == False){
HICWebhookUtility.deleteWebhook('HIC_ShopifySync__Collection__c', 'Update', store);
HICWebhookUtility.deleteWebhook('HIC_ShopifySync__Collection__c', 'Create', store);
HICWebhookUtility.deleteWebhook('HIC_ShopifySync__Collection__c', 'Delete', store);
}
if(configList[0].HIC_ShopifySync__Customer_Sync__c == True && config.HIC_ShopifySync__Customer_Sync__c == False) {
HICWebhookUtility.deleteWebhook('Customer', 'Create', store);
HICWebhookUtility.deleteWebhook('Customer', 'Update', store);
HICWebhookUtility.deleteWebhook('Customer', 'Delete', store);
}
if(configList[0].HIC_ShopifySync__Inventory_Location__c == True && config.HIC_ShopifySync__Inventory_Location__c == False){
HICWebhookUtility.deleteWebhook('HIC_ShopifySync__Inventory_Level__c', 'Connect', store);
HICWebhookUtility.deleteWebhook('HIC_ShopifySync__Inventory_Level__c', 'Disconnect', store);
HICWebhookUtility.deleteWebhook('HIC_ShopifySync__Inventory_Level__c', 'Update', store);
HICWebhookUtility.deleteWebhook('HIC_ShopifySync__Location__c', 'Update', store);
HICWebhookUtility.deleteWebhook('HIC_ShopifySync__Location__c', 'Create', store);
HICWebhookUtility.deleteWebhook('HIC_ShopifySync__Location__c', 'Delete', store);
}
if(configList[0].HIC_ShopifySync__Product_Sync__c == True && config.HIC_ShopifySync__Product_Sync__c == False){
HICWebhookUtility.deleteWebhook('Product2', 'Create', store);
HICWebhookUtility.deleteWebhook('Product2', 'Delete', store);
HICWebhookUtility.deleteWebhook('Product2', 'Update', store);
}
if(configList[0].HIC_ShopifySync__Enable_Draft_Order__c == True && config.HIC_ShopifySync__Enable_Draft_Order__c == False){
HICWebhookUtility.deleteWebhook('DraftOrder', 'Create', store);
HICWebhookUtility.deleteWebhook('DraftOrder', 'Delete', store);
HICWebhookUtility.deleteWebhook('DraftOrder', 'Update', store);
}
if(configList[0].HIC_ShopifySync__Order_Sync__c == True && config.HIC_ShopifySync__Order_Sync__c == False) {
HICWebhookUtility.deleteWebhook('Order', 'Create', store);
HICWebhookUtility.deleteWebhook('Order', 'Update', store);
HICWebhookUtility.deleteWebhook('Order', 'Delete', store);
}
}
List<HIC_ShopifySync__HIC_Webhook__c> webhookExistList = new List<HIC_ShopifySync__HIC_Webhook__c>();
webhookExistList = [Select Name, HIC_ShopifySync__DML_Type__c, HIC_ShopifySync__SF_URL_Mapping__c, HIC_ShopifySync__Shopify_Object__c, HIC_ShopifySync__Topic__c from HIC_ShopifySync__HIC_Webhook__c where HIC_ShopifySync__Store__c = :store Limit 200];
if(webhookExistList == null || webhookExistList.isEmpty()){
System.debug('in else section');
List<HIC_ShopifySync__Webhook__c> defaultWebhookList = new List<HIC_ShopifySync__Webhook__c>();
defaultWebhookList = [Select Name, HIC_ShopifySync__DML_Type__c,HIC_ShopifySync__Metafields_Namespace__c, HIC_ShopifySync__SF_URL_Mapping__c, HIC_ShopifySync__Shopify_Object__c, HIC_ShopifySync__Topic__c from HIC_ShopifySync__Webhook__c Limit 200];
String jsonString = JSON.serialize(defaultWebhookList);
List<HIC_ShopifySync__HIC_Webhook__c> storeWebhookList = (List<HIC_ShopifySync__HIC_Webhook__c>)JSON.deserialize(jsonString, List<HIC_ShopifySync__HIC_Webhook__c>.Class);
for(HIC_ShopifySync__HIC_Webhook__c webhook : storeWebhookList){
webhook.HIC_ShopifySync__Store__c = store;
webhook.HIC_ShopifySync__External_Id__c = webhook.Name+'-'+webhook.HIC_ShopifySync__Store__c;
webhook.Id = null;
}
try{
if(CheckAccessibility.isUpsertable('HIC_ShopifySync__External_Id__c', 'HIC_ShopifySync__HIC_Webhook__c')){
System.debug('storeWebhookList--'+storeWebhookList);
upsert storeWebhookList HIC_ShopifySync__External_Id__c;
}
} catch(Exception e){
System.debug(e);
}
}
List<HIC_ShopifySync__Field_Mapping__c > pricebook2MappingList = new List<HIC_ShopifySync__Field_Mapping__c >();
if(config.HIC_ShopifySync__Salesforce_Pricebook__c != null && config.HIC_ShopifySync__Salesforce_Pricebook__c != '' ){
String query = ' select '+CheckAccessibility.isAccessible('id,name,HIC_ShopifySync__External_ID__c,HIC_ShopifySync__SF_Field__c, HIC_ShopifySync__Shopify_Fields__c, HIC_ShopifySync__Nested__c, HIC_ShopifySync__IsSFID__c','HIC_ShopifySync__Field_Mapping__c')+' from HIC_ShopifySync__Field_Mapping__c where ( '+CheckAccessibility.isAccessible('HIC_ShopifySync__Object_Name__c','HIC_ShopifySync__Field_Mapping__c')+ ' = \'order\' or '+CheckAccessibility.isAccessible('HIC_ShopifySync__Object_Name__c','HIC_ShopifySync__Field_Mapping__c') +' = \'DraftOrder\' or '+CheckAccessibility.isAccessible('HIC_ShopifySync__Object_Name__c','HIC_ShopifySync__Field_Mapping__c') +' = \'Opportunity\' ) And (' +CheckAccessibility.isAccessible('HIC_ShopifySync__SF_Field__c','HIC_ShopifySync__Field_Mapping__c') +'= \'Pricebook2Id\' OR '+ CheckAccessibility.isAccessible('HIC_ShopifySync__SF_Field__c','HIC_ShopifySync__Field_Mapping__c')+' = \'RecordTypeId\' ) limit 49999';
pricebook2MappingList = database.query(query);
String RecordtypeidForOrder;
Schema.DescribeSObjectResult dsr = order.SObjectType.getDescribe();
Schema.RecordTypeInfo defaultRecordType;
for(Schema.RecordTypeInfo rti : dsr.getRecordTypeInfos()) {
if(rti.isDefaultRecordTypeMapping()) {
RecordtypeidForOrder = rti.getRecordTypeId() ;
}
}
System.debug('RecordtypeidForOrder++'+RecordtypeidForOrder);
if(!pricebook2MappingList.isEmpty() && pricebook2MappingList.size() == 3 ){
List<HIC_ShopifySync__Field_Mapping__c> fmList = new List<HIC_ShopifySync__Field_Mapping__c>();
if(RecordtypeidForOrder != null && RecordtypeidForOrder != ''){
//System.debug('acc '+acc);
HIC_ShopifySync__Field_Mapping__c fmord = new HIC_ShopifySync__Field_Mapping__c();
fmord.Name = 'Order-RecordTypeId';
fmord.HIC_ShopifySync__External_ID__c = 'Order-RecordTypeId';
fmord.HIC_ShopifySync__Default_Value__c = true;
fmord.HIC_ShopifySync__Object_Name__c = 'Order';
fmord.HIC_ShopifySync__SF_Field__c = 'RecordTypeId';
//fm.Shopify_Field_Type__c = 'date';
fmord.HIC_ShopifySync__SF_Field_Type__c = 'reference';
fmord.HIC_ShopifySync__Shopify_Fields__c = RecordtypeidForOrder;
pricebook2MappingList.add(fmord);
//System.debug('acc '+acc);
HIC_ShopifySync__Field_Mapping__c fmdrford = new HIC_ShopifySync__Field_Mapping__c();
fmdrford.Name = 'DraftOrder-RecordTypeId';
fmdrford.HIC_ShopifySync__External_ID__c = 'DraftOrder-RecordTypeId';
fmdrford.HIC_ShopifySync__Default_Value__c = true;
fmdrford.HIC_ShopifySync__Object_Name__c = 'Draftorder';
fmdrford.HIC_ShopifySync__SF_Field__c = 'RecordTypeId';
//fm.Shopify_Field_Type__c = 'date';
fmdrford.HIC_ShopifySync__SF_Field_Type__c = 'reference';
fmdrford.HIC_ShopifySync__Shopify_Fields__c = RecordtypeidForOrder;
pricebook2MappingList.add(fmdrford);
}
}
for(HIC_ShopifySync__Field_Mapping__c fd : pricebook2MappingList){
if(String.valueof(fd.HIC_ShopifySync__SF_Field__c).toUpperCase() == ('Pricebook2Id').toUpperCase()){
fd.HIC_ShopifySync__Shopify_Fields__c = config.HIC_ShopifySync__Salesforce_Pricebook__c ;
}
if(String.valueof(fd.HIC_ShopifySync__SF_Field__c).toUpperCase() == ('RecordTypeId').toUpperCase() && (String.valueof(fd.Name).toUpperCase() == ('DraftOrder-RecordTypeId').toUpperCase() && String.valueof(fd.Name).toUpperCase() == ('Order-RecordTypeId').toUpperCase() ) && (fd.HIC_ShopifySync__Shopify_Fields__c == null || fd.HIC_ShopifySync__Shopify_Fields__c == '' ) ){
fd.HIC_ShopifySync__Shopify_Fields__c = RecordtypeidForOrder ;
}
}
// pricebook2MappingList[0].HIC_ShopifySync__Shopify_Fields__c = config.HIC_ShopifySync__Salesforce_Pricebook__c ;
// pricebook2MappingList[1].HIC_ShopifySync__Shopify_Fields__c = config.HIC_ShopifySync__Salesforce_Pricebook__c ;
}
try{
if(!pricebook2MappingList.isempty()){
if(CheckAccessibility.isUpsertable('HIC_ShopifySync__Object_Name__c', 'HIC_ShopifySync__Field_Mapping__c')){
upsert pricebook2MappingList HIC_ShopifySync__External_ID__c ;
}
}
if(CheckAccessibility.isUpsertable('HIC_ShopifySync__Store__c', 'HIC_ShopifySync__HIC_Configuration__c')){
config.Id = null;
upsert config HIC_ShopifySync__Store__c;
}
} catch(Exception e){
System.debug(e);
}
BatchForCreateWebhookMultiStore callBatch = new BatchForCreateWebhookMultiStore(store);
Database.executeBatch(callBatch, 1);
}else if(check == 'False'){
system.debug('**check'+check);
system.debug('**config'+config);
if( config.HIC_ShopifySync__order__c != null && config.HIC_ShopifySync__Opportunity__c != null){
if(config.HIC_ShopifySync__order__c == false){
config.HIC_ShopifySync__Order_Line_Item__c = false;
}else{
config.HIC_ShopifySync__Order_Line_Item__c = true;
}
if(config.HIC_ShopifySync__Opportunity__c == false){
config.HIC_ShopifySync__Opportunity_Line_Item__c = false;
}
if(config.HIC_ShopifySync__order__c == false && config.HIC_ShopifySync__Opportunity__c == true ){
config.HIC_ShopifySync__Opportunity_Line_Item__c = true;
}
}
if(CheckAccessibility.isUpsertable('HIC_ShopifySync__Store__c', 'HIC_ShopifySync__HIC_Configuration__c')){
upsert config HIC_ShopifySync__Store__c;
}
}else if(check == 'Normal'){
if(CheckAccessibility.isUpsertable('HIC_ShopifySync__Store__c', 'HIC_ShopifySync__HIC_Configuration__c')){
upsert config HIC_ShopifySync__Store__c;
}
}
return true;
}catch( Exception e ){
//CustomSettingRecordInsert.SuccessMailSend('Error message '+e.getMessage() + ' at line number ' + e.getLineNumber());
System.debug('Error message '+e.getMessage() + ' at line number ' + e.getLineNumber());
return false;
}
// return false;
}
/**************************************savePriceBookMapping*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Save Pricebook field mapping for order and opportunity
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static boolean savePriceBookMapping( String storename, String pricebookId ){
try{
List<HIC_ShopifySync__HIC_Field_Mapping__c > pricebook2MappingList = new List<HIC_ShopifySync__HIC_Field_Mapping__c >();
String query = ' select '+CheckAccessibility.isAccessible('id,name,HIC_ShopifySync__GQL_Field_API__c,HIC_ShopifySync__SF_Field__c, HIC_ShopifySync__Shopify_Fields__c, HIC_ShopifySync__Nested__c, HIC_ShopifySync__IsSFID__c','HIC_ShopifySync__HIC_Field_Mapping__c')+' from HIC_ShopifySync__HIC_Field_Mapping__c where ' +CheckAccessibility.isAccessible('HIC_ShopifySync__SF_Field__c','HIC_ShopifySync__HIC_Field_Mapping__c') +'= \'Pricebook2Id\' AND '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c','HIC_ShopifySync__HIC_Field_Mapping__c')+' = \''+storename+'\' LIMIT 49999';
pricebook2MappingList = database.query(query);
for(HIC_ShopifySync__HIC_Field_Mapping__c mapping : pricebook2MappingList){
mapping.HIC_ShopifySync__Shopify_Fields__c = pricebookId;
}
update pricebook2MappingList;
return true;
}catch(Exception e){
return false;
}
}
/**************************************getConfigration*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get saved Configuration to display in the page
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static String getConfigration(){
try{
List<HIC_ShopifySync__Configuration__c> cyptokeyquery = new List<HIC_ShopifySync__Configuration__c>();
cyptokeyquery = database.query('select '+Checkaccessibility.isAccessible('id,HIC_ShopifySync__Store__c,HIC_ShopifySync__Cryptokey__c,HIC_ShopifySync__Refresh_Token__c','HIC_ShopifySync__Configuration__c')+' from HIC_ShopifySync__Configuration__c where '+Checkaccessibility.isAccessible('Name','HIC_ShopifySync__Configuration__c')+' = \'Default\' limit 1');
if(cyptokeyquery.isEmpty()) return null;
/*List<HIC_ShopifySync__Configuration__c> config = new List<HIC_ShopifySync__Configuration__c>();
config = database.query('select '+Checkaccessibility.isAccessible('id,HIC_ShopifySync__Store__c, HIC_ShopifySync__Inventory_Location__c, HIC_ShopifySync__IsCurrencyChanged__c, HIC_ShopifySync__BatchRunOnce__c,HIC_ShopifySync__BatchisAborted__c,HIC_ShopifySync__Order__c,HIC_ShopifySync__OrderBatchCompleted__c,HIC_ShopifySync__Collection__c,HIC_ShopifySync__Batch_Is_Processing__c,HIC_ShopifySync__Enable_Draft_Order__c ,HIC_ShopifySync__Refresh_Token__c,name,HIC_ShopifySync__API_Key__c, HIC_ShopifySync__Shopify_URL__c,HIC_ShopifySync__Opportunity__c, HIC_ShopifySync__Private_Key_Password__c, HIC_ShopifySync__Salesforce_Site_URL__c, HIC_ShopifySync__Opportunity_Sync__c, HIC_ShopifySync__Inventory_Location_Sync__c, HIC_ShopifySync__Collection_Sync__c, HIC_ShopifySync__Product_Sync__c, HIC_ShopifySync__Customer_Sync__c, HIC_ShopifySync__Order_Sync__c, HIC_ShopifySync__Draft_Order_Sync__c, HIC_ShopifySync__Salesforce_Pricebook__c','HIC_ShopifySync__Configuration__c')+' from HIC_ShopifySync__Configuration__c where '+Checkaccessibility.isAccessible('Name','HIC_ShopifySync__Configuration__c')+' = \'Default\' limit 1');
if(config.isEmpty()) return null;*/
List<HIC_ShopifySync__HIC_Configuration__c> config = new List<HIC_ShopifySync__HIC_Configuration__c>();
config = database.query('select '+Checkaccessibility.isAccessible('id,HIC_ShopifySync__Update_Identified_Contact_Records__c, HIC_ShopifySync__Update_Identified_Account_Records__c, HIC_ShopifySync__Upsert_Account_basis_on_Customer_Company__c, HIC_ShopifySync__Upsert_Customer_basis_on_Email__c, HIC_ShopifySync__DNCDAMissingAccounts__c, HIC_ShopifySync__Shopify_Objects__c, HIC_ShopifySync__Turn_on_DND_synced_Customers__c,HIC_ShopifySync__Store__c,HIC_ShopifySync__IsCurrencyChanged__c,HIC_ShopifySync__Inventory_Location__c,HIC_ShopifySync__Cryptokey__c,HIC_ShopifySync__BatchRunOnce__c,HIC_ShopifySync__BatchisAborted__c,HIC_ShopifySync__Order__c,HIC_ShopifySync__OrderBatchCompleted__c,HIC_ShopifySync__Collection__c,HIC_ShopifySync__Batch_Is_Processing__c,HIC_ShopifySync__Enable_Draft_Order__c ,HIC_ShopifySync__Refresh_Token__c,name,HIC_ShopifySync__API_Key__c, HIC_ShopifySync__Shopify_URL__c,HIC_ShopifySync__Opportunity__c, HIC_ShopifySync__Private_Key_Password__c, HIC_ShopifySync__Salesforce_Site_URL__c, HIC_ShopifySync__Opportunity_Sync__c, HIC_ShopifySync__Inventory_Location_Sync__c, HIC_ShopifySync__Collection_Sync__c, HIC_ShopifySync__Product_Sync__c, HIC_ShopifySync__Customer_Sync__c, HIC_ShopifySync__Order_Sync__c, HIC_ShopifySync__Draft_Order_Sync__c, HIC_ShopifySync__Salesforce_Pricebook__c','HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c Where HIC_ShopifySync__Store__c != \'Default\' order by LastModifiedDate desc Limit 1');
if(config.isEmpty()){
config = database.query('select '+Checkaccessibility.isAccessible('id,HIC_ShopifySync__Update_Identified_Contact_Records__c, HIC_ShopifySync__Update_Identified_Account_Records__c, HIC_ShopifySync__Upsert_Account_basis_on_Customer_Company__c, HIC_ShopifySync__Upsert_Customer_basis_on_Email__c, HIC_ShopifySync__DNCDAMissingAccounts__c, HIC_ShopifySync__Shopify_Objects__c, HIC_ShopifySync__Turn_on_DND_synced_Customers__c,HIC_ShopifySync__Store__c,HIC_ShopifySync__IsCurrencyChanged__c,HIC_ShopifySync__Inventory_Location__c,HIC_ShopifySync__Cryptokey__c,HIC_ShopifySync__BatchRunOnce__c,HIC_ShopifySync__BatchisAborted__c,HIC_ShopifySync__Order__c,HIC_ShopifySync__OrderBatchCompleted__c,HIC_ShopifySync__Collection__c,HIC_ShopifySync__Batch_Is_Processing__c,HIC_ShopifySync__Enable_Draft_Order__c ,HIC_ShopifySync__Refresh_Token__c,name,HIC_ShopifySync__API_Key__c, HIC_ShopifySync__Shopify_URL__c,HIC_ShopifySync__Opportunity__c, HIC_ShopifySync__Private_Key_Password__c, HIC_ShopifySync__Salesforce_Site_URL__c, HIC_ShopifySync__Opportunity_Sync__c, HIC_ShopifySync__Inventory_Location_Sync__c, HIC_ShopifySync__Collection_Sync__c, HIC_ShopifySync__Product_Sync__c, HIC_ShopifySync__Customer_Sync__c, HIC_ShopifySync__Order_Sync__c, HIC_ShopifySync__Draft_Order_Sync__c, HIC_ShopifySync__Salesforce_Pricebook__c','HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c Where HIC_ShopifySync__Store__c = \'Default\' order by LastModifiedDate desc Limit 1');
config[0].Id = null;
config[0].HIC_ShopifySync__Refresh_Token__c = cyptokeyquery[0].HIC_ShopifySync__Refresh_Token__c;
return JSON.serialize(config[0] );
}
config[0].HIC_ShopifySync__Refresh_Token__c = cyptokeyquery[0].HIC_ShopifySync__Refresh_Token__c;
if(config[0].HIC_ShopifySync__Private_Key_Password__c != null && config[0].HIC_ShopifySync__Private_Key_Password__c != ''){
String PASSWORD = String.valueof(config[0].HIC_ShopifySync__Private_Key_Password__c);
Blob cryptoKey = Blob.valueOf(String.valueof(cyptokeyquery[0].HIC_ShopifySync__Cryptokey__c));
Blob data = Blob.valueOf(PASSWORD);
Blob encryptedData = Crypto.encryptWithManagedIV('AES128', cryptoKey, data );
String b64Data = EncodingUtil.base64Encode(encryptedData)+'True';
if(b64Data != null && b64Data != ''){
config[0].HIC_ShopifySync__Private_Key_Password__c = b64Data;
}
}
return JSON.serialize(config[0] );
}catch(Exception e){
// CustomSettingRecordInsert.SuccessMailSend('Error message '+e.getMessage() + ' at line number ' + e.getLineNumber());
return null;
}
}
@AuraEnabled
public static String getConfigrations(){
try{
List<HIC_ShopifySync__Configuration__c> cyptokeyquery = new List<HIC_ShopifySync__Configuration__c>();
cyptokeyquery = database.query('select '+Checkaccessibility.isAccessible('id,HIC_ShopifySync__Store__c,HIC_ShopifySync__Cryptokey__c','HIC_ShopifySync__Configuration__c')+' from HIC_ShopifySync__Configuration__c');
if(cyptokeyquery.isEmpty()) return null;
List<HIC_ShopifySync__HIC_Configuration__c> configList = new List<HIC_ShopifySync__HIC_Configuration__c>();
configList = database.query('select '+Checkaccessibility.isAccessible('id,HIC_ShopifySync__Store__c,HIC_ShopifySync__IsCurrencyChanged__c,HIC_ShopifySync__Inventory_Location__c,HIC_ShopifySync__Cryptokey__c,HIC_ShopifySync__BatchRunOnce__c,HIC_ShopifySync__BatchisAborted__c,HIC_ShopifySync__Order__c,HIC_ShopifySync__OrderBatchCompleted__c,HIC_ShopifySync__Collection__c,HIC_ShopifySync__Batch_Is_Processing__c,HIC_ShopifySync__Enable_Draft_Order__c ,HIC_ShopifySync__Refresh_Token__c,name,HIC_ShopifySync__API_Key__c, HIC_ShopifySync__Shopify_URL__c,HIC_ShopifySync__Opportunity__c, HIC_ShopifySync__Private_Key_Password__c, HIC_ShopifySync__Salesforce_Site_URL__c, HIC_ShopifySync__Opportunity_Sync__c, HIC_ShopifySync__Inventory_Location_Sync__c, HIC_ShopifySync__Collection_Sync__c, HIC_ShopifySync__Product_Sync__c, HIC_ShopifySync__Customer_Sync__c, HIC_ShopifySync__Order_Sync__c, HIC_ShopifySync__Draft_Order_Sync__c, HIC_ShopifySync__Salesforce_Pricebook__c','HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c Where HIC_ShopifySync__Store__c != \'Default\' ');
if(configList.isEmpty()) return null;
for(HIC_ShopifySync__HIC_Configuration__c config : configList){
if(config.HIC_ShopifySync__Private_Key_Password__c != null && config.HIC_ShopifySync__Private_Key_Password__c != ''){
String PASSWORD = String.valueof(config.HIC_ShopifySync__Private_Key_Password__c);
Blob cryptoKey = Blob.valueOf(String.valueof(cyptokeyquery[0].HIC_ShopifySync__Cryptokey__c));
Blob data = Blob.valueOf(PASSWORD);
Blob encryptedData = Crypto.encryptWithManagedIV('AES128', cryptoKey, data );
String b64Data = EncodingUtil.base64Encode(encryptedData);
if(b64Data != null && b64Data != ''){
config.HIC_ShopifySync__Private_Key_Password__c = b64Data;
}
}
}
return JSON.serialize(configList );
}catch(Exception e){
//CustomSettingRecordInsert.SuccessMailSend('Error message '+e.getMessage() + ' at line number ' + e.getLineNumber());
return e.getMessage()+''+e.getLineNumber();
}
}
/**************************************saveGeneral*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* save Configuration setting into Salesforce
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static boolean saveGeneral( String configObj ){
try{
HIC_ShopifySync__Configuration__c config = new HIC_ShopifySync__Configuration__c();
config = ( HIC_ShopifySync__Configuration__c )JSON.deserialize(configObj, HIC_ShopifySync__Configuration__c.class);
if(CheckAccessibility.isUpsertable('Name', 'HIC_ShopifySync__Configuration__c'))
upsert config Name;
return true;
}catch( Exception e ){
}
return false;
}
/**************************************getDefaultOppClosedate*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get Saved Default Opportunity Closed date
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static HIC_ShopifySync__HIC_Field_Mapping__c getDefaultOppClosedate(string store){
List<HIC_ShopifySync__HIC_Field_Mapping__c> fm = new List<HIC_ShopifySync__HIC_Field_Mapping__c>();
//System.debug('select '+Checkaccessibility.isAccessible('id, Name, HIC_ShopifySync__Default_Value__c, HIC_ShopifySync__Shopify_Fields__c','HIC_ShopifySync__HIC_Field_Mapping__c') +' from HIC_ShopifySync__HIC_Field_Mapping__c where '+Checkaccessibility.isAccessible('HIC_ShopifySync__External_ID__c','HIC_ShopifySync__HIC_Field_Mapping__c')+' = \'Opportunity-CloseDate\' and '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c','HIC_ShopifySync__HIC_Field_Mapping__c')+' = \''+store+'\' limit 49999');
fm = database.query('select '+Checkaccessibility.isAccessible('id,HIC_ShopifySync__GQL_Field_API__c, Name, HIC_ShopifySync__Default_Value__c, HIC_ShopifySync__Shopify_Fields__c','HIC_ShopifySync__HIC_Field_Mapping__c') +' from HIC_ShopifySync__HIC_Field_Mapping__c where '+Checkaccessibility.isAccessible('HIC_ShopifySync__External_ID__c','HIC_ShopifySync__HIC_Field_Mapping__c')+' = \'Opportunity-CloseDate\' and '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c','HIC_ShopifySync__HIC_Field_Mapping__c')+' = \''+store+'\' limit 49999');
if(!fm.isEmpty()){
return fm[0];
}else{
return null;
}
}
/**************************************getAccountDetails*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get selected Account details to display into the page
* Based on Account ID
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static Account getAccountDetails(String accId){
List<Account> acc = new List<Account>();
acc = database.query('select '+Checkaccessibility.isAccessible('id, Name','Account')+' from Account where '+Checkaccessibility.isAccessible('id','Account')+' =: accId limit 1');
if(acc != null && !acc.isEmpty()){
return acc[0];
}
return null;
}
/**************************************getDefaultOppStage*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Get Default Opportunity's Stage
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static String getDefaultOppStage(string store){
List<HIC_ShopifySync__HIC_Field_Mapping__c> fm = new List<HIC_ShopifySync__HIC_Field_Mapping__c>();
System.debug('select '+Checkaccessibility.isAccessible('id, Name, HIC_ShopifySync__Default_Value__c, HIC_ShopifySync__Shopify_Fields__c','HIC_ShopifySync__HIC_Field_Mapping__c')+' from HIC_ShopifySync__HIC_Field_Mapping__c where '+Checkaccessibility.isAccessible('Name','HIC_ShopifySync__HIC_Field_Mapping__c')+' = \'Opportunity-StageName\' and '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c','HIC_ShopifySync__HIC_Field_Mapping__c')+' = \''+store+'\' limit 1');
fm = database.query('select '+Checkaccessibility.isAccessible('id, Name, HIC_ShopifySync__GQL_Field_API__c,HIC_ShopifySync__Default_Value__c, HIC_ShopifySync__Shopify_Fields__c','HIC_ShopifySync__HIC_Field_Mapping__c')+' from HIC_ShopifySync__HIC_Field_Mapping__c where '+Checkaccessibility.isAccessible('Name','HIC_ShopifySync__HIC_Field_Mapping__c')+' = \'Opportunity-StageName\' and '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c','HIC_ShopifySync__HIC_Field_Mapping__c')+' = \''+store+'\' limit 1');
system.debug('getDefaultOppStage'+ fm);
if(!fm.isempty() && fm != null && String.isNotBlank(fm[0].HIC_ShopifySync__Shopify_Fields__c)){
return fm[0].HIC_ShopifySync__Shopify_Fields__c;
}else{
Schema.DescribeFieldResult fieldResult = Opportunity.stageName.getDescribe();
List<Schema.PickListEntry> ple = fieldResult.getPickListValues();
if(!ple.isEmpty() && ple != null){
return String.valueOf(ple[0].getLabel());
}
return null;
}
}
/**************************************saveFieldMapping*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Save Field Mapping into the Saleforce Field Mapping Object.
* @param String contactList - List of Contact fieldmapping
* @param String orderList - List of Order fieldmapping
* @param String orderProductList - List of Order Product fieldmapping
* @param String draftOrderList - List of draft Order fieldmapping
* @param String draftOrderProductList - List of order product fieldmapping
* @param String opportunityList - List of Opportunity fieldmapping
* @param String opportunityProductList - List of Opportunity Product fieldmapping
* @param String DefaultAccountForContacts - List of Account and Contact fieldmapping
* @param String DefaultAccountForOrders - List of Default Account for Order and Opportunity fieldmapping
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static boolean saveFieldMapping( String contactList,String orderList,String orderProductList,String draftOrderList,String draftOrderProductList,String opportunityList,String opportunityProductList,String DefaultAccountForContacts,String DefaultAccountForOrders, String store, String isNewStoreMapping){
/*Boolean isNewStoreMappingBoolean = isNewStoreMapping.containsIgnoreCase('true') ? true : false;
if(isNewStoreMappingBoolean){
List<HIC_ShopifySync__HIC_Field_Mapping__c> InitialList = new List<HIC_ShopifySync__HIC_Field_Mapping__c>();
List<HIC_ShopifySync__HIC_Field_Mapping__c> listOfFieldMappingofFixedFields = [SELECT name, HIC_ShopifySync__Default_Value__c, HIC_ShopifySync__External_ID__c, HIC_ShopifySync__IsSFID__c, HIC_ShopifySync__Nested__c, HIC_ShopifySync__Object_Name__c, HIC_ShopifySync__SF_Field__c, HIC_ShopifySync__SF_Field_Type__c, HIC_ShopifySync__Shopify_Fields__c, HIC_ShopifySync__Shopify_Field_Type__c, HIC_ShopifySync__Store__c, HIC_ShopifySync__Store_External_ID__c FROM HIC_ShopifySync__HIC_Field_Mapping__c where HIC_ShopifySync__Store__c = 'Default' LIMIT 49999];
if(!listOfFieldMappingofFixedFields.isEmpty()){
System.debug('listOfFieldMappingofFixedFields-->if');
for(HIC_ShopifySync__HIC_Field_Mapping__c fixedField : listOfFieldMappingofFixedFields ){
HIC_ShopifySync__HIC_Field_Mapping__c cloned = fixedField.clone(false,false,false,false);
InitialList.add(cloned);
}
}
for(HIC_ShopifySync__HIC_Field_Mapping__c checkname :InitialList ){
checkname.HIC_ShopifySync__Store__c = store;
checkname.HIC_ShopifySync__Store_External_ID__c = store+checkname.HIC_ShopifySync__External_ID__c;
if(checkname.name != null && checkname.name != ''){
checkname.name = checkFieldLengthAndReturnValue(checkname.name);
}
}
if(!InitialList.isEmpty()){
upsert InitialList HIC_ShopifySync__Store_External_ID__c;
}
} */
try{
List<HIC_ShopifySync__HIC_Field_Mapping__c> fmList = new List<HIC_ShopifySync__HIC_Field_Mapping__c>();
if(contactList != null && contactList != ' '){
List<FieldMappingWrapper> accFMList = new List<FieldMappingWrapper>();
system.debug('**contactList--'+contactList);
CheckAccessibility.isAccessible('HIC_ShopifySync__External_ID__c,HIC_ShopifySync__GQL_Field_API__c,HIC_ShopifySync__Shopify_Field_Type__c,HIC_ShopifySync__Nested__c,HIC_ShopifySync__Shopify_Fields__c,HIC_ShopifySync__SF_Field_Type__c,Name,HIC_ShopifySync__Object_Name__c,HIC_ShopifySync__SF_Field__c','HIC_ShopifySync__Field_Mapping__c');
CheckAccessibility.isUpsertable('HIC_ShopifySync__External_ID__c,HIC_ShopifySync__GQL_Field_API__c,HIC_ShopifySync__Shopify_Field_Type__c,HIC_ShopifySync__Nested__c,HIC_ShopifySync__Shopify_Fields__c,HIC_ShopifySync__SF_Field_Type__c,Name,HIC_ShopifySync__Object_Name__c,HIC_ShopifySync__SF_Field__c','HIC_ShopifySync__Field_Mapping__c');
accFMList = ( List<FieldMappingWrapper> )JSON.deserialize(contactList, List<FieldMappingWrapper>.class);
for(FieldMappingWrapper ob : accFMList){
System.debug('ob***'+ ob);
System.debug('ObjectSelectfield--> '+ob.selectedfields);
System.debug('ObjectShopifyfield--> '+ ob.shopifyFieldName);
System.debug('ObjectNestedfield--> '+ ob.shopifyNested);
System.debug('Objectgraphqlfield--> '+ ob.graphqlfield);
if(ob.selectedfields != null && ob.selectedfields != ''){
//System.debug('salesforce field'+ob.salesforceFieldLabel);
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.shopifyFieldName != null && ob.shopifyFieldName != ''){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.shopifyFieldName;
}else if(ob.selectedfields != null && ob.selectedfields != ''){
System.debug('ob.selectedfields'+ob.selectedfields);
fm.HIC_ShopifySync__Shopify_Fields__c = '';
if(ob.selectedfields.containsIgnoreCase('.')){
System.debug('ob.selectedfields'+ob.selectedfields);
if(ob.selectedfields.containsIgnoreCase(',')){
System.debug('ob.selectedfields'+ob.selectedfields);
for(String str : ob.selectedfields.split(',')){
List<String> strList = new List<String>();
system.debug('*** str'+str);
strList = str.split('\\.');
System.debug('ob.strList'+strList);
system.debug('**size'+strList.size());
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c += ','+strList[1];
}
}
fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}else{
List<String> strList = new List<String>();
strList = ob.selectedfields.split('\\.');
system.debug('strList-->'+strList);
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c = strList[1];
}
//fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}
}else{
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
}
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
if(fm.HIC_ShopifySync__Default_Value__c){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
fm.HIC_ShopifySync__GQL_Field_API__c = ob.selectedfields;
}
}
if(ob.shopifyNested != null && ob.shopifyNested != ''){
fm.HIC_ShopifySync__Nested__c = ob.shopifyNested;
}else{
fm.HIC_ShopifySync__Nested__c = null;
}
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = ob.sobjectType+'-'+ob.salesforcefields;
if(ob.salesforcefields.contains('HIC_ShopifySync__')){
String tempfieldname = ob.sobjectType+'-'+ob.salesforcefields.replace('HIC_ShopifySync__','HIC_');
fm.Name = tempfieldname;
}else{
fm.Name = ob.sobjectType+'-'+ob.salesforcefields;
}
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != ''&& fm.Name != null && fm.Name != ''){
fmList.add(fm);
}
}else{
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
}
fm.HIC_ShopifySync__Shopify_Fields__c = null;
fm.HIC_ShopifySync__Nested__c = null;
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = ob.sobjectType+'-'+ob.salesforcefields;
if(ob.salesforcefields.contains('HIC_ShopifySync__')){
String tempfieldname = ob.sobjectType+'-'+ob.salesforcefields.replace('HIC_ShopifySync__','HIC_');
fm.Name = tempfieldname;
}else{
fm.Name = ob.sobjectType+'-'+ob.salesforcefields;
}
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != ''&& fm.Name != null && fm.Name != ''){
fmList.add(fm);
}
}
}
}
if(orderList != null && orderList != null){
List<FieldMappingWrapper> ordFMList = new List<FieldMappingWrapper>();
ordFMList = ( List<FieldMappingWrapper> )JSON.deserialize(orderList, List<FieldMappingWrapper>.class);
for(FieldMappingWrapper ob : ordFMList){
System.debug('ob***'+ ob);
if(ob.selectedfields != null && ob.selectedfields != ''){
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.shopifyFieldName != null && ob.shopifyFieldName != ''){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.shopifyFieldName;
}else if(ob.selectedfields != null && ob.selectedfields != ''){
System.debug('ob.selectedfields'+ob.selectedfields);
fm.HIC_ShopifySync__Shopify_Fields__c = '';
if(ob.selectedfields.containsIgnoreCase('.')){
System.debug('ob.selectedfields'+ob.selectedfields);
if(ob.selectedfields.containsIgnoreCase(',')){
System.debug('ob.selectedfields'+ob.selectedfields);
for(String str : ob.selectedfields.split(',')){
List<String> strList = new List<String>();
system.debug('*** str'+str);
strList = str.split('\\.');
System.debug('ob.strList'+strList);
system.debug('**size'+strList.size());
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c += ','+strList[1];
}
}
fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}else{
List<String> strList = new List<String>();
strList = ob.selectedfields.split('\\.');
system.debug('strList-->'+strList);
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c = strList[1];
}
//fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}
}else{
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
}
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
if(fm.HIC_ShopifySync__Default_Value__c){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
fm.HIC_ShopifySync__GQL_Field_API__c = ob.selectedfields;
}
}
if(ob.shopifyNested != null && ob.shopifyNested != ''){
fm.HIC_ShopifySync__Nested__c = ob.shopifyNested;
}else{
fm.HIC_ShopifySync__Nested__c = null;
}
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = ob.sobjectType+'-'+ob.salesforcefields;
if(ob.salesforcefields.contains('HIC_ShopifySync__')){
String tempfieldname = ob.sobjectType+'-'+ob.salesforcefields.replace('HIC_ShopifySync__','HIC_');
fm.Name = tempfieldname;
}else {
fm.Name = ob.sobjectType+'-'+ob.salesforcefields;
}
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != ''&& fm.Name != null && fm.Name != ''){
fmList.add(fm);
}
}else{
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
}
fm.HIC_ShopifySync__Shopify_Fields__c = null;
fm.HIC_ShopifySync__Nested__c = null;
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = ob.sobjectType+'-'+ob.salesforcefields;
if(ob.salesforcefields.contains('HIC_ShopifySync__')){
String tempfieldname = ob.sobjectType+'-'+ob.salesforcefields.replace('HIC_ShopifySync__','HIC_');
fm.Name = tempfieldname;
}else{
fm.Name = ob.sobjectType+'-'+ob.salesforcefields;
}
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != ''&& fm.Name != null && fm.Name != ''){
fmList.add(fm);
}
}
}
}
if(orderProductList != null && orderProductList != ''){
List<FieldMappingWrapper> ordProFMList = new List<FieldMappingWrapper>();
ordProFMList = ( List<FieldMappingWrapper> )JSON.deserialize(orderProductList, List<FieldMappingWrapper>.class);
for(FieldMappingWrapper ob : ordProFMList){
System.debug('ob***'+ ob);
if(ob.selectedfields != null && ob.selectedfields != ''){
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.shopifyFieldName != null && ob.shopifyFieldName != ''){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.shopifyFieldName;
}else if(ob.selectedfields != null && ob.selectedfields != ''){
System.debug('ob.selectedfields'+ob.selectedfields);
fm.HIC_ShopifySync__Shopify_Fields__c = '';
if(ob.selectedfields.containsIgnoreCase('.')){
System.debug('ob.selectedfields'+ob.selectedfields);
if(ob.selectedfields.containsIgnoreCase(',')){
System.debug('ob.selectedfields'+ob.selectedfields);
for(String str : ob.selectedfields.split(',')){
List<String> strList = new List<String>();
system.debug('*** str'+str);
strList = str.split('\\.');
System.debug('ob.strList'+strList);
system.debug('**size'+strList.size());
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c += ','+strList[1];
}
}
fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}else{
List<String> strList = new List<String>();
strList = ob.selectedfields.split('\\.');
system.debug('strList-->'+strList);
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c = strList[1];
}
//fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}
}else{
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
}
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
if(fm.HIC_ShopifySync__Default_Value__c){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
fm.HIC_ShopifySync__GQL_Field_API__c = ob.selectedfields;
}
}
if(ob.shopifyNested != null && ob.shopifyNested != ''){
fm.HIC_ShopifySync__Nested__c = ob.shopifyNested;
}else{
fm.HIC_ShopifySync__Nested__c = null;
}
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = ob.sobjectType+'-'+ob.salesforcefields;
if(ob.salesforcefields.contains('HIC_ShopifySync__')){
String tempfieldname = ob.sobjectType+'-'+ob.salesforcefields.replace('HIC_ShopifySync__','HIC_');
fm.Name = tempfieldname;
}else{
fm.Name = ob.sobjectType+'-'+ob.salesforcefields;
}
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != ''&& fm.Name != null && fm.Name != ''){
fmList.add(fm);
}
}else{
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
}
fm.HIC_ShopifySync__Shopify_Fields__c = null;
fm.HIC_ShopifySync__Nested__c = null;
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = ob.sobjectType+'-'+ob.salesforcefields;
if(ob.salesforcefields.contains('HIC_ShopifySync__')){
String tempfieldname = ob.sobjectType+'-'+ob.salesforcefields.replace('HIC_ShopifySync__','HIC_');
fm.Name = tempfieldname;
}else{
fm.Name = ob.sobjectType+'-'+ob.salesforcefields;
}
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != ''&& fm.Name != null && fm.Name != ''){
fmList.add(fm);
}
}
}
}
if(draftOrderList != null && draftOrderList != null){
List<FieldMappingWrapper> drfOrdFMList = new List<FieldMappingWrapper>();
drfOrdFMList = ( List<FieldMappingWrapper> )JSON.deserialize(draftOrderList, List<FieldMappingWrapper>.class);
for(FieldMappingWrapper ob : drfOrdFMList){
System.debug('ob***'+ ob);
if(ob.selectedfields != null && ob.selectedfields != ''){
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.shopifyFieldName != null && ob.shopifyFieldName != ''){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.shopifyFieldName;
}else if(ob.selectedfields != null && ob.selectedfields != ''){
System.debug('ob.selectedfields'+ob.selectedfields);
fm.HIC_ShopifySync__Shopify_Fields__c = '';
if(ob.selectedfields.containsIgnoreCase('.')){
System.debug('ob.selectedfields'+ob.selectedfields);
if(ob.selectedfields.containsIgnoreCase(',')){
System.debug('ob.selectedfields'+ob.selectedfields);
for(String str : ob.selectedfields.split(',')){
List<String> strList = new List<String>();
system.debug('*** str'+str);
strList = str.split('\\.');
System.debug('ob.strList'+strList);
system.debug('**size'+strList.size());
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c += ','+strList[1];
}
}
fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}else{
List<String> strList = new List<String>();
strList = ob.selectedfields.split('\\.');
system.debug('strList-->'+strList);
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c = strList[1];
}
//fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}
}else{
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
}
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
if(fm.HIC_ShopifySync__Default_Value__c){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
fm.HIC_ShopifySync__GQL_Field_API__c = ob.selectedfields;
}
}
if(ob.shopifyNested != null && ob.shopifyNested != ''){
fm.HIC_ShopifySync__Nested__c = ob.shopifyNested;
}else{
fm.HIC_ShopifySync__Nested__c = null;
}
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = ob.sobjectType+'-'+ob.salesforcefields;
if(ob.salesforcefields.contains('HIC_ShopifySync__')){
String tempfieldname = ob.sobjectType+'-'+ob.salesforcefields.replace('HIC_ShopifySync__','HIC_');
fm.Name = tempfieldname;
}else {
fm.Name = ob.sobjectType+'-'+ob.salesforcefields;
}
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != ''&& fm.Name != null && fm.Name != ''){
fmList.add(fm);
}
}else{
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
}
fm.HIC_ShopifySync__Shopify_Fields__c = null;
fm.HIC_ShopifySync__Nested__c = null;
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = ob.sobjectType+'-'+ob.salesforcefields;
if(ob.salesforcefields.contains('HIC_ShopifySync__')){
String tempfieldname = ob.sobjectType+'-'+ob.salesforcefields.replace('HIC_ShopifySync__','HIC_');
fm.Name = tempfieldname;
}else{
fm.Name = ob.sobjectType+'-'+ob.salesforcefields;
}
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != ''&& fm.Name != null && fm.Name != ''){
fmList.add(fm);
}
}
}
}
if(draftOrderProductList != null && draftOrderProductList != ''){
List<FieldMappingWrapper> drfOrdProFMList = new List<FieldMappingWrapper>();
drfOrdProFMList = ( List<FieldMappingWrapper> )JSON.deserialize(draftOrderProductList, List<FieldMappingWrapper>.class);
for(FieldMappingWrapper ob : drfOrdProFMList){
System.debug('ob***'+ ob);
if(ob.selectedfields != null && ob.selectedfields != ''){
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.shopifyFieldName != null && ob.shopifyFieldName != ''){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.shopifyFieldName;
}else if(ob.selectedfields != null && ob.selectedfields != ''){
System.debug('ob.selectedfields'+ob.selectedfields);
fm.HIC_ShopifySync__Shopify_Fields__c = '';
if(ob.selectedfields.containsIgnoreCase('.')){
System.debug('ob.selectedfields'+ob.selectedfields);
if(ob.selectedfields.containsIgnoreCase(',')){
System.debug('ob.selectedfields'+ob.selectedfields);
for(String str : ob.selectedfields.split(',')){
List<String> strList = new List<String>();
system.debug('*** str'+str);
strList = str.split('\\.');
System.debug('ob.strList'+strList);
system.debug('**size'+strList.size());
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c += ','+strList[1];
}
}
fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}else{
List<String> strList = new List<String>();
strList = ob.selectedfields.split('\\.');
system.debug('strList-->'+strList);
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c = strList[1];
}
//fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}
}else{
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
}
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
if(fm.HIC_ShopifySync__Default_Value__c){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
fm.HIC_ShopifySync__GQL_Field_API__c = ob.selectedfields;
}
}
if(ob.shopifyNested != null && ob.shopifyNested != ''){
fm.HIC_ShopifySync__Nested__c = ob.shopifyNested;
}else{
fm.HIC_ShopifySync__Nested__c = null;
}
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = ob.sobjectType+'-'+ob.salesforcefields;
if(ob.salesforcefields.contains('HIC_ShopifySync__')){
String tempfieldname = ob.sobjectType+'-'+ob.salesforcefields.replace('HIC_ShopifySync__','HIC_');
fm.Name = tempfieldname;
}else{
fm.Name = ob.sobjectType+'-'+ob.salesforcefields;
}
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != ''&& fm.Name != null && fm.Name != ''){
fmList.add(fm);
}
}else{
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
}
fm.HIC_ShopifySync__Shopify_Fields__c = null;
fm.HIC_ShopifySync__Nested__c = null;
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = ob.sobjectType+'-'+ob.salesforcefields;
if(ob.salesforcefields.contains('HIC_ShopifySync__')){
String tempfieldname = ob.sobjectType+'-'+ob.salesforcefields.replace('HIC_ShopifySync__','HIC_');
fm.Name = tempfieldname;
}else{
fm.Name = ob.sobjectType+'-'+ob.salesforcefields;
}
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != ''&& fm.Name != null && fm.Name != ''){
fmList.add(fm);
}
}
}
}
if(opportunityList!= null && opportunityList != ''){
List<FieldMappingWrapper> oppFMList = new List<FieldMappingWrapper>();
oppFMList = ( List<FieldMappingWrapper> )JSON.deserialize(opportunityList, List<FieldMappingWrapper>.class);
for(FieldMappingWrapper ob : oppFMList){
System.debug('ob***'+ ob);
if(ob.selectedfields != null && ob.selectedfields != ''){
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.shopifyFieldName != null && ob.shopifyFieldName != ''){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.shopifyFieldName;
}else if(ob.selectedfields != null && ob.selectedfields != ''){
System.debug('ob.selectedfields'+ob.selectedfields);
fm.HIC_ShopifySync__Shopify_Fields__c = '';
if(ob.selectedfields.containsIgnoreCase('.')){
System.debug('ob.selectedfields'+ob.selectedfields);
if(ob.selectedfields.containsIgnoreCase(',')){
System.debug('ob.selectedfields'+ob.selectedfields);
for(String str : ob.selectedfields.split(',')){
List<String> strList = new List<String>();
system.debug('*** str'+str);
strList = str.split('\\.');
System.debug('ob.strList'+strList);
system.debug('**size'+strList.size());
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c += ','+strList[1];
}
}
fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}else{
List<String> strList = new List<String>();
strList = ob.selectedfields.split('\\.');
system.debug('strList-->'+strList);
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c = strList[1];
}
//fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}
}else{
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
}
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
if(fm.HIC_ShopifySync__Default_Value__c){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
fm.HIC_ShopifySync__GQL_Field_API__c = ob.selectedfields;
}
}
if(ob.shopifyNested != null && ob.shopifyNested != ''){
fm.HIC_ShopifySync__Nested__c = ob.shopifyNested;
}else{
fm.HIC_ShopifySync__Nested__c = null;
}
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = ob.sobjectType+'-'+ob.salesforcefields;
if(ob.salesforcefields.contains('HIC_ShopifySync__')){
String tempfieldname = ob.sobjectType+'-'+ob.salesforcefields.replace('HIC_ShopifySync__','HIC_');
fm.Name = tempfieldname;
}else{
fm.Name = ob.sobjectType+'-'+ob.salesforcefields;
}
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != ''&& fm.Name != null && fm.Name != ''){
fmList.add(fm);
}
}else{
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
}
fm.HIC_ShopifySync__Shopify_Fields__c = null;
fm.HIC_ShopifySync__Nested__c = null;
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = ob.sobjectType+'-'+ob.salesforcefields;
if(ob.salesforcefields.contains('HIC_ShopifySync__')){
String tempfieldname = ob.sobjectType+'-'+ob.salesforcefields.replace('HIC_ShopifySync__','HIC_');
fm.Name = tempfieldname;
}else{
fm.Name = ob.sobjectType+'-'+ob.salesforcefields;
}
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != ''&& fm.Name != null && fm.Name != ''){
fmList.add(fm);
}
}
}
}
if(opportunityProductList!= null && opportunityProductList!= ''){
List<FieldMappingWrapper> oppProFMList = new List<FieldMappingWrapper>();
oppProFMList = ( List<FieldMappingWrapper> )JSON.deserialize(opportunityProductList, List<FieldMappingWrapper>.class);
for(FieldMappingWrapper ob : oppProFMList){
System.debug('ob***'+ ob);
if(ob.selectedfields != null && ob.selectedfields != ''){
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.shopifyFieldName != null && ob.shopifyFieldName != ''){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.shopifyFieldName;
}
else if(ob.selectedfields != null && ob.selectedfields != ''){
System.debug('ob.selectedfields'+ob.selectedfields);
fm.HIC_ShopifySync__Shopify_Fields__c = '';
if(ob.selectedfields.containsIgnoreCase('.')){
System.debug('ob.selectedfields'+ob.selectedfields);
if(ob.selectedfields.containsIgnoreCase(',')){
System.debug('ob.selectedfields'+ob.selectedfields);
for(String str : ob.selectedfields.split(',')){
List<String> strList = new List<String>();
system.debug('*** str'+str);
strList = str.split('\\.');
System.debug('ob.strList'+strList);
system.debug('**size'+strList.size());
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c += ','+strList[1];
}
}
fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}else{
List<String> strList = new List<String>();
strList = ob.selectedfields.split('\\.');
system.debug('strList-->'+strList);
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c = strList[1];
}
//fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}
}else{
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
}
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
if(fm.HIC_ShopifySync__Default_Value__c){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
fm.HIC_ShopifySync__GQL_Field_API__c = ob.selectedfields;
}
}
if(ob.shopifyNested != null && ob.shopifyNested != ''){
fm.HIC_ShopifySync__Nested__c = ob.shopifyNested;
}else{
fm.HIC_ShopifySync__Nested__c = null;
}
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = ob.sobjectType+'-'+ob.salesforcefields;
if(ob.salesforcefields.contains('HIC_ShopifySync__')){
String tempfieldname = ob.sobjectType+'-'+ob.salesforcefields.replace('HIC_ShopifySync__','HIC_');
fm.Name = tempfieldname;
}else{
fm.Name = ob.sobjectType+'-'+ob.salesforcefields;
}
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != '' && fm.Name != null && fm.Name != ''){
fmList.add(fm);
}
}else{
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
}
fm.HIC_ShopifySync__Shopify_Fields__c = null;
fm.HIC_ShopifySync__Nested__c = null;
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = ob.sobjectType+'-'+ob.salesforcefields;
if(ob.salesforcefields.contains('HIC_ShopifySync__')){
String tempfieldname = ob.sobjectType+'-'+ob.salesforcefields.replace('HIC_ShopifySync__','HIC_');
fm.Name = tempfieldname;
}else{
fm.Name = ob.sobjectType+'-'+ob.salesforcefields;
}
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != ''&& fm.Name != null && fm.Name != ''){
fmList.add(fm);
}
}
}
}
Account acc = new Account();
acc = ( Account )JSON.deserialize(DefaultAccountForContacts, Account.class);
for(HIC_ShopifySync__HIC_Field_Mapping__c fieldMapping : [select Id, Name,HIC_ShopifySync__GQL_Field_API__c, HIC_ShopifySync__Default_Value__c, HIC_ShopifySync__External_ID__c, HIC_ShopifySync__Object_Name__c, HIC_ShopifySync__SF_Field__c, HIC_ShopifySync__Shopify_Field_Type__c, HIC_ShopifySync__SF_Field_Type__c, HIC_ShopifySync__Shopify_Fields__c, HIC_ShopifySync__Nested__c from HIC_ShopifySync__HIC_Field_Mapping__c where HIC_ShopifySync__Store__c='default' AND HIC_ShopifySync__SF_Field__c ='Accountid']){
HIC_ShopifySync__HIC_Field_Mapping__c clonedMapping = fieldMapping.clone(false,false,true,false);
if(acc != null && acc.get('Id') != null && acc.get('Id') != ''){
clonedMapping.HIC_ShopifySync__Default_Value__c = true;
clonedMapping.HIC_ShopifySync__Shopify_Fields__c = String.valueOf(acc.get('Id'));
clonedMapping.HIC_ShopifySync__GQL_Field_API__c = String.valueOf(acc.get('Id'));
}
fmList.add(clonedMapping);
}
/*if(acc != null){
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
fm.Name = 'Contact-Accountid';
fm.HIC_ShopifySync__External_ID__c = 'Contact-Accountid';
fm.HIC_ShopifySync__Default_Value__c = true;
fm.HIC_ShopifySync__Object_Name__c = 'Contact';
fm.HIC_ShopifySync__SF_Field__c = 'Accountid';
fm.HIC_ShopifySync__Shopify_Field_Type__c = 'String';
fm.HIC_ShopifySync__SF_Field_Type__c = 'REFERENCE';
if(acc.get('Id') != null && acc.get('Id') != ''){
fm.HIC_ShopifySync__Shopify_Fields__c = String.valueOf(acc.get('Id'));
}
fmList.add(fm);
HIC_ShopifySync__HIC_Field_Mapping__c fm1 = new HIC_ShopifySync__HIC_Field_Mapping__c();
fm1.Name = 'Opportunity-Accountid';
fm1.HIC_ShopifySync__External_ID__c = 'Opportunity-Accountid';
fm1.HIC_ShopifySync__Default_Value__c = true;
fm1.HIC_ShopifySync__Object_Name__c = 'Opportunity';
fm1.HIC_ShopifySync__SF_Field__c = 'Accountid';
fm1.HIC_ShopifySync__Shopify_Field_Type__c = 'String';
fm1.HIC_ShopifySync__SF_Field_Type__c = 'REFERENCE';
fm1.HIC_ShopifySync__Nested__c = null;
if(acc.get('Id') != null && acc.get('Id') != ''){
fm1.HIC_ShopifySync__Shopify_Fields__c = String.valueOf(acc.get('Id'));
}
fmList.add(fm1);
HIC_ShopifySync__HIC_Field_Mapping__c fm2 = new HIC_ShopifySync__HIC_Field_Mapping__c();
fm2.Name = 'Order-Accountid';
fm2.HIC_ShopifySync__External_ID__c = 'Order-Accountid';
fm2.HIC_ShopifySync__Default_Value__c = true;
fm2.HIC_ShopifySync__Object_Name__c = 'Order';
fm2.HIC_ShopifySync__SF_Field__c = 'Accountid';
fm2.HIC_ShopifySync__Shopify_Field_Type__c = 'String';
fm2.HIC_ShopifySync__SF_Field_Type__c = 'REFERENCE';
if(acc.get('Id') != null && acc.get('Id') != ''){
fm2.HIC_ShopifySync__Shopify_Fields__c = String.valueOf(acc.get('Id'));
}
fmList.add(fm2);
HIC_ShopifySync__HIC_Field_Mapping__c fm3 = new HIC_ShopifySync__HIC_Field_Mapping__c();
fm3.Name = 'DraftOrder-Accountid';
fm3.HIC_ShopifySync__External_ID__c = 'DraftOrder-Accountid';
fm3.HIC_ShopifySync__Default_Value__c = true;
fm3.HIC_ShopifySync__Object_Name__c = 'DraftOrder';
fm3.HIC_ShopifySync__SF_Field__c = 'Accountid';
fm3.HIC_ShopifySync__Shopify_Field_Type__c = 'String';
fm3.HIC_ShopifySync__SF_Field_Type__c = 'REFERENCE';
if(acc.get('Id') != null && acc.get('Id') != ''){
fm3.HIC_ShopifySync__Shopify_Fields__c = String.valueOf(acc.get('Id'));
}
fmList.add(fm3);
}else{
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
fm.Name = 'Contact-Accountid';
fm.HIC_ShopifySync__External_ID__c = 'Contact-Accountid';
fm.HIC_ShopifySync__Default_Value__c = false;
fm.HIC_ShopifySync__Object_Name__c = 'Contact';
fm.HIC_ShopifySync__SF_Field__c = 'Accountid';
fm.HIC_ShopifySync__Shopify_Field_Type__c = 'String';
fm.HIC_ShopifySync__SF_Field_Type__c = 'REFERENCE';
fm.HIC_ShopifySync__Shopify_Fields__c = 'id';
fmList.add(fm);
HIC_ShopifySync__HIC_Field_Mapping__c fm1 = new HIC_ShopifySync__HIC_Field_Mapping__c();
fm1.Name = 'Opportunity-Accountid';
fm1.HIC_ShopifySync__External_ID__c = 'Opportunity-Accountid';
fm1.HIC_ShopifySync__Default_Value__c = false;
fm1.HIC_ShopifySync__Object_Name__c = 'Opportunity';
fm1.HIC_ShopifySync__SF_Field__c = 'Accountid';
fm1.HIC_ShopifySync__Shopify_Field_Type__c = 'String';
fm1.HIC_ShopifySync__SF_Field_Type__c = 'REFERENCE';
fm1.HIC_ShopifySync__Nested__c = 'customer';
fm1.HIC_ShopifySync__Shopify_Fields__c = 'Id';
fmList.add(fm1);
HIC_ShopifySync__HIC_Field_Mapping__c fm2 = new HIC_ShopifySync__HIC_Field_Mapping__c();
fm2.Name = 'Order-Accountid';
fm2.HIC_ShopifySync__External_ID__c = 'Order-Accountid';
fm2.HIC_ShopifySync__Default_Value__c = false;
fm2.HIC_ShopifySync__Object_Name__c = 'Order';
fm2.HIC_ShopifySync__SF_Field__c = 'Accountid';
fm2.HIC_ShopifySync__Shopify_Field_Type__c = 'String';
fm2.HIC_ShopifySync__SF_Field_Type__c = 'REFERENCE';
fm2.HIC_ShopifySync__Nested__c = 'customer';
fm2.HIC_ShopifySync__Shopify_Fields__c = 'Id';
fmList.add(fm2);
HIC_ShopifySync__HIC_Field_Mapping__c fm3 = new HIC_ShopifySync__HIC_Field_Mapping__c();
fm3.Name = 'DraftOrder-Accountid';
fm3.HIC_ShopifySync__External_ID__c = 'DraftOrder-Accountid';
fm3.HIC_ShopifySync__Default_Value__c = false;
fm3.HIC_ShopifySync__Object_Name__c = 'DraftOrder';
fm3.HIC_ShopifySync__SF_Field__c = 'Accountid';
fm3.HIC_ShopifySync__Shopify_Field_Type__c = 'String';
fm3.HIC_ShopifySync__SF_Field_Type__c = 'REFERENCE';
fm3.HIC_ShopifySync__Nested__c = 'customer';
fm3.HIC_ShopifySync__Shopify_Fields__c = 'Id';
fmList.add(fm3);
}*/
//check field's value length
if(!fmList.isEmpty() && fmList.size() > 0){
System.debug('listOfFieldMappingofFixedFields-->');
/*list<HIC_ShopifySync__HIC_Field_Mapping__c> listOfFieldMappingofFixedFields = new list<HIC_ShopifySync__HIC_Field_Mapping__c>();
if(isNewStoreMappingBoolean){
listOfFieldMappingofFixedFields = [SELECT name, HIC_ShopifySync__Default_Value__c, HIC_ShopifySync__External_ID__c, HIC_ShopifySync__IsSFID__c, HIC_ShopifySync__Nested__c, HIC_ShopifySync__Object_Name__c, HIC_ShopifySync__SF_Field__c, HIC_ShopifySync__SF_Field_Type__c, HIC_ShopifySync__Shopify_Fields__c, HIC_ShopifySync__Shopify_Field_Type__c, HIC_ShopifySync__Store__c, HIC_ShopifySync__Store_External_ID__c FROM HIC_ShopifySync__HIC_Field_Mapping__c where HIC_ShopifySync__Store__c = 'Default' and (HIC_ShopifySync__Object_Name__c = 'HIC_ShopifySync__Inventory__c' Or
HIC_ShopifySync__Object_Name__c = 'Product2' Or
HIC_ShopifySync__Object_Name__c = 'HIC_ShopifySync__Collect__c' Or
HIC_ShopifySync__Object_Name__c = 'HIC_ShopifySync__Inventory_Level__c' Or
HIC_ShopifySync__Object_Name__c = 'HIC_ShopifySync__Location__c' Or
HIC_ShopifySync__Object_Name__c = 'HIC_ShopifySync__Collection__c' Or
HIC_ShopifySync__Object_Name__c = 'HIC_ShopifySync__Order_Fulfillment_Item__c' Or
HIC_ShopifySync__Object_Name__c = 'HIC_ShopifySync__Variant__c' or (HIC_ShopifySync__SF_Field_Type__c = 'REFERENCE' AND HIC_ShopifySync__SF_Field__c != 'Accountid'))
];
}else{
listOfFieldMappingofFixedFields = [SELECT name, HIC_ShopifySync__Default_Value__c, HIC_ShopifySync__External_ID__c, HIC_ShopifySync__IsSFID__c, HIC_ShopifySync__Nested__c, HIC_ShopifySync__Object_Name__c, HIC_ShopifySync__SF_Field__c, HIC_ShopifySync__SF_Field_Type__c, HIC_ShopifySync__Shopify_Fields__c, HIC_ShopifySync__Shopify_Field_Type__c, HIC_ShopifySync__Store__c, HIC_ShopifySync__Store_External_ID__c FROM HIC_ShopifySync__HIC_Field_Mapping__c where HIC_ShopifySync__Store__c = 'Default' AND
HIC_ShopifySync__SF_Field__c != 'Accountid'
];
}
System.debug('listOfFieldMappingofFixedFields--> '+listOfFieldMappingofFixedFields.size());
if(!listOfFieldMappingofFixedFields.isEmpty()){
System.debug('listOfFieldMappingofFixedFields-->if');
for(HIC_ShopifySync__HIC_Field_Mapping__c fixedField : listOfFieldMappingofFixedFields ){
HIC_ShopifySync__HIC_Field_Mapping__c cloned = fixedField.clone(false,false,false,false);
fmList.add(cloned);
}
}
*/
/*list<HIC_ShopifySync__HIC_Field_Mapping__c> listOfFieldMappingofFixedFields = new list<HIC_ShopifySync__HIC_Field_Mapping__c>();
if(isNewStoreMappingBoolean){
listOfFieldMappingofFixedFields = [SELECT name, HIC_ShopifySync__Default_Value__c, HIC_ShopifySync__External_ID__c, HIC_ShopifySync__IsSFID__c, HIC_ShopifySync__Nested__c, HIC_ShopifySync__Object_Name__c, HIC_ShopifySync__SF_Field__c, HIC_ShopifySync__SF_Field_Type__c, HIC_ShopifySync__Shopify_Fields__c, HIC_ShopifySync__Shopify_Field_Type__c, HIC_ShopifySync__Store__c, HIC_ShopifySync__Store_External_ID__c FROM HIC_ShopifySync__HIC_Field_Mapping__c where HIC_ShopifySync__Store__c = 'Default' AND
(HIC_ShopifySync__Shopify_Field_Type__c = 'Reference' or Name = 'Order-Status')
];
}
System.debug('listOfFieldMappingofFixedFields--> '+listOfFieldMappingofFixedFields.size());
if(!listOfFieldMappingofFixedFields.isEmpty()){
System.debug('listOfFieldMappingofFixedFields-->if');
for(HIC_ShopifySync__HIC_Field_Mapping__c fixedField : listOfFieldMappingofFixedFields ){
HIC_ShopifySync__HIC_Field_Mapping__c cloned = fixedField.clone(false,false,false,false);
fmList.add(cloned);
}
}*/
for(HIC_ShopifySync__HIC_Field_Mapping__c checkname :fmList ){
checkname.HIC_ShopifySync__Store__c = store;
checkname.HIC_ShopifySync__Store_External_ID__c = store+checkname.HIC_ShopifySync__External_ID__c;
if(checkname.name != null && checkname.name != ''){
checkname.name = checkFieldLengthAndReturnValue(checkname.name);
}
}
if(!fmList.isEmpty()){
upsert fmList HIC_ShopifySync__Store_External_ID__c;
//Update fmList;
}
}
return true;
}catch( Exception e ){
System.debug('Exception'+e.getMessage()+'at line'+e.getLineNumber());
}
return false;
}
/**************************************saveFieldMappingSecond*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Save account & Contact / Person Account Field mapping
* ──────────────────────────────────────────────────────────────────────────────────────────────
* @param String accountList - List of Account field mapping
* @param String DefaultOpportunityStage - Default Opportunity stage selected by the user
* @param String today - Identify records its person account or not
* @param boolean check - check true means user selected the default value into the page
* @param boolean Defaultmapping - Deafult Close date mapping by user
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static boolean saveFieldMappingSecond(String accountList, String productList, String variantList, String DefaultOpportunityStage , String today, boolean check ,boolean Defaultmapping, String store ){
try{
List<HIC_ShopifySync__HIC_Field_Mapping__c> fmList = new List<HIC_ShopifySync__HIC_Field_Mapping__c>();
if(productList != null && productList != null){
List<FieldMappingWrapper> proFMList = new List<FieldMappingWrapper>();
proFMList = ( List<FieldMappingWrapper> )JSON.deserialize(productList, List<FieldMappingWrapper>.class);
for(FieldMappingWrapper ob : proFMList){
System.debug('ob***'+ ob);
if(ob.selectedfields != null && ob.selectedfields != ''){
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.shopifyFieldName != null && ob.shopifyFieldName != ''){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.shopifyFieldName;
}else if(ob.selectedfields != null && ob.selectedfields != ''){
System.debug('ob.selectedfields'+ob.selectedfields);
fm.HIC_ShopifySync__Shopify_Fields__c = '';
if(ob.selectedfields.containsIgnoreCase('.')){
System.debug('ob.selectedfields'+ob.selectedfields);
if(ob.selectedfields.containsIgnoreCase(',')){
System.debug('ob.selectedfields'+ob.selectedfields);
for(String str : ob.selectedfields.split(',')){
List<String> strList = new List<String>();
system.debug('*** str'+str);
strList = str.split('\\.');
System.debug('ob.strList'+strList);
system.debug('**size'+strList.size());
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c += ','+strList[1];
}
}
fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}else{
List<String> strList = new List<String>();
strList = ob.selectedfields.split('\\.');
system.debug('strList-->'+strList);
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c = strList[1];
}
//fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}
}else{
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
}
}else if(ob.graphqlfield != null && ob.graphqlfield != ''){
System.debug('ob.graphqlfield'+ob.graphqlfield);
fm.HIC_ShopifySync__GQL_Field_API__c = '';
if(ob.graphqlfield.containsIgnoreCase('.')){
System.debug('ob.graphqlfield'+ob.graphqlfield);
if(ob.graphqlfield.containsIgnoreCase(',')){
System.debug('ob.graphqlfield'+ob.graphqlfield);
for(String str : ob.graphqlfield.split(',')){
List<String> strList = new List<String>();
system.debug('*** str'+str);
strList = str.split('\\.');
System.debug('ob.strList'+strList);
system.debug('**size'+strList.size());
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__GQL_Field_API__c += ','+strList[1];
}
}
fm.HIC_ShopifySync__GQL_Field_API__c = fm.HIC_ShopifySync__GQL_Field_API__c.removeStart(',');
}else{
List<String> strList = new List<String>();
strList = ob.graphqlfield.split('\\.');
system.debug('strList-->'+strList);
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__GQL_Field_API__c = strList[1];
}
//fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}
}else{
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
if(fm.HIC_ShopifySync__Default_Value__c){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
fm.HIC_ShopifySync__GQL_Field_API__c = ob.selectedfields;
}
}
if(ob.shopifyNested != null && ob.shopifyNested != ''){
fm.HIC_ShopifySync__Nested__c = ob.shopifyNested;
}else{
fm.HIC_ShopifySync__Nested__c = null;
}
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = ob.sobjectType+'-'+ob.salesforcefields;
if(ob.salesforcefields.contains('HIC_ShopifySync__')){
String tempfieldname = ob.sobjectType+'-'+ob.salesforcefields.replace('HIC_ShopifySync__','HIC_');
fm.Name = tempfieldname;
}else {
fm.Name = ob.sobjectType+'-'+ob.salesforcefields;
}
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != ''&& fm.Name != null && fm.Name != ''){
fmList.add(fm);
}
}else{
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
}
fm.HIC_ShopifySync__Shopify_Fields__c = null;
fm.HIC_ShopifySync__Nested__c = null;
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = ob.sobjectType+'-'+ob.salesforcefields;
if(ob.salesforcefields.contains('HIC_ShopifySync__')){
String tempfieldname = ob.sobjectType+'-'+ob.salesforcefields.replace('HIC_ShopifySync__','HIC_');
fm.Name = tempfieldname;
}else{
fm.Name = ob.sobjectType+'-'+ob.salesforcefields;
}
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != ''&& fm.Name != null && fm.Name != ''){
fmList.add(fm);
}
}
}
}
if(variantList != null && variantList != ''){
List<FieldMappingWrapper> variantFMList = new List<FieldMappingWrapper>();
variantFMList = ( List<FieldMappingWrapper> )JSON.deserialize(variantList, List<FieldMappingWrapper>.class);
for(FieldMappingWrapper ob : variantFMList){
System.debug('ob***'+ ob);
if(ob.selectedfields != null && ob.selectedfields != ''){
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.shopifyFieldName != null && ob.shopifyFieldName != ''){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.shopifyFieldName;
}else if(ob.selectedfields != null && ob.selectedfields != ''){
System.debug('ob.selectedfields'+ob.selectedfields);
fm.HIC_ShopifySync__Shopify_Fields__c = '';
if(ob.selectedfields.containsIgnoreCase('.')){
System.debug('ob.selectedfields'+ob.selectedfields);
if(ob.selectedfields.containsIgnoreCase(',')){
System.debug('ob.selectedfields'+ob.selectedfields);
for(String str : ob.selectedfields.split(',')){
List<String> strList = new List<String>();
system.debug('*** str'+str);
strList = str.split('\\.');
System.debug('ob.strList'+strList);
system.debug('**size'+strList.size());
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c += ','+strList[1];
}
}
fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}else{
List<String> strList = new List<String>();
strList = ob.selectedfields.split('\\.');
system.debug('strList-->'+strList);
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c = strList[1];
}
//fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}
}else{
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
}
}else if(ob.graphqlfield != null && ob.graphqlfield != ''){
System.debug('ob.graphqlfield'+ob.graphqlfield);
fm.HIC_ShopifySync__GQL_Field_API__c = '';
if(ob.graphqlfield.containsIgnoreCase('.')){
System.debug('ob.graphqlfield'+ob.graphqlfield);
if(ob.graphqlfield.containsIgnoreCase(',')){
System.debug('ob.graphqlfield'+ob.graphqlfield);
for(String str : ob.graphqlfield.split(',')){
List<String> strList = new List<String>();
system.debug('*** str'+str);
strList = str.split('\\.');
System.debug('ob.strList'+strList);
system.debug('**size'+strList.size());
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__GQL_Field_API__c += ','+strList[1];
}
}
fm.HIC_ShopifySync__GQL_Field_API__c = fm.HIC_ShopifySync__GQL_Field_API__c.removeStart(',');
}else{
List<String> strList = new List<String>();
strList = ob.graphqlfield.split('\\.');
system.debug('strList-->'+strList);
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__GQL_Field_API__c = strList[1];
}
//fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}
}else{
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
if(fm.HIC_ShopifySync__Default_Value__c){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
fm.HIC_ShopifySync__GQL_Field_API__c = ob.selectedfields;
}
}
if(ob.shopifyNested != null && ob.shopifyNested != ''){
fm.HIC_ShopifySync__Nested__c = ob.shopifyNested;
}else{
fm.HIC_ShopifySync__Nested__c = null;
}
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = ob.sobjectType+'-'+ob.salesforcefields;
if(ob.salesforcefields.contains('HIC_ShopifySync__')){
String tempfieldname = ob.sobjectType+'-'+ob.salesforcefields.replace('HIC_ShopifySync__','HIC_');
fm.Name = tempfieldname;
}else{
fm.Name = ob.sobjectType+'-'+ob.salesforcefields;
}
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != ''&& fm.Name != null && fm.Name != ''){
fmList.add(fm);
}
}else{
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
}
fm.HIC_ShopifySync__Shopify_Fields__c = null;
fm.HIC_ShopifySync__Nested__c = null;
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = ob.sobjectType+'-'+ob.salesforcefields;
if(ob.salesforcefields.contains('HIC_ShopifySync__')){
String tempfieldname = ob.sobjectType+'-'+ob.salesforcefields.replace('HIC_ShopifySync__','HIC_');
fm.Name = tempfieldname;
}else{
fm.Name = ob.sobjectType+'-'+ob.salesforcefields;
}
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != ''&& fm.Name != null && fm.Name != ''){
fmList.add(fm);
}
}
}
}
if(DefaultOpportunityStage != null && DefaultOpportunityStage != ''){
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
fm.Name = 'Opportunity-StageName';
fm.HIC_ShopifySync__External_ID__c = 'Opportunity-StageName';
fm.HIC_ShopifySync__Default_Value__c = true;
fm.HIC_ShopifySync__Object_Name__c = 'Opportunity';
fm.HIC_ShopifySync__SF_Field__c = 'StageName';
fm.HIC_ShopifySync__Shopify_Field_Type__c = 'pickList';
fm.HIC_ShopifySync__Shopify_Fields__c = DefaultOpportunityStage;
fm.HIC_ShopifySync__GQL_Field_API__c = DefaultOpportunityStage;
fmList.add(fm);
}
System.debug('today---'+today);
if(check && today != null && today != ''){
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
fm.Name = 'Opportunity-CloseDate';
fm.HIC_ShopifySync__External_ID__c = 'Opportunity-CloseDate';
fm.HIC_ShopifySync__Default_Value__c = true;
fm.HIC_ShopifySync__Object_Name__c = 'Opportunity';
fm.HIC_ShopifySync__SF_Field__c = 'CloseDate';
fm.HIC_ShopifySync__Shopify_Field_Type__c = 'date';
fm.HIC_ShopifySync__SF_Field_Type__c = 'Date';
fm.HIC_ShopifySync__Shopify_Fields__c = today;
fm.HIC_ShopifySync__GQL_Field_API__c=today;
fmList.add(fm);
}else if(!Defaultmapping){
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
fm.Name = 'Opportunity-CloseDate';
//fm.HIC_ShopifySync__Default_Value__c = false;
fm.HIC_ShopifySync__External_ID__c = 'Opportunity-CloseDate';
fmList.add(fm);
}
List<FieldMappingWrapper> accFMList = new List<FieldMappingWrapper>();
if(fmList.size() > 0){
for(HIC_ShopifySync__HIC_Field_Mapping__c checkname :fmList ){
checkname.HIC_ShopifySync__Store__c = store;
checkname.HIC_ShopifySync__Store_External_ID__c = store+checkname.HIC_ShopifySync__External_ID__c;
if(checkname.name != null && checkname.name != ''){
checkname.name = checkFieldLengthAndReturnValue(checkname.name);
}
}
upsert fmList HIC_ShopifySync__Store_External_ID__c;
}
return true;
}catch( Exception e ){
System.debug('Exception'+e.getMessage()+'at line'+e.getLineNumber());
}
return false;
}
//wrapper class for field mapping
public class FieldMappingWrapper {
public String sobjectType;
public String salesforcefields;
public String selectedfields;
public String salesforceFieldType;
public String salesforceFieldLabel;
public String shopifyFieldName;
public String shopifyNested;
public String shopifyFieldType;
public Boolean DefaultValue;
public String graphqlfield;
public FieldMappingWrapper parse(String json) {
return (FieldMappingWrapper) System.JSON.deserialize(json, FieldMappingWrapper.class);
}
}
/**************************************saveRecordTypeMapping*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Save Salesforce Object's Recordtypes
* ──────────────────────────────────────────────────────────────────────────────────────────────
* @param String PersonAccountRecordTypeId - personAccount RecordtypeID selected by user in page
* @param String AccountRecordTypeId - business account RecordtypeID selected by user in page
* @param String ContactRecordTypeId - contact RecordtypeID selected by user in page
* @param String OrderRecordTypeId - order RecordtypeID selected by user in page
* @param String OpportunityRecordTypeId - Opportunity RecordtypeID selected by user in page
* @param String DraftorderRecordTypeId - draft order RecordtypeID selected by user in page
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static boolean saveRecordTypeMapping(String PersonAccountRecordTypeId,String AccountRecordTypeId,String ContactRecordTypeId,String OrderRecordTypeId,String OpportunityRecordTypeId, String DraftorderRecordTypeId){
System.debug('PersonAccountRecordTypeId'+PersonAccountRecordTypeId);
System.debug('AccountRecordTypeId'+AccountRecordTypeId);
System.debug('ContactRecordTypeId'+ContactRecordTypeId);
System.debug('OrderRecordTypeId'+OrderRecordTypeId);
System.debug('OpportunityRecordTypeId'+OpportunityRecordTypeId);
System.debug('DraftorderRecordTypeId'+DraftorderRecordTypeId);
String[] paramList = PersonAccountRecordTypeId.split(',');
if(paramList[0] == 'undefined'){
PersonAccountRecordTypeId = null;
}else{
PersonAccountRecordTypeId = paramList[0];
}
String store = paramList[1];
System.debug('store'+store);
try{
List<HIC_ShopifySync__HIC_Field_Mapping__c> fmList = new List<HIC_ShopifySync__HIC_Field_Mapping__c>();
if(PersonAccountRecordTypeId != null && PersonAccountRecordTypeId != ''){
//System.debug('acc '+acc);
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
fm.Name = 'PersonAccount-RecordTypeId';
fm.HIC_ShopifySync__External_ID__c = 'PersonAccount-RecordTypeId';
fm.HIC_ShopifySync__Default_Value__c = true;
fm.HIC_ShopifySync__Object_Name__c = 'PersonAccount';
fm.HIC_ShopifySync__SF_Field__c = 'RecordTypeId';
//fm.Shopify_Field_Type__c = 'date';
fm.HIC_ShopifySync__SF_Field_Type__c = 'reference';
fm.HIC_ShopifySync__Shopify_Fields__c = PersonAccountRecordTypeId;
fm.HIC_ShopifySync__GQL_Field_API__c = PersonAccountRecordTypeId;
fm.HIC_ShopifySync__Store__c = store;
fm.HIC_ShopifySync__Store_External_ID__c = store+'PersonAccount-RecordTypeId';
fmList.add(fm);
}
if(AccountRecordTypeId != null && AccountRecordTypeId != ''){
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
fm.Name = 'Account-RecordTypeId';
fm.HIC_ShopifySync__External_ID__c = 'Account-RecordTypeId';
fm.HIC_ShopifySync__Default_Value__c = true;
fm.HIC_ShopifySync__Object_Name__c = 'Account';
fm.HIC_ShopifySync__SF_Field__c = 'RecordTypeId';
//fm.Shopify_Field_Type__c = 'date';
fm.HIC_ShopifySync__SF_Field_Type__c = 'reference';
fm.HIC_ShopifySync__Shopify_Fields__c = AccountRecordTypeId;
fm.HIC_ShopifySync__GQL_Field_API__c = AccountRecordTypeId;
fm.HIC_ShopifySync__Store__c = store;
fm.HIC_ShopifySync__Store_External_ID__c = store+'Account-RecordTypeId';
fmList.add(fm);
}
if(ContactRecordTypeId != null && ContactRecordTypeId != ''){
//System.debug('acc '+acc);
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
fm.Name = 'Contact-RecordTypeId';
fm.HIC_ShopifySync__External_ID__c = 'Contact-RecordTypeId';
fm.HIC_ShopifySync__Default_Value__c = true;
fm.HIC_ShopifySync__Object_Name__c = 'Contact';
fm.HIC_ShopifySync__SF_Field__c = 'RecordTypeId';
//fm.Shopify_Field_Type__c = 'date';
fm.HIC_ShopifySync__SF_Field_Type__c = 'reference';
fm.HIC_ShopifySync__Shopify_Fields__c = ContactRecordTypeId;
fm.HIC_ShopifySync__GQL_Field_API__c = ContactRecordTypeId;
fm.HIC_ShopifySync__Store__c = store;
fm.HIC_ShopifySync__Store_External_ID__c = store+'Contact-RecordTypeId';
fmList.add(fm);
}
if(OrderRecordTypeId != null && OrderRecordTypeId != ''){
//System.debug('acc '+acc);
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
fm.Name = 'Order-RecordTypeId';
fm.HIC_ShopifySync__External_ID__c = 'Order-RecordTypeId';
fm.HIC_ShopifySync__Default_Value__c = true;
fm.HIC_ShopifySync__Object_Name__c = 'Order';
fm.HIC_ShopifySync__SF_Field__c = 'RecordTypeId';
//fm.Shopify_Field_Type__c = 'date';
fm.HIC_ShopifySync__SF_Field_Type__c = 'reference';
fm.HIC_ShopifySync__Shopify_Fields__c = OrderRecordTypeId;
fm.HIC_ShopifySync__GQL_Field_API__c = OrderRecordTypeId;
fm.HIC_ShopifySync__Store__c = store;
fm.HIC_ShopifySync__Store_External_ID__c = store+'Order-RecordTypeId';
fmList.add(fm);
}
if(DraftorderRecordTypeId != null && DraftorderRecordTypeId!= ''){
//System.debug('acc '+acc);
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
fm.Name = 'DraftOrder-RecordTypeId';
fm.HIC_ShopifySync__External_ID__c = 'DraftOrder-RecordTypeId';
fm.HIC_ShopifySync__Default_Value__c = true;
fm.HIC_ShopifySync__Object_Name__c = 'Draftorder';
fm.HIC_ShopifySync__SF_Field__c = 'RecordTypeId';
//fm.Shopify_Field_Type__c = 'date';
fm.HIC_ShopifySync__SF_Field_Type__c = 'reference';
fm.HIC_ShopifySync__Shopify_Fields__c = DraftOrderRecordTypeId;
fm.HIC_ShopifySync__GQL_Field_API__c = DraftOrderRecordTypeId;
fm.HIC_ShopifySync__Store__c = store;
fm.HIC_ShopifySync__Store_External_ID__c = store+'DraftOrder-RecordTypeId';
fmList.add(fm);
}
if(OpportunityRecordTypeId != null && OpportunityRecordTypeId != ''){
//System.debug('acc '+acc);
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
fm.Name = 'Opportunity-RecordTypeId';
fm.HIC_ShopifySync__External_ID__c = 'Opportunity-RecordTypeId';
fm.HIC_ShopifySync__Default_Value__c = true;
fm.HIC_ShopifySync__Object_Name__c = 'Opportunity';
fm.HIC_ShopifySync__SF_Field__c = 'RecordTypeId';
//fm.Shopify_Field_Type__c = 'date';
fm.HIC_ShopifySync__SF_Field_Type__c = 'reference';
fm.HIC_ShopifySync__Shopify_Fields__c = OpportunityRecordTypeId;
fm.HIC_ShopifySync__GQL_Field_API__c = OpportunityRecordTypeId;
fm.HIC_ShopifySync__Store__c = store;
fm.HIC_ShopifySync__Store_External_ID__c = store+'Opportunity-RecordTypeId';
fmList.add(fm);
}
if(fmList.size() > 0){
for(HIC_ShopifySync__HIC_Field_Mapping__c checkname :fmList ){
if(checkname.name != null && checkname.name != ''){
checkname.name = checkFieldLengthAndReturnValue(checkname.name);
}
}
upsert fmList HIC_ShopifySync__Store_External_ID__c;
}
return true;
}catch( Exception e ){
System.debug('Exception'+e.getMessage()+'at line'+e.getLineNumber());
}
return false;
}
/**************************************InitializeAccount*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Use for Insert Default Account in Salesforce.
* Whenever Shopify's Account is not found in Salesforce and its required on records
* ──────────────────────────────────────────────────────────────────────────────────────────────
* @param String accountList - save required fieldmapping of Account and Contact
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static boolean saveRequiredFieldMapping(String accountList, String store){
try{
// List<HIC_ShopifySync__Shopify_Fields__c> gqllist = new <HIC_ShopifySync__Shopify_Fields__c>([select name, HIC_ShopifySync__GQL_Field_API__c,HIC_ShopifySync__Field_Name__c,HIC_ShopifySync__Nested__c,HIC_ShopifySync__Object_Name__c,HIC_ShopifySync__External_ID__c,HIC_ShopifySync__Data_Type__c from HIC_ShopifySync__Shopify_Fields__c WITH USER_MODE limit 49999]);
system.debug('** I am Here at accountList'+accountList);
List<HIC_ShopifySync__HIC_Field_Mapping__c> fmList = new List<HIC_ShopifySync__HIC_Field_Mapping__c>();
Set<String> checkExternalId = new Set<String>();
List<FieldMappingWrapper> accFMList = new List<FieldMappingWrapper>();
//system.debug('**contactList--'+contactList);
accFmList = ( List<FieldMappingWrapper> )JSON.deserialize(accountList, List<FieldMappingWrapper>.class);
for(FieldMappingWrapper ob : accFMList){
System.debug('ob***'+ ob);
//System.debug('salesforce field'+ob.salesforceFieldLabel);
if(ob.selectedfields != null && ob.selectedfields != ''){
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.salesforcefields != null && ob.salesforcefields != '' && (ob.salesforcefields == 'firstName' || ob.salesforcefields == 'lastName' || ob.salesforcefields.containsIgnoreCase('person') || ob.salesforcefields.contains('__pc')) ){
fm.HIC_ShopifySync__Object_Name__c = 'PersonAccount';
}
else if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.shopifyFieldName != null && ob.shopifyFieldName != ''){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.shopifyFieldName;
}else if(ob.selectedfields != null && ob.selectedfields != ''){
System.debug('ob.selectedfields'+ob.selectedfields);
fm.HIC_ShopifySync__Shopify_Fields__c = '';
if(ob.selectedfields.containsIgnoreCase('.')){
System.debug('ob.selectedfields'+ob.selectedfields);
if(ob.selectedfields.containsIgnoreCase(',')){
System.debug('ob.selectedfields'+ob.selectedfields);
for(String str : ob.selectedfields.split(',')){
List<String> strList = new List<String>();
system.debug('*** str'+str);
strList = str.split('\\.');
System.debug('ob.strList'+strList);
system.debug('**size'+strList.size());
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c += ','+strList[1];
}
}
fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}else{
List<String> strList = new List<String>();
strList = ob.selectedfields.split('\\.');
system.debug('strList-->'+strList);
if(!strList.isEmpty()){
ob.shopifyNested = strList[0];
fm.HIC_ShopifySync__Shopify_Fields__c = strList[1];
}
//fm.HIC_ShopifySync__Shopify_Fields__c = fm.HIC_ShopifySync__Shopify_Fields__c.removeStart(',');
}
}else{
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
}
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
if(fm.HIC_ShopifySync__Default_Value__c){
fm.HIC_ShopifySync__Shopify_Fields__c = ob.selectedfields;
fm.HIC_ShopifySync__GQL_Field_API__c = ob.selectedfields;
}
}
if(ob.shopifyNested != null && ob.shopifyNested != ''){
fm.HIC_ShopifySync__Nested__c = ob.shopifyNested;
}else{
fm.HIC_ShopifySync__Nested__c = null;
}
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = fm.HIC_ShopifySync__Object_Name__c+'-'+ob.salesforcefields;
fm.Name = fm.HIC_ShopifySync__Object_Name__c+'-'+ob.salesforcefields;
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != ''){
if(!checkExternalId.contains(fm.HIC_ShopifySync__External_ID__c)){
checkExternalId.add(fm.HIC_ShopifySync__External_ID__c);
fmList.add(fm);
}
}
}else{
HIC_ShopifySync__HIC_Field_Mapping__c fm = new HIC_ShopifySync__HIC_Field_Mapping__c();
if(ob.salesforcefields != null && ob.salesforcefields != '' && (ob.salesforcefields == 'firstName' || ob.salesforcefields == 'lastName' || ob.salesforcefields.containsIgnoreCase('person') || ob.salesforcefields.contains('__pc')) ){
fm.HIC_ShopifySync__Object_Name__c = 'PersonAccount';
}
else if(ob.sobjectType != null && ob.sobjectType != ''){
System.debug('inif salesforce field'+ob.sobjectType);
fm.HIC_ShopifySync__Object_Name__c = ob.sobjectType;
}
if(ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__SF_Field__c = ob.salesforcefields;
}
if(ob.salesforceFieldType != null && ob.salesforceFieldType != ''){
fm.HIC_ShopifySync__SF_Field_Type__c = ob.salesforceFieldType;
}
if(ob.graphqlfield != null && ob.graphqlfield != ''){
fm.HIC_ShopifySync__GQL_Field_API__c = ob.graphqlfield;
}
if(ob.salesforceFieldLabel != null && ob.salesforceFieldLabel != ''){
//fm.Object_Name__c = ob.salesforceFieldLabel;
}
if(ob.DefaultValue != null){
fm.HIC_ShopifySync__Default_Value__c = ob.DefaultValue;
}
fm.HIC_ShopifySync__Shopify_Fields__c = null;
fm.HIC_ShopifySync__Nested__c = null;
if(ob.shopifyFieldType != null && ob.shopifyFieldType != ''){
fm.HIC_ShopifySync__Shopify_Field_Type__c = ob.shopifyFieldType;
}else{
fm.HIC_ShopifySync__Shopify_Field_Type__c = null;
}
if(ob.sobjectType != null && ob.sobjectType != '' && ob.salesforcefields != null && ob.salesforcefields != ''){
fm.HIC_ShopifySync__External_ID__c = fm.HIC_ShopifySync__Object_Name__c+'-'+ob.salesforcefields;
fm.Name = fm.HIC_ShopifySync__Object_Name__c+'-'+ob.salesforcefields;
}
if(fm.HIC_ShopifySync__External_ID__c != null && fm.HIC_ShopifySync__External_ID__c != ''){
if(!checkExternalId.contains(fm.HIC_ShopifySync__External_ID__c)){
checkExternalId.add(fm.HIC_ShopifySync__External_ID__c);
fmList.add(fm);
}
}
}
}
if(fmList.size() > 0){
for(HIC_ShopifySync__HIC_Field_Mapping__c checkname :fmList ){
checkname.HIC_ShopifySync__Store__c = store;
checkname.HIC_ShopifySync__Store_External_ID__c = store+checkname.HIC_ShopifySync__External_ID__c;
if(checkname.name != null && checkname.name != ''){
checkname.name = checkFieldLengthAndReturnValue(checkname.name);
}
}
upsert fmList HIC_ShopifySync__Store_External_ID__c;
}
return true;
}catch( Exception e ){
System.debug('Exception'+e.getMessage()+'at line'+e.getLineNumber());
}
return false;
}
/**
*
* Handling Graph QL Fields
*/
// public static string handleGraphQlFields(String selectedFields){
// String graphQlFields = null;
// if(String.isNotBlank(selectedFields)){
// try{
// for(HIC_ShopifySync__Shopify_Fields__c graph:gqllist){
// }
// }Catch(Exception ex){
// System.debug('@@@ Exception occured at line : '+ex.getLineNumber()+' with message : '+ex.getMessage());
// }
// }
// return graphQlFields;
// }
/**************************************checkCreds*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* Verify Shopify Credetials via callout into the Shopify
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static Boolean checkCreds(String shopifyUrl, String USER_NAME, String PASSWORD){
try {
List<HIC_ShopifySync__Configuration__c> cyptokeyquery = new List<HIC_ShopifySync__Configuration__c>();
cyptokeyquery = database.query('select '+Checkaccessibility.isAccessible('id,HIC_ShopifySync__Cryptokey__c','HIC_ShopifySync__Configuration__c')+' from HIC_ShopifySync__Configuration__c where '+Checkaccessibility.isAccessible('Name','HIC_ShopifySync__Configuration__c')+' = \'Default\' limit 1');
if(cyptokeyquery.isEmpty()) return null;
System.debug('USER_NAME++'+USER_NAME);
if(PASSWORD.containsIgnoreCase('True')){
PASSWORD = PASSWORD.removeEnd('True');
Blob cryptoKey1 = Blob.valueOf(String.valueOf(cyptokeyquery[0].HIC_ShopifySync__Cryptokey__c));
Blob data = EncodingUtil.base64Decode(PASSWORD);
Blob decryptedData = Crypto.decryptWithManagedIV('AES128', cryptoKey1, data);
String dryptDatapsd = decryptedData.toString();
if(dryptDatapsd != null && dryptDatapsd != ''){
PASSWORD = dryptDatapsd;
}
}
System.debug('PASSWORD++'+PASSWORD);
Http h = new Http();
HttpRequest req = new HttpRequest();
String responseBody;
String endPointValue = shopifyUrl + '/admin/shop.json';
req.setEndpoint(endPointValue);
//Adding certificate to HTTP Requests
req.setClientCertificateName('Shopify');
/*Blob headerValue = Blob.valueOf(USER_NAME + ':' + PASSWORD);
String authorizationHeader = 'Basic ' +
EncodingUtil.base64Encode(headerValue);
req.setHeader('Authorization', authorizationHeader);*/
req.setHeader('X-Shopify-Access-Token', PASSWORD);
req.setHeader('content-type', 'application/json');
req.setMethod('GET');
req.setTimeout(120000);
HttpResponse res ;
res = h.send(req);
responseBody = res.getBody();
if(res.getStatusCode() == 200){
return True;
}
}catch(Exception e){
return false;
}
return False;
}
/**************************************checkCAccesscope*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* check Shopify store access for the entity
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static String checkCAccesscope(String shopifyUrl, String USER_NAME, String PASSWORD){
try{
List<HIC_ShopifySync__Configuration__c> cyptokeyquery = new List<HIC_ShopifySync__Configuration__c>();
cyptokeyquery = database.query('select '+Checkaccessibility.isAccessible('id,HIC_ShopifySync__Cryptokey__c','HIC_ShopifySync__Configuration__c')+' from HIC_ShopifySync__Configuration__c where '+Checkaccessibility.isAccessible('Name','HIC_ShopifySync__Configuration__c')+' = \'Default\' limit 1');
if(cyptokeyquery.isEmpty()) return null;
if(PASSWORD.containsIgnoreCase('True')){
PASSWORD = PASSWORD.removeEnd('True');
Blob cryptoKey1 = Blob.valueOf(String.valueOf(cyptokeyquery[0].HIC_ShopifySync__Cryptokey__c));
Blob data = EncodingUtil.base64Decode(PASSWORD);
Blob decryptedData = Crypto.decryptWithManagedIV('AES128', cryptoKey1, data);
String dryptDatapsd = decryptedData.toString();
if(dryptDatapsd != null && dryptDatapsd != ''){
PASSWORD = dryptDatapsd;
}
}
Http h = new Http();
HttpRequest req = new HttpRequest();
String responseBody;
String AccessResponse = '';
String endPointValue = shopifyUrl + '/admin/oauth/access_scopes.json';
req.setEndpoint(endPointValue);
req.setClientCertificateName('Shopify');
/*Blob headerValue = Blob.valueOf(USER_NAME + ':' + PASSWORD);
String authorizationHeader = 'Basic ' +
EncodingUtil.base64Encode(headerValue);
req.setHeader('Authorization', authorizationHeader);*/
req.setHeader('X-Shopify-Access-Token', PASSWORD);
req.setHeader('content-type', 'application/json');
req.setMethod('GET');
req.setTimeout(120000);
try {
HttpResponse res ;
res = h.send(req);
responseBody = res.getBody();
if(res.getStatusCode() == 200){
map<string, Object> main = (map<string,object>) JSON.deserializeUntyped(responseBody);
if(!main.isempty() && main.containskey('access_scopes')){
List<Object> objectList = (list<object>) main.get('access_scopes');
for(object accessobj : objectList){
map<String,object> access_scopemap = (map<string,object>)accessobj ;
if(!access_scopemap.isEmpty() && access_scopemap.containskey('handle') && access_scopemap.get('handle') != null){
AccessResponse += access_scopemap.get('handle')+ ',';
}
}
}if(AccessResponse != null || AccessResponse != '' ){
AccessResponse.removeEnd(',');
return AccessResponse;
}
}
}catch(Exception e){
return null;
}
return null;
}catch(exception e){
return null;
}
}
/**************************************checkFieldLengthAndReturnValue*************************************************/
/**
* ─────────────────────────────────────────────────────────────────────────────────────────────┐
* check Saleforce field length
* return trimed shopify trimed value based on salesforce field length
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
public static String checkFieldLengthAndReturnValue(String body){
/*Schema.SObjectType t = Schema.getGlobalDescribe().get('HIC_ShopifySync__Field_Mapping__c');
Schema.DescribeSObjectResult ObjectResult = t.getDescribe();
Schema.DescribeFieldResult fieldResult = ObjectResult.fields.getMap().get('Name').getDescribe();
if(fieldResult.getLength() > 0 && body != null){
system.debug('*****BodyLength*** '+ body.length());
if( body.length() <= fieldResult.getLength()){
return body;
}else{
return body.subString(0,fieldResult.getLength());
}
}else{
return '';
}*/
if(body != null){
system.debug('*****BodyLength*** '+ body.length());
if( body.length() <= 40){
return body;
}else{
return body.subString(0,40);
}
}else{
return '';
}
}
/**************************************RemoveStore*************************************************/
/* To remove particular store configuration, webhooks and field mappings
* ──────────────────────────────────────────────────────────────────────────────────────────────
* ─────────────────────────────────────────────────────────────────────────────────────────────┘
*/
@AuraEnabled
public static Boolean RemoveStore(String store){
try{
List<HIC_ShopifySync__HIC_Field_Mapping__c > listofallcustomSetting = new List<HIC_ShopifySync__HIC_Field_Mapping__c >();
String query = ' select '+CheckAccessibility.isAccessible('id','HIC_ShopifySync__HIC_Field_Mapping__c')+' from HIC_ShopifySync__HIC_Field_Mapping__c where '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c','HIC_ShopifySync__HIC_Field_Mapping__c')+' = \''+store+'\' LIMIT 49999';
listofallcustomSetting = database.query(query);
//system.debug('listofallcustomSetting--> '+listofallcustomSetting);
if(!listofallcustomSetting.isEmpty()){
if(CheckAccessibility.isDeletable('HIC_ShopifySync__HIC_Field_Mapping__c'))
database.delete (listofallcustomSetting,false);
}
/*Long startTime = DateTime.now().getTime();
Long finishTime = DateTime.now().getTime();
while ((finishTime - startTime) < 3000) {
//sleep for 3s
finishTime = DateTime.now().getTime();
}*/
List<HIC_ShopifySync__HIC_Configuration__c > ConfigListToDelete = new List<HIC_ShopifySync__HIC_Configuration__c >();
String query1 = ' select '+CheckAccessibility.isAccessible('id,HIC_ShopifySync__API_Key__c,HIC_ShopifySync__Private_Key_Password__c,HIC_ShopifySync__Shopify_URL__c','HIC_ShopifySync__HIC_Configuration__c')+' from HIC_ShopifySync__HIC_Configuration__c where '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c','HIC_ShopifySync__HIC_Configuration__c')+' = \''+store+'\' LIMIT 49999';
ConfigListToDelete = database.query(query1);
//system.debug('listofallcustomSetting--> '+listofallcustomSetting);
HICWebhookUtility.deleteWebhook('HIC_ShopifySync__Collection__c', 'Update', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('HIC_ShopifySync__Collection__c', 'Create', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('HIC_ShopifySync__Collection__c', 'Delete', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('Customer', 'Create', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('Customer', 'Update', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('Customer', 'Delete', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('HIC_ShopifySync__Inventory_Level__c', 'Connect', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('HIC_ShopifySync__Inventory_Level__c', 'Disconnect', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('HIC_ShopifySync__Inventory_Level__c', 'Update', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('HIC_ShopifySync__Location__c', 'Update', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('HIC_ShopifySync__Location__c', 'Create', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('HIC_ShopifySync__Location__c', 'Delete', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('Product2', 'Create', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('Product2', 'Delete', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('Product2', 'Update', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('DraftOrder', 'Create', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('DraftOrder', 'Delete', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('DraftOrder', 'Update', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('Order', 'Create', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('Order', 'Update', store, JSON.serialize(ConfigListToDelete));
HICWebhookUtility.deleteWebhook('Order', 'Delete', store, JSON.serialize(ConfigListToDelete));
if(!ConfigListToDelete.isEmpty()){
if(CheckAccessibility.isDeletable('HIC_ShopifySync__HIC_Configuration__c'))
database.delete (ConfigListToDelete,false);
}
//HICWebhookUtility.deleteStoreConfigs(store);
return true;
}catch(Exception e){
return false;
}
}
@AuraEnabled
public static List<String> accFields(){
List<String> fieldsList = new List<String>();
Schema.SObjectType targetType = Schema.getGlobalDescribe().get('account');
Map<String, Schema.SObjectField> fieldMap = targetType.getDescribe().fields.getMap();
for (Schema.SObjectField field : fieldMap.values()) {
System.debug('Acc field:: '+field.getDescribe().getName());
fieldsList.add(field.getDescribe().getName());
}
return fieldsList;
}
@AuraEnabled
public static String getShopifyFields(String objectName){
return HIC_ShopifyUtility.getShopifyFields(objectName);
}
public static HIC_ShopifySync__HIC_Field_Mapping__c processFieldMappingSobjectWithAllFields(string objectName, string sfField, string shopifyField, string nested, boolean isDefault, boolean isSfId, String sfFieldType, String shopifyType, String Store){
HIC_ShopifySync__HIC_Field_Mapping__c fieldMapping = new HIC_ShopifySync__HIC_Field_Mapping__c();
try{
String tempObname=objectName;
String tempfieldname=sfField;
if(objectName.contains('HIC_ShopifySync__')){
tempObname= objectName.subString(17);
/* ___________________________________________*/
if(tempObname.contains('Fulfillment')){
String tempHold= tempObname.replace('Order','Ord');
tempHold= tempHold.replace('Fulfillment','Ful');
tempObname=tempHold;
}
/* ___________________________________________*/
}
if(sfField.contains('HIC_ShopifySync__')){
tempfieldname= sfField.subString(17);
}
if(string.valueOf(tempObname+'-'+tempfieldname).length() >38){
fieldMapping.name = string.valueOf(tempObname+'-'+tempfieldname).substring(0,38);
}else{
fieldMapping.name = tempObname+'-'+tempfieldname;
}
if(sfField != null && sfField != ''){
fieldMapping.HIC_ShopifySync__Object_Name__c = objectName;
fieldMapping.HIC_ShopifySync__SF_Field__c = sfField;
fieldMapping.HIC_ShopifySync__Shopify_Fields__c = shopifyField;
fieldMapping.HIC_ShopifySync__Nested__c = nested;
fieldMapping.HIC_ShopifySync__Default_Value__c = isDefault;
fieldMapping.HIC_ShopifySync__IsSFID__c = isSfId;
fieldMapping.HIC_ShopifySync__External_ID__c = objectName+'-'+sfField;
fieldMapping.HIC_ShopifySync__Store_External_ID__c = objectName+'-'+sfField;
fieldMapping.HIC_ShopifySync__SF_Field_Type__c=sfFieldType;
fieldMapping.HIC_ShopifySync__Shopify_Field_Type__c=shopifyType;
fieldMapping.HIC_ShopifySync__Store__c = store;
return fieldMapping;
}
return null;
}catch(Exception e){
return null;
}
}
}