using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class Controls_Selectors_SingleItem : SelectorControl { // variables to be displayed public string ProductName; public string Description; public string Price; private int ItemID { get { return (ViewState["ItemID"] == null ? 0 : (int)ViewState["ItemID"]); } set { ViewState["ItemID"] = value; } } private int MinimumQuantity { get { return (ViewState["MinimumQuantity"] == null ? 1 : (int)ViewState["MinimumQuantity"]); } set { ViewState["MinimumQuantity"] = value; } } private bool ignoreInventory { get { return Configuration.Get("IgnoreInventory") == "Yes" ? true : false; } } public override void BindData() { // bind image view ImageView1.SelectorID = SelectorData.SelectorID; ImageView1.BindData(); // bind customizations ccCustomizations.SelectorID = SelectorData.SelectorID; ccCustomizations.BindData(); // bind related products RelatedProducts1.SelectorID = SelectorData.SelectorID; RelatedProducts1.BindData(); litProductName.Text = SelectorData.Name; if (SelectorData.SKU.Length > 0) litSKU.Text = SelectorData.SKU; ProductName = SelectorData.Name; Description = SelectorData.Description; DataTable dt = Database.Items_GetBySelectorIDForDetailPage(SelectorData.SelectorID); if (dt.Rows.Count == 1) { DataRow dr = dt.Rows[0]; ItemID = (int)dr["ItemID"]; Price = String.Format("{0:c}", (decimal)dr["Price"]); // bind volume pricing table, if there is one if (dr["VolumePricingTableID"] != DBNull.Value) { DataTable dtVol = Database.VolumePricingTableItem_GetByItemID(ItemID); if (dtVol.Rows.Count > 0) MinimumQuantity = Math.Max(1, (int)dtVol.Rows[0]["Quantity"]); VolumePricing1.DataSource = dtVol; VolumePricing1.BindData(); VolumePricing1.Visible = true; } else { litPrice.Text = Price; VolumePricing1.Visible = false; } if (!ignoreInventory) { if ((int)dr["Inventory"] < -1 || (int)dr["Inventory"] == 0) { btnBuy.Visible = false; litOutOfStock.Text = "Out of Stock"; } } txtQuantity.Text = MinimumQuantity.ToString(); } else throw new Exception("Product page not set up correctly - 'SingleItem' pages may only have a single member item."); } protected void btnBuy_Click(object sender, ImageClickEventArgs e) { int Quantity = Int32.Parse(txtQuantity.Text); int Max = Int32.Parse(Database.Items_Get(ItemID)["Inventory"].ToString()); // we need to check items in the cart with this ItemID foreach(ShoppingCartItem sci2 in ShoppingCart) { if(sci2.ItemID == ItemID && Max != -1) Max -= sci2.Quantity; } if (ignoreInventory) { string CustomizationText = ccCustomizations.GetCustomizationText(); decimal CustomizationCost = ccCustomizations.GetCustomizationCost(); AddItemToCart(ItemID, Quantity, CustomizationText, CustomizationCost); Response.Redirect("~/Cart.aspx"); } else { if (Max == 0) { Page.ClientScript.RegisterStartupScript(typeof(string), "error", "alert('You have already added all available units to your cart.');", true); } else if (Quantity > Max && Max != -1) { Page.ClientScript.RegisterStartupScript(typeof(string), "error", "alert('You can only add " + Max.ToString() + " unit(s) to your cart. Please decrease your quantity this amount or less.');", true); } else if (Quantity >= MinimumQuantity) { string CustomizationText = ccCustomizations.GetCustomizationText(); decimal CustomizationCost = ccCustomizations.GetCustomizationCost(); AddItemToCart(ItemID, Quantity, CustomizationText, CustomizationCost); Response.Redirect("~/Cart.aspx"); } else { Page.ClientScript.RegisterStartupScript(typeof(string), "error", "alert('The minimum order for this item is " + MinimumQuantity.ToString() + " unit(s). Please increase your quantity to at least this amount.');", true); } } } }