ServiceResourceScheduleHandler Interface

Allows an implementing class to check external calendar events to find already booked time slots for the requested service resources. This interface is part of Salesforce Scheduler.

Namespace

LxScheduler

Usage

The lxscheduler.ServiceResourceScheduleHandler interface is called by Salesforce Scheduler APIs.

To implement this interface, you must first declare a class with the implements keyword as follows:

1public class ServiceResourceScheduleHandlerImpl implements LxScheduler.ServiceResourceScheduleHandler{}

Next, your class must provide an implementation for the following method:

1public static List<LxScheduler.ServiceResourceSchedule> getUnavailableTimeslots(LxScheduler.ServiceAppointmentRequestInfo requestInfo){
2      //Your code here
3}

The implemented method must be declared as global or public.

ServiceResourceScheduleHandler Methods

The following are methods for ServiceResourceScheduleHandler.

getUnavailableTimeslots(var1)

Passes the required information to get unavailable time slots from an external system. The implementation of this method returns the lxscheduler.ServiceResourceSchedule class.

Signature

public List<lxscheduler.ServiceResourceSchedule> getUnavailableTimeslots(lxscheduler.ServiceAppointmentRequestInfo var1)

Parameters

var1
Type: lxscheduler.ServiceAppointmentRequestInfo
Represents the list of parameters that are passed to the ServiceResourceScheduleHandler interface.

Return Value

Type: List<lxscheduler.ServiceResourceSchedule>

ServiceResourceScheduleHandler Example Implementation

This is an example implementation of the lxscheduler.ServiceResourceScheduleHandler interface.

1/**
2 * Implement interface lxscheduler.ServiceResourceScheduleHandler
3 * This class is called when fetching service resources and time slots through Salesforce Scheduler API.*/
4   Public class ServiceResourceScheduleHandlerImpl implements lxscheduler.ServiceResourceScheduleHandler{
5    
6    // The main interface method.
7    public static List<lxscheduler.ServiceResourceSchedule> getUnavailableTimeslots(lxscheduler.ServiceAppointmentRequestInfo requestInfo){
8        //Request info values.
9        List<lxscheduler.ServiceResourceInfo> serviceResources=requestInfo.getServiceResources();
10        DateTime startDate=requestInfo.getStartDate();
11        DateTime endDate=requestInfo.getEndDate();
12      
13       
14        List<lxscheduler.ServiceResourceSchedule> resourceUnavailability = new List<lxscheduler.ServiceResourceSchedule>();
15        Set<lxscheduler.UnavailableTimeslot> unavailabilityIntervals = new Set<lxscheduler.UnavailableTimeslot>();
16        
17        //This is a dummy response. Implement your own business logic to connect to your internal or external systems.
18        for (Integer i = 0; i < 5; i++) {
19             //Set the unavailability intervals of a service resource.
20            unavailabilityIntervals.add(new lxscheduler.UnavailableTimeslot(startDate.addMinutes(15*i),startDate.addMinutes(15*(i+1))));
21        }
22       
23       for (lxscheduler.ServiceResourceInfo ServiceResource:serviceResources) {
24            //Set the unavailability of Service resource.
25        resourceUnavailability.add(new lxscheduler.ServiceResourceSchedule(serviceResource.getServiceResourceId(),unavailabilityIntervals));
26
27       }
28        
29        return resourceUnavailability;
30    }
31}

This example shows how to set a sample test mock using the lxscheduler.ServiceResourceScheduleHandler interface.

1@isTest
2private class ServiceResourceScheduleHandlerImplTest {
3   static testMethod void getUnavailableTimeslotsTest() {
4   
5      //Initializing the test execution with mock values. Change it according to the implementation.
6      //In case of non-test execution, the lxscheduler.ServiceAppointmentRequestInfo instance will automatically initialize.
7      
8      //Mock values for lxscheduler.ServiceResourceInfo
9      String userId = '005D2000000I1N6IAK';
10      String userName = 'someuser@example.com';
11      String email = 'someuser@example.com';
12      String serviceResourceId = '0HnD20000004C9bKAE';
13      List<String> territoryIds = new List<String>();
14      String resourceType = 'T';
15      lxscheduler.ServiceResourceInfo serviceResInfo = new lxscheduler.ServiceResourceInfo(userId, userName, email, 
16                                                       serviceResourceId, territoryIds, resourceType);
17      
18      //Mock values for lxscheduler.ServiceAppointmentRequestInfo 
19      DateTime startDate = System.now();
20      DateTime endDate = System.now();
21      List<lxscheduler.ServiceResourceInfo> serviceResources = new List<lxscheduler.ServiceResourceInfo>();
22      serviceResources.add(serviceResInfo);
23      String schedulingPolicyId = '0VrD20000004C9S';
24      String workTypeGroupId = '0VSD20000004C93OAE';
25      String accountId = '001D2000002pkXwIAI';
26      String primaryResourceId = '0HnD20000004C9bKAE';
27      String workTypeId = '08qD20000004C9XIAU';
28      String correlationId = 'SOME_ID';
29      
30      lxscheduler.ServiceAppointmentRequestInfo mockRequestInfo = new lxscheduler.ServiceAppointmentRequestInfo(startDate, endDate, serviceResources, 
31                                                                  schedulingPolicyId, workTypeGroupId, accountId, 
32                                                                  primaryResourceId, workTypeId, correlationId);
33      
34      ServiceResourceScheduleHandlerImpl.getUnavailableTimeslots(mockRequestInfo);
35   }
36}