using System; using System.Text.RegularExpressions; using System.Web.UI; using System.Web.UI.WebControls; using ECOEarth.Web.Domain; namespace ECOEarth.Web { public partial class Basket : System.Web.UI.Page { private OrderBasket basket = null; protected OrderBasket OrderBasket { get { return basket; } } protected void Page_Load(object sender, EventArgs e) { basket = Session["OrderBasket"] as OrderBasket; TopDivHandler.Position = (TopDivHandler.Position == "0 0px") ? "0 -140px" : "0 -140px"; } protected void BindBasketRepeater() { BasketRepeater.DataSource = basket.OrderItems; BasketRepeater.DataBind(); } public void RemoveItemButton_Click(object obj, ImageClickEventArgs e) { int orderItemIndex = Convert.ToInt32(((ImageButton) obj).CommandArgument); basket.OrderItems.RemoveAt(orderItemIndex); } public void UpdateQuantity_Click(object obj, EventArgs e) { int orderItemIndex = Convert.ToInt32(((Button)obj).CommandArgument); TextBox quantityTextbox = BasketRepeater.Items[orderItemIndex].FindControl("Quantity") as TextBox; OrderItem orderItem = OrderBasket.OrderItems[orderItemIndex]; string quantityInput = quantityTextbox.Text.Trim(); if(!Regex.IsMatch(quantityInput, @"^\d{1,5}$")) return; int quantity = Convert.ToInt32(quantityInput); if (quantity > 0) { orderItem.ChangeQuantity(quantity); } else { basket.OrderItems.RemoveAt(orderItemIndex); } } protected override void OnPreRender(EventArgs e) { BindBasketRepeater(); if (basket.OrderItems.Count == 0) { noItemsDiv.Visible = true; basketProductsDiv.Visible = false; } else { noItemsDiv.Visible = false; basketProductsDiv.Visible = true; } Session["OrderBasket"] = this.OrderBasket; base.OnPreRender(e); } #region Page Exposed Properties public string TotalPrice { get { return (OrderBasket.TotalProductPrice + OrderBasket.TotalShippingPrice + OrderBasket.TotalVATPrice).ToString("C"); } } public string TotalProductPrice { get { return OrderBasket.TotalProductPrice.ToString("C"); } } public string TotalShippingPrice { get { return OrderBasket.TotalShippingPrice.ToString("C"); } } public string TotalVATPrice { get { return OrderBasket.TotalVATPrice.ToString("C"); } } #endregion protected void NextButton_Click(object sender, EventArgs e) { Response.Redirect("Checkout.aspx"); } protected void ShippingTo_Changed(object sender, EventArgs e) { OrderBasket.ChangeDestination((Destination)(Enum.Parse(typeof (Destination), ShippingTo.SelectedValue))); } protected override void OnPreRenderComplete(EventArgs e) { Session["OrderBasket"] = OrderBasket; base.OnPreRenderComplete(e); } } }