Example: we need to validate if the product is available for Sales
Create class ProductIsAvailableForSale inherited from class ValidationRuleBase<ValidateCartContextArgs> and implement the logic of validating in the method Validate
using Litium.Sales;
using Litium.Validations;
using Litium.Web;
namespace Litium.Accelerator.ValidationRules
{
/// <summary>
/// Validates whether product is still available to buy, since it was last put to cart.
/// </summary>
public class ProductIsAvailableForSale : ValidationRuleBase<ValidateCartContextArgs>
{
public ProductIsAvailableForSale()
{
}
public override ValidationResult Validate(ValidateCartContextArgs entity, ValidationMode validationMode)
{
var result = new ValidationResult();
//implement logic for validating
result.AddError("Cart", "sales.validation.product.nolongeravailableforsale".AsWebsiteText());
return result;
}
}
}
NOTE:
If the ValidateCartContextArgs.ConfirmedCart property is not null, it contains the information from the payment app about the Cart which the payment app has.
This is usally the last validation call coming from the payment app.
The Cart in Litum should match the ConfirmedCart in article quantities and prices, otherwise it should be treated as a validation failure.
The ConfirmedCart may have additional payment fees rows, which is ok.
|