Beispiel #1
0
    protected string GetPrice(string giftregistryItemID)
    {
        GiftRegistryItem giftRegistryItem = DataAccessContextDeluxe.GiftRegistryItemRepository.GetOne(giftregistryItemID);

        return(StoreContext.Currency.FormatPrice(
                   giftRegistryItem.GetUnitPrice(StoreContext.WholesaleStatus)));
    }
Beispiel #2
0
    private string CheckErrorItem()
    {
        int    rowIndex;
        string errormsg = string.Empty;

        for (rowIndex = 0; rowIndex < uxGrid.Rows.Count; rowIndex++)
        {
            GridViewRow row = uxGrid.Rows[rowIndex];
            if (row.RowType == DataControlRowType.DataRow)
            {
                string giftRegistryItemID = uxGrid.DataKeys[rowIndex].Value.ToString();
                int    wantQuantity       = ConvertUtilities.ToInt32(((Label)row.FindControl("uxWantQuantityLabel")).Text.Trim());
                int    hasQuantity        = ConvertUtilities.ToInt32(((Label)row.FindControl("uxHasQuantityLabel")).Text.Trim());
                string productName        = ((HyperLink)row.FindControl("uxNameLink")).Text.Trim();
                string quantityText       = ((TextBox)row.FindControl("uxQuantityText")).Text.Trim();

                int quantityInCart = GiftRegistryItem.GetGiftRegistryItemQuantity(StoreContext.ShoppingCart,
                                                                                  StoreContext.Culture, StoreContext.WholesaleStatus, giftRegistryItemID);
                int totalItem = wantQuantity - hasQuantity - quantityInCart;

                int quantity;
                if (int.TryParse(quantityText, out quantity))
                {
                    if (quantity > totalItem && quantity > 0)
                    {
                        errormsg += "<li>" + productName + "</li>";
                    }
                }
            }
        }
        return(errormsg);
    }
    private void UpdateQuantity()
    {
        ArrayList productNameList = new ArrayList();
        int       rowIndex;

        for (rowIndex = 0; rowIndex < uxGrid.Rows.Count; rowIndex++)
        {
            GridViewRow row = uxGrid.Rows[rowIndex];
            if (row.RowType == DataControlRowType.DataRow)
            {
                string wantQuantityText = ((TextBox)row.FindControl("uxWantQuantityText")).Text;
                string hasQuantityText = ((Label)row.FindControl("uxHasQuantityLabel")).Text.Trim();
                int    wantQuantity, hasQuantity;
                if (int.TryParse(wantQuantityText, out wantQuantity) && int.TryParse(hasQuantityText, out hasQuantity))
                {
                    GiftRegistryItem item = DataAccessContextDeluxe.GiftRegistryItemRepository.GetOne(uxGrid.DataKeys[rowIndex].Value.ToString());

                    if (wantQuantity >= hasQuantity)
                    {
                        item.WantQuantity = wantQuantity;
                        DataAccessContextDeluxe.GiftRegistryItemRepository.Save(item);
                    }
                    else
                    {
                        productNameList.Add(item.ProductName);
                    }
                }
                else
                {
                    uxMessage.DisplayError("Quantity is invalid.");
                    return;
                }
            }
        }

        if (productNameList.Count > 0)
        {
            System.Text.StringBuilder errorMessage = new System.Text.StringBuilder();
            errorMessage.Append("Cannot update quantity. Want Quantity cannot be less than Has Quantity.<br/>");
            errorMessage.Append("Please correct the following product quantity:");
            errorMessage.Append("<ul>");
            for (int i = 0; i < productNameList.Count; i++)
            {
                errorMessage.Append("<li>");
                errorMessage.Append(productNameList[i].ToString());
                errorMessage.Append("</li>");
            }
            errorMessage.Append("</ul>");

            uxMessage.DisplayError(errorMessage.ToString());
        }
        else
        {
            uxMessage.DisplayMessage("Update quantity successfully.");
        }
    }
Beispiel #4
0
    private void AddGiftRegistryItemToCart(string giftRegistryItemID, int quantity)
    {
        ICartItem cartItem = GiftRegistryItem.AddGiftRegistryItem(StoreContext.ShoppingCart,
                                                                  StoreContext.Culture,
                                                                  giftRegistryItemID,
                                                                  quantity);

        StoreContext.CheckoutDetails.CartItemIDToGiftRegistryIDMap[cartItem.CartItemID] =
            giftRegistryItemID;
    }
