Пример #1
0
        public bool Evaluate(IRuleExecutionContext context)
        {
            //Get configuration
            string  specificCategory     = Hc_SpecificCategory.Yield(context);
            decimal specificValue        = Hc_SpecificValue.Yield(context);
            bool    includeSubCategories = Hc_IncludeSubCategories.Yield(context);

            if (string.IsNullOrEmpty(specificCategory) || specificValue == 0 || Hc_Compares == null)
            {
                return(false);
            }

            //Get Data
            var commerceContext = context.Fact <CommerceContext>();
            List <CartLineComponent> categoryLines = AsyncHelper.RunSync(() =>
                                                                         categoryOrderLinesResolver.Resolve(commerceContext, specificCategory, includeSubCategories));

            if (categoryLines == null)
            {
                return(false);
            }

            //Validate data against configuration
            decimal productAmount = categoryLines.Sum(x => x.Quantity);

            return(Hc_Compares.Evaluate(productAmount, specificValue));
        }
        public bool Evaluate(IRuleExecutionContext context)
        {
            var commerceContext = context.Fact <CommerceContext>();

            //Get configuration
            string  specificCategory     = Hc_SpecificCategory.Yield(context);
            decimal specificValue        = Hc_SpecificValue.Yield(context);
            bool    includeSubCategories = Hc_IncludeSubCategories.Yield(context);

            if (string.IsNullOrEmpty(specificCategory) || specificValue == 0 || Hc_Compares == null)
            {
                return(false);
            }

            //Get data
            IEnumerable <CartLineComponent> categoryLines =
                categoryCartLinesResolver.Resolve(commerceContext, specificCategory, includeSubCategories);

            if (categoryLines == null)
            {
                return(false);
            }

            //Validate data against configuration
            decimal categoryTotal = categoryLines.Sum(line => line.Totals.GrandTotal.Amount);

            return(Hc_Compares.Evaluate(categoryTotal, specificValue));
        }