Skip to main content
Skip table of contents

AvailableDimensionIds

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

findAvailableDimensionIds
Description

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

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

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

Return Type
CODE
Set<Id>

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

findSingleAvailableDimensionIds
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
CODE
@InvocableMethod
global static List<AvailableDimensionIds.Result> findSingleAvailableDimensionId(List<AvailableDimensionIds.Context>)
Parameters
CODE
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
CODE
List<AvailableDimensionIds.Result>

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

Inner Classes

Context
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
CODE
@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.

CODE
@InvocableVariable
String dimensionFieldName

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

CODE
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.

CODE
@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.

CODE
@InvocableVariable
Set<Id> excludedReservationIds

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

Result
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
CODE
@InvocableVariable
List<Id> availableDimensionIds

A list of all the available dimension IDs

CODE
@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:

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);
}

GoMeddo Rest API

In the GoMeddo Rest API, a similar function called findAvailableDimensionIds exists, filtering a list of dimension IDs to retain only those where a specific reservation can be created.

https://apidocs.gomeddo.com/#/availability/post_findAvailableDimensionIds

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


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.