protected void btnSubmit_Click(object sender, EventArgs e)
        {
            Validation();
            if (lblError.Text == string.Empty)
            {
                string jsonFormatValue =
                    "{" +
                    lblQuestion1.Text + ":[" +

                    "{" +
                    lblOption1.Text + ":" +
                    txtOption1.Text
                    + "}" +
                    "{" +
                    lblOption2.Text + ":" +
                    txtOption2.Text
                    + "}" +
                    "{" +
                    lblOption3.Text + ":" +
                    txtOption3.Text
                    + "}" +
                    "{" +
                    lblOption4.Text + ":" +
                    txtOption4.Text
                    + "}]" +

                    "}" +
                    "{" +
                    lblQuestion2.Text + "[" +
                    "{" + lblOption5.Text + ":" + txtOption5.Text + "}" +
                    "{" + lblOption6.Text + ":" + txtOption6.Text + "}" +
                    "{" + lblOption7.Text + ":" + txtOption7.Text + "}" +
                    "{" +
                    lblOption8.Text + ":" +
                    txtOption8.Text
                    + "}" +
                    "]}" +

                    "}";

                ChinaPromotionProvider.SubmitPCPromoSurvey(ProductsBase.ShoppingCart.DistributorID, "CN", DateUtils.GetCurrentLocalTime("CN"),
                                                           convertDateTime(pInfo.FirstOrDefault(x => x.Code.Equals("PCPromoSurvey")).StartDate),
                                                           convertDateTime(pInfo.FirstOrDefault(x => x.Code.Equals("PCPromoSurvey")).EndDate),
                                                           "PCPromoSurvey", jsonFormatValue);
                Session["AttainedSurvey"] = true;
                Response.Redirect("Pricelist.aspx");
            }
        }
Ejemplo n.º 2
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();
                }
            }
        }
Ejemplo n.º 3
0
 public PromotionResponse_V01 GetEffectivePromotionList(string local, DateTime?dateTime = default(DateTime?))
 {
     return(ChinaPromotionProvider.GetEffectivePromotionList(local, dateTime));
 }
