コード例 #1
0
        protected void btnAddToCart_Click(object sender, EventArgs e)
        {
            var memberId = String.IsNullOrEmpty(ShoppingCart.SrPlacingForPcOriginalMemberId) ?
                           ShoppingCart.DistributorID :
                           ShoppingCart.SrPlacingForPcOriginalMemberId;

            if (ChinaPromotionProvider.IsEligibleForBadgePromotion(ShoppingCart, HLConfigManager.Platform, memberId))
            {
                var cacheKey = string.Format("GetBadgePromoDetail_{0}", memberId);
                var results  = HttpRuntime.Cache[cacheKey] as GetBadgePinResponse_V01;

                var selectItems = cblFreeGiftlist.Items.Cast <ListItem>().Where(x => x.Selected).ToList();

                if (!ShoppingCart.CartItems.Exists(x => selectItems.Exists(i => i.Value == x.SKU)))
                {
                    var itemsToAdd = new List <ShoppingCartItem_V01>();
                    foreach (var sitem in selectItems)
                    {
                        var findBadge = results.BadgeDetails.FirstOrDefault(s => s.BadgeCode == sitem.Value);
                        if (findBadge != null)
                        {
                            itemsToAdd.Add(new ShoppingCartItem_V01
                            {
                                Quantity = findBadge.Quantity,
                                SKU      = findBadge.BadgeCode,
                                IsPromo  = true,
                            });
                        }
                    }

                    ShoppingCart.AddItemsToCart(itemsToAdd, true);
                    ShoppingCartChanged(this, new ShoppingCartEventArgs(ShoppingCart));
                }
                if (cblFreeGiftlist.Items.Count == 0)
                {
                    divPromo.Visible = false;
                    promotionPanel.Update();
                }
            }
        }
コード例 #2
0
        private void displayBadgePromo()
        {
            divPromo.Visible = false;
            List <CatalogItem>           badgePromoList = new List <CatalogItem>();
            Dictionary <string, SKU_V01> allsku         = null;

            if (ShoppingCart != null && ShoppingCart.CartItems.Any())
            {
                if (ShoppingCart.DeliveryInfo == null || string.IsNullOrEmpty(ShoppingCart.DeliveryInfo.WarehouseCode))
                {
                    return;
                }
                if (CatalogProvider.IsPreordering(ShoppingCart.CartItems, ShoppingCart.DeliveryInfo.WarehouseCode))
                {
                    return;
                }
                if (!(ShoppingCart.OrderCategory == ServiceProvider.CatalogSvc.OrderCategoryType.RSO))
                {
                    return;
                }
                if (APFDueProvider.hasOnlyAPFSku(ShoppingCart.CartItems, Locale))
                {
                    return;
                }
            }
            else
            {
                divPromo.Visible = false;
                promotionPanel.Update();
                return;
            }

            //var profile = DistributorOrderingProfileProvider.GetProfile(ShoppingCart.DistributorID, ShoppingCart.DeliveryInfo.Address.Address.Country);
            var memberId = String.IsNullOrEmpty(ShoppingCart.SrPlacingForPcOriginalMemberId) ?
                           ShoppingCart.DistributorID :
                           ShoppingCart.SrPlacingForPcOriginalMemberId;

            if (ChinaPromotionProvider.IsEligibleForBadgePromotion(ShoppingCart, HLConfigManager.Platform, memberId))
            {
                var cacheKey = string.Format("GetBadgePromoDetail_{0}", memberId);
                var results  = HttpRuntime.Cache[cacheKey] as GetBadgePinResponse_V01;

                if (results != null)
                {
                    var badgeList = results.BadgeDetails;
                    if (results != null && badgeList.Length > 0)
                    {
                        if (ShoppingCart != null && ShoppingCart.CartItems.Count > 0)
                        {
                            if (cblFreeGiftlist.Items.Count > 0)
                            {
                                cblFreeGiftlist.Items.Clear();
                            }

                            allsku = ProductsBase.ProductInfoCatalog.AllSKUs;

                            foreach (var badge in badgeList)
                            {
                                if (allsku.ContainsKey(badge.BadgeCode))
                                {
                                    var sku = allsku[badge.BadgeCode];
                                    if (ShoppingCartProvider.CheckInventory(sku.CatalogItem, badge.Quantity, ProductsBase.CurrentWarehouse) > 0 &&
                                        CatalogProvider.GetProductAvailability(sku, ProductsBase.CurrentWarehouse) == ProductAvailabilityType.Available)
                                    {
                                        cblFreeGiftlist.Items.Add(
                                            new ListItem
                                        {
                                            Selected = true,
                                            Text     = String.Format(s_promotionItemDisplayFormat, badge.BadegName, badge.Quantity),
                                            Value    = sku.SKU
                                        });
                                        //divPromo.Visible = true;
                                        badgePromoList.Add(sku.CatalogItem);
                                    }
                                }
                            }

                            //var myShoppingCart = ProductsBase.ShoppingCart;

                            var promoInCart = ShoppingCart.CartItems.Select(c => c.SKU).Intersect(badgePromoList.Select(f => f.SKU));
                            if (promoInCart.Any())
                            {
                                foreach (var x in promoInCart)
                                {
                                    var foundItems = new List <ListItem>();
                                    foreach (ListItem item in cblFreeGiftlist.Items)
                                    {
                                        if (item.Value == x)
                                        {
                                            foundItems.Add(item);
                                        }
                                    }

                                    foundItems.ForEach(f => cblFreeGiftlist.Items.Remove(f));
                                }
                            }
                            else
                            {
                                btnAddToCart.Enabled = true;
                                //  ShoppingCart.HastakenSrPromotion = false;
                                lblFreeGift.Text = GetLocalResourceObject("lblFreeGiftResource1.Text") as string;
                            }
                            if (ShoppingCart.CartItems.Count >= 1)
                            {
                                var others = ShoppingCart.CartItems.Where(s => !s.IsPromo)
                                             .Select(c => c.SKU)
                                             .Except(APFDueProvider.GetAPFSkuList());
                                if (!others.Any())
                                {
                                    if (promoInCart.Any())
                                    {
                                        ShoppingCart.DeleteItemsFromCart(promoInCart.ToList(), true);
                                    }
                                }
                            }

                            divPromo.Visible = cblFreeGiftlist.Items.Count > 0;
                        }
                    }
                    else
                    {
                        var itemsInBoth = ShoppingCart.CartItems
                                          .Where(x => x.IsPromo)
                                          .Select(c => c.SKU)
                                          .Intersect(badgeList.Select(b => b.BadgeCode), StringComparer.OrdinalIgnoreCase);

                        if (itemsInBoth.Any())
                        {
                            ShoppingCart.DeleteItemsFromCart(itemsInBoth.ToList(), true);
                        }
                    }
                }
            }
            promotionPanel.Update();
        }