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(); } } }
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(); }