From fc8a8cea62e5d248834482a1ade9db6ab0758bf2 Mon Sep 17 00:00:00 2001
From: Li Jun <buli@deloitte.com.cn>
Date: 星期日, 24 四月 2022 18:55:04 +0800
Subject: [PATCH] 20220424FixIssue

---
 force-app/main/default/classes/SyncAccountContactToAWS.cls |   29 +++++++++++++++++++++++------
 1 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/force-app/main/default/classes/SyncAccountContactToAWS.cls b/force-app/main/default/classes/SyncAccountContactToAWS.cls
index 476cdba..df049b2 100644
--- a/force-app/main/default/classes/SyncAccountContactToAWS.cls
+++ b/force-app/main/default/classes/SyncAccountContactToAWS.cls
@@ -7,14 +7,15 @@
  * 		04/22/2022 - Bubba Li - Initial Code.
  * 
  * */
-global class  SyncAccountContactToAWS implements Database.Batchable<SObject>,Database.AllowsCallouts{
+global class  SyncAccountContactToAWS implements Schedulable,Database.Batchable<SObject>,Database.AllowsCallouts{
+
     global String query;
     
     global SyncAccountContactToAWS(String query) {
         this.query = query;
     }
     global SyncAccountContactToAWS() {
-        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';
+        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 Database.QueryLocator start(Database.BatchableContext bc) {
         system.debug('Query by custom soql:'+this.query);
@@ -23,9 +24,9 @@
     global void execute(Database.BatchableContext BC, list<Agency_Contact__c> scope) {
         if(scope!=null && scope.size()>0){
             for(Agency_Contact__c  aContact:scope){
-                aContact.Doctor_Division1_Encrypted__c = aContact.Contact__r.Doctor_Division1_Encrypted__c;
-                aContact.Name_Encrypted__c =  aContact.Contact__r.LastName_Encrypted__c;
-                aContact.Type_Encrypted__c =  aContact.Contact__r.Type_Encrypted__c;
+                aContact.Doctor_Division1_Encrypted__c = aContact.Contact__c!=null&&aContact.Contact__r.Doctor_Division1_Encrypted__c!=''?aContact.Contact__r.Doctor_Division1_Encrypted__c:'';
+                aContact.Name_Encrypted__c =  aContact.Contact__c!=null&&aContact.Contact__r.LastName_Encrypted__c!=''?aContact.Contact__r.LastName_Encrypted__c:'';
+                aContact.Type_Encrypted__c =  aContact.Contact__c!=null&&aContact.Contact__r.Type_Encrypted__c!=''?aContact.Contact__r.Type_Encrypted__c:'';
                 aContact.AWS_Data_Id__c = '';
             }
             system.debug('Agency Contact Info to AWS:'+JSON.serialize(scope));
@@ -33,7 +34,23 @@
         }      
     }
 
+    global void execute(SchedulableContext SC) {
+        Id execBTId = Database.executeBatch(new SyncAccountContactToAWS(), 1);
+    }
+
+    public static void assignOnceOneMinuteLater() {
+        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(); 
+        System.schedule('Job Started At ' + String.valueOf(Datetime.now()), nextFireTime, s);
+    }
+
     global void finish(Database.BatchableContext BC) {
-     
+        AsyncApexJob a = [SELECT Id, Status, NumberOfErrors, JobItemsProcessed, TotalJobItems, CreatedBy.Email FROM AsyncApexJob WHERE Id = :BC.getJobId()];
+        //then use the active job id and abort it
+        system.abortJob(a.id);
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1