Ejemplo n.º 4
0
        /// <summary>
        ///
        /// </summary>
        public override void Submit()
        {
            if (this._theInvoker != null)
            {
                this._theInvoker.Submit();
                return;
            }

            var redirectUrl = _configHelper.GetConfigEntry("paymentGatewayUrl");
            var orderNumber = _orderNumber;
            var returnURL   = _configHelper.GetConfigEntry("paymentGatewayReturnUrlApproved");
            var amount      = _orderAmount <= 0 ? "0.00" : (Convert.ToDouble(_orderAmount.ToString("0.00")) * 100).ToString();
            var returnUrl   = string.Concat(RootUrl, returnURL);
            var paymentGatewayReturnBgUrl = _configHelper.GetConfigEntry("paymentGatewayReturnBgUrl");
            var bgrUrl     = string.Concat(RootUrl, paymentGatewayReturnBgUrl + "?rtnOrderNumber=" + orderNumber);
            var merchantId = _configHelper.GetConfigEntry("paymentGatewayMerchantdId");

            var disId          = _distributorId;
            var membershipUser = (MembershipUser <DistributorProfileModel>)Membership.GetUser();
            var name           = string.Empty;

            if (membershipUser != null)
            {
                name  = membershipUser.Value.DistributorName();
                disId = membershipUser.Value.Id;
            }
            var sessionInfoMyCart = SessionInfo.GetSessionInfo(disId, _locale);

            sessionInfoMyCart.OrderStatus = SubmitOrderStatus.Unknown;
            var myCart = sessionInfoMyCart.ShoppingCart ??
                         ShoppingCartProvider.GetShoppingCart(disId, _locale);
            var email     = string.Empty;
            var payerName = string.Empty;

            if (myCart != null)
            {
                email     = (!string.IsNullOrEmpty(myCart.EmailAddress)) ? myCart.EmailAddress : string.Empty;
                payerName = (myCart.DeliveryInfo != null && myCart.DeliveryInfo.Address != null)
                                ? myCart.DeliveryInfo.Address.Recipient ?? string.Empty
                                : string.Empty;
            }
            var payment =
                HttpContext.Current.Session[PaymentInformation] as CreditPayment_V01;

            if (payment != null && payment.TransactionType == "CC")
            {
                PostCNP(myCart, payment, sessionInfoMyCart, disId, name);
                return;
            }

            if (payment != null)
            {
                if (payment.TransactionType == "10")
                {
                    bgrUrl = bgrUrl + "&BankId=" + payment.AuthorizationMerchantAccount;
                }
                if (payment.TransactionType == "12")
                {
                    bgrUrl = bgrUrl + "&BankId=Fastmoney";
                }
            }
            string orderTime  = DateTime.Now.ToString(DateTimeFormat);
            var    signMsgVal = "";

            signMsgVal = AppendParam(signMsgVal, "inputCharset", "1");
            signMsgVal = AppendParam(signMsgVal, "pageUrl", returnUrl);
            signMsgVal = AppendParam(signMsgVal, "bgUrl", bgrUrl);
            signMsgVal = AppendParam(signMsgVal, "version", "v2.0");
            signMsgVal = AppendParam(signMsgVal, "language", "1");
            signMsgVal = AppendParam(signMsgVal, "signType", "4");        //4 = PKI signate
            signMsgVal = AppendParam(signMsgVal, "merchantAcctId", merchantId);
            signMsgVal = AppendParam(signMsgVal, "payerName", payerName); //?????
            signMsgVal = AppendParam(signMsgVal, "payerContactType", "1");
            signMsgVal = AppendParam(signMsgVal, "payerContact", email);
            signMsgVal = AppendParam(signMsgVal, "orderId", orderNumber);
            signMsgVal = AppendParam(signMsgVal, "orderAmount", amount);
            signMsgVal = AppendParam(signMsgVal, "orderTime", orderTime);
            signMsgVal = AppendParam(signMsgVal, "productName", ProductName);
            signMsgVal = AppendParam(signMsgVal, "productNum", "1");
            signMsgVal = AppendParam(signMsgVal, "productId", "");
            signMsgVal = AppendParam(signMsgVal, "productDesc", ProductDesc);
            signMsgVal = AppendParam(signMsgVal, "ext1", "");
            signMsgVal = AppendParam(signMsgVal, "ext2", "");
            signMsgVal = AppendParam(signMsgVal, "payType", payment != null ? payment.TransactionType : "10");
            if (payment.TransactionType == "10") // eBanking
            {
                signMsgVal = AppendParam(signMsgVal, "bankId",
                                         payment != null ? payment.AuthorizationMerchantAccount : string.Empty);
            }
            signMsgVal = AppendParam(signMsgVal, "redoFlag", "0");
            signMsgVal = AppendParam(signMsgVal, "pid", "");

            var signMsg = GenerateHash(signMsgVal);
            var sb      = new StringBuilder();

            sb.Append("<html>");
            sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
            sb.AppendFormat("<form name='form' action='{0}' method='post'>", redirectUrl);
            sb.AppendFormat(BuildHtml("inputCharset", "1"));
            sb.AppendFormat(BuildHtml("pageUrl", returnUrl));
            sb.AppendFormat(BuildHtml("bgUrl", bgrUrl));
            sb.AppendFormat(BuildHtml("version", "v2.0"));
            sb.AppendFormat(BuildHtml("language", "1"));
            sb.AppendFormat(BuildHtml("signType", "4"));
            sb.AppendFormat(BuildHtml("merchantAcctId", merchantId));
            sb.AppendFormat(BuildHtml("payerName", payerName));
            sb.AppendFormat(BuildHtml("payerContactType", "1"));
            sb.AppendFormat(BuildHtml("payerContact", email));
            sb.AppendFormat(BuildHtml("orderId", orderNumber));
            sb.AppendFormat(BuildHtml("orderAmount", amount));
            sb.AppendFormat(BuildHtml("orderTime", orderTime));
            sb.AppendFormat(BuildHtml("productName", ProductName));
            sb.AppendFormat(BuildHtml("productNum", "1"));
            sb.AppendFormat(BuildHtml("productId", ""));
            sb.AppendFormat(BuildHtml("productDesc", ProductDesc));
            sb.AppendFormat(BuildHtml("ext1", ""));
            sb.AppendFormat(BuildHtml("ext2", ""));
            sb.AppendFormat(BuildHtml("payType", payment != null ? payment.TransactionType : "10"));

            if (payment.TransactionType == "10") // eBanking
            {
                sb.AppendFormat(BuildHtml("bankId", payment != null ? payment.AuthorizationMerchantAccount : string.Empty));
            }

            sb.AppendFormat(BuildHtml("redoFlag", "0"));
            sb.AppendFormat(BuildHtml("pid", ""));
            sb.AppendFormat(BuildHtml("signMsg", signMsg));
            sb.Append("</form>");
            sb.Append("</body>");
            sb.Append("</html>");

            var response = sb.ToString();

            LogMessageWithInfo(PaymentGatewayLogEntryType.Request, OrderNumber, _distributorId, _gatewayName,
                               PaymentGatewayRecordStatusType.Unknown, response);

            bool   isLockedeach = true;
            bool   isLocked     = true;
            string lockfailed   = string.Empty;

            if (myCart != null && myCart.pcLearningPointOffSet > 0M && !(myCart.OrderCategory == ServiceProvider.CatalogSvc.OrderCategoryType.ETO))
            {
                isLockedeach = OrderProvider.LockPCLearningPoint(_distributorId, orderNumber, new OrderMonth(myCart.CountryCode).OrderMonthShortString,
                                                                 Convert.ToInt32(Math.Truncate(myCart.pcLearningPointOffSet)), HLConfigManager.Platform);
                if (!isLockedeach)
                {
                    lockfailed = "PC Learning Point";
                    isLocked   = false;
                }
            }
            else if (myCart != null && myCart.pcLearningPointOffSet > 0M)
            {
                isLockedeach = OrderProvider.LockETOLearningPoint(
                    myCart.CartItems.Select(s => s.SKU),
                    _distributorId,
                    orderNumber,
                    new OrderMonth(myCart.CountryCode).OrderMonthShortString,
                    Convert.ToInt32(Math.Truncate(myCart.pcLearningPointOffSet)),
                    HLConfigManager.Platform);

                if (!isLockedeach)
                {
                    lockfailed = " Learning Point";
                    isLocked   = false;
                }
            }
            if (myCart.HastakenSrPromotion)
            {
                isLockedeach = ChinaPromotionProvider.LockSRPromotion(myCart, OrderNumber);
                if (!isLockedeach)
                {
                    lockfailed = lockfailed + ", SR Promotion";
                    isLocked   = false;
                }
            }
            if (myCart.HastakenSrPromotionGrowing)
            {
                isLockedeach = ChinaPromotionProvider.LockSRQGrowingPromotion(myCart, OrderNumber);
                if (!isLockedeach)
                {
                    lockfailed = lockfailed + ", SR Query Growing";
                    isLocked   = false;
                }
            }
            if (myCart.HastakenSrPromotionExcelnt)
            {
                isLockedeach = ChinaPromotionProvider.LockSRQExcellentPromotion(myCart, OrderNumber);
                if (!isLockedeach)
                {
                    lockfailed = lockfailed + ", SR Query Excellent";
                    isLocked   = false;
                }
            }
            if (myCart.HastakenBadgePromotion)
            {
                isLockedeach = ChinaPromotionProvider.LockBadgePromotion(myCart, OrderNumber);
                if (!isLockedeach)
                {
                    lockfailed = lockfailed + ", Badge promo";
                    isLocked   = false;
                }
            }
            if (myCart.HastakenNewSrpromotion)
            {
                isLockedeach = ChinaPromotionProvider.LockNewSRPromotion(myCart, OrderNumber);
                if (!isLockedeach)
                {
                    lockfailed = lockfailed + ", NewSrPromotion";
                    isLocked   = false;
                }
            }
            if (myCart.HasBrochurePromotion)
            {
                isLockedeach = ChinaPromotionProvider.LockBrochurePromotion(myCart, OrderNumber);
                if (!isLockedeach)
                {
                    lockfailed = lockfailed + ", Brochure Promotion";
                    isLocked   = false;
                }
            }
            if (isLocked)
            {
                HttpContext.Current.Response.Write(response);
                HttpContext.Current.Response.End();
            }
            else
            {
                LogMessageWithInfo(PaymentGatewayLogEntryType.Response, OrderNumber, _distributorId, _gatewayName,
                                   PaymentGatewayRecordStatusType.Declined, lockfailed.TrimStart(',') + " locking fails.");
            }
        }
        /// <summary>
        /// The get all input.
        /// </summary>
        /// <returns>
        /// </returns>
        ///
        private List <ShoppingCartItem_V01> getAllInput(List <string> friendlyMessages)
        {
            Dictionary <string, SKU_V01> allSKUs = CatalogProvider.GetAllSKU(Locale, base.CurrentWarehouse);
            SKU_V01 skuV01 = null;

            friendlyMessages.Clear();
            errSKU.Clear();

            var      products         = new List <ShoppingCartItem_V01>();
            setError setErrorDelegate = delegate(SkuQty sku, string error, List <string> errors)
            {
                sku.Image.Visible = true;
                sku.HasError      = true;
                if (!errors.Contains(error))
                {
                    errors.Add(error);
                }
            };

            bool bNoItemSelected = true;

            for (int i = 1; i < NUMITEMS + 1; i++)
            {
                string controlID = "SKUBox" + i;
                var    ctrlSKU   = tblSKU.FindControl(controlID) as TextBox;
                var    ctrlQty   = tblSKU.FindControl("QuantityBox" + i) as TextBox;
                var    ctrlError = tblSKU.FindControl("imgError" + i) as Image;

                string strSKU = ctrlSKU.Text.Trim();
                string strQty = ctrlQty.Text;
                int    qty;
                int.TryParse(strQty, out qty);

                if (!string.IsNullOrEmpty(strSKU) && qty != 0)
                {
                    strSKU = strSKU.ToUpper();

                    // If the str has a product.
                    strSKU = strSKU.Split(new char[] { ' ' })[0];

                    AllSKUS.TryGetValue(strSKU, out skuV01);
                    if (skuV01 == null)
                    {
                        // if not valid setup error
                        setErrorDelegate(new SkuQty(controlID, strSKU, qty, ctrlError, true, true), string.Format((GetLocalResourceObject("NoSKUFound") as string), strSKU), errSKU);
                    }
                    else
                    {
                        if (CheckMaxQuantity(ShoppingCart.CartItems, qty, skuV01, errSKU))
                        {
                            if (skuList.Any(s => s.SKU == strSKU))
                            {
                                var skuQty = new SkuQty(controlID, strSKU, qty, ctrlError, true, true);
                                skuList.Add(skuQty);
                                setErrorDelegate(skuQty, string.Format((GetLocalResourceObject("DuplicateSKU") as string), strSKU), errSKU);
                                SkuQty skuToFind = skuList.Find(s => s.SKU == strSKU);
                                if (skuToFind != null)
                                {
                                    // this is to prevent dupe one to NOT be added to cart
                                    skuToFind.HasError      = true;
                                    skuToFind.Image.Visible = true;
                                }
                            }
                            else
                            {
                                skuList.Add(new SkuQty(controlID, strSKU, qty, ctrlError, false, false));
                            }
                        }
                        else
                        {
                            ctrlError.CssClass = ctrlError.CssClass.Replace("hide", string.Empty);
                        }
                    }
                }
                else if (!string.IsNullOrEmpty(strSKU) && qty <= 0)
                {
                    setErrorDelegate(new SkuQty(controlID, strSKU, qty, ctrlError, true, false), String.Format(PlatformResources.GetGlobalResourceString("ErrorMessage", "QuantityIncorrect"), strSKU), errSKU);
                }
                else
                {
                    if (strSKU.Length + strQty.Length != 0)
                    {
                        setErrorDelegate(new SkuQty(controlID, strSKU, qty, ctrlError, true, false), GetLocalResourceObject("SKUOrQtyMissing") as string, errSKU);
                    }
                }

                if (!string.IsNullOrEmpty(strSKU) || !string.IsNullOrEmpty(strQty))
                {
                    bNoItemSelected = false;
                }
            }

            if (bNoItemSelected)
            {
                errSKU.Add(PlatformResources.GetGlobalResourceString("ErrorMessage", "NoItemsSelected"));
            }
            else
            {
                try
                {
                    foreach (SkuQty s in skuList)
                    {
                        // do not need to check at this point
                        if (APFDueProvider.IsAPFSku(s.SKU))
                        {
                            setErrorDelegate(s, string.Format(PlatformResources.GetGlobalResourceString("ErrorMessage", "SKUNotAvailable"), s.SKU), errSKU);
                            continue;
                        }

                        AllSKUS.TryGetValue(s.SKU, out skuV01);
                        if (skuV01 != null)
                        {
                            HLRulesManager.Manager.ProcessCatalogItemsForInventory(Locale, this.ShoppingCart, new List <SKU_V01> {
                                skuV01
                            });
                            CatalogProvider.GetProductAvailability(skuV01, CurrentWarehouse);

                            int availQty;

                            // check isBlocked first
                            if (IsBlocked(skuV01))
                            {
                                setErrorDelegate(s, string.Format(PlatformResources.GetGlobalResourceString("ErrorMessage", "SKUNotAvailable"), s.SKU), errSKU);
                            }
                            else if (!skuV01.IsPurchasable)
                            {
                                setErrorDelegate(s, string.Format(GetLocalResourceObject("SKUCantBePurchased") as string, s.SKU), errSKU);
                            }
                            else if (skuV01.ProductAvailability == ProductAvailabilityType.Unavailable)
                            {
                                setErrorDelegate(s, string.Format(PlatformResources.GetGlobalResourceString("ErrorMessage", "SKUNotAvailable"), s.SKU), errSKU);
                            }
                            else if (HLConfigManager.Configurations.DOConfiguration.IsChina && ChinaPromotionProvider.GetPCPromoSkus(skuV01.SKU))
                            {
                                setErrorDelegate(s, string.Format(GetLocalResourceObject("SKUCantBePurchased") as string, s.SKU), errSKU);
                            }
                            else
                            {
                                int backorderCoverage = CheckBackorderCoverage(s.Qty, skuV01, friendlyMessages);
                                if (backorderCoverage == 0)
                                {
                                    // out of stock
                                    if ((availQty = ShoppingCartProvider.CheckInventory(skuV01.CatalogItem, GetAllQuantities(ShoppingCart.CartItems, s.Qty, s.SKU), CurrentWarehouse)) == 0)
                                    {
                                        setErrorDelegate(s, string.Format(MyHL_ErrorMessage.OutOfInventory, s.SKU), errSKU);
                                    }
                                    else if (availQty < GetAllQuantities(ShoppingCart.CartItems, s.Qty, s.SKU))
                                    {
                                        setErrorDelegate(s, string.Format(PlatformResources.GetGlobalResourceString("ErrorMessage", "LessInventory"), s.SKU, availQty), errSKU);
                                        HLRulesManager.Manager.PerformBackorderRules(ShoppingCart, skuV01.CatalogItem);
                                        IEnumerable <string> ruleResultMessages =
                                            from r in ShoppingCart.RuleResults
                                            where r.Result == RulesResult.Failure && r.RuleName == "Back Order"
                                            select r.Messages[0];
                                        if (null != ruleResultMessages && ruleResultMessages.Count() > 0)
                                        {
                                            errSKU.Add(ruleResultMessages.First());
                                            ShoppingCart.RuleResults.Clear();
                                        }
                                    }
                                }
                            }
                        }
                    }

                    //if (errSKU.Count == 0)
                    {
                        products.AddRange((from c in skuList
                                           where c.HasError == false
                                           select new ShoppingCartItem_V01(0, c.SKU, c.Qty, DateTime.Now)).ToList());
                    }
                }
                catch (Exception ex)
                {
                    LoggerHelper.Error(string.Format("getAllInput error:" + ex));
                }
            }

            return(products);
        }
