Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- global class PurchaseDetailsBatch implements Database.Batchable<sObject>{
- global Database.QueryLocator start(Database.BatchableContext bc) {
- //String customerRegion = 'Allied 10 EP MidAtlantic';
- String query = 'SELECT Id, Name, Beacon_Acc_Number__c,Region_Mincron__c,Days_Since_Last_Purchase__c, Owner.Name, Date_Last_Purchase__c FROM Account WHERE Days_Since_Last_Purchase__c >= 30 AND Beacon_Acc_Number__c != NULL AND Date_Last_Purchase__c != NULL AND Region_Mincron__c != NULL' ;
- return Database.getQueryLocator(query);
- }
- global void execute(Database.BatchableContext bc, List<Account> accList){
- String header = 'Customer Number, Name, Days Since Last Purchase, Date Last Purchase, Owner Namen';
- String finalstr = header;
- List<Purchase_Details__c> purchaseDetailsList = Purchase_Details__c.getall().values();
- Map<String,String[]> purchaseMap = new Map<String,String[]>();
- Map<String,List<Account>> accountMap = new Map<String,List<Account>>();
- for(Purchase_Details__c objPurchase : purchaseDetailsList){
- if(objPurchase.Email__c.contains(',')){
- String[] address = objPurchase.Email__c.split(',');
- purchaseMap.put(objPurchase.Name, address);
- }else{
- purchaseMap.put(objPurchase.Name,new String[] {objPurchase.Email__c});
- }
- }
- Map<String,Blob> emailFileMap = new Map<String,Blob>();
- for(Account acc : accList){
- String records = acc.Beacon_Acc_Number__c+',';
- if(acc.Name.contains(',')){
- String temp = acc.Name.remove(',');
- records+=temp+',';
- }else{
- records+=acc.Name+',';
- }
- records+=acc.Days_Since_Last_Purchase__c+',';
- Date d = acc.Date_Last_Purchase__c;
- records+=d.day()+'-'+d.month()+'-'+d.year()+',';
- records+=acc.Owner.Name+',';
- records +='n';
- finalstr = finalstr+records;
- if(acc.Region_Mincron__c != null){
- emailFileMap.put(acc.Region_Mincron__c,Blob.valueOf(finalstr));
- }
- }
- System.debug('-->'+emailFileMap.keySet().size());
- List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage>();
- for(String regionStr : purchaseMap.keySet()){
- Messaging.EmailFileAttachment attach = new Messaging.EmailFileAttachment();
- blob excel;
- if(emailFileMap.containsKey(regionStr) && emailFileMap.get(regionStr) != null){
- excel = emailFileMap.get(regionStr);
- }
- //blob excel = blob.valueOf(finalstr);
- attach.setBody(excel);
- attach.setFileName(regionStr+' file.csv');
- String subject = regionStr;
- //String body = 'Users who are not logged in since last 30 days';
- String body = 'Please find attached file for purchase details';
- String[] addressFromLabel = purchaseMap.get(regionStr);
- Messaging.singleEmailMessage Emailwithattch = new Messaging.singleEmailMessage();
- Emailwithattch.setSubject(subject);
- Emailwithattch.setToaddresses(addressFromLabel);
- Emailwithattch.setHtmlBody(body);
- Emailwithattch.setFileAttachments(new Messaging.EmailFileAttachment[]{attach});
- emails.add(Emailwithattch);
- }
- Messaging.SendEmailResult [] r =
- Messaging.sendEmail(emails);
- }
- global void finish(Database.BatchableContext bc){ }
- /*public void execute(SchedulableContext SC){
- Database.executeBatch(new SouthDivisionUsersBatch(), 2000);
- } */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement