Exemplo n.º 1
0
        void LoadSkuPurchasedCount(CartItemWithDetailList eventProductList, string distributorId)
        {
            List <MyHerbalife3.Ordering.ServiceProvider.OrderChinaSvc.SkuOrderedAndPurchased> skuList = new List <MyHerbalife3.Ordering.ServiceProvider.OrderChinaSvc.SkuOrderedAndPurchased>();

            foreach (var x in eventProductList)
            {
                var sku = new MyHerbalife3.Ordering.ServiceProvider.OrderChinaSvc.SkuOrderedAndPurchased
                {
                    SKU      = x.ProductId,
                    Category = "ETO",
                };
                skuList.Add(sku);
            }

            var rslt = MyHerbalife3.Ordering.Providers.China.OrderProvider.GetSkuOrderedAndPurchased(this.Country, distributorId, null, null, skuList);

            foreach (var r in rslt)
            {
                var mList = eventProductList.Where(x => x.ProductId == r.SKU);
                foreach (var m in mList)
                {
                    m.QuantityAlreadyPurchased = r.QuantityPurchased;
                }
            }
        }
Exemplo n.º 2
0
        bool ValidateIsInEventMode(CartItemWithDetailList eventProductList, ShoppingCart_V02 cart, ShoppingCartRuleResult result)
        {
            if (isCheckEventTicket(cart))
            {
                return(true);
            }

            // not in event mode, build-up error info

            var itemToAddList = eventProductList.CurrentItemList;

            result.Result = RulesResult.Failure;

            var itemList = new StringBuilder();

            foreach (var item in itemToAddList)
            {
                if (itemList.Length > 0)
                {
                    itemList.Append(", ");
                }
                itemList.Append(item.SKU.Product.DisplayName);
            }

            var msg = GetRulesResourceString("CanOnlyPurchaseInEventMode");

            result.Messages.Add(string.Format(msg, itemList));

            LoggingTrace(string.Format("CanOnlyPurchaseInEventMode"));
            return(false);
        }
Exemplo n.º 3
0
        CartItemWithDetailList GetEventProductList(ShoppingCart_V02 cart)
        {
            var ret = new CartItemWithDetailList();

            if (Helper.Instance.HasData(cart.CurrentItems))
            {
                foreach (var cartItem in cart.CurrentItems)
                {
                    if (!IsEventProduct(cartItem.SKU))
                    {
                        continue;
                    }
                    SKU_V01 sku_v01 = null;
                    SkuList.TryGetValue(cartItem.SKU, out sku_v01);
                    if (sku_v01 == null)
                    {
                        continue;
                    }
                    var child = new CartItemWithDetail
                    {
                        CurrentItem = cartItem,
                        SKU         = sku_v01
                    };
                    ret.Add(child);
                }
            }

            if (Helper.Instance.HasData(cart.CartItems))
            {
                foreach (var cartItem in cart.CartItems)
                {
                    if (!IsEventProduct(cartItem.SKU))
                    {
                        continue;
                    }

                    var child = ret.FirstOrDefault(x => x.SkuCode == cartItem.SKU);
                    if (child != null)
                    {
                        child.CartItem = cartItem;
                    }
                    else
                    {
                        child = new CartItemWithDetail
                        {
                            CartItem = cartItem,
                            SKU      = SkuList[cartItem.SKU],
                        };
                        ret.Add(child);
                    }
                }
            }

            return(ret);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Returns true if ordered quantity is within limit.
        /// </summary>
        /// <param name="eventProductList"></param>
        /// <param name="cart"></param>
        /// <param name="result"></param>
        /// <returns></returns>
        bool ValidateMaxQtyDependsOnSpouseName(CartItemWithDetailList eventProductList, ShoppingCart_V02 cart, ShoppingCartRuleResult result)
        {
            bool ret = true;

            LoadSkuPurchasedCount(eventProductList, cart.DistributorID);

            foreach (var item in eventProductList)
            {
                if (item.TotalQty <= MaxQtyIfNoSpouseName)
                {
                    continue;
                }

                RulesResult rslt  = RulesResult.Unknown;
                string      msg   = null;
                int         limit = 0;

                var user = DistributorOrderingProfileProvider.GetProfile(cart.DistributorID, this.Country);
                if (string.IsNullOrWhiteSpace(user.SpouseLocalName))
                {
                    #region no spouse name
                    limit = MaxQtyIfNoSpouseName;

                    if (item.TotalQty > limit)
                    {
                        DeductEventProductQty(item, limit, cart);

                        rslt = (item.CurrentItem.Quantity <= 0) ? RulesResult.Failure : RulesResult.Feedback;

                        msg = GetRulesResourceString("EventProductLimitedToNAsNoSpouseName");
                        msg = string.Format(msg, item.SKU.Product.DisplayName, limit);
                    }
                    #endregion
                }
                else
                {
                    #region has spouse name
                    limit = MaxQtyIfHasSpouseName;
                    if (item.TotalQty > limit)
                    {
                        DeductEventProductQty(item, limit, cart);

                        rslt = (item.CurrentItem.Quantity <= 0) ? RulesResult.Failure : RulesResult.Feedback;

                        msg = GetRulesResourceString("EventProductLimitedToNAsHasSpouseName");
                        msg = string.Format(msg, item.SKU.Product.DisplayName, limit);
                    }
                    #endregion
                }

                if (rslt != RulesResult.Unknown)
                {
                    ret           = false;
                    result.Result = rslt;

                    if (item.QuantityAlreadyPurchased >= limit)
                    {
                        msg = GetRulesResourceString("EventProductAlreadyBeenPurchased");
                        msg = string.Format(msg, item.SKU.Product.DisplayName);
                    }

                    result.Messages.Add(msg);
                }

                LoggingTrace(string.Format("ValidateMaxQtyDependsOnSpouseName: {0}, {1}", rslt, msg));
            }

            return(ret);
        }