Allows you to find the ids of dimensions (such as Staff or Resources) that are available for a given reservation.

This functionality is also available in Lightning (Screen) Flow, see the last section of this page.

Methods

Description

This method returns a set with dimension ids that are available for the given input.

Signature

global static Set<Id> findAvailableDimensionIds(B25.AvailableDimensionIds.Context)

Parameters

B25.AvailableDimensionIds.Context

Class that contains the input parameters for this method. See the inner class B25.AvailableDimensionIds.Context for more details.

Return Type

Set<Id>

Set containing all the dimension IDs that would not result in any conflicts, if used for the given Reservation and Dimension Field.

Description

This method is basically the same as findAvailableDimensionIds with a few differences:

  • It is invocable, so it can be called from flows

  • It has a bulkified signature (input list + output list)

  • The result not only contains the complete collection of all available ids, but also a single id for convenience in flows when you just need an arbitrary single value.

Signature

@InvocableMethod
global static List<AvailableDimensionIds.Result> findSingleAvailableDimensionId(List<AvailableDimensionIds.Context>)

Parameters

List<B25.AvailableDimensionIds.Context>

A list of objects that contain the input parameters for this method. See the inner class B25.AvailableDimensionIds.Context for more details.

Return Type

List<AvailableDimensionIds.Result>

List of results, see the inner class B25.AvailableDimensionIds.Result for more details.

Inner Classes

Description

This class wraps the input parameters, most notably the dimension field that you are searching through and the reservation that defines the times as well as any conflict related properties.

The optional properties dimensionIds/dimensionRecordIds narrow down the search scope. If neither is set, the method will query all records of the SObject type defined by dimensionFieldName. This greatly impacts performance and it is therefore recommended to fill one of these parameters when searching in dimensions with a large amount of records.

Properties

@InvocableVariable
Reservation__c reservation

Required. Reservation you want to get available dimensions for. B25__StartLocal__c and B25__EndLocal__c need to be set. Make sure that any fields that influence conflict checking are set (i.e. the status or the quantity), or the result might not contain all available dimensions.

@InvocableVariable
String dimensionFieldName

Required. The name of the dimension field you want to search an available ID for. I.e. 'B25__Resource__c'.

Set<Id> dimensionIds

Scope of dimension IDs to limit the search to. These have to be of the same SObject type as the dimension field that you are searching in.

@InvocableVariable
List<Id> dimensionRecordIds

Scope of dimension IDs that the invocable method searches through. This is a duplicate of the dimensionIds Set and is only used for findSingleAvailableDimensionId.

@InvocableVariable
Set<Id> excludedReservationIds

Reservation IDs to ignore in conflict checking. This allows you to exclude reservations you are in the process of moving.

Description

This class wraps the result, which contains a list of available dimension ids, as well as a single arbitrary available id for convenience.

Properties

@InvocableVariable
List<Id> availableDimensionIds

A list of all the available dimension IDs

@InvocableVariable
Id availableDimensionId

A single ID of the first dimension in availableDimensionIds list.

Example

This example shows how you can use the class in your own code:

public static Set<Id> getDimensions(B25__Reservation__c reservation, String dimensionFieldName, Set<Id> dimensionIds) {
    B25.AvailableDimensionIds.Context context = new B25.AvailableDimensionIds.Context();
    context.reservation = reservation;
    context.dimensionFieldName = dimensionFieldName;
    context.dimensionIds = dimensionIds;
    return B25.AvailableDimensionIds.findAvailableDimensionIds(context);
}

Lightning (Screen) Flow Apex Action

This functionality is also available as an Apex Action in Lightning Flow, called 'Find available dimension records':

Set Input Values for the Selected Action

Dimension Field Name

Name of the Dimension Field to check

Dimension Record Ids

List of IDs of Dimension records to check

Excluded Reservation Ids

List of IDs of Dimension records to exclude

Reservation

Reservation for which a Dimension record is needed

Advanced > Manually assign variables

Available Dimension Id

Variable containing 1 resulting ID

Available Dimension Ids

Variable containing 1list of resulting IDs