From f90c63155656928b86f1ce1d91a134de3d12d2b9 Mon Sep 17 00:00:00 2001
From: Li Jun <buli@deloitte.com.cn>
Date: 星期三, 27 四月 2022 18:26:41 +0800
Subject: [PATCH] SyncAContact0427

---
 force-app/main/default/classes/SyncAccountContactToAWS.cls     |   26 ++++++++++++++++++++++----
 force-app/main/default/classes/ContactTriggerHandler.cls       |    2 +-
 force-app/main/default/classes/SyncAccountContactToAWSTest.cls |    3 ++-
 3 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/force-app/main/default/classes/ContactTriggerHandler.cls b/force-app/main/default/classes/ContactTriggerHandler.cls
index 3c3c299..ba22ecc 100644
--- a/force-app/main/default/classes/ContactTriggerHandler.cls
+++ b/force-app/main/default/classes/ContactTriggerHandler.cls
@@ -172,7 +172,7 @@
         }else{
             //Add By Li Jun for sync agency contact to aws 20220424 start
             if(!Test.isRunningTest()){
-                SyncAccountContactToAWS.assignOnceOneMinuteLater();
+                SyncAccountContactToAWS.assignOnceOneMinuteLater(aclist);
             }
             //Add By Li Jun for sync agency contact to aws 20220424 end
         }
diff --git a/force-app/main/default/classes/SyncAccountContactToAWS.cls b/force-app/main/default/classes/SyncAccountContactToAWS.cls
index 9c0131e..50e9478 100644
--- a/force-app/main/default/classes/SyncAccountContactToAWS.cls
+++ b/force-app/main/default/classes/SyncAccountContactToAWS.cls
@@ -18,7 +18,12 @@
         this.query = 'SELECT id,Doctor_Division1__c,Doctor_Division1_Encrypted__c,Name,Name_Encrypted__c,Type__c,Type_Encrypted__c,AWS_Data_Id__c,Contact__c, Contact__r.Doctor_Division1_Encrypted__c,Contact__r.LastName_Encrypted__c, Contact__r.Type_Encrypted__c FROM Agency_Contact__c WHERE AWS_Data_Id__c =\'\' And Contact__c != null order by lastmodifieddate desc';
     }
     global SyncAccountContactToAWS(String query,String scId) {
-        this.query = 'SELECT id,Doctor_Division1__c,Doctor_Division1_Encrypted__c,Name,Name_Encrypted__c,Type__c,Type_Encrypted__c,AWS_Data_Id__c,Contact__c, Contact__r.Doctor_Division1_Encrypted__c,Contact__r.LastName_Encrypted__c, Contact__r.Type_Encrypted__c FROM Agency_Contact__c WHERE AWS_Data_Id__c =\'\' And Contact__c != null order by lastmodifieddate desc';
+        if(String.isBlank(query)||String.isEmpty(query)){
+            this.query = 'SELECT id,Doctor_Division1__c,Doctor_Division1_Encrypted__c,Name,Name_Encrypted__c,Type__c,Type_Encrypted__c,AWS_Data_Id__c,Contact__c, Contact__r.Doctor_Division1_Encrypted__c,Contact__r.LastName_Encrypted__c, Contact__r.Type_Encrypted__c FROM Agency_Contact__c WHERE AWS_Data_Id__c =\'\' And Contact__c != null order by lastmodifieddate desc';
+        }else{
+            this.query = query;
+        }
+        system.debug('This query from Batch:'+this.query);
         this.scheduleId = scId;
     }
     global Database.QueryLocator start(Database.BatchableContext bc) {
@@ -39,17 +44,30 @@
     }
 
     global void execute(SchedulableContext SC) {
-        Id execBTId = Database.executeBatch(new SyncAccountContactToAWS('',SC.getTriggerId()), 1);       
+        system.debug('this query from schedule execute method:'+this.query);
+        Id execBTId = Database.executeBatch(new SyncAccountContactToAWS(this.query,SC.getTriggerId()), 1);       
         system.debug('Batch Job Id:'+execBTId);
     }
 
