Core Configuration
Room Bookings uses the Slot Booking framework. All of the configuration set in the Core Slot Bookings Settings also needs to be set up.
Room Booking End Point
The Room Booking configuration is held in the
Property | Type | Description |
---|---|---|
approvalsPayments | Object | An object that holds the two grace periods below |
approvalsPayments.approvalGracePeriod | Object | How long to hold a booking for between booking and approval. Bookings that aren't approved in this time period are automatically cancelledapprovalGracePeriod: { |
approvalsPayments.paymentGracePeriod | Object | How long to hold a booking for between approval and payment. Bookings that aren't paid for in this time period are automatically cancelledpaymentGracePeriod: { |
Buildings | Array of Integers | The parent article IDs beneath which all of the buildings are located. See Buildings and Floors. This populates the buildings drop-down in various forms |
cancellationReasons | Array of strings | These reasons populate the drop-down field on the cancellation form. For example:cancellationReasons: [ |
commercialBookerTypes | Array of Objects | Leave this array blank to disable this functionality. On the booking form a user may be prompted to confirm what their relationship is to the organisation providing the room (for example member, non-member) Each object in this array populates an option on the form, for example commercialBookerTypes: [{ |
comms | Object | The name and address emails will appear to come from, for examplecomms: { |
dataProtectionStatementURL | String | The full URL of a web page with your data protection/privacy statement. This is displayed in booking forms |
facilitiesMetadataPropertyId | Integer | The ID of a metadata property. Values describe room facilities (eg computer, whiteboard etc) and populate the room creation forms. See Creating Rooms |
minuteBookingIncrements | Array of integers | These values are used in the booking form and populate the "Minutes" drop-down when picking booking start and end times. The default is |
minuteBookingInterval | Integer | A value in minutes. This value sets the latest start time of a booking relative to the room closing time. For example, in a room that closed at 17:00, setting it as 30 would mean the latest a booking could start would be at 16:30, setting it as 60 would mean the latest a booking could start would be at 16:00 |
myBookingsArticleId | String | The article ID of an article using the My Slot Bookings template |
purposeOptions | Array of objects | This configuration is optional. If present a drop-down will appear on the booking form from which the booker will have to pick one of the following options to categorise the purpose of the booking. Each object in the array has two properties, "value" and "display" which is the format expected by the drop-down form field. For example: const purposeOptions = [ |
reservationDuration | Integer | A time in seconds. Once a booker has checked the availability of a room, the time slot will be held for this number of seconds (ie they have this long to complete the booking form) |
roomTypesMetadataPropertyId | Integer | The ID of a metadata property. Values describe the room (eg meeting room, hall etc) and populate the room creation forms. See Creating Rooms |
slotBookSearchRootMetaDataProperty | Integer | The ID of a metadata property. Values of this property are article IDs. These article IDs should be articles that describe buildings (ie have child/grandchild articles using the Slot Book template). If you relate a value to the form used to create rooms, that value will be set as the value of the Slot Book Search Root in the room's article extras, overriding the |
slotTypeId | Integer | The ID of an article using the Slot Type Template. This article provides the default booking type that will be made in the room calendars |
slotTypeMap | Array of objects | This array populates the "Booking Type" drop-down on the form used to create rooms. Each object sets the type of appointment (ie Slot Type) that will be made by a booking. For example: slotTypeMap: [{ |
slotTypeRootMetadataProperty | Integer | The ID of a metadata property. Values of this property are article IDs. These article IDs should be articles that have child articles using the Slot Type template. If you relate a value to the form used to create rooms, that value will be set as the value of the Slot Type Search Root in the room's article extras, overriding the |
superAdminGroup | String | The name of a site user group. Users in this group can administer and book onto all rooms |
termsAndConditionsURL | String | The full URL of a web page with your terms and conditions. This is displayed in booking forms |
APPOINTMENTCREATEFORM | Integer | The ID of the SBCREATEAPPOINTMENTROOMBOOKING. This form is used to make bookings that don't require payment |
APPOINTMENTVIEWFORM | Integer | The ID of the SBVIEWAPPOINTMENTBOOKING form. This form is used to view bookings that didn't require payment |
COMMERCIALAPPOINTMENTCREATEFORM | Integer | The ID of the SBCHAINEDCREATEAPPOINTMENTCOMMERCIALROOMBOOKING form. This form is used to make bookings that do require payment |
EVENTVIEWFORM | Integer | The ID of the "view events" form. This form is used to view Bookings events (ie not room bookings, but actual events) if you relate an event article to your room. This functionality isn't used by Room Bookings |
SLOTBOOKSEARCHROOT | Integer | The parent article ID of a set of articles using the Slot Type template. This value will be added to the article extras of all of your rooms but isn't used by the default booking forms |
SLOTTYPESEARCHROOT | Integer | The parent article ID of a set of articles using the Slot Type template. Each of these slot type articles describe a type of appointment that can be booked into the room calendars (note that by default all bookings are of the same type - the |
Payment Configuration
The payment provider configuration in the end point is divided into three distinct sections. The first holds the configuration for your payment providers, the second adds building or room specific settings, and the third maps providers to buildings or rooms. This allows different buildings to use different settings and providers.
Providers
The supported providers are:
- Adelante (multi-item)
- Capita SCP (single item)
- PayPal
Each provider's settings are held in a dedicated object (ie one per provider). This example shows Capita configuration:
const capitaSCPConfig = {
provider: PaymentProviders.CAPITA_SCP,
scpId: '12345678',
siteId: '123',
HMAC: 'abc<--->xyz',
HMACKeyId: '456',
wsUrl: 'https://subdomain.e-paycapita.com/scp/scpws/'
};
Building or Room Specific Settings
Once the base provider settings have been defined, building and room specific settings can be added.
The name of each configuration must have the format
This example shows two buildings (articles 3130 and 3040), both of which use the same underlying Capita configuration, but have their own fund codes and reference numbers:
const building3130capitaSCPConfig = Object.assign({}, capitaSCPConfig);
const building3040capitaSCPConfig = Object.assign({}, capitaSCPConfig);
building3130capitaSCPConfig.fundCode = "81";
building3130capitaSCPConfig.custRef1 = "MS - 590600204510000";
building3040capitaSCPConfig.fundCode = "81";
building3040capitaSCPConfig.custRef1 = "DH - 590600204510000";
Building to Provider Mapping
Once the configuration objects have been built up, they are then mapped to buildings.
The names of these objects must have the format
const paymentConfig = {
building3130: building3130capitaSCPConfig,
building3040: building3040capitaSCPConfig
};
Enabling Payments
Finally three top level settings enable your provider configuration:
paymentProviders: [PaymentProviders.CAPITAFS, PaymentProviders.PAYPALV2, PaymentProviders.CAPITA_SCP, PaymentProviders.ADELANTEV5, PaymentProviders.ADELANTEV6],
paymentProviderLevel: "Building",
paymentConfig: paymentConfig
Property | Type | Description |
---|---|---|
paymentProviders | Array | The various providers that have been configured |
paymentProviderLevel | String | Either "Building" or "Room" |
paymentConfig | Object | The configuration mapping described above |
When a payment form is displayed on the site, the form first looks for paymentProvderLevel, then adds the ID of the building or room that's being booked to look up the relevant payment provider and its configuration.
Metadata
There are five sets of metadata used by Room Bookings.
Property | Description |
---|---|
Facilities | These values describe features in a room, for example, PC, Projector, Tea and coffee making etc. The ID of this property is set as the This property is also picked in the Room Search article extras, and values appear as a filter in the search |
roomTypes | These values describe types of room, for example Meeting Room, Hall etc. The ID of this property is set as the This property is also picked in the Room Search article extras, and values appear as a filter in the search |
Slot Book Search Roots | The values of this property are the IDs of articles that represent buildings. They can be related to the forms used to create rooms, and will override the default |
Slot Types | The values of this property are the IDs of articles that represent the types of thing that can be booked (ie articles that use the Slot Type template). They can be used in the booking form to let the person making the booking pick what they want to use the room for, overriding the default |
Slot Type Search Roots | The values of this property are the IDs of parent articles that have articles using the Slot Type template beneath them. They can be used by the form used to create rooms to set the |
Users
Room Bookings defines users in the following broad categories.
Bookers
These are users who can book the room. When you create a room you can set the user groups who will be able to book it.
Administrators
These users are responsible for approving bookings and can also cancel and amend bookings. When you create a room you can set the administrator user group.
Room Managers
These users have the ability to update the room details and archive the room. They don't have access to the bookings in the room.
When you create a room you can pick the manager group from a drop-down list. The items in the drop-down are mappings to website user groups. Mappings are used so that the groups and users responsible for a room can be updated and the room doesn't become the responsibility of a single user.
Creating Room Manager Group Mappings
The drop-down list on the create a room form is populated by mappings set up in iCM using the "Room Bookings - Manage Groups" form shortcut.
The shortcut displays existing mappings, which can be edited:
When you create a new mapping you are prompted to enter a name (which will appear in the form drop-down) and pick site user groups who will be able to manage the room: