コード例 #1
0
ファイル: Basket.cs プロジェクト: BionStt/PPPDDDChap26
        public void remove_coupon(string coupon_code, IBasketPricingService basket_pricing_service)
        {
            var coupon = _coupons.First(c => c.code == coupon_code);

            _coupons.Remove(coupon);

            recalculate_basket_totals(basket_pricing_service);
        }
 public ApplyCouponToBasketCommandHandler(IPromotionsRepository promotions_repository,
                                          IBasketRepository basket_repository,
                                          IBasketPricingService basketPricingService)
 {
     _promotions_repository = promotions_repository;
     _basket_repository     = basket_repository;
     _basketPricingService  = basketPricingService;
 }
コード例 #3
0
ファイル: Basket.cs プロジェクト: elbandit/PPPDDD
        public void apply(Promotion promotion, IBasketPricingService basket_pricing_service)
        {
            // double dispatch
            var coupon = promotion.create_coupon_for(this._id);

            _coupons.Add(coupon);

            recalculate_basket_totals(basket_pricing_service);
        }
コード例 #4
0
 public BasketService(
     IStorageService storageService,
     IProductRepository productRepository,
     IBasketPricingService basketPricingService)
 {
     this._storageService    = storageService;
     this._productRepository = productRepository;
     _basketPricingService   = basketPricingService;
 }
コード例 #5
0
ファイル: Basket.cs プロジェクト: BionStt/PPPDDDChap26
        public void apply(Promotion promotion, IBasketPricingService basket_pricing_service)
        {
            // double dispatch
            var coupon = promotion.create_coupon_for(this._id);

            _coupons.Add(coupon);

            recalculate_basket_totals(basket_pricing_service);
        }
コード例 #6
0
ファイル: Basket.cs プロジェクト: BionStt/PPPDDDChap26
        public void remove_product_with_id_of(ProductSnapshot product, IBasketPricingService basket_pricing_service)
        {
            if (basket_contains_an_item_for(product))
            {
                _items.Remove(get_item_for(product));

                recalculate_basket_totals(basket_pricing_service);
            }
        }
コード例 #7
0
ファイル: Basket.cs プロジェクト: elbandit/PPPDDD
        public void add(ProductSnapshot product_snapshot, IBasketPricingService basket_pricing_service)
        {
            // TODO: Check for null values and invalid data

            if (basket_contains_an_item_for(product_snapshot))
                get_item_for(product_snapshot).increase_item_quantity_by(new NonNegativeQuantity(1));
            else
                _items.Add(BasketItemFactory.create_item_for(product_snapshot));

            recalculate_basket_totals(basket_pricing_service);
        }
コード例 #8
0
ファイル: Basket.cs プロジェクト: BionStt/PPPDDDChap26
        public void add(ProductSnapshot product_snapshot, IBasketPricingService basket_pricing_service)
        {
            // TODO: Check for null values and invalid data

            if (basket_contains_an_item_for(product_snapshot))
            {
                get_item_for(product_snapshot).increase_item_quantity_by(new NonNegativeQuantity(1));
            }
            else
            {
                _items.Add(BasketItemFactory.create_item_for(product_snapshot));
            }

            recalculate_basket_totals(basket_pricing_service);
        }
コード例 #9
0
ファイル: Basket.cs プロジェクト: elbandit/PPPDDD
        public void change_quantity_of_product(NonNegativeQuantity quantity, ProductSnapshot product_snapshot, IBasketPricingService basket_pricing_service)
        {
            // TODO: Check for null values and invalid data

            if (basket_contains_an_item_for(product_snapshot))
            {
                if (quantity.is_zero())
                {
                    remove_product_with_id_of(product_snapshot, basket_pricing_service);
                }
                else
                    get_item_for(product_snapshot).change_item_quantity_to(quantity);

                recalculate_basket_totals(basket_pricing_service);
            }
        }
コード例 #10
0
ファイル: Basket.cs プロジェクト: elbandit/PPPDDD
        public void remove_coupon(string coupon_code, IBasketPricingService basket_pricing_service)
        {
            var coupon = _coupons.First(c => c.code == coupon_code);

            _coupons.Remove(coupon);

            recalculate_basket_totals(basket_pricing_service);
        }
コード例 #11
0
ファイル: Basket.cs プロジェクト: elbandit/PPPDDD
        private void recalculate_basket_totals(IBasketPricingService basket_pricing_service)
        {
            var total = basket_pricing_service.calculate_total_price_for(_items, _coupons);

            DomainEvents.raise(new BasketPriceChanged(this._id, total.basket_total, total.discount));
        }
コード例 #12
0
ファイル: Basket.cs プロジェクト: elbandit/PPPDDD
        public void remove_product_with_id_of(ProductSnapshot product, IBasketPricingService basket_pricing_service)
        {
            if (basket_contains_an_item_for(product))
            {
                _items.Remove(get_item_for(product));

                recalculate_basket_totals(basket_pricing_service);
            }
        }
 public RemoveCouponFromBasketCommandHandler(IBasketRepository basket_repository,
                                             IBasketPricingService basketPricingService)
 {
     _basket_repository    = basket_repository;
     _basketPricingService = basketPricingService;
 }
コード例 #14
0
ファイル: Basket.cs プロジェクト: BionStt/PPPDDDChap26
        public void change_quantity_of_product(NonNegativeQuantity quantity, ProductSnapshot product_snapshot, IBasketPricingService basket_pricing_service)
        {
            // TODO: Check for null values and invalid data

            if (basket_contains_an_item_for(product_snapshot))
            {
                if (quantity.is_zero())
                {
                    remove_product_with_id_of(product_snapshot, basket_pricing_service);
                }
                else
                {
                    get_item_for(product_snapshot).change_item_quantity_to(quantity);
                }

                recalculate_basket_totals(basket_pricing_service);
            }
        }
コード例 #15
0
ファイル: Basket.cs プロジェクト: BionStt/PPPDDDChap26
        private void recalculate_basket_totals(IBasketPricingService basket_pricing_service)
        {
            var total = basket_pricing_service.calculate_total_price_for(_items, _coupons);

            DomainEvents.raise(new BasketPriceChanged(this._id, total.basket_total, total.discount));
        }
コード例 #16
0
 public RemoveProductFromBasketCommandHandler(IBasketRepository basket_repository,
                                              IBasketPricingService basket_pricing_service)
 {
     _basketRepository     = basket_repository;
     _basketPricingService = basket_pricing_service;
 }