Интеграция NRules (алгоритм Rete) с купонами
Я пытаюсь реализовать nrules со следующим доменом:
Order order = null;
Customer customer = null;
IEnumerable<Coupon> Coupons = null;
Купон имеет следующий класс:
public class Coupon
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public bool Active { get; set; } = true;
public double Amount { get; set; }
public bool AllowFreeShipping { get; set; }
public DateTime? EndDate { get; set; }
public Guid? IncludedProducts { get; set; }
public Guid? ExcludedProducts { get; set; }
public Guid? IncludedTags { get; set; }
public Guid? ExcludedTags { get; set; }
public string AllowedEmailsExcludedByComma { get; set; }
public int? LimitUsagePerCoupon { get; set; }
public int? LimitUsagePerClient { get; set; }
public int? LimitIndividualArticlesCount { get; set; }
}
//https://docs.woocommerce.com/document/coupon-management/
public enum CouponType
{
//A percentage discount for selected products only. For example, if the cart contains three (3) t-shirts @ $20 each = $60, a coupon for 10% off applies a discount of $6.
PercentageDiscount = 1,
//A fixed total discount for the entire cart. For example, if the cart contains three (3) t-shirts @ $20 each = $60, a coupon for $10 off gives a discount of $10.
FixedCartDiscount = 2,
//A fixed total discount for selected products only. Customer receives a set amount of discount per item. For example, three (3) t-shirts @ $20 each with a coupon for $10 off applies a discount of $30.
FixedProductDiscount = 3
}
Проблема в том, что я не знаю, как это интегрировать. Все примеры с одной сущностью.
Здесь я должен решить, является ли купон действительным для этого клиента и использовался ли купон в прошлом.
Также есть разница между тем, когда был заказ.
Я хотел бы знать, как реализовать первый NRule.