global with sharing class BatchForSendErrorMailNew implements Database.Batchable,Database.Stateful{ global String finalCsvHeader = 'Shopify ID,Object Name, Error Message \n'; global String finalCsv = ''; //global String headerValue = 'Shofify ID,Object Name, Error Message \n'; //global void BatchForSendErrorMail(){ // finalCsv = headerValue; //} global boolean sended = true; global set setofidfordeleteErrorMessage = new set(); global Database.QueryLocator start (Database.BatchableContext bc){ list listoferrors = new list(); String query = 'Select '+CheckAccessibility.isAccessible('id,name,HIC_ShopifySync__Delivered__c,HIC_ShopifySync__Error_id__c,HIC_ShopifySync__Message__c,HIC_ShopifySync__Shopify_id__c,HIC_ShopifySync__Important_Field__c','HIC_ShopifySync__Error_Message__c')+' from HIC_ShopifySync__Error_Message__c where '+CheckAccessibility.isAccessible('HIC_ShopifySync__Delivered__c','HIC_ShopifySync__Error_Message__c')+' = false and '+CheckAccessibility.isAccessible('HIC_ShopifySync__IsWebhook__c','HIC_ShopifySync__Error_Message__c')+'= true'; /*listoferrors = Database.getQueryLocator(query); if(!listoferrors.isempty()){ return listoferrors; }else{ list emptylist = new List(); return emptylist; }*/ return Database.getQueryLocator(query); } global void execute(Database.BatchableContext bc ,list scope){ if(!scope.isEmpty() ){ String csvBody = ''; // String headerValue = 'Shofify ID,Object Name, Error Message \n'; string errorMsg = ''; // finalCsv = headerValue; for(HIC_ShopifySync__Error_Message__c err : scope){ if(err.HIC_ShopifySync__Shopify_id__c != null && err.HIC_ShopifySync__Shopify_id__c != '' && (err.HIC_ShopifySync__Shopify_id__c).containsIgnoreCase('T')) { err.HIC_ShopifySync__Shopify_id__c = (err.HIC_ShopifySync__Shopify_id__c).removeEnd('T'); } if(err.HIC_ShopifySync__Shopify_id__c != null && err.HIC_ShopifySync__Shopify_id__c != '' && (err.HIC_ShopifySync__Shopify_id__c).containsIgnoreCase('F')) { err.HIC_ShopifySync__Shopify_id__c = (err.HIC_ShopifySync__Shopify_id__c).removeEnd('F'); } string recordString = err.HIC_ShopifySync__Shopify_id__c+','+ err.Name +','+err.HIC_ShopifySync__Message__c +'\n'; finalCsv = finalCsv + recordString; setofidfordeleteErrorMessage.add(String.valueof(err.id)); } } } global void finish(Database.BatchableContext bc){ if( finalCsv != null && finalCsv != ''){ finalCsv = finalCsvHeader + finalCsv; List toAddresses = new List (); List getEmailIdsToSendErrorEmails = new List (); String getEmailIds = 'Select '+CheckAccessibility.isAccessible('id,name ','HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c') +' from HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c Limit 49000'; getEmailIdsToSendErrorEmails = database.query(getEmailIds); system.debug('***Emailidlist---*'+getEmailIdsToSendErrorEmails); if(getEmailIdsToSendErrorEmails.isempty()) return; for(HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c emailIds : getEmailIdsToSendErrorEmails){ if(emailIds.name != null && emailIds.name != '') toAddresses.add(emailIds.name); } system.debug('**finalCsv*-->'+finalCsv); String csvname = 'Error File.csv'; Messaging.EmailFileAttachment csvAttc = new Messaging.EmailFileAttachment(); csvAttc.setFileName(csvname); csvAttc.setBody(Blob.valueOf(finalCsv)); String subject ='Shopify Sync Error'; Messaging.SingleEmailMessage email =new Messaging.SingleEmailMessage(); email.setSubject(subject); if(!toAddresses.isEmpty() ){ System.debug('addrress****_-'+toAddresses); email.setToAddresses(toAddresses ); PageReference pageRef = new PageReference('/apex/HIC_ShopifySync__ShopifyConfigurationResultTemplate?result=failWebhook'); if(!Test.isRunningTest()){ email.setHtmlBody(pageRef.getContent().toString()); } email.setPlainTextBody(''); email.setFileAttachments(new Messaging.EmailFileAttachment[]{csvAttc}); try{ Messaging.SendEmailResult [] r = Messaging.sendEmail(new Messaging.SingleEmailMessage[] {email}); system.debug('***SendEmailResult'+r); }catch(Exception e){ sended = false; system.debug('Error: '+ e.getMessage() +'at Line '+e.getLineNumber()+' Cause '+e.getCause()); } if(!setofidfordeleteErrorMessage.isEmpty() && sended){ list listoferrorstodelete = new list(); String query = 'Select '+CheckAccessibility.isAccessible('name,HIC_ShopifySync__Delivered__c,HIC_ShopifySync__Error_id__c,HIC_ShopifySync__Message__c,HIC_ShopifySync__Shopify_id__c,HIC_ShopifySync__Important_Field__c','HIC_ShopifySync__Error_Message__c')+' from HIC_ShopifySync__Error_Message__c where id in: setofidfordeleteErrorMessage '; listoferrorstodelete = database.query(query); if(!listoferrorstodelete.isEmpty()){ if(CheckAccessibility.isDeletable('HIC_ShopifySync__Error_Message__c')){ database.delete(listoferrorstodelete,false); } } } } } } }