Li Jun
2022-04-27 f90c63155656928b86f1ce1d91a134de3d12d2b9
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);
    }