Пример #1
0
        public Customer(int orders, DateTime lastOrderDate)
        {
            Orders        = orders;
            LastOrderDate = lastOrderDate;

            _discountPolicy = new NoDiscountPolicy();
            ReCalculateDiscount();
        }
Пример #2
0
 public CompositeDiscountPolicy(IDiscountPolicy discountPolicy1, ILogicOperator @operator, IDiscountPolicy discountPolicy2, int discountPercentage, string description)
 {
     Guid               = Guid.NewGuid();
     DiscountPolicy1    = discountPolicy1;
     Operator           = @operator;
     DiscountPolicy2    = discountPolicy2;
     DiscountPercentage = discountPercentage;
     Description        = description;
 }
Пример #3
0
 public Guid AddNewDiscountPolicy(IDiscountPolicy newDiscountPolicy)
 {
     if (DiscountPolicies == null)
     {
         DiscountPolicies = new List <IDiscountPolicy>();
     }
     DiscountPolicies.Add(newDiscountPolicy);
     return(newDiscountPolicy.Guid);
 }
Пример #4
0
 public Guid AddNewDiscountPolicy(Shop shop, IDiscountPolicy newDiscountPolicy)
 {
     if (shop.DiscountPolicies == null)
     {
         shop.DiscountPolicies = new List <IDiscountPolicy>();
     }
     shop.DiscountPolicies.Add(newDiscountPolicy);
     _unitOfWork.ShopRepository.Update(shop);
     return(newDiscountPolicy.Guid);
 }
Пример #5
0
        private static void VerifyProductDiscountPolicy(IDiscountPolicy discountPolicy1, IDiscountPolicy discountPolicy2)
        {
            var expected = (ProductDiscountPolicy)discountPolicy1;
            var actual   = (ProductDiscountPolicy)discountPolicy2;

            Assert.AreEqual(expected.Guid, actual.Guid);
            Assert.AreEqual(expected.Description, actual.Description);
            Assert.AreEqual(expected.ProductGuid, actual.ProductGuid);
            Assert.AreEqual(expected.Operator.ToString(), actual.Operator.ToString());
            Assert.AreEqual(expected.DiscountPercentage, actual.DiscountPercentage);
        }
Пример #6
0
        private static void VerifyUserDiscountPolicy(IDiscountPolicy discountPolicy1, IDiscountPolicy discountPolicy2)
        {
            var expected = (UserDiscountPolicy)discountPolicy1;
            var actual   = (UserDiscountPolicy)discountPolicy2;

            Assert.AreEqual(expected.Guid, actual.Guid);
            Assert.AreEqual(expected.Description, actual.Description);
            Assert.AreEqual(expected.FieldName, actual.FieldName);
            Assert.AreEqual(expected.ExpectedValue, actual.ExpectedValue);
            Assert.AreEqual(expected.DiscountPercentage, actual.DiscountPercentage);
        }
Пример #7
0
        private static void VerifyCompositeDiscountPolicy(IDiscountPolicy purchasePolicy1, IDiscountPolicy purchasePolicy2)
        {
            var expected = (CompositeDiscountPolicy)purchasePolicy1;
            var actual   = (CompositeDiscountPolicy)purchasePolicy2;

            Assert.AreEqual(expected.Guid, actual.Guid);
            Assert.AreEqual(expected.Description, actual.Description);
            Assert.AreEqual(expected.Operator.ToString(), actual.Operator.ToString());
            Assert.AreEqual(expected.DiscountPercentage, actual.DiscountPercentage);
            VerifyProductDiscountPolicy(expected.DiscountPolicy1, actual.DiscountPolicy1);
            VerifyCartDiscountPolicy(expected.DiscountPolicy2, actual.DiscountPolicy2);
        }
Пример #8
0
 public Guid AddNewDiscountPolicy(Guid userGuid, Guid shopGuid, IDiscountPolicy newPolicy)
 {
     throw new BadStateException($"Tried to invoke AddNewDiscountPolicy in GuestUser");
 }
Пример #9
0
 private void ReCalculateDiscount()
 => _discountPolicy = _discountPolicy.CalculateDiscount(this);
Пример #10
0
        public Price CalculateValue(Price price, IDiscountPolicy discountPolicy)
        {
            var priceAfterDiscount = discountPolicy.CalculatePrice(price);

            return(_amount * priceAfterDiscount);
        }
 public PizzaOrderingSystemInterfaces(IDiscountPolicy discountPolicy)
 {
     _discountPolicy = discountPolicy;
 }