Untitled

mail@pastecode.io avatar
unknown
plain_text
14 days ago
3.1 kB
0
Indexable
Never
public class BatchToSendSurvey implements Database.Batchable<sObject>, Database.Stateful {
    
    
    public Database.QueryLocator start(Database.BatchableContext BC){
        String query = 'SELECT Id,Name,Email FROM Contact where Email= \'tarun.rana1999@gmail.com\'';
    
        return Database.getQueryLocator(query);
    }
    public void execute(Database.BatchableContext BC, List<Contact> conList){
  string communityId =[select Id from Network where Name = 'Patient'][0].Id;
   string  surveyId = [SELECT Id FROM Survey WHERE Name = 'Test Survey'][0].Id;
        System.debug('communityId>>>>>>'+ communityId);
        System.debug('SurveyId>>>>>>'+ surveyId);
        
         List<SurveyInvitation> surveyInvite = new List<SurveyInvitation>();
        List<SurveySubject> surveySub = new List<SurveySubject>();
  
        
        for(Contact con: conList){
            
                           
            SurveyInvitation sInv = new SurveyInvitation();
            sInv.Email__c=con.Email;
            sInv.CommunityId= communityId;
            sInv.Name=con.Name;
             sInv.OptionsCollectAnonymousResponse = true;
            sInv.OptionsAllowGuestUserResponse = true;
            sInv.SurveyId = surveyId;
            surveyInvite.add(sInv);
            
                      
            SurveySubject sSub = new SurveySubject();
            sSub.Name=con.Name;
            sSub.ParentId=sInv.Id;
            surveySub.add(sSub);
            
          
        }
               insert surveyInvite;
        
        for (SurveySubject sSub : surveySub) {
            sSub.ParentId = surveyInvite[0].Id;
        }
        insert surveySub;
             

         List<SurveyInvitation> surveyInvitations = [SELECT Email__c, InvitationLink FROM SurveyInvitation where Email__c = 'tarun.rana1999@gmail.com'];
     
            Map<String, String> emailToLinkMap = new Map<String, String>();
        for (SurveyInvitation inv : surveyInvitations) {
            System.debug(inv.InvitationLink);
            emailToLinkMap.put(inv.Email__c, inv.InvitationLink);
        }
        
        // Send emails
        List<Messaging.SingleEmailMessage> mails = new List<Messaging.SingleEmailMessage>();
        String temail = 'tarun.rana1999@gmail.com';
            if (emailToLinkMap.containsKey(temail)) {
                Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
                mail.setToAddresses(new String[] { temail });
                String subject = 'Link Mil Gaya';
                String body = 'Here is your survey invitation link: ' + emailToLinkMap.get(temail);
                mail.setSubject(subject);
                mail.setPlainTextBody(body);
                mails.add(mail);
            
        }
        
        // Send all emails in a single sendEmail call
        Messaging.sendEmail(mails);
    }
           
                 
    public void finish(Database.BatchableContext BC){
        System.debug('batch executed');
        
    }

    
}
Leave a Comment