Advertisement
Guest User

Untitled

a guest
Jul 16th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.41 KB | None | 0 0
  1. global class PurchaseDetailsBatch implements Database.Batchable<sObject>{
  2.  
  3. global Database.QueryLocator start(Database.BatchableContext bc) {
  4. //String customerRegion = 'Allied 10 EP MidAtlantic';
  5. 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' ;
  6. return Database.getQueryLocator(query);
  7. }
  8.  
  9. global void execute(Database.BatchableContext bc, List<Account> accList){
  10. String header = 'Customer Number, Name, Days Since Last Purchase, Date Last Purchase, Owner Namen';
  11. String finalstr = header;
  12. List<Purchase_Details__c> purchaseDetailsList = Purchase_Details__c.getall().values();
  13. Map<String,String[]> purchaseMap = new Map<String,String[]>();
  14. Map<String,List<Account>> accountMap = new Map<String,List<Account>>();
  15. for(Purchase_Details__c objPurchase : purchaseDetailsList){
  16. if(objPurchase.Email__c.contains(',')){
  17. String[] address = objPurchase.Email__c.split(',');
  18. purchaseMap.put(objPurchase.Name, address);
  19. }else{
  20. purchaseMap.put(objPurchase.Name,new String[] {objPurchase.Email__c});
  21. }
  22.  
  23. }
  24. Map<String,Blob> emailFileMap = new Map<String,Blob>();
  25. for(Account acc : accList){
  26. String records = acc.Beacon_Acc_Number__c+',';
  27. if(acc.Name.contains(',')){
  28. String temp = acc.Name.remove(',');
  29. records+=temp+',';
  30. }else{
  31. records+=acc.Name+',';
  32. }
  33.  
  34. records+=acc.Days_Since_Last_Purchase__c+',';
  35. Date d = acc.Date_Last_Purchase__c;
  36. records+=d.day()+'-'+d.month()+'-'+d.year()+',';
  37. records+=acc.Owner.Name+',';
  38. records +='n';
  39. finalstr = finalstr+records;
  40. if(acc.Region_Mincron__c != null){
  41. emailFileMap.put(acc.Region_Mincron__c,Blob.valueOf(finalstr));
  42. }
  43. }
  44. System.debug('-->'+emailFileMap.keySet().size());
  45. List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage>();
  46. for(String regionStr : purchaseMap.keySet()){
  47.  
  48.  
  49. Messaging.EmailFileAttachment attach = new Messaging.EmailFileAttachment();
  50. blob excel;
  51. if(emailFileMap.containsKey(regionStr) && emailFileMap.get(regionStr) != null){
  52. excel = emailFileMap.get(regionStr);
  53. }
  54. //blob excel = blob.valueOf(finalstr);
  55. attach.setBody(excel);
  56. attach.setFileName(regionStr+' file.csv');
  57. String subject = regionStr;
  58. //String body = 'Users who are not logged in since last 30 days';
  59. String body = 'Please find attached file for purchase details';
  60. String[] addressFromLabel = purchaseMap.get(regionStr);
  61.  
  62. Messaging.singleEmailMessage Emailwithattch = new Messaging.singleEmailMessage();
  63.  
  64. Emailwithattch.setSubject(subject);
  65.  
  66. Emailwithattch.setToaddresses(addressFromLabel);
  67.  
  68. Emailwithattch.setHtmlBody(body);
  69.  
  70. Emailwithattch.setFileAttachments(new Messaging.EmailFileAttachment[]{attach});
  71.  
  72. emails.add(Emailwithattch);
  73.  
  74.  
  75.  
  76. }
  77. Messaging.SendEmailResult [] r =
  78.  
  79. Messaging.sendEmail(emails);
  80. }
  81.  
  82. global void finish(Database.BatchableContext bc){ }
  83. /*public void execute(SchedulableContext SC){
  84. Database.executeBatch(new SouthDivisionUsersBatch(), 2000);
  85. } */
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement