protected override ShoppingCartRuleResult PerformRules(MyHLShoppingCart cart, ShoppingCartRuleReason reason, ShoppingCartRuleResult Result) { Result.Result = RulesResult.Success; if (null == cart) { LoggerHelper.Error( string.Format("{0} cart is null {1}, MyHerbalife3.Ordering.Rules.PurchaseRestriction.JP.PurchaseRestrictionRules.", Locale, cart.DistributorID)); Result.Result = RulesResult.Failure; return(Result); } if (Settings.GetRequiredAppSetting <bool>("EnableJPSKURestriction", false)) { string orderMonth = SKULimitationProvider.GetOrderMonthString(); if (reason == ShoppingCartRuleReason.CartItemsBeingAdded && cart.ItemsBeingAdded != null && cart.ItemsBeingAdded.Count > 0) { var allLimits = SKULimitationProvider.SKUPurchaseRestrictionInfo(cart.DistributorID, orderMonth); if (allLimits != null) { Result = HandleCartItemsBeingAdded(cart, Result, allLimits); if (Result.Result == RulesResult.Failure) { return(Result); } } } else if (reason == ShoppingCartRuleReason.CartBeingPaid) { var allLimits = SKULimitationProvider.SKUPurchaseRestrictionInfo(cart.DistributorID, orderMonth); if (allLimits != null) { Result = HandleCartBeingPaid(cart, Result, allLimits); if (Result.Result == RulesResult.Failure) { return(Result); } } } else if (reason == ShoppingCartRuleReason.CartClosed) // order placed { var allLimits = SKULimitationProvider.SKUPurchaseRestrictionInfo(cart.DistributorID, cart.OrderMonth.ToString()); if (allLimits != null) { Result = HandleCartClosed(cart, Result, allLimits); SKULimitationProvider.SetSKUPurchaseRestrictionInfo(cart.DistributorID, cart.OrderMonth.ToString(), allLimits); } } } base.PerformRules(cart, reason, Result); return(Result); }
private ShoppingCartRuleResult checkSKULimitForCountry(MyHLShoppingCart myCart, ShoppingCartRuleResult Result) { Dictionary <string, List <SKULimitationInfo> > limits = SKULimitationProvider.GetSKULimitationInfo(); if (limits != null) { if (limits.ContainsKey(Country)) { List <SKULimitationInfo> limitInfo = limits[Country]; foreach (var l in limitInfo) { if (limitInfo != null && limitInfo.Count > 0 && shouldApplyRules(l.StartDate, l.EndDate, l.LimitPeriodByDay)) { if (myCart.CurrentItems == null) { return(Result); } string sku = myCart.CurrentItems[0].SKU.Trim(); if (l.SKU.Trim().Equals(sku)) { _skuQuantityLimitPeriodByDay = l.LimitPeriodByDay; _startDate = RecentOrdersHelper.ConvertDate(l.StartDate); bool bSKUQtyOverLimit = false; int SKUQtyBeingAdded = myCart.CurrentItems[0].Quantity; if (SKUQtyBeingAdded > l.MaxQuantity) { bSKUQtyOverLimit = true; } int qtyInCart = 0; if (bSKUQtyOverLimit == false) { if (myCart.CartItems != null && myCart.CartItems.Where(x => x.SKU == sku).Any()) // already in cart { qtyInCart = myCart.CartItems.Where(x => x.SKU == sku).Sum(x => x.Quantity); if ((qtyInCart + SKUQtyBeingAdded) > l.MaxQuantity) { bSKUQtyOverLimit = true; } } } if (bSKUQtyOverLimit == false) { int numSkusOrders = qtyInCart + SKUQtyBeingAdded; // what's in cart plus what's being added RecentOrdersHelper orders = getInternetOrders(myCart.DistributorID, this.Locale, DateUtils.GetCurrentLocalTime(this.Country)); if (orders != null) { foreach (var o in orders.Orders) { foreach (var i in o.CartItems) { if (i.SKU == sku) { numSkusOrders += i.Quantity; //break; } } } } if (numSkusOrders > l.MaxQuantity) { bSKUQtyOverLimit = true; } //else //{ // if (myCart.CurrentItems[0].Quantity + numSkusOrders > l.MaxQuantity) // { // bSKUQtyOverLimit = true; // } //} } if (bSKUQtyOverLimit == true) { /// Your order of {0} exceeds the maximum quantity of {1} per member every {2} calendar days. Result.AddMessage( string.Format( HttpContext.GetGlobalResourceObject( string.Format("{0}_Rules", HLConfigManager.Platform), "SKULimitExceedByDay").ToString(), myCart.CurrentItems[0].SKU, l.MaxQuantity, l.LimitPeriodByDay)); myCart.RuleResults.Add(Result); Result.Result = RulesResult.Failure; } } } } } } return(Result); }