SyncMadeEasy/force-app/main/default/classes/BatchForSendErrorMailNew.cls

110 lines
6.4 KiB
OpenEdge ABL

global with sharing class BatchForSendErrorMailNew implements Database.Batchable<Sobject>,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<string> setofidfordeleteErrorMessage = new set<string>();
global Database.QueryLocator start (Database.BatchableContext bc){
list<HIC_ShopifySync__Error_Message__c> listoferrors = new list<HIC_ShopifySync__Error_Message__c>();
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<HIC_ShopifySync__Error_Message__c> emptylist = new List<HIC_ShopifySync__Error_Message__c>();
return emptylist;
}*/
return Database.getQueryLocator(query);
}
global void execute(Database.BatchableContext bc ,list<HIC_ShopifySync__Error_Message__c> 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 <String> toAddresses = new List <String>();
List <HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c> getEmailIdsToSendErrorEmails = new List <HIC_ShopifySync__Email_Addresses_to_send_error_CSV__c>();
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<HIC_ShopifySync__Error_Message__c> listoferrorstodelete = new list<HIC_ShopifySync__Error_Message__c>();
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);
}
}
}
}
}
}
}