public static void ClearCache(string storeID) { string cachekey = string.Format("{0}{1}", INVENTORY_CACHE_PREFIX, storeID); HttpRuntime.Cache.Remove(cachekey); var catalog = Providers.CatalogProvider.GetCatalog("CN"); if (catalog == null) { LoggerHelper.Info("Clear Cache : No catalog"); return; } var productCatalog = Providers.CatalogProvider.GetProductInfoCatalog("zh-CN"); if (productCatalog == null) { LoggerHelper.Info("Clear Cache : No productCatalog"); return; } var varSKU = productCatalog.AllSKUs; LoggerHelper.Info(string.Format("CN ClearCache {0}", storeID)); foreach (var sku in varSKU) { if (catalog.Items.ContainsKey(sku.Value.SKU)) { sku.Value.CatalogItem = catalog.Items[sku.Value.SKU] as CatalogItem_V01; } } }
private bool IsElegibleForPromo(ShoppingCart_V02 cart, MyHLShoppingCart hlCart, out decimal volume) { var isElegible = false; volume = 0; LoggerHelper.Info( string.Format("CheckPromoInCart.ShoppingCart V02 items {0}", string.Concat(cart.CartItems.Select(i => string.Format("{0},", i.SKU))))); LoggerHelper.Info( string.Format("CheckPromoInCart.MyHLShoppingCart items {0}", string.Concat(hlCart.CartItems.Select(i => string.Format("{0},", i.SKU))))); LoggerHelper.Info( string.Format("AllowedSKUToAddPromoSKU {0}", string.Concat(AllowedSKUToAddPromoSKU.Select(i => string.Format("{0},", i))))); var cartItemsV02 = (from a in AllowedSKUToAddPromoSKU join b in cart.CartItems on a equals b.SKU select new { Sku = b.SKU, Qty = b.Quantity, Volume = CatalogProvider.GetCatalogItem(b.SKU, "IT").VolumePoints }).ToList(); if (cartItemsV02.Any()) { isElegible = true; volume = cartItemsV02.Sum(oi => oi.Qty * oi.Volume); } else { var shoppingcartItemsV02 = (from a in AllowedSKUToAddPromoSKU join b in hlCart.ShoppingCartItems on a equals b.SKU select new { Sku = b.SKU, Qty = b.Quantity, Volume = b.CatalogItem.VolumePoints }) .ToList(); if (shoppingcartItemsV02.Any()) { isElegible = true; volume = shoppingcartItemsV02.Sum(oi => oi.Qty * oi.Volume); } else { LoggerHelper.Info("No Items in Cart or MyHLCart. Rule fails"); } } return(isElegible); }
public static bool CNPQueryRespnse(string response, string orderNumber) { if (response.IndexOf("xmlns=\"http://www.99bill.com/mas_cnp_merchant_interface\"") > 1) { response = response.Replace(" xmlns=\"http://www.99bill.com/mas_cnp_merchant_interface\"", ""); } var xmlDoc = new XmlDocument(); var encodedString = Encoding.UTF8.GetBytes(response); var ms = new MemoryStream(encodedString); ms.Flush(); ms.Position = 0; // Build the XmlDocument from the MemorySteam of UTF-8 encoded bytes xmlDoc.Load(ms); var list = xmlDoc.SelectNodes("//TxnMsgContent"); if (list != null && list.Count == 0) { var selectSingleNode = xmlDoc.SelectSingleNode("MasMessage/ErrorMsgContent/errorMessage"); if (selectSingleNode != null) { LoggerHelper.Info(string.Format(PaymentGatewayLogEntryType.Response.ToString(), orderNumber, string.Empty, "CN_99BillPaymentGateway", PaymentGatewayRecordStatusType.Declined, response + selectSingleNode.InnerText)); } } else { var approved = false; var selectSingleNode = xmlDoc.SelectSingleNode("MasMessage/TxnMsgContent/responseCode"); if (selectSingleNode != null) { var responseCode = selectSingleNode.InnerText; approved = responseCode == "00"; } return(approved); } return(false); }
private ShoppingCartRuleResult ClosePromo(MyHLShoppingCart shoppingCart, ShoppingCartRuleResult result) { var promo = ShoppingCartProvider.GetEligibleForPromo(shoppingCart.DistributorID, shoppingCart.Locale); PromoSKUs = HLConfigManager.Configurations.ShoppingCartConfiguration.PromotionalSku.Split(',').ToList(); if ((promo != null && shoppingCart.CartItems.Any(i => promo.Sku == i.SKU)) || shoppingCart.CartItems.Any(i => PromoSKUs.Contains(i.SKU))) { if (promo != null) { int storedShoppingCartId = 0; string storedOrderNumber = string.Empty; var updated = ShoppingCartProvider.SaveEligibleForPromo(promo, shoppingCart.ShoppingCartID, shoppingCart.OrderNumber, ref storedShoppingCartId, ref storedOrderNumber); if (updated != null && updated.IsDisable && shoppingCart.ShoppingCartID == storedShoppingCartId) { result.Result = RulesResult.Success; shoppingCart.RuleResults.Add(result); } else if (updated == null) { LoggerHelper.Info("Promo for DS was closed in another cart"); result.Result = RulesResult.Feedback; shoppingCart.RuleResults.Add(result); } } else { LoggerHelper.Info("DS is not eligible for promo"); result.Result = RulesResult.Feedback; shoppingCart.RuleResults.Add(result); } } return(result); }
private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart, ShoppingCartRuleReason reason, ShoppingCartRuleResult result) { var hlCart = cart as MyHLShoppingCart; if (cart == null || hlCart == null) { return(result); } if (!string.IsNullOrEmpty(HLConfigManager.Configurations.ShoppingCartConfiguration.PromotionalBeginDate)) { DateTime beginDate; DateTime.TryParseExact( HLConfigManager.Configurations.ShoppingCartConfiguration.PromotionalBeginDate, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out beginDate); if (DateUtils.GetCurrentLocalTime(Country).Date < beginDate.Date) { // Promotion have not started LoggerHelper.Info("Promo not started"); result.Result = RulesResult.Success; result.AddMessage("PromoOutOfDate"); cart.RuleResults.Add(result); return(result); } } bool isPromoEnded = DateUtils.GetCurrentLocalTime(Country).Date > PromotionalEndDate; if (isPromoEnded || (AllowedSKUToAddPromoSKU.Count > 0 && PromotionalRequiredVolumePoints > 0 && !string.IsNullOrEmpty(PromotionalSku))) { if (isPromoEnded) { // Remove the promo sku if it exists in cart if (hlCart.CartItems.Any(i => i.SKU.Equals(PromotionalSku))) { hlCart.DeleteItemsFromCart(new List <string> { PromotionalSku }, true); } LoggerHelper.Info("Promo sku removed for ended promo"); result.Result = RulesResult.Success; result.AddMessage("PromoOutOfDate"); cart.RuleResults.Add(result); return(result); } switch (reason) { case ShoppingCartRuleReason.CartItemsBeingAdded: case ShoppingCartRuleReason.CartItemsBeingRemoved: // Avoid the DS adds or removes the promo sku from cart if (cart.CurrentItems[0].SKU.Equals(PromotionalSku)) { cart.CurrentItems.Clear(); } break; case ShoppingCartRuleReason.CartItemsAdded: case ShoppingCartRuleReason.CartItemsRemoved: result = CheckPromoInCart(cart, hlCart, result); break; } } else { var message = string.Format("Rule not executed: IsEnded={0}, cart {1}, AllowedSku quantity {2}, rule reason:{3}", isPromoEnded.ToString(), (cart == null ? "is null" : "is not null"), AllowedSKUToAddPromoSKU.Count.ToString(), reason.ToString()); LoggerHelper.Info(message); } return(result); }
private ShoppingCartRuleResult CheckPromoInCart(ShoppingCart_V02 shoppingCart, MyHLShoppingCart cart, ShoppingCartRuleResult result) { LoggerHelper.Info(string.Format("Entered CheckPromoInCart.")); // Define the promo quantity to add decimal volumeInCartForPromo = 0; var applyForPromo = IsElegibleForPromo(shoppingCart, cart, out volumeInCartForPromo); var allSkus = CatalogProvider.GetAllSKU(Locale); if (applyForPromo && !allSkus.Keys.Contains(PromotionalSku)) { LoggerHelper.Info("No promo sku in catalog"); if (Environment.MachineName.IndexOf("PROD", StringComparison.Ordinal) < 0) { var country = new RegionInfo(new CultureInfo(Locale, false).LCID); string message = "NoPromoSku"; var globalResourceObject = HttpContext.GetGlobalResourceObject(string.Format("{0}_Rules", HLConfigManager.Platform), "NoPromoSku"); if (globalResourceObject != null) { message = string.Format(globalResourceObject.ToString(), country.DisplayName, PromotionalSku); } LoggerHelper.Error(message); result.Result = RulesResult.Feedback; result.AddMessage(message); cart.RuleResults.Add(result); return(result); } return(result); } // Define the promo quantity to add var elegibleQuantity = Convert.ToInt32(Math.Truncate(volumeInCartForPromo / PromotionalRequiredVolumePoints)) * PromoQuantity; var promoSkuInCart = (from c in cart.CartItems where c.SKU.Equals(PromotionalSku) select c).FirstOrDefault(); if (elegibleQuantity == 0 && promoSkuInCart == null) { // Nothing to do LoggerHelper.Info("Not elegible for promo and not promo sku in cart"); result.Result = RulesResult.Success; cart.RuleResults.Add(result); return(result); } if (promoSkuInCart != null) { if (promoSkuInCart.Quantity == elegibleQuantity) { // Check if nothing to do LoggerHelper.Info("Not quantity change to do in promo sku"); result.Result = RulesResult.Success; cart.RuleResults.Add(result); return(result); } if (promoSkuInCart.Quantity > elegibleQuantity) { // Remove the promo sku if quantity to add is minor than the quantity in cart LoggerHelper.Info("Removing promo sku from cart"); cart.DeleteItemsFromCart(new List <string> { PromotionalSku }, true); if (elegibleQuantity == 0) { result.Result = RulesResult.Success; cart.RuleResults.Add(result); return(result); } } else { // Change item quantity adding the excess to the existent sku elegibleQuantity -= promoSkuInCart.Quantity; } } // Adding promo if it has inventory and if it is allowed if (applyForPromo && cart.DeliveryInfo != null && !string.IsNullOrEmpty(cart.DeliveryInfo.WarehouseCode)) { LoggerHelper.Info("Checking Inventory"); WarehouseInventory warehouseInventory; var catItemPromo = CatalogProvider.GetCatalogItem(PromotionalSku, Country); if (catItemPromo.InventoryList.TryGetValue(cart.DeliveryInfo.WarehouseCode, out warehouseInventory)) { if (warehouseInventory != null) { var warehouseInventory01 = warehouseInventory as WarehouseInventory_V01; if (warehouseInventory01 != null && warehouseInventory01.QuantityAvailable > elegibleQuantity) { cart.AddItemsToCart( new List <ShoppingCartItem_V01>(new[] { new ShoppingCartItem_V01(0, PromotionalSku, elegibleQuantity, DateTime.Now) }), true); result.Result = RulesResult.Success; cart.RuleResults.Add(result); } else { LoggerHelper.Info("Warehouse information is null or not enough quantity is available"); } } } else { LoggerHelper.Info("Not inventory list was gotten for promo sku"); } } return(result); }
private bool ValidateCreditCardInfo(ref string errorMessage) { bool isValid = true; int month, year; string cardType = ddlCards.SelectedValue; string ccNumber = txtCardNumber.Text.ToString().Trim(); string cvv = txtCVV.Text.ToString().Trim(); // check credit card number length if (string.IsNullOrEmpty(ccNumber) || ccNumber.Length < 15) { errorMessage = GetLocalResourceObject("InvalidCreditCard") as string; return(false); } // validate credit card number using regular expression if (!ValidateCreditCardNumber(cardType, ccNumber)) { errorMessage = GetLocalResourceObject("InvalidCreditCard") as string; return(false); } if (!int.TryParse(ddlExpYear.SelectedValue, out year)) { LoggerHelper.Info(string.Format("PaymentInfo_es_CR.ValidateCreditCardInfo - Invalid Year - {0}", ddlExpYear.SelectedValue)); errorMessage = GetLocalResourceObject("InvalidExpirationDate") as string; return(false); } if (!int.TryParse(ddlExpMonth.SelectedValue, out month)) { LoggerHelper.Info(string.Format("PaymentInfo_es_CR.ValidateCreditCardInfo - Invalid Month - {0}", ddlExpYear.SelectedValue)); errorMessage = GetLocalResourceObject("InvalidExpirationDate") as string; return(false); } // validate expiration date. Assumption: load the Year drop down by code and won't be earlier than this year if (Convert.ToInt32(ddlExpYear.SelectedValue) == DateTime.Now.Year) { if (month < DateTime.Now.Month) { errorMessage = GetLocalResourceObject("InvalidExpirationDate") as string; return(false); } } // check CVV switch (cardType) { case "VI": case "MC": if (txtCVV.Text.ToString().Trim().Length != 3) { errorMessage = GetLocalResourceObject("InvalidCVV") as string; return(false); } break; case "AX": if (txtCVV.Text.ToString().Trim().Length != 4) { errorMessage = GetLocalResourceObject("InvalidCVV") as string; return(false); } break; default: break; } // 3. validate expiration date return(isValid); }
private ShoppingCartRuleResult RemovePromoOnEmptyCart(MyHLShoppingCart shoppingCart, ShoppingCartRuleResult result) { var promo = ShoppingCartProvider.GetEligibleForPromo(shoppingCart.DistributorID, shoppingCart.Locale); PromoSKUs = HLConfigManager.Configurations.ShoppingCartConfiguration.PromotionalSku.Split(',').ToList(); var promoSkuInCart = promo != null? shoppingCart.CartItems.Where(i => i.SKU == promo.Sku).Select(i => i.SKU).ToList() : shoppingCart.CartItems.Where(i => PromoSKUs.Contains(i.SKU)).Select(i => i.SKU).ToList(); shoppingCart.IsPromoNotified = !promoSkuInCart.Any(); if (shoppingCart.DeliveryInfo != null && shoppingCart.DeliveryInfo.Option != ServiceProvider.ShippingSvc.DeliveryOptionType.Shipping) { // Remove promo if it is in cart if (promoSkuInCart.Any()) { shoppingCart.DeleteItemsFromCart(promoSkuInCart, true); shoppingCart.IsPromoDiscarted = true; result.Result = RulesResult.Success; shoppingCart.RuleResults.Add(result); return(result); } else { result.Result = RulesResult.Success; shoppingCart.RuleResults.Add(result); return(result); } } if ((promo != null && !shoppingCart.CartItems.Any(i => promo.Sku != i.SKU)) || (promo == null && !shoppingCart.CartItems.Any(i => PromoSKUs.Contains(i.SKU)))) { shoppingCart.DeleteItemsFromCart(promoSkuInCart, true); shoppingCart.IsPromoDiscarted = true; result.Result = RulesResult.Success; shoppingCart.RuleResults.Add(result); return(result); } // Validate if the cart has only HFF and/or APF item var HFFsku = HLConfigManager.Configurations.DOConfiguration.HFFHerbalifeSku; var apfSkus = APFDueProvider.GetAPFSkuList(); if (HFFsku != null && shoppingCart.CartItems.Any(i => i.SKU == HFFsku || apfSkus.Contains(i.SKU))) { if (promo != null && !shoppingCart.CartItems.Any(i => i.SKU != HFFsku && i.SKU != promo.Sku && !apfSkus.Contains(i.SKU))) { shoppingCart.IsPromoDiscarted = true; if (promoSkuInCart.Count > 0) { // Remove promoSkus from cart, cant apply for promo when have HFF SKU only shoppingCart.DeleteItemsFromCart(promoSkuInCart, true); } // Just remove promo sku and nothing more to do LoggerHelper.Info("No promo sku added when only HFF SKU is in cart"); result.Result = RulesResult.Success; shoppingCart.RuleResults.Add(result); return(result); } } return(result); }
private ShoppingCartRuleResult CheckPromoInCart(MyHLShoppingCart shoppingCart, bool checkPayment, ShoppingCartRuleResult result) { var promo = ShoppingCartProvider.GetEligibleForPromo(shoppingCart.DistributorID, shoppingCart.Locale); PromoSKUs = HLConfigManager.Configurations.ShoppingCartConfiguration.PromotionalSku.Split(',').ToList(); var promoWarehouse = string.IsNullOrEmpty(HLConfigManager.Configurations.ShoppingCartConfiguration.PromotionalWarehouse) ? PromotionWarehouse : HLConfigManager.Configurations.ShoppingCartConfiguration.PromotionalWarehouse; var allSkus = CatalogProvider.GetAllSKU(Locale); if (promo != null && !allSkus.Keys.Contains(promo.Sku)) { LoggerHelper.Info("No promo sku in catalog"); if (Environment.MachineName.IndexOf("PROD", StringComparison.Ordinal) < 0) { var country = new RegionInfo(new CultureInfo(Locale, false).LCID); string message = "NoPromoSku"; var globalResourceObject = HttpContext.GetGlobalResourceObject(string.Format("{0}_Rules", HLConfigManager.Platform), "NoPromoSku"); if (globalResourceObject != null) { message = string.Format(globalResourceObject.ToString(), country.DisplayName, promo.Sku); } LoggerHelper.Error(message); result.Result = RulesResult.Feedback; result.AddMessage(message); shoppingCart.RuleResults.Add(result); return(result); } return(result); } result = RemovePromoOnEmptyCart(shoppingCart, result); int selectedPaymentMethod = 0; if (checkPayment) { var session = SessionInfo.GetSessionInfo(shoppingCart.DistributorID, shoppingCart.Locale); selectedPaymentMethod = session.SelectedPaymentMethod; } var promoSkuInCart = promo != null? shoppingCart.CartItems.Where(i => i.SKU == promo.Sku).Select(i => i.SKU).ToList() : shoppingCart.CartItems.Where(i => PromoSKUs.Contains(i.SKU)).Select(i => i.SKU).ToList(); if (promo == null && promoSkuInCart.Count == 0) { // Nothing to do LoggerHelper.Info("Not elegible for promo and not promo sku in cart"); result.Result = RulesResult.Success; shoppingCart.RuleResults.Add(result); return(result); } if (shoppingCart.Totals == null) { // Nothing to do LoggerHelper.Info("Not able to add or remove sku. Totals are null"); result.Result = RulesResult.Failure; shoppingCart.RuleResults.Add(result); return(result); } if (shoppingCart.CartItems.Count == 0) { // Just remove promo sku and nothing more to do LoggerHelper.Info("No items in cart to add promo"); result.Result = RulesResult.Success; shoppingCart.RuleResults.Add(result); return(result); } if (promoSkuInCart.Count > 0) { // Remove promoSkus from cart shoppingCart.DeleteItemsFromCart(promoSkuInCart, true); if (!AlowedOrderSubTypes.Contains(shoppingCart.OrderSubType) || (promo != null && !shoppingCart.CartItems.Any(i => !i.SKU.Equals(promo.Sku))) || (checkPayment && selectedPaymentMethod > 1) || shoppingCart.IsPromoDiscarted) { // Just remove promo sku and nothing more to do LoggerHelper.Info("Removed promo sku in cart"); result.Result = RulesResult.Success; shoppingCart.RuleResults.Add(result); return(result); } else if (shoppingCart.IgnorePromoSKUAddition) { shoppingCart.IgnorePromoSKUAddition = false; result.Result = RulesResult.Failure; string message = string.Format(HttpContext.GetGlobalResourceObject(string.Format("{0}_Rules", HLConfigManager.Platform), "SKUCantBePurchased").ToString(), promoSkuInCart[0]); result.AddMessage(message); shoppingCart.RuleResults.Add(result); } } // Adding promo if it has inventory and if it is allowed if (promo != null && AlowedOrderSubTypes.Contains(shoppingCart.OrderSubType) && shoppingCart.CartItems.Any() && shoppingCart.DeliveryInfo != null && !string.IsNullOrEmpty(shoppingCart.DeliveryInfo.WarehouseCode) && shoppingCart.DeliveryInfo.WarehouseCode.Equals(promoWarehouse) && ((checkPayment && selectedPaymentMethod <= 1) || !checkPayment) && !shoppingCart.IsPromoDiscarted && !APFDueProvider.IsAPFSkuPresent(shoppingCart.CartItems)) { LoggerHelper.Info("Checking Inventory"); WarehouseInventory warehouseInventory; var catItemPromo = CatalogProvider.GetCatalogItem(promo.Sku, Country); if (catItemPromo.InventoryList.TryGetValue(shoppingCart.DeliveryInfo.WarehouseCode, out warehouseInventory)) { if (warehouseInventory != null) { var warehouseInventory01 = warehouseInventory as WarehouseInventory_V01; if (warehouseInventory01 != null && warehouseInventory01.QuantityAvailable > promo.Quantity) { var country = new RegionInfo(new CultureInfo(Locale, false).LCID); string message = "PromoInCart"; var globalResourceObject = HttpContext.GetGlobalResourceObject(string.Format("{0}_Rules", HLConfigManager.Platform), "PromoInCart"); if (globalResourceObject != null) { message = string.Format(globalResourceObject.ToString(), country.DisplayName); } shoppingCart.AddItemsToCart( new List <ShoppingCartItem_V01>(new[] { new ShoppingCartItem_V01(0, promo.Sku, promo.Quantity, DateTime.Now) }), true); if (result.Result != RulesResult.Failure) { result.Result = checkPayment ? RulesResult.Success : (shoppingCart.IsPromoNotified ? RulesResult.Feedback : RulesResult.Success); result.AddMessage(message); shoppingCart.RuleResults.Add(result); } shoppingCart.IsPromoNotified = false; } else { LoggerHelper.Info("Warehouse information is null or not enough quantity is available"); } } } else { LoggerHelper.Info("Not inventory list was gotten for promo sku"); } } return(result); }