Custom Price Group Criteria
Price group criteria in Ucommerce are used to determine the accessibility of a price group.
Create a Custom Criterion
Creating a Definition
public class SetupPriceGroupMemberCriterion : BackgroundService
{
private readonly IServiceProvider _serviceProvider;
/// <inheritdoc />
public SetupPriceGroupMemberCriterion(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
/// <inheritdoc />
protected override async Task ExecuteAsync(CancellationToken cancellationToken)
{
await using var asyncScope = _serviceProvider.CreateAsyncScope();
var dbContext = asyncScope.ServiceProvider.GetRequiredService<UcommerceDbContext>();
if (dbContext.Set<DefinitionEntity>()
.Any(x => x.Name == "Member Criterion"))
{
return;
}
// Set up data using dbContext
// Find the ShortText data type
var dataType = dbContext.Set<DataTypeEntity>()
.FirstOrDefault(x => x.Guid.ToString() == "2d65650b-810a-47d3-8431-a0608a853fed");
var defFields = new List<DefinitionFieldEntity>
{
new()
{
Name = "Member",
DataType = dataType,
DisplayOnSite = true,
RenderInEditor = true,
Guid = Guid.Parse("b4f2b61e-7f71-4fba-a587-3c6ab8a701fe")
}
};
dbContext.Set<DefinitionEntity>()
.Add(new DefinitionEntity
{
BuiltIn = false,
Description = "Member-based price group criterion",
Name = "Member Criterion",
DefinitionTypeId = 94868, //Id of the Price Group Criterion Definition Type
DefinitionFields = defFields,
Guid = Guid.Parse("b846d509-d1fb-4688-9db1-a23a4a6c66e1")
});
await dbContext.SaveChangesAsync(cancellationToken);
}
} Implementing a Pipeline Task for Satisfaction Check
Example
Validation (Optional)
Example
Test that it works
Tips for Reusability
Last updated