예제 #1
0
        protected void tbx_qty_TextChanged(object sender, EventArgs e)
        {
            TextBox          textBox1 = (TextBox)sender;
            ListViewDataItem item     = (ListViewDataItem)textBox1.NamingContainer;
            TextBox          tb       = (TextBox)item.FindControl("tbx_qty"); //get the textbox in the proper listview item

            if (Convert.ToInt32(tb.Text) <= 0 || tb.Text == string.Empty || string.IsNullOrEmpty(tb.Text) || string.IsNullOrWhiteSpace(tb.Text) || (tb.Text == DBNull.Value.ToString(CultureInfo.InvariantCulture)))
            {
                tb.Text = "1";
            }
            else if (Convert.ToInt32(tb.Text) > 99)
            {
                tb.Text = "99";
            }

            Label lblSku   = (Label)item.FindControl("lbl_sku");
            Label lblPrice = (Label)item.FindControl("lbl_price");

            //int t_itemStock = DBOps.GetProductQuantity(lblSku.Text);
            int t_itemStock        = Convert.ToInt32(Session[lblSku.Text]);
            int t_cartQuantity     = Convert.ToInt32(tb.Text);
            int t_currCartQuantity = DBOps.GetItemQuantity(_userCartId, lblSku.Text);

            #region Old validation code
            //int t_sessionQuant = 0;

            //if (Session[lblSku.Text] != null)
            //{
            //    t_sessionQuant = Convert.ToInt32(Session[lblSku.Text]);
            //}
            ////else
            ////{
            ////    Session[lblSku.Text] = t_currCartQuantity;
            ////}
            #endregion


            try
            {
                _itemSKU = lblSku.Text;

                /// user adds a specified amount of the item to the cart
                if (t_currCartQuantity - t_cartQuantity < 0)
                {
                    if (t_itemStock >= t_cartQuantity /* || t_sessionQuant >= t_cartQuantity*/)
                    {
                        _cart.UpdateItem(lblSku.Text, Decimal.Parse(lblPrice.Text, NumberStyles.Currency), Convert.ToInt32(tb.Text));
                        cartDatasource.Update();

                        _itemQuant = DBOps.GetProductQuantity(_itemSKU) - Math.Abs(t_currCartQuantity - t_cartQuantity);
                        ProductsDataSource.Update();
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(this, GetType(), "notif",
                                                            string.Format("alert('ITEM NOT ADDED. The specified quantity of {0} is more than the available stock of the item.')",
                                                                          t_cartQuantity), true);
                    }
                }
                else
                {
                    _cart.UpdateItem(lblSku.Text, Decimal.Parse(lblPrice.Text, NumberStyles.Currency), Convert.ToInt32(tb.Text));
                    cartDatasource.Update();
                    _itemQuant = DBOps.GetProductQuantity(_itemSKU) + Math.Abs(t_currCartQuantity - t_cartQuantity);
                    ProductsDataSource.Update();
                }
            }
            catch (Exception)
            {
                // ignored
            }

            lvw_items.DataSource  = DBOps.BuildUserCart(_userCartId);
            lvw_totals.DataSource = DBOps.BuildUserCartTotals(_userCartId);
            lvw_items.DataBind();
            lvw_totals.DataBind();

            SiteMaster master = Page.Master as SiteMaster;
            master.UpdateTotalCounters();
        }