Ejemplo n.º 6
0
        public static bool PostCNPForMobile(MyHLShoppingCart shoppingcart, CreditPayment_V01 payment, string disId, string name, decimal amoun, string orderNumber, string distributorId, string phone)
        {
            if (shoppingcart == null || payment == null)
            {
                return(false);
            }

            ConfigHelper configHelper = new ConfigHelper("CN_99BillPaymentGateway");

            var tr3Url     = configHelper.GetConfigEntry("paymentGatewayReturnUrlApproved");
            var merchantId = configHelper.GetConfigEntry("CNPTerminalId");
            var terminalId = configHelper.GetConfigEntry("terminalId");

            try
            {
                var amount = amoun <= 0 ? "0.00" : amoun.ToString("0.00");
                var tins   = DistributorOrderingProfileProvider.GetTinList(disId, true);
                var tin    = tins.Find(t => t.ID == "CNID");


                var sbXml = new StringBuilder();
                sbXml.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><MasMessage xmlns=\"http://www.99bill.com/mas_cnp_merchant_interface\">");
                sbXml.Append("<version>1.0</version><TxnMsgContent><txnType>PUR</txnType><interactiveStatus>TR1</interactiveStatus>");
                sbXml.AppendFormat("<cardNo>{0}</cardNo>", payment.Card.AccountNumber);
                sbXml.AppendFormat("<expiredDate>{0}</expiredDate>", payment.Card.Expiration.ToString("MM") + payment.Card.Expiration.ToString("yy"));
                sbXml.AppendFormat("<cvv2>{0}</cvv2>", payment.Card.CVV);
                sbXml.AppendFormat("<amount>{0}</amount>", amount);
                sbXml.AppendFormat("<merchantId>{0}</merchantId>", merchantId.Trim());
                sbXml.AppendFormat("<terminalId>{0}</terminalId>", terminalId.Trim());
                sbXml.AppendFormat("<cardHolderName>{0}</cardHolderName>", name);
                sbXml.AppendFormat("<cardHolderId>{0}</cardHolderId>", tin == null ? string.Empty : tin.IDType.Key.Trim());
                sbXml.Append("<idType>0</idType>");
                sbXml.AppendFormat("<entryTime>{0}</entryTime>", DateTime.Now.ToString("yyyyMMddHHmmss"));
                sbXml.AppendFormat("<externalRefNumber>{0}</externalRefNumber>", orderNumber);
                sbXml.AppendFormat("<extMap><extDate><key>phone</key><value>{0}</value></extDate></extMap>", phone);
                sbXml.AppendFormat("<tr3Url>{0}</tr3Url>", tr3Url.Trim());
                sbXml.AppendFormat("<bankId>{0}</bankId>", payment.AuthorizationMerchantAccount);
                sbXml.AppendFormat("</TxnMsgContent></MasMessage>");
                var encyptedCardNum = CryptographicProvider.Encrypt(payment.Card.AccountNumber);
                var encryptedCvv    = CryptographicProvider.Encrypt(payment.Card.CVV);

                var decyptedCardNum = CryptographicProvider.Decrypt(encyptedCardNum);
                var decryptedCvv    = CryptographicProvider.Decrypt(encryptedCvv);

                var logData =
                    sbXml.ToString()
                    .Replace(payment.Card.AccountNumber, encyptedCardNum)
                    .Replace(payment.Card.CVV, encryptedCvv);

                LogMessageWithInfo(PaymentGatewayLogEntryType.Request, orderNumber, orderNumber, orderNumber,
                                   PaymentGatewayRecordStatusType.Unknown, logData);

                bool   isLockedeach = true;
                bool   isLocked     = true;
                string lockfailed   = string.Empty;

                if (shoppingcart.pcLearningPointOffSet > 0M && !(shoppingcart.OrderCategory == ServiceProvider.CatalogSvc.OrderCategoryType.ETO))
                {
                    isLockedeach = OrderProvider.LockPCLearningPoint(distributorId, orderNumber,
                                                                     new OrderMonth(shoppingcart.CountryCode).OrderMonthShortString,
                                                                     Convert.ToInt32(Math.Truncate(shoppingcart.pcLearningPointOffSet)),
                                                                     HLConfigManager.Platform);
                    if (!isLockedeach)
                    {
                        lockfailed = "PC Learning Point";
                        isLocked   = false;
                    }
                }
                else if (shoppingcart.pcLearningPointOffSet > 0M)
                {
                    isLockedeach = OrderProvider.LockETOLearningPoint(
                        shoppingcart.CartItems.Select(s => s.SKU),
                        distributorId,
                        orderNumber,
                        new OrderMonth(shoppingcart.CountryCode).OrderMonthShortString,
                        Convert.ToInt32(Math.Truncate(shoppingcart.pcLearningPointOffSet)),
                        HLConfigManager.Platform);

                    if (!isLockedeach)
                    {
                        lockfailed = "ETO Learning Point";
                        isLocked   = false;
                    }
                }
                if (shoppingcart.HastakenSrPromotion)
                {
                    isLockedeach = ChinaPromotionProvider.LockSRPromotion(shoppingcart, orderNumber);
                    if (!isLockedeach)
                    {
                        lockfailed = lockfailed + ", SR Promotion";
                        isLocked   = false;
                    }
                }
                if (shoppingcart.HastakenSrPromotionGrowing)
                {
                    isLockedeach = ChinaPromotionProvider.LockSRQGrowingPromotion(shoppingcart, orderNumber);
                    if (!isLockedeach)
                    {
                        lockfailed = lockfailed + ", SR Query Growing";
                        isLocked   = false;
                    }
                }
                if (shoppingcart.HastakenSrPromotionExcelnt)
                {
                    isLockedeach = ChinaPromotionProvider.LockSRQExcellentPromotion(shoppingcart, orderNumber);
                    if (!isLockedeach)
                    {
                        lockfailed = lockfailed + ", SR Query Excellent";
                        isLocked   = false;
                    }
                }
                if (shoppingcart.HastakenBadgePromotion)
                {
                    isLockedeach = ChinaPromotionProvider.LockBadgePromotion(shoppingcart, orderNumber);
                    if (!isLockedeach)
                    {
                        lockfailed = lockfailed + ", Badge promo";
                        isLocked   = false;
                    }
                }
                if (shoppingcart.HastakenNewSrpromotion)
                {
                    isLockedeach = ChinaPromotionProvider.LockNewSRPromotion(shoppingcart, orderNumber);
                    if (!isLockedeach)
                    {
                        lockfailed = lockfailed + ", NewSrPromotion";
                        isLocked   = false;
                    }
                }
                if (shoppingcart.HasBrochurePromotion)
                {
                    isLockedeach = ChinaPromotionProvider.LockBrochurePromotion(shoppingcart, orderNumber);
                    if (!isLockedeach)
                    {
                        lockfailed = lockfailed + ", Brochure Promotion";
                        isLocked   = false;
                    }
                }
                if (isLocked)
                {
                    var proxy   = ServiceClientProvider.GetChinaOrderServiceProxy();
                    var request = new ServiceProvider.OrderChinaSvc.GetCNPPaymentServiceRequest_V01()
                    {
                        Data = sbXml.ToString().Replace(payment.Card.AccountNumber, payment.Card.AccountNumber)
                    };
                    var response = proxy.GetCnpPaymentServiceDetail(new ServiceProvider.OrderChinaSvc.GetCnpPaymentServiceDetailRequest(request)).GetCnpPaymentServiceDetailResult as ServiceProvider.OrderChinaSvc.GetCNPPaymentServiceResponse_V01;

                    if (null != response)
                    {
                        if (response.Status == ServiceProvider.OrderChinaSvc.ServiceResponseStatusType.Success && response.Response.Length > 0)
                        {
                            var msgReturn = response.Response;
                            if (msgReturn.IndexOf("xmlns=\"http://www.99bill.com/mas_cnp_merchant_interface\"") > 1)
                            {
                                msgReturn = msgReturn.Replace(" xmlns=\"http://www.99bill.com/mas_cnp_merchant_interface\"", "");
                            }
                            var xmlDoc        = new XmlDocument();
                            var encodedString = Encoding.UTF8.GetBytes(msgReturn);
                            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");
                            var externalRefNumberback = string.Empty;
                            var refNumberback         = string.Empty;
                            var gatewayAmount         = string.Empty;
                            var approved = false;
                            if (list != null && list.Count == 0)
                            {
                                var selectSingleNode = xmlDoc.SelectSingleNode("MasMessage/ErrorMsgContent/errorMessage");
                                if (selectSingleNode != null)
                                {
                                    var errorMessage = selectSingleNode.InnerText;
                                    LogMessageWithInfo(PaymentGatewayLogEntryType.Response, orderNumber, distributorId, "CN_99BillPaymentGatewayInvoker", PaymentGatewayRecordStatusType.Declined, msgReturn + errorMessage);

                                    return(false);
                                }
                            }
                            else
                            {
                                var authorizationCodeback = "";
                                var selectSingleNode      = xmlDoc.SelectSingleNode("MasMessage/TxnMsgContent/responseCode");
                                if (selectSingleNode != null)
                                {
                                    var responseCode = selectSingleNode.InnerText;
                                    approved = responseCode == "00";
                                    if (!approved)
                                    {
                                        var strCNPUnknown             = Settings.GetRequiredAppSetting("CNPResponseCodeForUnknown", "C0,68");
                                        var cnpResponseCodeForUnknown = new List <string>(strCNPUnknown.Split(new char[] { ',' }));
                                        if (cnpResponseCodeForUnknown.Contains(responseCode.ToUpper()))
                                        {
                                            return(approved);
                                        }
                                        LogMessageWithInfo(PaymentGatewayLogEntryType.Response, orderNumber, string.Empty,
                                                           "CN_99BillPaymentGateway",
                                                           PaymentGatewayRecordStatusType.Declined, msgReturn);
                                        return(approved);
                                    }
                                }

                                var singleNode = xmlDoc.SelectSingleNode("MasMessage/TxnMsgContent/externalRefNumber");
                                externalRefNumberback = singleNode != null ? singleNode.InnerText : string.Empty;
                                var refNumber = xmlDoc.SelectSingleNode("MasMessage/TxnMsgContent/refNumber");
                                refNumberback = refNumber != null ? refNumber.InnerText : string.Empty;
                                var authorizationCode = xmlDoc.SelectSingleNode("MasMessage/TxnMsgContent/authorizationCode");
                                authorizationCodeback = authorizationCode != null
                                                            ? authorizationCode.InnerText
                                                            : string.Empty;
                                var retAmount = xmlDoc.SelectSingleNode("MasMessage/TxnMsgContent/amount");
                                gatewayAmount = retAmount != null ? retAmount.InnerText : string.Empty;
                                LogMessageWithInfo(PaymentGatewayLogEntryType.Response, orderNumber, distributorId, "CN_99BillPaymentGatewayInvoker",
                                                   PaymentGatewayRecordStatusType.Approved, msgReturn);
                                //sessionInfo.OrderStatus = SubmitOrderStatus.Unknown;
                            }
                            payment.Card.IssuingBankID           = refNumberback;
                            payment.AuthorizationMerchantAccount = externalRefNumberback;

                            return(approved);
                        }
                        else
                        {
                            var resp =
                                string.Format(
                                    "Response failure. Unable to connect to 99Bill. OrderNumber: {0} ; response: {1}; status: {2}",
                                    orderNumber, response.Response, response.Status);
                            //LoggerHelper.Error(resp);
                            LogMessageWithInfo(PaymentGatewayLogEntryType.Response, orderNumber, distributorId, "CN_99BillPaymentGatewayInvoker", PaymentGatewayRecordStatusType.Declined, resp);
                            return(false);
                        }
                    }
                    else
                    {
                        var resp = "Response null, Unable to connect to 99Bill. OrderNumber:" + orderNumber;
                        //LoggerHelper.Error(resp);
                        LogMessageWithInfo(PaymentGatewayLogEntryType.Response, orderNumber, distributorId, "CN_99BillPaymentGatewayInvoker", PaymentGatewayRecordStatusType.Declined, resp);
                        return(false);
                    }
                }
                else
                {
                    var resp = "PostCNP - " + lockfailed.TrimStart(',') + " locking fails. OrderNumber:" + orderNumber;
                    LogMessageWithInfo(PaymentGatewayLogEntryType.Response, orderNumber, distributorId, "CN_99BillPaymentGatewayInvoker", PaymentGatewayRecordStatusType.Declined, resp);
                    return(false);
                }
            }
            catch (Exception ex)
            {
                var resp = string.Format("PostCNP Error. OrderNumber: {0}. ex : {1} ", orderNumber, ex.Message);
                LoggerHelper.Error(resp);
                LogMessage(PaymentGatewayLogEntryType.Response, orderNumber, distributorId, "CN_99BillPaymentGatewayInvoker", PaymentGatewayRecordStatusType.Declined, resp);
                return(false);
            }
        }
        public MobileResponseWrapper Post(WechatPrepayIdRequestViewModel request, string memberId)
        {
            if (request == null || request.Data == null || request.Data.Prepay == null || request.Data.Order == null)
            {
                throw CreateException(HttpStatusCode.BadRequest, "request is null", 500404);
            }
            string obj = JsonConvert.SerializeObject(request);

            SetOrderMemberId(request.Data.Order);
            request.Data.Prepay.Locale   = Thread.CurrentThread.CurrentCulture.Name;
            request.Data.Prepay.MemberId = memberId;
            var authToken = Guid.Empty;

            if (null != Request && null != Request.Headers && Request.Headers.Any())
            {
                if (Request.Headers.Contains("X-HLUSER-TOKEN"))
                {
                    var authTokenValue = Request.Headers.GetValues("X-HLUSER-TOKEN").FirstOrDefault();
                    if (!string.IsNullOrEmpty(authTokenValue))
                    {
                        Guid.TryParse(authTokenValue, out authToken);
                    }
                }
            }

            WechatPrepayIdResponseViewModel result = null;
            var errors = new List <ValidationErrorViewModel>();

            if (null != request.Data.Order)
            {
                request.Data.Order.Locale = Thread.CurrentThread.CurrentCulture.Name;

                var amount = decimal.Zero;
                var id     = _mobileWechatProvider.InsertToPaymentGatewayRecord(request.Data.Order,
                                                                                authToken == Guid.Empty ? Guid.NewGuid() : authToken, ref amount);
                if (id == 0)
                {
                    errors.Add(new ValidationErrorViewModel
                    {
                        Code   = 101416,
                        Reason = "InsertToPaymentGatewayRecord failed"
                    });
                }

                if (!string.IsNullOrEmpty(request.Data.Order.OrderNumber) && amount > 0)
                {
                    bool   isLockedeach = true;
                    bool   isLocked     = true;
                    string lockfailed   = string.Empty;


                    if (request.Data.Order.pcLearningPointOffSet > 0M && request.Data.Order.CategoryType != "ETO")
                    {
                        isLockedeach = OrderProvider.LockPCLearningPoint(request.Data.Prepay.MemberId, request.Data.Order.OrderNumber,
                                                                         request.Data.Order.OrderMonth,
                                                                         request.Data.Order.pcLearningPointOffSet, HLConfigManager.Platform);
                        if (!isLockedeach)
                        {
                            lockfailed = "PC Learning Point";
                            isLocked   = false;
                        }
                    }
                    else if (request.Data.Order.pcLearningPointOffSet > 0M)
                    {
                        isLockedeach = OrderProvider.LockETOLearningPoint(
                            request.Data.Order.OrderItems.Select(s => s.Sku),
                            request.Data.Prepay.MemberId,
                            request.Data.Order.OrderNumber,
                            request.Data.Order.OrderMonth,
                            request.Data.Order.pcLearningPointOffSet,
                            HLConfigManager.Platform);

                        if (!isLockedeach)
                        {
                            lockfailed = "ETO Learning Point";
                            isLocked   = false;
                        }
                    }
                    var shoppingcart = ShoppingCartProvider.GetShoppingCart(request.Data.Prepay.MemberId, request.Data.Prepay.Locale, true, false);
                    if (shoppingcart.HastakenSrPromotion)
                    {
                        isLockedeach = ChinaPromotionProvider.LockSRPromotion(shoppingcart, request.Data.Order.OrderNumber);
                        if (!isLockedeach)
                        {
                            lockfailed = lockfailed + ", SR Promotion";
                            isLocked   = false;
                        }
                    }
                    if (shoppingcart.HastakenSrPromotionGrowing)
                    {
                        isLockedeach = ChinaPromotionProvider.LockSRQGrowingPromotion(shoppingcart, request.Data.Order.OrderNumber);
                        if (!isLockedeach)
                        {
                            lockfailed = lockfailed + ", SR Query Growing";
                            isLocked   = false;
                        }
                    }
                    if (shoppingcart.HastakenSrPromotionExcelnt)
                    {
                        isLockedeach = ChinaPromotionProvider.LockSRQExcellentPromotion(shoppingcart, request.Data.Order.OrderNumber);
                        if (!isLockedeach)
                        {
                            lockfailed = lockfailed + ", SR Query Excellent";
                            isLocked   = false;
                        }
                    }
                    if (shoppingcart.HastakenBadgePromotion)
                    {
                        isLockedeach = ChinaPromotionProvider.LockBadgePromotion(shoppingcart, request.Data.Order.OrderNumber);
                        if (!isLockedeach)
                        {
                            lockfailed = lockfailed + ", BadgePromotion";
                            isLocked   = false;
                        }
                    }
                    if (shoppingcart.HastakenNewSrpromotion)
                    {
                        isLockedeach = ChinaPromotionProvider.LockNewSRPromotion(shoppingcart, request.Data.Order.OrderNumber);
                        if (!isLockedeach)
                        {
                            lockfailed = lockfailed + ", NewSrPromotion";
                            isLocked   = false;
                        }
                    }

                    if (shoppingcart.HasBrochurePromotion)
                    {
                        isLockedeach = ChinaPromotionProvider.LockBrochurePromotion(shoppingcart, request.Data.Order.OrderNumber);
                        if (!isLockedeach)
                        {
                            lockfailed = lockfailed + ", BrochurePromotion";
                            isLocked   = false;
                        }
                    }

                    if (isLocked)
                    {
                        result = _mobileWechatProvider.GetPrepayId(request.Data.Prepay, request.Data.Order.OrderNumber, amount);
                    }
                    else
                    {
                        errors.Add(new ValidationErrorViewModel
                        {
                            Code   = 101417,
                            Reason = lockfailed.TrimStart(',') + " locking failed"
                        });
                    }
                }
            }

            var response = new MobileResponseWrapper
            {
                Data             = result,
                ValidationErrors = errors.Any() ? errors : null
            };

            JObject json = JObject.Parse(obj);

            MobileActivityLogProvider.ActivityLog(json, response, memberId ?? string.Empty, true,
                                                  Request.RequestUri.ToString(),
                                                  Request.Headers.ToString(),
                                                  Request.Headers.UserAgent.ToString(),
                                                  request.Data.Prepay.Locale);

            return(response);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// display Promo
        /// </summary>

        private void displayPromo()
        {
            divPromo.Visible = false;
            PromotionInformation         promo;
            List <CatalogItem>           PcPromoOnly = new List <CatalogItem>();
            Dictionary <string, SKU_V01> _AllSKUS    = 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;
                }
            }
            else
            {
                return;
            }

            var profile = DistributorOrderingProfileProvider.GetProfile(ShoppingCart.DistributorID, ShoppingCart.DeliveryInfo.Address.Address.Country);

            if ((promo =
                     ChinaPromotionProvider.GetPCPromotion(profile.CNCustomorProfileID.ToString(), ShoppingCart.DistributorID)) !=
                null)
            {
                var     totals = ShoppingCart.Totals as MyHerbalife3.Ordering.ServiceProvider.OrderSvc.OrderTotals_V02;
                decimal currentMonthTotalDue = 0;
                if (promo.MonthlyInfo != null)
                {
                    if (promo.MonthlyInfo.Count > 0)
                    {
                        currentMonthTotalDue = promo.MonthlyInfo[0].Amount;
                    }
                }
                if (totals != null && totals.OrderFreight != null && totals.AmountDue + currentMonthTotalDue - totals.OrderFreight.FreightCharge >= promo.promoelement.AmountMinInclude)
                {
                    if (promo.IsEligible)
                    {
                        if (promo.SKUList.Count > 0)
                        {
                            if (ShoppingCart != null && ShoppingCart.CartItems.Count > 0)
                            {
                                if (rblFreeGiftlist.Items.Count > 0)
                                {
                                    rblFreeGiftlist.Items.Clear();
                                }
                                _AllSKUS = (ProductsBase).ProductInfoCatalog.AllSKUs;
                                SKU_V01 sku;
                                foreach (CatalogItem t in promo.SKUList)
                                {
                                    if (_AllSKUS.TryGetValue(t.SKU, out sku))
                                    {
                                        if (!ChinaPromotionProvider.GetPCPromoCode(t.SKU).Trim().Equals("PCPromo"))
                                        {
                                            continue;
                                        }
                                        if ((
                                                ShoppingCartProvider.CheckInventory(t as CatalogItem_V01, 1,
                                                                                    ProductsBase.CurrentWarehouse) > 0 &&
                                                (CatalogProvider.GetProductAvailability(sku,
                                                                                        ProductsBase.CurrentWarehouse) == ProductAvailabilityType.Available)))
                                        {
                                            rblFreeGiftlist.Items.Add(new ListItem(t.Description,
                                                                                   t.SKU));

                                            divPromo.Visible = true;
                                            PcPromoOnly.Add(t);
                                        }
                                    }
                                }
                                if (rblFreeGiftlist.Items.Count > 0)
                                {
                                    rblFreeGiftlist.Items[0].Selected = true;
                                }
                                var myShoppingCart = (Page as ProductsBase).ShoppingCart;

                                var promoInCart =
                                    myShoppingCart.CartItems.Select(c => c.SKU).Intersect(PcPromoOnly.Select(f => f.SKU));
                                if (promoInCart.Any())
                                {
                                    btnAddToCart.Enabled = false;
                                    divPromo.Visible     = false;
                                }
                                else
                                {
                                    btnAddToCart.Enabled = true;
                                }
                                if (ShoppingCart.CartItems.Count == 1)
                                {
                                    if (promoInCart.Any())
                                    {
                                        ShoppingCart.DeleteItemsFromCart(promoInCart.ToList(), true);
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        var itemsInBoth =
                            ShoppingCart.CartItems.Where(x => x.IsPromo)
                            .Select(c => c.SKU)
                            .Intersect(promo.SKUList.Select(f => f.SKU));
                        if (itemsInBoth.Any())
                        {
                            ShoppingCart.DeleteItemsFromCart(itemsInBoth.ToList(), true);
                        }
                    }
                }
                else
                {
                    var itemsInBoth =
                        ShoppingCart.CartItems.Where(x => x.IsPromo)
                        .Select(c => c.SKU)
                        .Intersect(promo.SKUList.Select(f => f.SKU));
                    if (itemsInBoth.Any())
                    {
                        ShoppingCart.DeleteItemsFromCart(itemsInBoth.ToList(), true);
                    }
                }
            }
            promotionPanel.Update();
        }
Ejemplo n.º 9
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();
        }
Ejemplo n.º 10
0
        private void displaySRPromo()
        {
            divPromo.Visible = false;
            PromotionInformation         promo;
            List <CatalogItem>           SRPromoOnly = new List <CatalogItem>();
            Dictionary <string, SKU_V01> _AllSKUS    = 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;
                }
            }
            else
            {
                return;
            }

            var profile = DistributorOrderingProfileProvider.GetProfile(ShoppingCart.DistributorID, ShoppingCart.DeliveryInfo.Address.Address.Country);

            if (ChinaPromotionProvider.IsEligibleForSRPromotion(ShoppingCart, HLConfigManager.Platform))
            {
                var cacheKey = string.Format("GetSRPromoDetail_{0}", ShoppingCart.DistributorID);
                var results  = HttpRuntime.Cache[cacheKey] as GetSRPromotionResponse_V01;
                var skuList  = results.Skus.Split(',').ToArray();
                if (results != null && !string.IsNullOrWhiteSpace(results.Skus))
                {
                    //if (promo.IsEligible)
                    //{

                    if (skuList.Count() > 0)
                    {
                        if (ShoppingCart != null && ShoppingCart.CartItems.Count > 0)
                        {
                            if (rblFreeGiftlist.Items.Count > 0)
                            {
                                rblFreeGiftlist.Items.Clear();
                            }
                            _AllSKUS = (ProductsBase).ProductInfoCatalog.AllSKUs;
                            SKU_V01 sku;
                            foreach (var t in skuList)
                            {
                                if (_AllSKUS.TryGetValue(t, out sku))
                                {
                                    if ((
                                            ShoppingCartProvider.CheckInventory(sku.CatalogItem, 1,
                                                                                ProductsBase.CurrentWarehouse) > 0 &&
                                            (CatalogProvider.GetProductAvailability(sku,
                                                                                    ProductsBase.CurrentWarehouse) == ProductAvailabilityType.Available)))
                                    {
                                        rblFreeGiftlist.Items.Add(new ListItem(sku.Description,
                                                                               t));

                                        divPromo.Visible = true;
                                        SRPromoOnly.Add(sku.CatalogItem);
                                    }
                                }
                            }
                            if (rblFreeGiftlist.Items.Count > 0)
                            {
                                rblFreeGiftlist.Items[0].Selected = true;
                            }
                            var myShoppingCart = (Page as ProductsBase).ShoppingCart;

                            var promoInCart =
                                myShoppingCart.CartItems.Select(c => c.SKU).Intersect(SRPromoOnly.Select(f => f.SKU));
                            if (promoInCart.Any())
                            {
                                btnAddToCart.Enabled = false;
                                divPromo.Visible     = false;
                                // ShoppingCart.HastakenSrPromotion = true;
                            }
                            else
                            {
                                btnAddToCart.Enabled = true;
                                //  ShoppingCart.HastakenSrPromotion = false;
                                lblFreeGift.Text = GetLocalResourceObject("lblFreeGiftResource1.Text") as string;
                            }
                            if (ShoppingCart.CartItems.Count == 1)
                            {
                                if (promoInCart.Any())
                                {
                                    ShoppingCart.DeleteItemsFromCart(promoInCart.ToList(), true);
                                }
                            }
                        }
                    }
                }
                else
                {
                    var itemsInBoth =
                        ShoppingCart.CartItems.Where(x => x.IsPromo)
                        .Select(c => c.SKU)
                        .Intersect(skuList, StringComparer.OrdinalIgnoreCase);
                    if (itemsInBoth.Any())
                    {
                        ShoppingCart.DeleteItemsFromCart(itemsInBoth.ToList(), true);
                    }
                }
                //}
                //else
                //{
                //    var itemsInBoth =
                //                        ShoppingCart.CartItems.Where(x => x.IsPromo)
                //                            .Select(c => c.SKU)
                //                            .Intersect(promo.SKUList.Select(f => f.SKU));
                //    if (itemsInBoth.Any())
                //        ShoppingCart.DeleteItemsFromCart(itemsInBoth.ToList(), true);

                //}
            }
            promotionPanel.Update();
        }
        public override void Submit()
        {
            bool   isLockedeach   = true;
            bool   isLocked       = true;
            string lockfailed     = string.Empty;
            var    currentSession = SessionInfo.GetSessionInfo(HttpContext.Current.User.Identity.Name, _locale);

            if (currentSession != null)
            {
                if (currentSession.ShoppingCart != null && currentSession.ShoppingCart.pcLearningPointOffSet > 0M && !(currentSession.ShoppingCart.OrderCategory == ServiceProvider.CatalogSvc.OrderCategoryType.ETO))
                {
                    isLockedeach = OrderProvider.LockPCLearningPoint(_distributorId, OrderNumber, new OrderMonth(currentSession.ShoppingCart.CountryCode).OrderMonthShortString,
                                                                     Convert.ToInt32(Math.Truncate(currentSession.ShoppingCart.pcLearningPointOffSet)), HLConfigManager.Platform);
                    if (!isLockedeach)
                    {
                        lockfailed = "PC Learning Point";
                        isLocked   = false;
                    }
                }
                else if (currentSession.ShoppingCart != null && currentSession.ShoppingCart.pcLearningPointOffSet > 0M)
                {
                    isLockedeach = OrderProvider.LockETOLearningPoint(
                        currentSession.ShoppingCart.CartItems.Select(s => s.SKU),
                        _distributorId,
                        OrderNumber,
                        new OrderMonth(currentSession.ShoppingCart.CountryCode).OrderMonthShortString,
                        Convert.ToInt32(Math.Truncate(currentSession.ShoppingCart.pcLearningPointOffSet)),
                        HLConfigManager.Platform);

                    if (!isLockedeach)
                    {
                        lockfailed = "ETO Learning Point";
                        isLocked   = false;
                    }
                }
                if (currentSession.ShoppingCart.HastakenSrPromotion)
                {
                    isLockedeach = ChinaPromotionProvider.LockSRPromotion(currentSession.ShoppingCart, _orderNumber);
                    if (!isLockedeach)
                    {
                        lockfailed = lockfailed + ", SR Promotion";
                        isLocked   = false;
                    }
                }
                if (currentSession.ShoppingCart.HastakenSrPromotionGrowing)
                {
                    isLockedeach = ChinaPromotionProvider.LockSRQGrowingPromotion(currentSession.ShoppingCart, _orderNumber);
                    if (!isLockedeach)
                    {
                        lockfailed = lockfailed + ", SR Query Growing";
                        isLocked   = false;
                    }
                }
                if (currentSession.ShoppingCart.HastakenSrPromotionExcelnt)
                {
                    isLockedeach = ChinaPromotionProvider.LockSRQExcellentPromotion(currentSession.ShoppingCart, _orderNumber);
                    if (!isLockedeach)
                    {
                        lockfailed = lockfailed + ", SR Query Excellent";
                        isLocked   = false;
                    }
                }
                if (currentSession.ShoppingCart.HastakenBadgePromotion)
                {
                    isLockedeach = ChinaPromotionProvider.LockBadgePromotion(currentSession.ShoppingCart, _orderNumber);
                    if (!isLockedeach)
                    {
                        lockfailed = lockfailed + ", Badge promo";
                        isLocked   = false;
                    }
                }
                if (currentSession.ShoppingCart.HastakenNewSrpromotion)
                {
                    isLockedeach = ChinaPromotionProvider.LockNewSRPromotion(currentSession.ShoppingCart, _orderNumber);
                    if (!isLockedeach)
                    {
                        lockfailed = lockfailed + ", NewSrPromotion";
                        isLocked   = false;
                    }
                }
            }

            if (currentSession.ShoppingCart.HasBrochurePromotion)
            {
                isLockedeach = ChinaPromotionProvider.LockBrochurePromotion(currentSession.ShoppingCart, _orderNumber);
                if (!isLockedeach)
                {
                    lockfailed = lockfailed + ", Brochure Promotion";
                    isLocked   = false;
                }
            }
            if (isLocked)
            {
                CN_99BillQuickPayProvider provider = new CN_99BillQuickPayProvider();
                var resultString = provider.Submit(_orderNumber, _orderAmount);

                if (!string.IsNullOrEmpty(resultString))
                {
                    var verStr = Encrypt(resultString, EncryptionKey);
                    var url    = string.Format("{0}?QPVerStr={1}", _configHelper.GetConfigEntry("paymentGatewayReturnUrlApproved"), verStr);

                    HttpContext.Current.Response.Redirect(url, false);
                    HttpContext.Current.ApplicationInstance.CompleteRequest();
                }
            }
            else
            {
                var resultString = string.Format("{0},{1},{2},{3},{4},{5}", OrderNumber, "0", DateTime.Now.ToString(DateTimeFormat), "", "", "");

                var verStr = Encrypt(resultString, EncryptionKey);
                var url    = string.Format("{0}?QPVerStr={1}", _configHelper.GetConfigEntry("paymentGatewayReturnUrlApproved"), verStr);

                HttpContext.Current.Response.Redirect(url, false);
                HttpContext.Current.ApplicationInstance.CompleteRequest();
            }
        }
        /// <summary>
        /// display Promo
        /// </summary>

        private void displayPromo()
        {
            divPromo.Visible = false;
            PromotionInformation         promo;
            List <CatalogItem>           PcPromoOnly = new List <CatalogItem>();
            Dictionary <string, SKU_V01> _AllSKUS    = null;

            if ((promo = ChinaPromotionProvider.GetChinaPromotion(DistributorID)) != null)
            {
                var currestsession = SessionInfo.GetSessionInfo(DistributorID, "zh-CN");
                if (currestsession != null && currestsession.ChinaPromoSKUQuantity > 0)
                {
                    if (promo.SKUList.Count > 0)
                    {
                        if (ShoppingCart != null && ShoppingCart.CartItems.Count > 0)
                        {
                            if (rblFreeGiftlist.Items.Count > 0)
                            {
                                rblFreeGiftlist.Items.Clear();
                            }
                            _AllSKUS = (ProductsBase).ProductInfoCatalog.AllSKUs;
                            SKU_V01 sku;
                            foreach (CatalogItem t in promo.SKUList)
                            {
                                if (_AllSKUS.TryGetValue(t.SKU, out sku))
                                {
                                    if (!ChinaPromotionProvider.GetPCPromoCode(t.SKU).Trim().Equals("DSChinaPromo")) // SKUs are same for both DSChinaPromo and PCChinaPromo
                                    {
                                        continue;
                                    }
                                    if ((
                                            ShoppingCartProvider.CheckInventory(t as CatalogItem_V01, 1,
                                                                                ProductsBase.CurrentWarehouse) > 0 &&
                                            (CatalogProvider.GetProductAvailability(sku,
                                                                                    ProductsBase.CurrentWarehouse) == ProductAvailabilityType.Available)))
                                    {
                                        rblFreeGiftlist.Items.Add(new ListItem(t.Description,
                                                                               t.SKU));

                                        divPromo.Visible = true;
                                        PcPromoOnly.Add(t);
                                    }
                                }
                            }
                            ChinaPromoSkus = PcPromoOnly;
                            if (rblFreeGiftlist.Items.Count > 0)
                            {
                                rblFreeGiftlist.Items[0].Selected = true;
                            }
                            var myShoppingCart = (Page as ProductsBase).ShoppingCart;

                            var promoInCart =
                                myShoppingCart.CartItems.Select(c => c.SKU).Intersect(PcPromoOnly.Select(f => f.SKU));
                            var itemcount = promoInCart as string[] ?? promoInCart.ToArray();
                            var count     = (from skucount in myShoppingCart.CartItems
                                             from cartitem in itemcount
                                             where cartitem.Trim().Equals(skucount.SKU.Trim())
                                             select skucount.Quantity).Sum();

                            if (count == currestsession.ChinaPromoSKUQuantity)
                            {
                                btnAddToCart.Enabled = false;
                                divPromo.Visible     = false;
                            }
                            else if (count > currestsession.ChinaPromoSKUQuantity)
                            {
                                var itemsInBoth =
                                    myShoppingCart.CartItems.Where(x => x.IsPromo)
                                    .Select(c => c.SKU)
                                    .Intersect(ChinaPromoSkus.Select(f => f.SKU));
                                if (itemsInBoth.Any())
                                {
                                    myShoppingCart.DeleteItemsFromCart(itemsInBoth.ToList(), true);
                                }
                                btnAddToCart.Enabled = true;
                                lblFreeGift.Text     =
                                    string.Format(GetLocalResourceObject("lblFreeGiftResource1.Text") as string,
                                                  currestsession.ChinaPromoSKUQuantity);
                            }
                            else
                            {
                                btnAddToCart.Enabled = true;
                                lblFreeGift.Text     =
                                    string.Format(GetLocalResourceObject("lblFreeGiftResource1.Text") as string,
                                                  currestsession.ChinaPromoSKUQuantity - count);
                            }
                        }
                    }
                }
                promotionPanel.Update();
            }
        }