AccountCreator Interface

Creates Account records that will be associated with Chatter Answers users.

Namespace

ChatterAnswers

Usage

The ChatterAnswers.AccountCreator is specified in the registrationClassName attribute of a chatteranswers:registration Visualforce component. This interface is called by Chatter Answers and allows for custom creation of Account records used for portal users.

To implement the ChatterAnswers.AccountCreator interface, you must first declare a class with the implements keyword as follows:
public class ChatterAnswersRegistration implements ChatterAnswers.AccountCreator {
Next, your class must provide an implementation for the following method:
public String createAccount(String firstname, String lastname, Id siteAdminId) {
    // Your code here
}

The implemented method must be declared as global or public.

AccountCreator Methods

The following are methods for AccountCreator.

createAccount(firstName, lastName, siteAdminId)

Accepts basic user information and creates an Account record. The implementation of this method returns the account ID.

Signature

public String createAccount(String firstName, String lastName, Id siteAdminId)

Parameters

firstName
Type: String
The first name of the user who is registering.
lastName
Type: String
The last name of the user who is registering.
siteAdminId
Type: ID
The user ID of the Site administrator, used for notification if any exceptions occur.

Return Value

Type: String

AccountCreator Example Implementation

This is an example implementation of the ChatterAnswers.AccountCreator interface. The createAccount method implementation accepts user information and creates an Account record. The method returns a String value for the Account ID.

public class ChatterAnswersRegistration implements ChatterAnswers.AccountCreator {
    public String createAccount(String firstname, String lastname, Id siteAdminId) {
         Account a = new Account(name = firstname + ' ' + lastname, ownerId = siteAdminId);
         insert a;
         return a.Id;
    }
}

This example tests the code above.

@isTest
private class ChatterAnswersCreateAccountTest {
    static testMethod void validateAccountCreation() {
        User[] user = [SELECT Id, Firstname, Lastname from User];
        if (user.size() == 0) { return; }
        String firstName = user[0].FirstName; 
        String lastName = user[0].LastName; 
        String userId = user[0].Id;
        String accountId = new ChatterAnswersRegistration().createAccount(firstName, lastName, userId);
        Account acct = [SELECT name, ownerId from Account where Id =: accountId];
        System.assertEquals(firstName + ' ' + lastName, acct.name);
        System.assertEquals(userId, acct.ownerId);
  }
}