Apex Code to Create Recurring Event in Salesforce Lightning

In this article, I am sharing my approach and code required for fetching recurring events in Salesforce Lightning.  The use cases could be creating a recurring pickup, order placement etc. You would need basic knowledge of Apex and Salesforce Lightning.

This screen will give you an idea about the recurring UI.

.create recurring event in salesforce lightning

Scenario: –

User can select a Start Date, End Date, Recurring weeks and Days. Now according to selected fields, the record will get recur in future.

Step1: – We need to create an auraEnabled apex method to fetch dates between the Start Date and End Date.

Apex Method.

@AuraEnabled

public static Integer getDays(string startDate ,string endDate){

integer noOfDays= date.valueOf(startDate).daysBetween(date.valueOf(endDate));

return noOfDays;

}

Step2: – To create recurring event in saleforce lightning component controller we need to store that dates accordingly.

Lightning controller.

getDates: function(component, event, helper){

var startDate = component.find(“dateField”).get(“v.value”);

var endDate = component.find(“dateFieldend”).get(“v.value”);

var recurWeek = component.find(“week”).get(“v.value”);

var recurWeek1 = (Number(recurWeek)+1)*7;

var startDate1 = new Date(startDate);

var endDate1 = new Date(startDate);

alert(‘recurWeek1===’+recurWeek1);

var selectedDays = [“”,””,””,””,””,””,””];

var checkboxes=component.find(“check”);

for(var c in checkboxes){

if(checkboxes[c].get(“v.checked”)){

var dayvalue = checkboxes[c].get(“v.value”)

 selectedDays.splice(dayvalue,1,dayvalue);

}

}

alert(“startDate == “+startDate1+” endDate == “+endDate1+” recurWeek == “+recurWeek1+” selectedDays == “+selectedDays);

var startDay = startDate1.getDay();

var dateArray = [];

var finaldates = [];

var action=component.get(“c.getDays”);

action.setParams({“startDate”:startDate,”endDate”:endDate});

action.setCallback(component,function(response){

if(response.getState()==”SUCCESS”){

var noOfDays =response.getReturnValue();

for(var i=startDay;i<noOfDays;i++){

if(startDay == selectedDays[i]){

dateArray.push(startDate1);

 }

else if(i%7==selectedDays[i%7] && selectedDays[i%7]!= “”){

var date = new Date(startDate1.setDate(startDate1.getDate()));

dateArray.push(date);

}

startDate1.setDate(startDate1.getDate() + 1);

}

}

});

$A.enqueueAction(action);

}

It is that simple, isn’t that? Feel free to send me your questions by adding comments to this blog.

Posted in Apex Controller, Apex Development, force.com app development, salesforce customization, salesforce development. Tagged with , , , .

Leave a Reply

Your email address will not be published. Required fields are marked *

*