@RestResource(urlMapping='/UpdateCheckoutsFromShopify/*') global with sharing class UpdateCheckoutsFromShopify { @HttpPost global static void UpdateCheckoutsFromShopify(){ RestRequest request = RestContext.request; RestResponse response = RestContext.response; String CheckoutResponse = request.requestBody.ToString().Trim(); System.debug('CheckoutResponse=== '+CheckoutResponse); String store = 'Default'; Map params = request.params; System.debug('params=== '+params); if(!params.isEmpty() && params.containsKey('store') && params.get('store') != null) store = params.get('store'); InsertCheckoutsandCheckoutLineItemFromShopify(CheckoutResponse,store); } public static void InsertCheckoutsandCheckoutLineItemFromShopify(String CheckoutResponse, string store){ System.debug('Store == '+Store); list OrdOppChecklist = new list(); string query; if(!test.isRunningTest()){ query = 'Select '+CheckAccessibility.isAccessible(' name,HIC_ShopifySync__Default_Field_Mapping__c,HIC_ShopifySync__Batch_Is_Processing__c,HIC_ShopifySync__Specify_Close_Date__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__Account_Contact__c,HIC_ShopifySync__Default_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'; }else{ query = 'Select name, HIC_ShopifySync__Default_Field_Mapping__c,HIC_ShopifySync__Shopify_URL__c,HIC_ShopifySync__Specify_Close_Date__c,HIC_ShopifySync__Batch_Is_Processing__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__Account_Contact__c,HIC_ShopifySync__Default_Account__c from HIC_ShopifySync__HIC_Configuration__c where '+CheckAccessibility.isAccessible('HIC_ShopifySync__Store__c', 'HIC_ShopifySync__HIC_Configuration__c')+' = \''+store+'\' LIMIT 49999'; } OrdOppChecklist = database.query(query); System.debug('OrdOppChecklist=== '+OrdOppChecklist); String companyTimeZone = [SELECT Id, TimeZoneSidKey FROM Organization Limit 1][0].TimeZoneSidKey; System.debug('companyTimeZone=== '+companyTimeZone); Map meta = (Map) JSON.deserializeUntyped(CheckoutResponse); System.debug('meta==== '+meta); string CheckoutShopifyId = string.valueof(meta.get('id')); System.debug('CheckoutShopifyId ==== '+CheckoutShopifyId); List CheckoutsLineItemList = new List([Select HIC_ShopifySync__Shopify_Id__c from HIC_ShopifySync__Checkout_LineItem__c where HIC_ShopifySync__Checkout__r.HIC_ShopifySync__Shopify_Id__c =: CheckoutShopifyId ]); System.debug('CheckoutsLineItemList==== '+CheckoutsLineItemList); set CheckoutLineShopifyIds = new set(); System.debug('CheckoutLineShopifyIds ==== '+CheckoutLineShopifyIds); if(!CheckoutsLineItemList.isEmpty()){ for(HIC_ShopifySync__Checkout_LineItem__c checkoutslineitems : CheckoutsLineItemList){ CheckoutLineShopifyIds.add(checkoutslineitems.HIC_ShopifySync__shopify_id__c); } } Type typLstSObject = Type.ForName('List'); List CheckoutandLineItemListToupsert = (List)typLstSObject.NewInstance(); // map productVsPricebookEntryMap = new map(); // map productVsUnitepriceMap = new map(); list listofCheckoutandLineItem = new list(); if(meta != null && !meta.isEmpty() && meta.containskey('line_items')) listofCheckoutandLineItem = (list)meta.get('line_items'); /*for(Object CheckoutsLineItemObj : listofCheckoutandLineItem ){ Map CheckoutsLineItemObjMap =(Map)CheckoutsLineItemObj; //productVsPricebookEntryMap.put(String.valueof(CheckoutsLineItemObjMap.get('product_id')),null); productVsUnitepriceMap.put(String.valueof(CheckoutsLineItemObjMap.get('product_id')),String.valueof(CheckoutsLineItemObjMap.get('price'))); }*/ Map accMap = (Map)meta.get('customer'); Map ShopifyIdvsAccountId = new Map(); if(Schema.sObjectType.Account.fields.getMap().containsKey( 'ispersonaccount' )){ if (OrdOppChecklist[0].HIC_ShopifySync__Person_Account__c ){ if(accMap != null && !accMap.isEmpty() && !(String.valueOf(accMap.get('id'))).contains('Person ')){ //objectMap.put('id','Person Account'+String.valueOf(objectMap.get('id'))); ShopifyIdvsAccountId.put('Person '+String.valueof(accMap.get('id')),meta.get('customer')); } }else if(!OrdOppChecklist[0].HIC_ShopifySync__Person_Account__c ){ if(!(String.valueOf(accMap.get('id'))).contains('Business ')) //objectMap.put('id','Business Account'+String.valueOf(objectMap.get('id'))); ShopifyIdvsAccountId.put('Business '+String.valueof(accMap.get('id')),meta.get('customer')); } }else{ system.debug('***HIC_ShopifySync__Person_Account__c*3*'+OrdOppChecklist[0].HIC_ShopifySync__Person_Account__c); if(accMap != null && !accMap.isEmpty()&& meta != null && !meta.isEmpty() && !(String.valueOf(accMap.get('id'))).contains('Business ') && meta.containsKey('customer')) //objectMap.put('id','Business Account'+String.valueOf(objectMap.get('id'))); ShopifyIdvsAccountId.put('Business '+String.valueof(accMap.get('id')),meta.get('customer')); } //ShopifyIdvsAccountId.put(String.valueof(accMap.get('id')),'false'); /*if(!OrdOppChecklist.isEmpty() && OrdOppChecklist[0].Person_Account__c== true){ HIC_ShopifyUtility.InitializeAccount(ShopifyIdvsAccountId, 'Account',true, OrdOppChecklist); }else{ HIC_ShopifyUtility.InitializeAccount(ShopifyIdvsAccountId, 'Account',false,OrdOppChecklist ); }*/ if(accMap != null && !accMap.isEmpty()){ HIC_ShopifyUtility.InitializeAccount(ShopifyIdvsAccountId, OrdOppChecklist, store); } System.debug('ShopifyIdvsAccountId-->'+ShopifyIdvsAccountId); list CheckoutandLineItemFieldList = new list([Select HIC_ShopifySync__SF_Field__c, HIC_ShopifySync__Shopify_Fields__c, HIC_ShopifySync__Nested__c , HIC_ShopifySync__IsSFID__c, HIC_ShopifySync__Default_Value__c from HIC_ShopifySync__HIC_Field_Mapping__c Where HIC_ShopifySync__Object_Name__c = 'HIC_ShopifySync__Checkout_LineItem__c' AND HIC_ShopifySync__Store__c =: store]); list CheckoutsFieldList = new list([Select HIC_ShopifySync__SF_Field__c, HIC_ShopifySync__Shopify_Fields__c , HIC_ShopifySync__Nested__c , HIC_ShopifySync__IsSFID__c, HIC_ShopifySync__Default_Value__c from HIC_ShopifySync__HIC_Field_Mapping__c Where HIC_ShopifySync__Object_Name__c = 'HIC_ShopifySync__Checkout__c'AND HIC_ShopifySync__Store__c =: store ]); String listType = 'List<' + 'HIC_ShopifySync__Checkout__c' + '>'; list CheckoutListToupsert = (List)Type.forName(listType).newInstance(); CheckoutListToupsert.add(HIC_ShopifyUtility.processFieldTypeAndMapping(CheckoutsFieldList,'HIC_ShopifySync__Checkout__c',meta,OrdOppChecklist,companyTimeZone)); List listofallCheckLines = new List(); if(meta != null && !meta.isEmpty() && meta.Containskey('line_items')){ listofCheckoutandLineItem = (list)meta.get('line_items'); Map chekLineObj = new Map(); for(Object checkLine : listofCheckoutandLineItem){ chekLineObj = (Map)checkLine; chekLineObj.put('id', CheckoutShopifyId+'-'+chekLineObj.get('variant_id')); chekLineObj.put('checkout_id', CheckoutShopifyId); //checkLine = (Object)chekLineObj; //listofallCheckLines.add(chekLineObj); listofallCheckLines.add(chekLineObj); } CheckoutandLineItemListToupsert.addAll(HIC_ShopifyUtility.fillObjectValues(CheckoutandLineItemFieldList,'HIC_ShopifySync__Checkout_LineItem__c',listofallCheckLines,OrdOppChecklist)); } if(!CheckoutListToupsert.Isempty()){ //return null; Schema.SObjectType objectType = Schema.getGlobalDescribe().get('HIC_ShopifySync__Checkout__c'); Map fieldMap = objectType.getDescribe().fields.getMap(); Schema.SobjectField theField = fieldMap.get('HIC_ShopifySync__Shopify_Id__c'); try{ if(!Test.isRunningTest()){ EmailErrorCSV.makeCsvAndSendInEmail(CheckoutResponse,'HIC_ShopifySync__Checkout__c',CheckoutListToupsert,theField,true,Store); } }catch(Exception e){ System.debug('Exception '+ e.getMessage() + ' at' +e.getLineNumber()); } // HIC_ShopifyUtility.InitializePricebookEntryid(productVsPricebookEntryMap,productVsUnitepriceMap,OrdOppChecklist,store); } if(!CheckoutandLineItemListToupsert.Isempty()){ //return null; Schema.SObjectType objectType = Schema.getGlobalDescribe().get('HIC_ShopifySync__Checkout_LineItem__c'); Map fieldMap = objectType.getDescribe().fields.getMap(); Schema.SobjectField theField = fieldMap.get('HIC_ShopifySync__Shopify_Id__c'); try{ if(!Test.isRunningTest()){ EmailErrorCSV.makeCsvAndSendInEmail(JSON.serialize(listofallCheckLines),'HIC_ShopifySync__Checkout_LineItem__c',CheckoutandLineItemListToupsert,theField,true,store); } }catch(Exception e){ System.debug('Exception '+ e.getMessage() + ' at' +e.getLineNumber()); } if(!CheckoutLineShopifyIds.Isempty()){ for(SObject CheckoutLineObj : CheckoutandLineItemListToupsert){ CheckoutLineShopifyIds.remove(string.valueOf(CheckoutLineObj.get('HIC_ShopifySync__Shopify_Id__c'))); } if(!CheckoutLineShopifyIds.Isempty()){ delete [Select Id from HIC_ShopifySync__Checkout_LineItem__c where HIC_ShopifySync__Shopify_Id__c IN: CheckoutLineShopifyIds]; } } } } }