コード例 #1
0
        private DiscountApplicationResult GetDiscountApplication(List <DiscountInfo> discounts, CartModel cart)
        {
            var discountApplicationInfo = new DiscountApplicationInfo();
            var hashSet = new List <Discount>();

            foreach (var discountInfo in discounts.FindAll(x => x.Status == DiscountStatus.ValidButNotApplied))
            {
                var applicationInfo = _cartDiscountApplicationService.ApplyDiscount(discountInfo, cart);
                if (!applicationInfo.IsApplied)
                {
                    continue;
                }

                discountApplicationInfo.Add(applicationInfo);
                hashSet.Add(discountInfo.Discount);
            }
            return(new DiscountApplicationResult
            {
                Info = discountApplicationInfo,
                AppliedDiscounts = hashSet
            });
        }
コード例 #2
0
        public DiscountApplicationInfo ApplyDiscount(DiscountInfo discountInfo, CartModel cart)
        {
            var applications = _session.QueryOver <DiscountApplication>()
                               .Where(application => application.Discount.Id == discountInfo.Discount.Id)
                               .Cacheable()
                               .List();
            var discountApplicationInfo = new DiscountApplicationInfo();

            foreach (var application in applications)
            {
                var fullName = application.GetType().FullName;
                if (!ApplicationApplierTypes.ContainsKey(fullName))
                {
                    continue;
                }

                var applier = _kernel.Get(ApplicationApplierTypes[fullName]) as DiscountApplicationApplier;
                if (applier != null)
                {
                    discountApplicationInfo.Add(applier.Apply(application, cart, discountInfo.CheckLimitationsResult));
                }
            }
            return(discountApplicationInfo);
        }