public bool ApplyCoupon(ShoppingCart cart, string coupon) { if (String.IsNullOrWhiteSpace(coupon)) { return false; } var oldCoupon = cart.CouponCode; cart.CouponCode = coupon; var context = PriceCalculationContext.CreateFrom(cart); new PriceCalculator().Calculate(context); if (context.AppliedPromotions.Any(p => p.RequireCouponCode && p.CouponCode == coupon)) { return true; } cart.CouponCode = oldCoupon; _repository.Database.SaveChanges(); return false; }
public bool ApplyCoupon(int cartId, string coupon) { return _context.Database.Transactional(() => { var service = new Core.ShoppingCartService(_context.Instance); var cart = service.Find(cartId); return service.ApplyCoupon(cart, coupon); }); }