You need to sign in to do that
Don't have an account?

You have uncommitted work pending.Please commit or rollback before calling out..
hi all,
I am facing error: You have uncommitted work pending. Please commit or rollback before calling out and i have used @future(callout = true) method it is not working can anyone help me with these
Apex Class:
I am facing error: You have uncommitted work pending. Please commit or rollback before calling out and i have used @future(callout = true) method it is not working can anyone help me with these
Apex Class:
public class Campaignbulk { public campaign camp; public integer cnt{get;set;} public string Text {get;set;} Public list<Campaignmember> camplist=new list<Campaignmember>(); public list<Campaign> listcamp =new list<Campaign>(); public Campaignbulk (ApexPages.StandardController stdController) { this.camp =(Campaign)stdController.getRecord(); cnt=[ SELECT count() FROM Campaignmember WHERE CampaignId =:camp.Id]; camplist=[ SELECT phone FROM Campaignmember WHERE CampaignId =:camp.Id]; } public void sendbulk(){ List<SMS_Response__c> responseList= new List <SMS_Response__c>(); for(Campaignmember Cpgmb: camplist ) { SMS_Response__c NewRec = new SMS_Response__c(); NewRec.Mobile_Number__c =Cpgmb.Phone ; NewRec.Message__c = Text; NewRec.SMS_Type__c = 'OutGoing Message' ; NewRec.Service_Providers__c = 'Nexmo'; NewRec.Campaign__c=camp.Id; NewRec.Status__c='Processing'; responseList.add(NewRec); } if (responseList.size()>0) insert(responseList); processCampaign(camp.Id, Text); } @future(callout=true) public static void processCampaign(string campaignID, String smsText){ configuration_setting__c conf = [select Name, Phone_Numbers__c,Lead_Phone_Number__c FROM configuration_setting__c where Active__c =True limit 1 ]; List<String> lstAlpha = conf.Phone_Numbers__c.split(','); Integer currentPhone=0; List<Campaignmember> camplist=[ SELECT phone FROM Campaignmember WHERE CampaignId =:campaignID]; for(Campaignmember Cpgmb: camplist ) { String newStatus= Nexmo.bulksms( Cpgmb.Phone, lstAlpha[currentPhone++], smsText, 'sms'); Campaignbulk.insertstatus(campaignID,Cpgmb.Phone,newStatus); if (currentPhone >= lstAlpha.size()){ currentPhone=0; } } // end of all campaing memebers } // end of method Public static void insertstatus(string campaignID,string Cpgmbphone,string newStatus){ List<SMS_Response__c> smsRespList = [select id, status__c from SMS_Response__c where Campaign__c=:campaignID and status__c='Processing' and Mobile_Number__c =:Cpgmbphone]; if (smsRespList!= null && smsRespList.size()>0 ) { for(SMS_Response__c smsrp:smsRespList){ smsrp.status__c =newStatus; } system.debug('My updated list'+smsRespList); update smsRespList; } } }
Is this Campaignbulk class been reffering in VF Page, If yes, please
follow this link:https://help.salesforce.com/articleView?id=000326129&type=1&mode=1
Regards,
Raghu
skype: raghup101