Example #1
0
        public override bool MeetsQualification(PromotionContext context, PromotionQualificationMode mode)
        {
            if (context == null)
            {
                return(false);
            }

            var idToTest = context.CurrentShippingMethodId.Trim();

            if (idToTest.Length < 1)
            {
                if (context.Order == null)
                {
                    return(false);
                }
                idToTest = context.Order.ShippingMethodId.Trim();
            }
            if (idToTest.Length < 1)
            {
                return(false);
            }

            foreach (var itemid in ItemIds())
            {
                if (idToTest.ToUpperInvariant() == itemid.ToUpperInvariant())
                {
                    return(true);
                }
            }

            return(false);
        }
Example #2
0
        public override bool MeetsQualification(PromotionContext context, PromotionQualificationMode mode)
        {
            if (context == null)
            {
                return(false);
            }
            if (context.CurrentCustomer == null)
            {
                return(false);
            }
            if (context.CurrentCustomer.Bvin == string.Empty)
            {
                return(false);
            }

            var customer = context.CurrentCustomer;
            var roles    = GetCustomerRoles(customer);
            var roleIds  = GetRoleIds();

            foreach (var role in roles)
            {
                if (roleIds.Contains(role.RoleID))
                {
                    return(true);
                }
            }

            return(false);
        }
Example #3
0
        public override bool MeetsQualification(PromotionContext context, PromotionQualificationMode mode)
        {
            if (context == null)
            {
                return(false);
            }
            if (context.Order == null)
            {
                return(false);
            }
            if (context.Order.Items == null)
            {
                return(false);
            }

            if (mode == PromotionQualificationMode.LineItems)
            {
                if (context.CurrentlyProcessingLineItem == null)
                {
                    return(false);
                }

                var li = context.CurrentlyProcessingLineItem;

                return(MeetLineItem(context, li));
            }
            if (mode == PromotionQualificationMode.Orders)
            {
                var items = context.Order.Items;
                return(items.Any(i => MeetLineItem(context, i)));
            }

            return(false);
        }
        public override bool MeetsQualification(PromotionContext context, PromotionQualificationMode mode)
        {
            if (mode != PromotionQualificationMode.Products)
            {
                return(false);
            }
            if (context == null)
            {
                return(false);
            }
            if (context.Product == null)
            {
                return(false);
            }
            if (context.UserPrice == null)
            {
                return(false);
            }

            var ids   = CurrentIds();
            var match = context.Product.ProductTypeId.Trim().ToLowerInvariant();

            // for "generic" type we need to match 0 instead of empty string
            if (match == string.Empty)
            {
                match = "0";
            }

            if (IsNotMode)
            {
                return(!ids.Contains(match));
            }
            return(ids.Contains(match));
        }
Example #5
0
        public override bool MeetsQualification(PromotionContext context, PromotionQualificationMode mode)
        {
            if (context == null)
            {
                return(false);
            }
            if (context.CurrentCustomer == null)
            {
                return(false);
            }
            if (string.IsNullOrEmpty(context.CurrentCustomer.Bvin))
            {
                return(false);
            }

            var userId    = Convert.ToInt32(context.CurrentCustomer.Bvin);
            var affiliate = context.HccApp.ContactServices.Affiliates.FindByUserId(userId);

            if (HasReffferalID)
            {
                var refAffiliate =
                    context.HccApp.ContactServices.Affiliates.FindByAffiliateId(affiliate.ReferralAffiliateId);
                return(refAffiliate != null && refAffiliate.Enabled && affiliate.Approved && affiliate.Enabled);
            }

            return(affiliate.Approved && affiliate.Enabled);
        }
Example #6
0
        public override bool MeetsQualification(PromotionContext context, PromotionQualificationMode mode)
        {
            if (mode != PromotionQualificationMode.Orders &&
                mode != PromotionQualificationMode.LineItems)
            {
                return(false);
            }
            if (context == null)
            {
                return(false);
            }
            if (context.Order == null)
            {
                return(false);
            }
            if (context.Order.Items == null)
            {
                return(false);
            }

            switch (SetMode)
            {
            case QualificationSetMode.AnyOfTheseItems:
                return(MatchAny(Quantity, context.Order.Items, CurrentIds()));

            case QualificationSetMode.AllOfTheseItems:
                return(MatchAll(Quantity, context.Order.Items, CurrentIds()));
            }

            return(false);
        }
Example #7
0
        public override bool MeetsQualification(PromotionContext context, PromotionQualificationMode mode)
        {
            if (mode != PromotionQualificationMode.Orders && mode != PromotionQualificationMode.LineItems)
            {
                return(false);
            }
            if (context == null)
            {
                return(false);
            }
            if (context.Order == null)
            {
                return(false);
            }
            if (context.Order.Coupons == null)
            {
                return(false);
            }

            foreach (var coupon in CurrentCoupons())
            {
                if (context.Order.CouponCodeExists(coupon))
                {
                    return(true);
                }
            }

            return(false);
        }
Example #8
0
        public override bool MeetsQualification(PromotionContext context, PromotionQualificationMode mode)
        {
            if (context == null)
            {
                return(false);
            }
            if (context.CurrentCustomer == null)
            {
                return(false);
            }
            if (context.CurrentCustomer.Bvin == string.Empty)
            {
                return(false);
            }

            var currentId = context.CurrentCustomer.Bvin.Trim().ToUpperInvariant();

            foreach (var uid in UserIds())
            {
                if (currentId == uid)
                {
                    return(true);
                }
            }

            return(false);
        }
