xWeb Event Group Registration
This topic explains how to create a Group Registration in xWeb.
A group of people can register for an Event via Group Registration. This is a common practice at Events and it is done to get registration fee discounts and to encourage organizations to send a group of people to an event. Generally, the people all work at the same organization.
Flow
This section explains the general flow of Event Group Registration works. You should model your own application accordingly.
In summary, you'll have a Group Registration Object that will contain a collection of multiple Registrant Objects, one for each person in the Group. Each Registrant Object will contain a FeeCollection with one or more Fees for the Registrant. Once you have finished adding all the Registrants to the Group Registration Object, then you'll add the Group Registration Object into the overall Shopping Cart Object. These steps are described in greater detail below.
As this diagram illustrates, an Event Group Registration is really just a line item in a Shopping Cart Object. The Cart can have other line items as well (Line Item 1 and Line Item 2).
The Event Group Registrant can have 1, 2 or more Registrants. Each Registrant has a set of Fees, for the main event and for any session(s).
The flow chart below suggests a potential process flow (from left --> right) in your application to help fill up the conceptual model with actual data. The Yes/No decision boxes depict how you can get into a loop of adding multiple Sessions to a Registrant and Registrants to a Group. Each box corresponds to one or more web methods, which are explained in more detail in the sections below.
Initialize Shopping Cart Object
The customer who is shopping must have an active Shopping Cart Object. See Shopping Cart Object for how to initialize a cart for a customer.
Initialize Group Registration Object
To start a Group Registration, first initialize a new Group Registration Object by calling WEBCentralizedShoppingCartEventRegistrantGroupGetNew. You'll need to pass the Customer Keys of both the main registrant and his/her organization. This method will return to you a Group Registration Object containing an empty RegistrantCollection node.
Create Registrants and Add to Group
Now you'll want to start adding registrants into the Group. The first step is to determine which people are eligible to be in the Group. Call WEBCentralizedShoppingCartGetEventRegistrantGroupIndividualList to get a list of customers who are the main registrant's colleagues at the company. You can still register people outside this list, but the list serves as a starting point.
To create a registrant requires several steps:
Initialize Registrant Object
First, create a new Registrant Object for the person who will be registering by calling WEBCentralizedShoppingCartEventRegistrantGetNew and passing the EventKey of the Event and the Customer Key of the Registrant.
Initialize FeeCollection
At the same time, you can create a new FeeCollection object that you'll use to keep a list of any event fees the registrant will be adding. You'll use this FeeCollection later. Be sure to start up a fresh FeeCollection for each Registrant in the Group. Generally, you'll have one Fee for the main registration, and then zero, one or more Fees for any Event Session registrations. Unlike many other eCommerce methods in xWeb, you don't need to call a method to add a Fee to the FeeCollection; just store this locally to your application and add to it. (In NetForum, you must have a main registration fee, and Sessions are optional.)
Main Registration Fee
Second, call WEBCentralizedShoppingCartGetEventFees to get the Fees for the Registrant. List the Fees to the Registrant and allow them to choose their main Fee. Add the chosen fee to the FeeCollection object you created above. Set the <Fee.prc_key> to be the value of <prc_Key> from WEBCentralizedShoppingCartGetEventFees.
Session Fees
Third, if the Event has Sessions, then you'll also want to add Sessions to the Registrant Object. To get a general list of sessions for an event, call WEBCentralizedShoppingCartGetSessionListByEventKey. The get the list of Sessions and prices for which the specific Registrant is eligible, call WEBCentralizedShoppingCartGetEventSessionFees which will contain the <Price> for the particular Registrant. For each Session the Registrant wishes to select, add it to the FeeCollection you started tracking earlier; set the <Fee.prc_key> in the Fee to that of the <prc_Key> in the return from WEBCentralizedShoppingCartGetEventSessionFees.
Add Fees to Registrant Object
Once you've loaded up the main registration fee and any session fee(s) into the Registrant's FeeCollection, then you'll call WEBCentralizedShoppingCartEventRegistrantSetLineItems and pass the FeeCollection to add any selected Fee(s) to their Registrant Object. This method will return an updated Registration Object containing the Fees. You only need to call this method once for all Fees; you don't need to call this for each and every Fee.
Add Registrant to Group
At this point, the Registrant Object is complete and you can add it into the overall Group Registration Object. Do this by calling WEBCentralizedShoppingCartAddEventRegistrantToGroup and pass the Registrant Object and the existing Group Registration Object. The method will return an updated Group Registration Object with the newly-added Registrant in the RegistrantCollection.
At this point, you can cycle through the same steps to add additional registrants to the Group.
Add Group Registration Object to Cart
Finally, when all the Registrants have been added to the Group, then you need to add the overall Group Registration to the Cart by calling WEBCentralizedShoppingCartAddEventRegistrantGroup. This method will return a refreshed Shopping Cart Object with the Group Registration contained in the Cart. At this point, you can let the user continue to shop or they can check out and pay.
Check Out and Pay
When you're ready to check out and pay, see WEBCentralizedShoppingCartInsert. In this method, you pass the Shopping Cart Object containing the Group Registration, Registrants with any main Fee or Session Fees, and the web method will inert the invoice, payment, registrant, and other associated data.
Design Considerations
Registering Individuals Not in NetForum
If the user wants to register someone not in NetForum, then you can take the user through a series of steps to create a new individual. There are several web methods for this purpose.
Minimizing Steps
If you don't want the user to have to walk through all these steps to add a Registrant to the Group, there are some ways you can cut steps, but be careful because technically each registrant might be eligible for different fees and sessions. If the Event being registered for has a relatively simple member/non-member fee structure, then you might be able to take some shortcuts by having your application "know" the member and non-member fees and providing those as <prc_key> properties to a Fee.
Related Web Methods
These web methods might also need to be called:
Registrant Type
A Registrant can have a Registrant Type, which can drive pricing fees. Call WEBCentralizedShoppingCartGetEventRegistrantTypeListByEvent to get the Types by Event.
Remove Registrant from Group
If the shopper wants to remove one Registrant from the Group, call WEBCentralizedShoppingCartRemoveEventRegistrantFromGroup.
Remove Group Registration From Cart
If the shopper decides to remove the entire Group Registration from the cart, then call WEBCentralizedShoppingCartRemoveEventRegistrantGroup.
Alter Fees of a Group Registrant
Use WEBCentralizedShoppingCartEventRegistrantSetLineItemsWithCart to add or remove line items from a specific Registrant when the Registration has already been added to the Shopping Cart Object.
Get Group Registrant
WEBCentralizedShoppingCartEventRegistrantGroupGet returns information about a Group Registration that has already been saved into NetForum.
Refresh Group Registration
If information in the object is altered independently of these methods, then call WEBCentralizedShoppingCartEventRegistrantGroupRefresh to refresh the object.
See Also
- xWeb Event Registration - similar page with instructions on adding a single Event Registrant.
- xWeb Event Registration Add New Session Registration