RecurringReservations
The RecurringReservations class enables developers to create a recurring series of Reservations. The method only creates Reservations, and does not insert or validate them. To validate the reservations, you can call B25.BulkReservationValidator.validate.
Methods
generateRecurringReservationSeries(Context context)
This method takes one or more lists of Reservations wrapped in a Context class, and adds any detected soft or hard conflicts to them.
Inner Classes
Context class
This object contains a prototype Reservation (which will be cloned to create each Reservation in the result), a Recurring Reservation record with all the recurrence settings, and some more optional parameters.
Result class
This class wraps the resulting series of B25__Reservation__c objects. Take note that these Reservations have not yet been inserted or validated.
Example
B25.RecurringReservations.Context context = new B25.RecurringReservations.Context();
// create a prototype that will be used to create the new reservations
context.prototype = new B25__Reservation__c(
B25__Startlocal__c = System.now(),
B25__EndLocal__c = System.now().addhours(1),
B25__Resource__c = 'xxxxxxxxx', // fill in a Resource Id here (or choose a different dimension, like B25__Staff__c)
B25__Title__c = 'Sample Reservation',
B25__Reservation_Type__c = 'xxxxxxxxxxxxx'); // fill in a Reservation Type Id here
// the following settings will create a series of 7 reservations, starting today
context.recurringReservation = new B25__Recurring_Reservation__c(
B25__Start_date__c = System.today(),
B25__End_date__c = System.today().addDays(100),
B25__Recurrence_Type__c = 'DAILY',
B25__Repeat_Interval__c = 1,
B25__End_Condition__c = 'NUMBER_OF_RESERVATIONS',
B25__Number_Of_Reservations__c = 7);
// skip any periods that the chosen Resource is unavailable
context.skipUnavailabilityDimensions = new Set<String>{'B25__Resource__c'};
// generate the resulting reservations and insert them
B25.RecurringReservations.Result result = B25.RecurringReservations.generateRecurringReservationSeries(context);
insert result.reservations;