Esempio n. 1
0
 public void Clear()
 {
     DiscountPercent = 0;
     DiscountAmount  = 0;
     ShoppingCartItems.Clear();
     ShoppingCartCoupons.Clear();
 }
Esempio n. 2
0
        public void ApplyCoupon(Coupon coupon)
        {
            coupon.Apply(this, User);
            var lineCoupon = LineCoupon.Create(coupon, this);

            ShoppingCartCoupons.Add(lineCoupon);
        }
Esempio n. 3
0
        public void RemoveCoupon(Coupon coupon)
        {
            coupon.Remove(this);
            var lineCoupons = ShoppingCartCoupons.ToList();

            lineCoupons.Remove(ShoppingCartCoupons.SingleOrDefault(c => c.CouponId == coupon.Id));
            ShoppingCartCoupons = lineCoupons;
        }
Esempio n. 4
0
 public Order CheckOut()
 {
     // 1. validate shoppingCart items
     if (ShoppingCartItems.Count <= 0)
     {
         throw new ShoppingCartValidationException("your shopping cart is empty.");
     }
     foreach (var item in ShoppingCartItems)
     {
         item.Validate();
     }
     // 2. validate shoppingCart Coupons
     foreach (var coupon in ShoppingCartCoupons.Select(sc => sc.Coupon))
     {
         coupon.Validate(User);
     }
     // 3. create order, move items & coupons to order
     return(Order.Create(User, this));
 }
Esempio n. 5
0
        public void RemoveShoppingCartItem(LineItem item)
        {
            // remove item
            var itemList = ShoppingCartItems.ToList();

            itemList.Remove(item);
            ShoppingCartItems = itemList;

            // check coupons if not valid then remvove the coupon
            var lineCoupons = ShoppingCartCoupons.ToList();
            var coupons     = ShoppingCartCoupons.Select(sc => sc.Coupon);

            foreach (var c in coupons)
            {
                if (!c.IsCouponRulesApplicable(itemList))
                {
                    c.Remove(this);
                    lineCoupons.Remove(ShoppingCartCoupons.SingleOrDefault(sc => sc.CouponId == c.Id));
                }
            }
            ShoppingCartCoupons = lineCoupons;
        }