public void RegisterDiscountRule(IDiscountRule rule)
        {
            if (_rules.Any(x => x.Id == rule.Id))
            {
                return;
            }

            _rules.Add(rule);
        }
示例#2
0
        public void AddDiscount(IDiscountRule discountRule)
        {
            var ruleExists = _rules.Any(x => x.GetType() == discountRule.GetType());

            if (ruleExists == false)
            {
                _rules.Add(discountRule);
            }
        }
示例#3
0
    /// <inheritdoc />
    public decimal CalculateDiscount(OrderItem item)
    {
        decimal totalDiscount = 0;

        foreach (var discountType in _discountTypes)
        {
            IDiscountRule rule = Activator.CreateInstance(discountType) as IDiscountRule;
            if (rule != null)
            {
                totalDiscount += rule.CalculateDiscount(item);
            }
        }
        return(totalDiscount);
    }
示例#4
0
        public virtual string GetRequirementUrlInternal(IDiscountRule discountRequirementRule, Discount discount, string discountRequirementId)
        {
            if (discountRequirementRule == null)
            {
                throw new ArgumentNullException(nameof(discountRequirementRule));
            }

            if (discount == null)
            {
                throw new ArgumentNullException(nameof(discount));
            }

            var storeLocation = _workContext.CurrentStore.SslEnabled ? _workContext.CurrentStore.SecureUrl.TrimEnd('/') : _workContext.CurrentStore.Url.TrimEnd('/');

            string url = string.Format("{0}/{1}", storeLocation, discountRequirementRule.GetConfigurationUrl(discount.Id, discountRequirementId));

            return(url);
        }
示例#5
0
 public MixtPercentageDiscount(string productId, decimal value, IDiscountRule rule) : base(productId, value)
 {
     Rule = rule;
 }
示例#6
0
 public DiscountOffer(IDiscountRule discount, ICondition condition)
 {
     Discount  = discount;
     Condition = condition;
 }
 public CustomerDateOfFirstPurchaseRuleTests()
 {
     customerDateOfFirstPurchaseRule = new CustomerDateOfFirstPurchaseRule();
 }
示例#8
0
 public TotalCost(IDiscountRule discount)
 {
     this.discount = discount;
 }
示例#9
0
 public CustomerSeniorRuleTests()
 {
     _customerSeniorRule = new CustomerSeniorRule();
 }
示例#10
0
 public ByTitle(IDiscountRule discount)
 {
     this.discount = discount;
 }
示例#11
0
 public DiscountOffer(ICondition condition, IDiscountRule discount, int countDay = 7) : base(condition)
 {
     this.discount = discount;
     date          = DateTime.Now;
     this.countDay = countDay;
 }
示例#12
0
        /// <summary>
        /// Updates the asynchronous.
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <param name="model">The model.</param>
        /// <returns></returns>
        public async Task <bool> UpdateAsync(Guid id, IDiscountRule model)
        {
            var entity = Mapper.Map <ShoppingBasket.DAL.Entities.DiscountRule>(model);

            return(await DiscountRuleRepository.UpdateAsync(id, entity));
        }
示例#13
0
        /// <summary>
        /// Creates the asynchronous.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <returns></returns>
        public async Task <bool> CreateAsync(IDiscountRule model)
        {
            var entity = Mapper.Map <ShoppingBasket.DAL.Entities.DiscountRule>(model);

            return(await DiscountRuleRepository.CreateAsync(entity));
        }
示例#14
0
 public ByCategory(IDiscountRule discount)
 {
     this.discount = discount;
 }
 public CustomerVeteranRuleTests()
 {
     _customerIsVeteranRule = new CustomerVeteranRule();
 }
 public CustomerBirthDateRuleTests()
 {
     birthDayRule = new CustomerBirthDateRule();
 }