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 with sharing 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 with sharing class ChatterAnswersRegistration implements ChatterAnswers.AccountCreator {
    public String createAccount(String firstname, String lastname, Id siteAdminId) {
         Account a = new Account(name = firstname + ' ' + lastname, ownerId = siteAdminId);
         insert as user a;
         return a.Id;
    }
}

This example tests the code above.

@IsTest
private with sharing class ChatterAnswersCreateAccountTest {
    @IsTest
    static void validateAccountCreation() {
        User[] user = [SELECT Id, Firstname, Lastname from User WHERE UserType='Standard' WITH USER_MODE];
        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 WITH USER_MODE];
        Assert.areEqual(firstName + ' ' + lastName, acct.name);
        Assert.areEqual(userId, acct.ownerId);
  }
}