in src/Modules/SimplCommerce.Module.Pricing/Services/CouponService.cs [165:209]
public void AddCouponUsage(long customerId, long orderId, CouponValidationResult couponValidationResult)
{
if (!couponValidationResult.Succeeded || couponValidationResult.CartRule == null)
{
return;
}
CartRuleUsage couponUsage;
switch (couponValidationResult.CartRule.RuleToApply)
{
case "cart_fixed":
couponUsage = new CartRuleUsage
{
UserId = customerId,
OrderId = orderId,
CouponId = couponValidationResult.CouponId,
CartRuleId = couponValidationResult.CartRule.Id
};
_cartRuleUsageRepository.Add(couponUsage);
break;
case "by_percent":
foreach (var item in couponValidationResult.DiscountedProducts)
{
for (var i = 0; i < item.Quantity; i++)
{
couponUsage = new CartRuleUsage
{
UserId = customerId,
OrderId = orderId,
CouponId = couponValidationResult.CouponId,
CartRuleId = couponValidationResult.CartRule.Id
};
_cartRuleUsageRepository.Add(couponUsage);
}
}
break;
default:
throw new InvalidOperationException($"{couponValidationResult.CartRule.RuleToApply} is not supported");
}
}