Sana Assistant (online)
Table of Contents

BasketValidationExtension Class

The BasketValidationExtension class serves as the base class for implementing custom basket validation rules in Sana Commerce Cloud. It provides the foundation for creating validation logic that can be applied to different checkout processes.

BasketValidationExtension class diagram

Properties

ProcessesToBlock

public abstract CheckoutProcesses ProcessesToBlock { get; }

Defines which checkout processes the validation rule blocks for the user when the validation fails.

If the validation rule does not block the user from proceeding with the checkout process, use CheckoutProcesses.None.

Methods

ValidateAsync

public abstract Task<BasketValidationResult> ValidateAsync(BasketValidationContext context)

Performs the basket validation logic. This method must be implemented by derived classes to define the actual validation rules.

Parameters

  • context: A BasketValidationContext instance containing information about the current basket and user.

Returns

A Task<BasketValidationResult> indicating whether the validation passed or failed.

Example Usage

Here's an example of implementing a basket validation rule that ensures a minimum order amount:

public class MinimumOrderValidator : BasketValidationExtension
{
    public override CheckoutProcesses ProcessesToBlock =>
        CheckoutProcesses.Order;

    public override Task<BasketValidationResult> ValidateAsync(BasketValidationContext context)
    {
        decimal minimumAmount = 50m;

        if (context.Basket.TotalPrice < minimumAmount)
        {
            return Task.FromResult(BasketValidationResult.Failed(
                $"Minimum order amount is {minimumAmount} {context.CurrencyId}"));
        }

        return Task.FromResult(BasketValidationResult.Succeeded());
    }
}