using System; using System.Linq; using System.Web; using System.Web.Routing; using System.Web.UI; using Common; public partial class AdminEditCustomer : Page { public string CustomerId { get { return Page.RouteData.Values["CustomerId"].ToString(); } } protected void Page_Load(object sender, EventArgs e) { if (IsPostBack) return; PageHeading.InnerHtml = CustomerId.ToLower().Equals("new") ? "New Customer" : "Update Customer"; SaveButton.Text = CustomerId.ToLower().Equals("new") ? "Create" : "Update"; using (var db = new DataModel()) { BillingProfile.DataSource = db.BillingProfiles.Where(t => t.BillingProfileId > 0).ToList(); BillingProfile.DataTextField = "ProfileName"; BillingProfile.DataValueField = "BillingProfileId"; BillingProfile.DataBind(); int customerId; if (!int.TryParse(CustomerId, out customerId)) return; var customer = db.Customers.FirstOrDefault(c => c.CustomerId == customerId); if (customer == null) return; CustomerName.Text = customer.Name; ContactName.Text = customer.ContactName; EmailAddress.Text = customer.EmailAddress; AddressLine1.Text = customer.AddressLine1; AddressLine2.Text = customer.AddressLine2; City.Text = customer.AddressCity; PostCode.Text = customer.AddressPostCode; VATNumber.Text = customer.VATNumber; PastelReference.Text = customer.PastelCode; BillingProfile.Items.FindByValue(customer.BillingProfileId.ToString()).Selected = true; CustomerLoginsTable.DataSource = customer.CustomerLogins.OrderBy(c => c.EmailAddress).ToList(); CustomerLoginsTable.DataBind(); InventoryTable.DataSource = db.GetCustomerInventory(customerId).ToList(); InventoryTable.DataBind(); InventoryItemCategory.DataSource = db.InventoryItemTypeCategories.OrderBy(o => o.OrderPriority).ToList(); InventoryItemCategory.DataTextField = "Category"; InventoryItemCategory.DataValueField = "InventoryItemTypeCategoryId"; InventoryItemCategory.DataBind(); InventoryItemSize.DataSource = db.InventoryItemTypeSizes.OrderBy(o => o.OrderPriority).ToList(); InventoryItemSize.DataTextField = "Size"; InventoryItemSize.DataValueField = "InventoryItemTypeSizeId"; InventoryItemSize.DataBind(); } } protected void SaveButton_Click(object sender, EventArgs e) { using (var db = new DataModel()) { Trace.Warn("HttpContext.Current.User.Identity.Name", HttpContext.Current.User.Identity.Name); var operatorLogin = db.OperatorLogins.FirstOrDefault(f => f.Username == HttpContext.Current.User.Identity.Name); if (operatorLogin == null) return; int customerId; Customer customer; if (CustomerId.ToLower().Equals("new")) { customer = new Customer { Name = CustomerName.Text.Trim(), ContactName = ContactName.Text.Trim(), AddressLine1 = AddressLine1.Text.Trim(), AddressLine2 = AddressLine2.Text.Trim(), AddressCity = City.Text.Trim(), AddressPostCode = PostCode.Text.Trim(), BillingProfileId = int.Parse(BillingProfile.SelectedValue), OperatorLoginId = operatorLogin.OperatorLoginId, EmailAddress = EmailAddress.Text.Trim(), VATNumber = VATNumber.Text.Trim() }; db.Customers.Add(customer); db.SaveChanges(); Response.RedirectToRoute("admin-customer", new RouteValueDictionary { { "customerId", customer.CustomerId } }); return; } Trace.Warn("CustomerId", CustomerId); if (!int.TryParse(CustomerId, out customerId)) return; customer = db.Customers.FirstOrDefault(c => c.CustomerId == customerId); if (customer == null) return; Trace.Warn("BillingProfileId", int.Parse(BillingProfile.SelectedValue).ToString()); customer.Name = CustomerName.Text.Trim(); customer.ContactName = ContactName.Text.Trim(); customer.AddressLine1 = AddressLine1.Text.Trim(); customer.AddressLine2 = AddressLine2.Text.Trim(); customer.AddressCity = City.Text.Trim(); customer.AddressPostCode = PostCode.Text.Trim(); customer.BillingProfileId = int.Parse(BillingProfile.SelectedValue); customer.VATNumber = VATNumber.Text.Trim(); customer.EmailAddress = EmailAddress.Text.Trim(); customer.PastelCode = PastelReference.Text.Trim(); db.SaveChanges(); } } }