private void PerformPageAccessLogic() { // ----------------------------------------------------------------------------------------------- // NOTE ON PAGE LOAD LOGIC: // We are checking here for required elements to allowing the customer to stay on this page. // Many of these checks may be redundant, and they DO add a bit of overhead in terms of db calls, but ANYTHING really // could have changed since the customer was on the last page. Remember, the web is completely stateless. Assume this // page was executed by ANYONE at ANYTIME (even someone trying to break the cart). // It could have been yesterday, or 1 second ago, and other customers could have purchased limitied inventory products, // coupons may no longer be valid, etc, etc, etc... // ----------------------------------------------------------------------------------------------- if (ThisCustomer.IsCreditOnHold) { Response.Redirect("shoppingcart.aspx"); } if (AppLogic.AppConfigBool("RequireOver13Checked") && !ThisCustomer.IsOver13) { Response.Redirect("shoppingcart.aspx?errormsg=" + AppLogic.GetString("checkout.over13required", ThisCustomer.SkinID, ThisCustomer.LocaleSetting, true).ToUrlEncode()); } if (ThisCustomer.IsNotRegistered && !AppLogic.AppConfigBool("PasswordIsOptionalDuringCheckout")) { Response.Redirect("createaccount.aspx?checkout=true"); } if ((ThisCustomer.PrimaryBillingAddress == null || ThisCustomer.PrimaryShippingAddress == null) && (ThisCustomer.PrimaryBillingAddressID.IsNullOrEmptyTrimmed() || ThisCustomer.PrimaryShippingAddressID.IsNullOrEmptyTrimmed())) { Response.Redirect("shoppingcart.aspx?resetlinkback=1&errormsg=" + AppLogic.GetString("checkoutpayment.aspx.1", SkinID, ThisCustomer.LocaleSetting, true).ToUrlEncode()); } SectionTitle = AppLogic.GetString("checkoutshippingmult.aspx.1", SkinID, ThisCustomer.LocaleSetting, true); if (_cart.IsEmpty()) { Response.Redirect("shoppingcart.aspx?resetlinkback=1"); } if (_cart.InventoryTrimmed) { Response.Redirect("shoppingcart.aspx?resetlinkback=1&errormsg=" + AppLogic.GetString("shoppingcart.aspx.1", SkinID, ThisCustomer.LocaleSetting, true).ToUrlEncode()); } if (_cart.HasRegistryItemButParentRegistryIsRemoved() || _cart.HasRegistryItemsRemovedFromRegistry()) { _cart.RemoveRegistryItemsHasDeletedRegistry(); _cart.RemoveRegistryItemsHasBeenDeletedInRegistry(); Response.Redirect("shoppingcart.aspx?resetlinkback=1&errormsg=" + AppLogic.GetString("editgiftregistry.error.18", SkinID, ThisCustomer.LocaleSetting, true).ToUrlEncode()); } if (_cart.HasRegistryItemsAndOneOrMoreItemsHasZeroInNeed()) { Response.Redirect("shoppingcart.aspx?resetlinkback=1&errormsg=" + AppLogic.GetString("editgiftregistry.error.15", SkinID, ThisCustomer.LocaleSetting, true).ToUrlEncode()); } if (_cart.HasRegistryItemsAndOneOrMoreItemsExceedsToTheInNeedQuantity()) { Response.Redirect("shoppingcart.aspx?resetlinkback=1&errormsg=" + AppLogic.GetString("editgiftregistry.error.14", SkinID, ThisCustomer.LocaleSetting, true).ToUrlEncode()); } string couponCode = string.Empty; string couponErrorMessage = string.Empty; if (_cart.HasCoupon(ref couponCode) && !_cart.IsCouponValid(ThisCustomer, couponCode, ref couponErrorMessage)) { Response.Redirect("shoppingcart.aspx?resetlinkback=1&discountvalid=false"); } if (!_cart.MeetsMinimumOrderAmount(AppLogic.AppConfigUSDecimal("CartMinOrderAmount"))) { Response.Redirect("shoppingcart.aspx?resetlinkback=1"); } if (!_cart.MeetsMinimumOrderQuantity(AppLogic.AppConfigUSInt("MinCartItemsBeforeCheckout"))) { Response.Redirect("shoppingcart.aspx?resetlinkback=1"); } if ((_cart.IsNoShippingRequired() || !Shipping.MultiShipEnabled() || _cart.NumItems() == 1 || _cart.NumItems() > AppLogic.MultiShipMaxNumItemsAllowed()) && !_cart.HasRegistryItems()) { // not allowed then: Response.Redirect("shoppingcart.aspx?resetlinkback=1&errormsg=" + Server.UrlEncode(AppLogic.GetString("checkoutshippingmult.aspx.3", SkinID, ThisCustomer.LocaleSetting, true))); } if (ThisCustomer.PrimaryShippingAddress == null || CommonLogic.IsStringNullOrEmpty(ThisCustomer.PrimaryShippingAddress.AddressID)) { // not allowed here anymore! Response.Redirect("shoppingcart.aspx?errormsg=" + Server.UrlEncode(AppLogic.GetString("checkoutshippingmult.aspx.2", SkinID, ThisCustomer.LocaleSetting, true))); } }
protected void Page_Load(object sender, System.EventArgs e) { Response.CacheControl = "private"; Response.Expires = 0; Response.AddHeader("pragma", "no-cache"); if (AppLogic.AppConfigBool("RequireOver13Checked") && !ThisCustomer.IsOver13) { Response.Redirect("shoppingcart.aspx?errormsg=" + AppLogic.GetString("checkout.over13required", ThisCustomer.SkinID, ThisCustomer.LocaleSetting).ToUrlEncode()); } if (ThisCustomer.IsCreditOnHold) { Response.Redirect("shoppingcart.aspx"); } RequireSecurePage(); // ----------------------------------------------------------------------------------------------- // NOTE ON PAGE LOAD LOGIC: // We are checking here for required elements to allowing the customer to stay on this page. // Many of these checks may be redundant, and they DO add a bit of overhead in terms of db calls, but ANYTHING really // could have changed since the customer was on the last page. Remember, the web is completely stateless. Assume this // page was executed by ANYONE at ANYTIME (even someone trying to break the cart). // It could have been yesterday, or 1 second ago, and other customers could have purchased limitied inventory products, // coupons may no longer be valid, etc, etc, etc... // ----------------------------------------------------------------------------------------------- ThisCustomer.RequireCustomerRecord(); if (ThisCustomer.IsNotRegistered && !AppLogic.AppConfigBool("PasswordIsOptionalDuringCheckout") && !AppLogic.AppConfigBool("Checkout.UseOnePageCheckout")) { Response.Redirect("createaccount.aspx?checkout=true"); } if (ThisCustomer.IsRegistered && (ThisCustomer.PrimaryBillingAddressID == String.Empty || ThisCustomer.PrimaryShippingAddressID == String.Empty)) { Response.Redirect("shoppingcart.aspx?resetlinkback=1&errormsg=" + AppLogic.GetString("checkoutpayment.aspx.1", SkinID, ThisCustomer.LocaleSetting).ToUrlEncode()); } SectionTitle = AppLogic.GetString("checkoutreview.aspx.1", SkinID, ThisCustomer.LocaleSetting); cart = new InterpriseShoppingCart(base.EntityHelpers, SkinID, ThisCustomer, CartTypeEnum.ShoppingCart, String.Empty, false, true); if (cart.IsEmpty()) { Response.Redirect("shoppingcart.aspx?resetlinkback=1"); } if (cart.InventoryTrimmed) { Response.Redirect("shoppingcart.aspx?resetlinkback=1&errormsg=" + AppLogic.GetString("shoppingcart.aspx.1", SkinID, ThisCustomer.LocaleSetting).ToUrlEncode()); } string couponCode = string.Empty; string couponErrorMessage = string.Empty; bool hasCoupon = cart.HasCoupon(ref couponCode); if (hasCoupon && cart.IsCouponValid(ThisCustomer, couponCode, ref couponErrorMessage)) { panelCoupon.Visible = true; litCouponEntered.Text = couponCode; } else { panelCoupon.Visible = false; if (!couponErrorMessage.IsNullOrEmptyTrimmed()) { Response.Redirect("shoppingcart.aspx?resetlinkback=1&discountvalid=false"); } } if (!cart.MeetsMinimumOrderAmount(AppLogic.AppConfigUSDecimal("CartMinOrderAmount"))) { Response.Redirect("shoppingcart.aspx?resetlinkback=1"); } if (!cart.MeetsMinimumOrderQuantity(AppLogic.AppConfigUSInt("MinCartItemsBeforeCheckout"))) { Response.Redirect("shoppingcart.aspx?resetlinkback=1"); } if (cart.HasRegistryItemButParentRegistryIsRemoved() || cart.HasRegistryItemsRemovedFromRegistry()) { cart.RemoveRegistryItemsHasDeletedRegistry(); cart.RemoveRegistryItemsHasBeenDeletedInRegistry(); Response.Redirect("shoppingcart.aspx?resetlinkback=1&errormsg=" + AppLogic.GetString("editgiftregistry.error.18", SkinID, ThisCustomer.LocaleSetting).ToUrlEncode()); } if (cart.HasRegistryItemsAndOneOrMoreItemsHasZeroInNeed()) { Response.Redirect("shoppingcart.aspx?resetlinkback=1&errormsg=" + AppLogic.GetString("editgiftregistry.error.15", SkinID, ThisCustomer.LocaleSetting).ToUrlEncode()); } if (cart.HasRegistryItemsAndOneOrMoreItemsExceedsToTheInNeedQuantity()) { Response.Redirect("shoppingcart.aspx?resetlinkback=1&errormsg=" + AppLogic.GetString("editgiftregistry.error.14", SkinID, ThisCustomer.LocaleSetting).ToUrlEncode()); } if (!IsPostBack) { InitializePageContent(); } }