Beispiel #5
0
    private void AddItemToGiftRegistryAndRedirect(string giftRegistryID)
    {
        GiftRegistryItem.ConvertToGiftRegistryItem(StoreContext.ShoppingCart,
                                                   StoreContext.Culture,
                                                   StoreContext.Currency,
                                                   giftRegistryID);

        StoreContext.ClearCheckoutSession();
        Session["GiftRegistryID"] = null;

        Response.Redirect("GiftRegistryItemList.aspx?GiftRegistryID=" + giftRegistryID);
    }
Beispiel #6
0
    private bool IsEnoughGiftRegistyWantQuantity(out string message)
    {
        CheckoutDetails checkout = StoreContext.CheckoutDetails;

        message = String.Empty;
        if (!String.IsNullOrEmpty(checkout.GiftRegistryID) && checkout.GiftRegistryID != "0")
        {
            int rowIndex;
            for (rowIndex = 0; rowIndex < uxGrid.Rows.Count; rowIndex++)
            {
                GridViewRow row = uxGrid.Rows[rowIndex];
                if (row.RowType == DataControlRowType.DataRow)
                {
                    string cartItemID         = uxGrid.DataKeys[rowIndex]["CartItemID"].ToString();
                    string giftRegistryItemID =
                        StoreContext.CheckoutDetails.CartItemIDToGiftRegistryIDMap[cartItemID];

                    GiftRegistryItem giftRegistryItem = DataAccessContextDeluxe.GiftRegistryItemRepository.GetOne(
                        giftRegistryItemID);

                    int wantQuantity = (int)(giftRegistryItem.WantQuantity - giftRegistryItem.HasQuantity);

                    string productName = ((Label)row.FindControl("uxNameLabel")).Text;
                    int    quantity    = ConvertUtilities.ToInt32(((TextBox)row.FindControl("uxQuantityText")).Text);

                    if (quantity > wantQuantity)
                    {
                        message += "<li>" + productName + "</li>";
                    }
                }
            }

            if (!String.IsNullOrEmpty(message))
            {
                message =
                    "<p class=\"ErrorHeader\">[$GiftRegistryError]</p>" +
                    "<ul class=\"ErrorBody\">" + message + "</ul>";

                return(false);
            }
            else
            {
                return(true);
            }
        }
        else
        {
            return(true);
        }
    }
    private bool IsEnoughGiftRegistyWantQuantity(out string message)
    {
        CheckoutDetails checkout = StoreContext.CheckoutDetails;

        message = String.Empty;
        if (!String.IsNullOrEmpty(checkout.GiftRegistryID) && checkout.GiftRegistryID != "0")
        {
            foreach (ICartItem item in StoreContext.ShoppingCart.GetCartItems())
            {
                string giftRegistryItemID = checkout.CartItemIDToGiftRegistryIDMap[item.CartItemID];

                GiftRegistryItem giftRegistryItem = DataAccessContextDeluxe.GiftRegistryItemRepository.GetOne(
                    giftRegistryItemID);

                int wantQuantity = (int)(giftRegistryItem.WantQuantity - giftRegistryItem.HasQuantity);

                if (item.Quantity > wantQuantity)
                {
                    message +=
                        "<li>"
                        + item.GetName(StoreContext.Culture, StoreContext.Currency)
                        + "</li>";
                }
            }

            if (!String.IsNullOrEmpty(message))
            {
                message =
                    "<p class=\"ErrorHeader\">[$GiftRegistryError]</p>" +
                    "<ul class=\"ErrorBody\">" + message + "</ul>";

                return(false);
            }
            else
            {
                return(true);
            }
        }
        else
        {
            return(true);
        }
    }
