public ActionResult Signup() { Customer cust = new Customer(); Settings settings = ViewBag.settings; Address billing = new Address(); Address shipping = new Address(); bool loginAfterRegistration = false; bool sameAsBilling = (Request.Form["same"] != null) ? true : false; if (settings.Get("CustomerLoginAfterRegistration") == "true") { loginAfterRegistration = true; } try { #region Object Instantiation // Build out our Customer object cust = new Customer { email = Request.Form["email"], fname = Request.Form["fname"], lname = Request.Form["lname"], phone = Request.Form["phone"], dateAdded = DateTime.UtcNow, receiveNewsletter = (Request.Form["receiveNewsletter"] != null) ? 1 : 0, receiveOffers = (Request.Form["receiveOffers"] != null) ? 1 : 0, isSuspended = 0, isValidated = 0, validator = Guid.NewGuid() }; // Build out our Billing object billing = new Address { first = Request.Form["bfirst"], last = Request.Form["blast"], street1 = Request.Form["bstreet1"], street2 = Request.Form["bstreet2"], city = Request.Form["bcity"], postal_code = Request.Form["bzip"], residential = (Request.Form["bresidential"] == null) ? false : true, active = true }; // Build out our Shipping object shipping = new Address { first = Request.Form["sfirst"], last = Request.Form["slast"], street1 = Request.Form["sstreet1"], street2 = Request.Form["sstreet2"], city = Request.Form["scity"], postal_code = Request.Form["szip"], residential = (Request.Form["sresidential"] == null) ? false : true, active = true }; #endregion cust.ValidatePasswords(Request.Form["password"], Request.Form["password2"]); cust.ValidateEmail(Request.Form["email"], Request.Form["email"]); #region Address state validation // Validate billing state try { billing.state = Convert.ToInt32(Request.Form["bstate"]); } catch (Exception) { throw new Exception("You must select a billing state/province."); } // Validate shipping state if (!sameAsBilling || !billing.Equals(shipping)) { try { shipping.state = Convert.ToInt32(Request.Form["sstate"]); } catch (Exception) { throw new Exception("You must select a shipping state/province."); } } #endregion string[] nullables = new string[] { "phone", "issuspended", "receivenewsletter", "receiveoffers", "isvalidated", "billingid", "shippingid", "Address", "Address1", "cart", "id", "orders" }; UDF.Sanitize(cust, nullables); cust.Save(); billing.Save(cust.ID); if (sameAsBilling || billing.Equals(shipping)) { shipping = billing; } else { shipping.Save(cust.ID); } cust.SaveAddresses(billing, shipping); cust.Address = billing; cust.Address1 = shipping; if (loginAfterRegistration) { return RedirectToAction("login", new { email = cust.email, password = Request.Form["password"], remember = 0 }); } else { TempData["error"] = "You're account has been successfully created. Please check your e-mail to confirm your account."; return RedirectToAction("Index"); } } catch (Exception e) { if (e.Message.ToLower().Contains("a potentially dangerous")) { throw new HttpException(403, "Forbidden"); } TempData["customer"] = cust; TempData["billing"] = billing; TempData["shipping"] = shipping; TempData["same"] = sameAsBilling; TempData["error"] = e.Message; return RedirectToAction("Register"); } }