Customizing creation of new customers

In Kentico, you can customize how the system creates new customers. This is suitable especially when you want to process additional actions during the creation of a new customer, or when you want to replace the custom creation process completely.

To customize creating of new customers, you need to implement a class that inherits from the CustomerInfoProvider class:

  1. Create a new class in your project in Visual Studio (for example CustomCustomerInfoProvider.cs) that inherits from the CustomerInfoProvider class and registers the custom InfoProvider:

    
    
    
     [assembly: RegisterCustomProvider(typeof(CustomCustomerInfoProvider))]
     public class CustomCustomerInfoProvider : CustomerInfoProvider
     {
     }
    
    
     
  2. Override the default SetInfo method.

  3. Save your project and reload your Kentico website.

The system now uses the custom CustomerInfoProvider class with the modified method.

To customize retrieval or deleting of customers, you can similarly customize the GetInfoByID or DeleteInfo methods.

Example – Adding extra credit to newly registered customers

This example demonstrates adding extra credit to the credit account of every newly registered customer.




using System;

using CMS;
using CMS.Ecommerce;
using CMS.SiteProvider;

[assembly: RegisterCustomProvider(typeof(CustomCustomerInfoProvider))]

public class CustomCustomerInfoProvider : CustomerInfoProvider
{
    protected override void SetInfo(CustomerInfo customerObj)
    {
        // Determines whether a new customer is being created
        bool newCustomer = ((customerObj != null) && (customerObj.CustomerID <= 0));

        // Updates or creates the customer based on the default process
        base.SetInfo(customerObj);

        // Adds extra credit for each new registered customer
        if (newCustomer && customerObj.CustomerIsRegistered)
        {
            // Creates a new credit event object
            CreditEventInfo extraCredit = new CreditEventInfo();

            // Sets the credit event's general properties
            extraCredit.EventName = "Extra credit for a new customer";
            extraCredit.EventDate = DateTime.Now;
            extraCredit.EventDescription = "This is starting credit for a new customer.";
            extraCredit.EventCustomerID = customerObj.CustomerID;

            // Sets the credit event's value in the site's main currency
            extraCredit.EventCreditChange = 100;

            // Sets the credit as site or global credit according to the current site's settings
            extraCredit.EventSiteID = ECommerceHelper.GetSiteID(SiteContext.CurrentSiteID, ECommerceSettings.USE_GLOBAL_CREDIT);

            // Saves the credit event to the database
            CreditEventInfoProvider.SetCreditEventInfo(extraCredit);
        }
    }
}