Example #9
0
        public override bool MeetsQualification(PromotionContext context, PromotionQualificationMode mode)
        {
            if (mode == PromotionQualificationMode.Orders)
            {
                var resItems = GetFilteredItems(context);
                if (CalculationMode == SumOrCountMode.SumMode)
                {
                    return(resItems.Sum(i => i.LineTotal) >= SumAmount);
                }
                return(resItems.Sum(i => i.Quantity) >= SumAmount);
            }

            return(false);
        }
Example #10
0
        private bool ApplyPromotion(PromotionContext context, PromotionQualificationMode qualificationMode)
        {
            if (GetStatus() == PromotionStatus.Active)
            {
                var qualified = CheckQualifications(context, qualificationMode);

                if (qualified)
                {
                    RunActions(context);
                }

                return(qualified);
            }

            return(false);
        }
Example #11
0
        public override bool MeetsQualification(PromotionContext context, PromotionQualificationMode mode)
        {
            if (mode != PromotionQualificationMode.Orders &&
                mode != PromotionQualificationMode.LineItems)
            {
                return(false);
            }
            if (context == null)
            {
                return(false);
            }
            if (context.Order == null)
            {
                return(false);
            }

            return(true);
        }
Example #12
0
        public override bool MeetsQualification(PromotionContext context, PromotionQualificationMode mode)
        {
            if (mode != PromotionQualificationMode.Products)
            {
                return(false);
            }
            if (context == null)
            {
                return(false);
            }
            if (context.Mode != PromotionType.Sale)
            {
                return(false);
            }
            if (context.Product == null)
            {
                return(false);
            }
            if (context.UserPrice == null)
            {
                return(false);
            }
            if (context.HccApp == null)
            {
                return(false);
            }

            // Note: this only checks the first 100 categories. You're pretty much insane if you're
            // running a promotion on a product by category and it's in more than 100 categories.
            var assignments
                = context.HccApp.CatalogServices.CategoriesXProducts.FindForProduct(context.Product.Bvin, 1, 100);

            foreach (var cross in assignments)
            {
                var match = cross.CategoryId.Trim().ToLowerInvariant();
                if (CurrentCategoryIds().Contains(match))
                {
                    return(true);
                }
            }
            return(false);
        }
        public override bool MeetsQualification(PromotionContext context, PromotionQualificationMode mode)
        {
            if (mode != PromotionQualificationMode.Products)
            {
                return(false);
            }
            if (context == null)
            {
                return(false);
            }
            if (context.Product == null)
            {
                return(false);
            }
            if (context.UserPrice == null)
            {
                return(false);
            }

            return(true);
        }
        public override bool MeetsQualification(PromotionContext context, PromotionQualificationMode mode)
        {
            if (mode != PromotionQualificationMode.Orders &&
                mode != PromotionQualificationMode.LineItems)
            {
                return(false);
            }
            if (context == null)
            {
                return(false);
            }
            if (context.Order == null)
            {
                return(false);
            }
            if (context.Order.Items == null)
            {
                return(false);
            }

            return(MatchAny(context.Order.Items, CurrentIds()));
        }
Example #15
0
        public override bool MeetsQualification(PromotionContext context, PromotionQualificationMode mode)
        {
            if (context == null)
            {
                return(false);
            }
            if (context.CurrentCustomer == null)
            {
                return(false);
            }
            if (context.CurrentCustomer.PricingGroupId == string.Empty)
            {
                return(false);
            }

            if (CurrentGroupIds().Contains(context.CurrentCustomer.PricingGroupId.Trim().ToLowerInvariant()))
            {
                return(true);
            }

            return(false);
        }
        public override bool MeetsQualification(PromotionContext context, PromotionQualificationMode mode)
        {
            if (mode != PromotionQualificationMode.LineItems &&
                mode != PromotionQualificationMode.Orders)
            {
                return(false);
            }
            if (context == null)
            {
                return(false);
            }
            if (context.Order == null)
            {
                return(false);
            }

            if (context.Order.TotalOrderBeforeDiscounts - RemoveDiscountedAmount(context) >= Amount)
            {
                return(true);
            }

            return(false);
        }
Example #17
0
        public override bool MeetsQualification(PromotionContext context, PromotionQualificationMode mode)
        {
            if (mode != PromotionQualificationMode.Products)
            {
                return(false);
            }
            if (context == null)
            {
                return(false);
            }
            if (context.Product == null)
            {
                return(false);
            }
            if (context.UserPrice == null)
            {
                return(false);
            }

            var match = context.Product.Bvin.Trim().ToLowerInvariant();

            return(GetProductIds().Contains(match));
        }
 public virtual bool MeetsQualification(PromotionContext context, PromotionQualificationMode mode)
 {
     return(false);
 }
Example #19
0
        /// <summary>
        ///     Make sure we meet all requirements
        /// </summary>
        /// <remarks>
        ///     NOTE: we order by processing cost which should allow us to check
        ///     the fastest items first. For example, checking userID is faster
        ///     than checking user group because ID is in the context and group
        ///     requires a database call.
        /// </remarks>
        /// <param name="context"></param>
        /// <param name="mode"></param>
        /// <returns></returns>
        public bool CheckQualifications(PromotionContext context, PromotionQualificationMode mode)
        {
            var qualificationsSorted = _qualifications.OrderBy(y => y.ProcessingCost);

            return(qualificationsSorted.All(q => q.MeetsQualification(context, mode)));
        }