Beispiel #8
0
    public void ProcessRequest(HttpContext context)
    {
        context.Response.CacheControl = "private";
        context.Response.Expires      = 0;
        context.Response.AddHeader("pragma", "no-cache");

        var ThisCustomer = ((InterpriseSuiteEcommercePrincipal)context.User).ThisCustomer;

        ThisCustomer.RequireCustomerRecord();

        string ReturnURL = CommonLogic.QueryStringCanBeDangerousContent("ReturnURL");

        if (ReturnURL.IndexOf("<script>", StringComparison.InvariantCultureIgnoreCase) != -1)
        {
            throw new ArgumentException("SECURITY EXCEPTION");
        }

        //Anonymous users should not be allowed to used WishList, they must register first.
        if (ThisCustomer.IsNotRegistered)
        {
            string ErrMsg = string.Empty;

            if (CommonLogic.FormNativeInt("IsWishList") == 1 || CommonLogic.QueryStringUSInt("IsWishList") == 1)
            {
                ErrMsg = AppLogic.GetString("signin.aspx.19", ThisCustomer.SkinID, ThisCustomer.LocaleSetting);
                context.Response.Redirect("signin.aspx?ErrorMsg=" + ErrMsg + "&ReturnUrl=" + Security.UrlEncode(ReturnURL));
            }
        }

        string ShippingAddressID = CommonLogic.QueryStringCanBeDangerousContent("ShippingAddressID"); // only used for multi-ship

        if (ShippingAddressID.IsNullOrEmptyTrimmed())
        {
            ShippingAddressID = CommonLogic.FormCanBeDangerousContent("ShippingAddressID");
        }

        if (ShippingAddressID.IsNullOrEmptyTrimmed() && !ThisCustomer.PrimaryShippingAddressID.IsNullOrEmptyTrimmed())
        {
            ShippingAddressID = ThisCustomer.PrimaryShippingAddressID;
        }

        string ProductID = CommonLogic.QueryStringCanBeDangerousContent("ProductID");

        if (ProductID.IsNullOrEmptyTrimmed())
        {
            ProductID = CommonLogic.FormCanBeDangerousContent("ProductID");
        }

        string itemCode = CommonLogic.QueryStringCanBeDangerousContent("ItemCode");

        // check if the item being added is matrix group
        // look for the matrix item and use it as itemcode instead
        if (!string.IsNullOrEmpty(CommonLogic.FormCanBeDangerousContent("MatrixItem")))
        {
            itemCode = CommonLogic.FormCanBeDangerousContent("MatrixItem");
        }

        bool   itemExisting       = false;
        string defaultUnitMeasure = string.Empty;

        if (itemCode.IsNullOrEmptyTrimmed())
        {
            int itemCounter = 0;
            if (!ProductID.IsNullOrEmptyTrimmed() &&
                int.TryParse(ProductID, out itemCounter) &&
                itemCounter > 0)
            {
                using (var con = DB.NewSqlConnection())
                {
                    con.Open();
                    using (var reader = DB.GetRSFormat(con, "SELECT i.ItemCode, ium.UnitMeasureCode FROM InventoryItem i with (NOLOCK) INNER JOIN InventoryUnitMeasure ium with (NOLOCK) ON i.ItemCode = ium.ItemCode AND IsBase = 1 WHERE i.Counter = {0}", itemCounter))
                    {
                        itemExisting = reader.Read();

                        if (itemExisting)
                        {
                            itemCode           = DB.RSField(reader, "ItemCode");
                            defaultUnitMeasure = DB.RSField(reader, "UnitMeasureCode");
                        }
                    }
                }
            }
        }
        else
        {
            // verify we have a valid item code
            using (var con = DB.NewSqlConnection())
            {
                con.Open();
                using (var reader = DB.GetRSFormat(con, "SELECT i.ItemCode FROM InventoryItem i with (NOLOCK) WHERE i.ItemCode = {0}", DB.SQuote(itemCode)))
                {
                    itemExisting = reader.Read();

                    if (itemExisting)
                    {
                        itemCode = DB.RSField(reader, "ItemCode");
                    }
                }
            }
        }

        if (!itemExisting)
        {
            GoNextPage(context);
        }

        // get the unit measure code
        string unitMeasureCode = CommonLogic.QueryStringCanBeDangerousContent("UnitMeasureCode");

        if (unitMeasureCode.IsNullOrEmptyTrimmed())
        {
            unitMeasureCode = CommonLogic.FormCanBeDangerousContent("UnitMeasureCode");
        }

        if (unitMeasureCode.IsNullOrEmptyTrimmed())
        {
            unitMeasureCode = defaultUnitMeasure;
        }

        // check if the unit measure is default so that we won't have to check
        // if the unit measure specified is valid...
        if (false.Equals(unitMeasureCode.Equals(defaultUnitMeasure, StringComparison.InvariantCultureIgnoreCase)))
        {
            bool isValidUnitMeasureForThisItem = false;

            using (var con = DB.NewSqlConnection())
            {
                con.Open();
                using (var reader = DB.GetRSFormat(con, "SELECT UnitMeasureCode FROM InventoryUnitMeasure with (NOLOCK) WHERE ItemCode= {0} AND UnitMeasureCode = {1}", DB.SQuote(itemCode), DB.SQuote(unitMeasureCode)))
                {
                    isValidUnitMeasureForThisItem = reader.Read();

                    if (isValidUnitMeasureForThisItem)
                    {
                        // maybe mixed case specified, just set..
                        unitMeasureCode = DB.RSField(reader, "UnitMeasureCode");
                    }
                }
            }

            if (!isValidUnitMeasureForThisItem)
            {
                GoNextPage(context);
            }
        }
        decimal Quantity = CommonLogic.FormLocaleDecimal("Quantity", ThisCustomer.LocaleSetting);//CommonLogic.QueryStringUSDecimal("Quantity");

        if (Quantity == 0)
        {
            Quantity = CommonLogic.FormNativeDecimal("Quantity");
        }

        if (Quantity == 0)
        {
            Quantity = 1;
        }

        Quantity = CommonLogic.RoundQuantity(Quantity);

        // Now let's check the shipping address if valid if specified
        if (ShippingAddressID != ThisCustomer.PrimaryShippingAddressID)
        {
            if (ThisCustomer.IsRegistered)
            {
                bool shippingAddressIsValidForThisCustomer = false;

                using (var con = DB.NewSqlConnection())
                {
                    con.Open();
                    using (var reader = DB.GetRSFormat(con, "SELECT ShipToCode FROM CustomerShipTo with (NOLOCK) WHERE CustomerCode = {0} AND IsActive = 1 AND ShipToCode = {1}", DB.SQuote(ThisCustomer.CustomerCode), DB.SQuote(ShippingAddressID)))
                    {
                        shippingAddressIsValidForThisCustomer = reader.Read();

                        if (shippingAddressIsValidForThisCustomer)
                        {
                            // maybe mixed case, just set...
                            ShippingAddressID = DB.RSField(reader, "ShipToCode");
                        }
                    }
                }

                if (!shippingAddressIsValidForThisCustomer)
                {
                    GoNextPage(context);
                }
            }
            else
            {
                ShippingAddressID = ThisCustomer.PrimaryShippingAddressID;
            }
        }

        var CartType = CartTypeEnum.ShoppingCart;

        if (CommonLogic.FormNativeInt("IsWishList") == 1 || CommonLogic.QueryStringUSInt("IsWishList") == 1)
        {
            CartType = CartTypeEnum.WishCart;
        }

        var giftRegistryItemType = GiftRegistryItemType.vItem;

        if (CommonLogic.FormNativeInt("IsAddToGiftRegistry") == 1 || CommonLogic.QueryStringUSInt("IsAddToGiftRegistry") == 1)
        {
            CartType = CartTypeEnum.GiftRegistryCart;
        }

        if (CommonLogic.FormNativeInt("IsAddToGiftRegistryOption") == 1 || CommonLogic.QueryStringUSInt("IsAddToGiftRegistryOption") == 1)
        {
            CartType             = CartTypeEnum.GiftRegistryCart;
            giftRegistryItemType = GiftRegistryItemType.vOption;
        }

        ShoppingCart cart = null;
        bool         itemIsARegistryItem = false;

        if (!itemCode.IsNullOrEmptyTrimmed())
        {
            #region " --GIFTREGISTRY-- "

            if (CartType == CartTypeEnum.GiftRegistryCart)
            {
                Guid?registryID = CommonLogic.FormCanBeDangerousContent("giftregistryOptions").TryParseGuid();
                if (registryID.HasValue)
                {
                    var selectedGiftRegistry = ThisCustomer.GiftRegistries.FindFromDb(registryID.Value);
                    if (selectedGiftRegistry != null)
                    {
                        bool             isKit = AppLogic.IsAKit(itemCode);
                        KitComposition   preferredComposition = null;
                        GiftRegistryItem registryItem         = null;

                        if (isKit)
                        {
                            preferredComposition = KitComposition.FromForm(ThisCustomer, itemCode);
                            var registrytems = selectedGiftRegistry.GiftRegistryItems.Where(giftItem => giftItem.ItemCode == itemCode &&
                                                                                            giftItem.GiftRegistryItemType == giftRegistryItemType);
                            Guid?matchedRegitryItemCode = null;
                            //Do this routine to check if there are kit items
                            //matched the selected kit items from the cart in the registry items
                            foreach (var regitm in registrytems)
                            {
                                regitm.IsKit = true;
                                var compositionItems = regitm.GetKitItemsFromComposition();

                                if (compositionItems.Count() == 0)
                                {
                                    continue;
                                }

                                var arrItemCodes = compositionItems.Select(item => item.ItemCode)
                                                   .ToArray();
                                var preferredItemCodes = preferredComposition.Compositions.Select(kititem => kititem.ItemCode);
                                var lst = arrItemCodes.Except(preferredItemCodes);

                                //has match
                                if (lst.Count() == 0)
                                {
                                    matchedRegitryItemCode = regitm.RegistryItemCode;
                                    break;
                                }
                            }

                            if (matchedRegitryItemCode.HasValue)
                            {
                                registryItem = selectedGiftRegistry.GiftRegistryItems.FirstOrDefault(giftItem => giftItem.RegistryItemCode == matchedRegitryItemCode);
                            }
                        }

                        //if not kit item get the item as is
                        if (registryItem == null && !isKit)
                        {
                            registryItem = selectedGiftRegistry.GiftRegistryItems.FirstOrDefault(giftItem => giftItem.ItemCode == itemCode &&
                                                                                                 giftItem.GiftRegistryItemType == giftRegistryItemType);
                        }

                        if (registryItem != null)
                        {
                            registryItem.Quantity       += Quantity;
                            registryItem.UnitMeasureCode = unitMeasureCode;
                            selectedGiftRegistry.GiftRegistryItems.UpdateToDb(registryItem);
                        }
                        else
                        {
                            registryItem = new GiftRegistryItem()
                            {
                                GiftRegistryItemType = giftRegistryItemType,
                                RegistryItemCode     = Guid.NewGuid(),
                                ItemCode             = itemCode,
                                Quantity             = Quantity,
                                RegistryID           = registryID.Value,
                                UnitMeasureCode      = unitMeasureCode
                            };

                            selectedGiftRegistry.GiftRegistryItems.AddToDb(registryItem);
                        }

                        if (isKit && preferredComposition != null)
                        {
                            registryItem.ClearKitItemsFromComposition();
                            preferredComposition.AddToGiftRegistry(registryID.Value, registryItem.RegistryItemCode);
                        }

                        HttpContext.Current.Response.Redirect(string.Format("~/editgiftregistry.aspx?{0}={1}", DomainConstants.GIFTREGISTRYPARAMCHAR, registryID.Value));
                    }
                }

                GoNextPage(context);
            }

            #endregion

            CartRegistryParam registryCartParam = null;
            if (AppLogic.AppConfigBool("GiftRegistry.Enabled"))
            {
                registryCartParam = new CartRegistryParam()
                {
                    RegistryID       = CommonLogic.FormGuid("RegistryID"),
                    RegistryItemCode = CommonLogic.FormGuid("RegistryItemCode")
                };
            }

            if (registryCartParam != null && registryCartParam.RegistryID.HasValue && registryCartParam.RegistryItemCode.HasValue)
            {
                ShippingAddressID   = GiftRegistryDA.GetPrimaryShippingAddressCodeOfOwnerByRegistryID(registryCartParam.RegistryID.Value);
                itemIsARegistryItem = true;
            }

            cart = new ShoppingCart(null, 1, ThisCustomer, CartType, string.Empty, false, true, string.Empty);
            if (Quantity > 0)
            {
                if (AppLogic.IsAKit(itemCode))
                {
                    var preferredComposition = KitComposition.FromForm(ThisCustomer, CartType, itemCode);

                    if (preferredComposition == null)
                    {
                        int itemCounter = 0;
                        int.TryParse(ProductID, out itemCounter);
                        var kitData = KitItemData.GetKitComposition(ThisCustomer, itemCounter, itemCode);

                        var kitContents = new StringBuilder();
                        foreach (var kitGroup in kitData.Groups)
                        {
                            if (kitContents.Length > 0)
                            {
                                kitContents.Append(",");
                            }

                            var selectedItems   = new StringBuilder();
                            int kitGroupCounter = kitGroup.Id;

                            var selectedKitItems = kitGroup.Items.Where(i => i.IsSelected == true);

                            foreach (var item in selectedKitItems)
                            {
                                if (selectedItems.Length > 0)
                                {
                                    selectedItems.Append(",");
                                }

                                //note: since we are adding the kit counter and kit item counter in KitItemData.GetKitComposition (stored proc. EcommerceGetKitItems)
                                //as "kit item counter", we'll reverse the process in order to get the "real kit item counter"

                                int kitItemCounter = item.Id - itemCounter;
                                selectedItems.Append(kitGroupCounter.ToString() + DomainConstants.KITCOMPOSITION_DELIMITER + kitItemCounter.ToString());
                            }
                            kitContents.Append(selectedItems.ToString());
                        }
                        preferredComposition = KitComposition.FromComposition(kitContents.ToString(), ThisCustomer, CartType, itemCode);
                    }

                    preferredComposition.PricingType = CommonLogic.FormCanBeDangerousContent("KitPricingType");

                    if (CommonLogic.FormBool("IsEditKit") &&
                        !CommonLogic.IsStringNullOrEmpty(CommonLogic.FormCanBeDangerousContent("KitCartID")) &&
                        InterpriseHelper.IsValidGuid(CommonLogic.FormCanBeDangerousContent("KitCartID")))
                    {
                        Guid cartID = new Guid(CommonLogic.FormCanBeDangerousContent("KitCartID"));
                        preferredComposition.CartID = cartID;
                    }
                    cart.AddItem(ThisCustomer, ShippingAddressID, itemCode, int.Parse(ProductID), Quantity, unitMeasureCode, CartType, preferredComposition, registryCartParam);
                }
                else
                {
                    cart.AddItem(ThisCustomer, ShippingAddressID, itemCode, int.Parse(ProductID), Quantity, unitMeasureCode, CartType, null, registryCartParam);
                }
            }

            string RelatedProducts = CommonLogic.QueryStringCanBeDangerousContent("relatedproducts").Trim();
            string UpsellProducts  = CommonLogic.FormCanBeDangerousContent("UpsellProducts").Trim();
            string combined        = string.Concat(RelatedProducts, UpsellProducts);

            if (combined.Length != 0 && CartType == CartTypeEnum.ShoppingCart)
            {
                string[] arrUpsell = combined.Split(',');
                foreach (string s in arrUpsell)
                {
                    string PID = s.Trim();
                    if (PID.Length == 0)
                    {
                        continue;
                    }

                    int UpsellProductID;
                    try
                    {
                        UpsellProductID = Localization.ParseUSInt(PID);
                        if (UpsellProductID != 0)
                        {
                            string ItemCode        = InterpriseHelper.GetInventoryItemCode(UpsellProductID);
                            string itemUnitMeasure = string.Empty;

                            using (var con = DB.NewSqlConnection())
                            {
                                con.Open();
                                using (var reader = DB.GetRSFormat(con, "SELECT ium.UnitMeasureCode FROM InventoryItem i with (NOLOCK) INNER JOIN InventoryUnitMeasure ium with (NOLOCK) ON i.ItemCode = ium.ItemCode AND IsBase = 1 WHERE i.ItemCode = {0}", DB.SQuote(ItemCode)))
                                {
                                    if (reader.Read())
                                    {
                                        itemUnitMeasure = DB.RSField(reader, "UnitMeasureCode");
                                    }
                                }
                            }

                            cart.AddItem(ThisCustomer, ShippingAddressID, ItemCode, UpsellProductID, 1, itemUnitMeasure, CartType);
                        }
                    }
                    catch { }
                }
            }
        }

        GoNextPage(context, itemIsARegistryItem, CartType, ThisCustomer);
    }