예제 #1
0
		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();
			}

		}
예제 #2
0
        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
            });
        }