public void ActiveOrder(string tansctionId, bool isApproved, TransactionTypeEnum tansctionType, DateTime tansctionTime, string tansctionMeta) { var tansction = TransactionRecord.Create( tansctionId, isApproved, tansctionType, tansctionTime, tansctionMeta ); TransactionRecords.Add(tansction); if (isApproved) { // redeem coupons if user used, and make sure apply to this user one time only var coupons = OrderCoupons.Select(oc => oc.Coupon); foreach(var c in coupons) { c.Redeem(User); } Approve(); } else { Reject(); } }
Invoke(ProcessCouponCodesHookRequest request, Func <ProcessCouponCodesHookRequest, ProcessCouponCodesHookResponse> func) { var hookResponse = func(request); var usedCoupons = hookResponse.OrderCoupons.UsedCoupons.ToList(); var totalDiscount = 0.0; if (request.LineItems.Any(x => x.SKU == "STRKIT001" || x.SKU == "STRKIT002" || x.SKU == "STRKIT003")) { List <LineItem> includedItems = request.LineItems.Where(x => x.SKU != "STRKIT001" && x.SKU != "STRKIT002" && x.SKU != "STRKIT003").ToList(); totalDiscount = includedItems.Sum(x => x.ExtendedPrice) * 25 / 100; } OrderCoupons coupons = new OrderCoupons { DiscountTotal = totalDiscount, UsedCoupons = usedCoupons.ToArray() }; return(new ProcessCouponCodesHookResponse { OrderCoupons = coupons, CouponAdjustedTax = hookResponse.CouponAdjustedTax }); }