-    public static void assignOnceOneMinuteLater() {
+    public static void assignOnceOneMinuteLater(List<Agency_Contact__c> acList) {
+        system.debug('ACList:'+JSON.serialize(acList));
         String hour = String.valueOf(Datetime.now().hour());
         String min = String.valueOf(Datetime.now().minute() + 1); 
         String ss = String.valueOf(Datetime.now().second());
         //parse to cron expression
         String nextFireTime = ss + ' ' + min + ' ' + hour + ' * * ?';
-        SyncAccountContactToAWS s = new SyncAccountContactToAWS(); 
+        //Prepare the soql to agency account
+        String soqlForAgencyAccount = '';
+        if(acList!=null && acList.size()>0){
+            soqlForAgencyAccount = 'SELECT id,Doctor_Division1__c,Doctor_Division1_Encrypted__c,Name,Name_Encrypted__c,Type__c,Type_Encrypted__c,AWS_Data_Id__c,Contact__c, Contact__r.Doctor_Division1_Encrypted__c,Contact__r.LastName_Encrypted__c, Contact__r.Type_Encrypted__c FROM Agency_Contact__c WHERE id in ';
+            List<String> acIds = new List<String>();
+            for(Agency_Contact__c ac:acList ){
+                acIds.add(ac.Id);
+            }
+            soqlForAgencyAccount = soqlForAgencyAccount +  '(\'' + String.join(acIds, '\', \'') + '\')';
+        }
+        system.debug('SOQL for agency:'+soqlForAgencyAccount);
+        SyncAccountContactToAWS s = new SyncAccountContactToAWS(soqlForAgencyAccount);
         System.schedule('SyncAccountContactToAWS:' + String.valueOf(Datetime.now()), nextFireTime, s);
     }
 
diff --git a/force-app/main/default/classes/SyncAccountContactToAWSTest.cls b/force-app/main/default/classes/SyncAccountContactToAWSTest.cls
index e926376..4803dc6 100644
--- a/force-app/main/default/classes/SyncAccountContactToAWSTest.cls
+++ b/force-app/main/default/classes/SyncAccountContactToAWSTest.cls
@@ -41,12 +41,13 @@
             //String soql = 'SELECT id,Doctor_Division1__c,Doctor_Division1_Encrypted__c,Name,Name_Encrypted__c,Type__c,Type_Encrypted__c,AWS_Data_Id__c,Contact__c, Contact__r.Doctor_Division1_Encrypted__c,Contact__r.LastName_Encrypted__c, Contact__r.Type_Encrypted__c FROM Agency_Contact__c WHERE id=\'a2R10000001cfatEAA\' And AWS_Data_Id__c =\'\' And Contact__c != null';
             String soql = 'SELECT id,Doctor_Division1__c,Doctor_Division1_Encrypted__c,Name,Name_Encrypted__c,Type__c,Type_Encrypted__c,AWS_Data_Id__c,Contact__c, Contact__r.Doctor_Division1_Encrypted__c,Contact__r.LastName_Encrypted__c, Contact__r.Type_Encrypted__c FROM Agency_Contact__c WHERE AWS_Data_Id__c =\'Test AWS\'';
             SyncAccountContactToAWS contactBatch = new SyncAccountContactToAWS(soql);
+            SyncAccountContactToAWS contactBatchTest = new SyncAccountContactToAWS();
             Id execBTId = Database.executeBatch(contactBatch,1);
         }catch(Exception e){
             system.debug('Exception from sync aws batch:'+ e.getMessage());
         }
         try{
-            SyncAccountContactToAWS.assignOnceOneMinuteLater();
+            SyncAccountContactToAWS.assignOnceOneMinuteLater(new List<Agency_Contact__c>());
         }catch(Exception e){
             system.debug('Exception from sync aws scheduler:'+ e.getMessage());
         }       

--
Gitblit v1.9.1