using System; using System.Data; using System.Collections; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using CMS.CMSHelper; using CMS.Ecommerce; using CMS.GlobalHelper; using CMS.SettingsProvider; using CMS.UIControls; public partial class CMSModules_Ecommerce_Controls_MyDetails_MyAddresses : CMSAdminControl { private int mCustomerId = 0; /// /// Customer ID. /// public int CustomerId { get { return mCustomerId; } set { mCustomerId = value; } } /// /// Address ID. /// private int AddressId { get { return ValidationHelper.GetInteger(ViewState["addressid"], 0); } set { ViewState["addressid"] = value; } } /// /// If true, control does not process the data. /// public override bool StopProcessing { get { return ValidationHelper.GetBoolean(ViewState["StopProcessing"], false); } set { ViewState["StopProcessing"] = value; ucCountrySelector.StopProcessing = value; } } /// /// Page load. /// protected void Page_Load(object sender, EventArgs e) { if (!StopProcessing) { if (CMSContext.CurrentUser.IsAuthenticated()) { InitControls(); } else { // Hide if user is not authenticated Visible = false; } } } /// /// Control initialization. /// protected void InitControls() { // LIST gridAddresses.IsLiveSite = IsLiveSite; gridAddresses.OnExternalDataBound += gridAddresses_OnExternalDataBound; gridAddresses.WhereCondition = "AddressCustomerID = " + CustomerId; // Set pager links text on live site if (IsLiveSite) { gridAddresses.Pager.FirstPageText = "<<"; gridAddresses.Pager.LastPageText = ">>"; gridAddresses.Pager.PreviousPageText = "<"; gridAddresses.Pager.NextPageText = ">"; gridAddresses.Pager.PreviousGroupText = "..."; gridAddresses.Pager.NextGroupText = "..."; } btnNew.Text = GetString("Customer_Edit_Address_List.NewItemCaption"); btnHiddenEdit.Attributes.CssStyle.Add("display", "none"); btnHiddenDelete.Attributes.CssStyle.Add("display", "none"); btnHiddenEdit.Click += btnHiddenEdit_Click; btnHiddenDelete.Click += btnHiddenDelete_Click; // EDIT rqvCity.ErrorMessage = GetString("Customer_Edit_Address_Edit.rqvCity"); rqvLine.ErrorMessage = GetString("Customer_Edit_Address_Edit.rqvLine"); rqvZipCode.ErrorMessage = GetString("Customer_Edit_Address_Edit.rqvZipCode"); rqvPersonalName.ErrorMessage = GetString("Customer_Edit_Address_Edit.rqvPersonalName"); // Label initialization lblAddressZip.Text = GetString("Customer_Edit_Address_Edit.AddressZipLabel"); lblAddressDeliveryPhone.Text = GetString("Customer_Edit_Address_Edit.AddressDeliveryPhoneLabel"); lblAddressCountry.Text = GetString("Customer_Edit_Address_Edit.AddressCountryIDLabel"); lblAddressLine1.Text = GetString("Customer_Edit_Address_Edit.AddressLine1Label"); lblAddressCity.Text = GetString("Customer_Edit_Address_Edit.AddressCityLabel"); lblPersonalName.Text = GetString("Customer_Edit_Address_Edit.lblPersonalName"); btnOk.Text = GetString("General.OK"); btnList.Text = GetString("Customer_Edit_Address_Edit.ItemListLink"); ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "MyAddressesSetID", ScriptHelper.GetScript( "function setId(id) { \n" + " var hidden = document.getElementById('" + hdnID.ClientID + "'); \n" + " if (hidden != null) { \n" + " hidden.value = id; \n" + " } \n" + "}\n")); } protected void btnHiddenDelete_Click(object sender, EventArgs e) { // Get AddressId from the row AddressId = ValidationHelper.GetInteger(hdnID.Value, 0); AddressInfo ai = AddressInfoProvider.GetAddressInfo(AddressId); if ((ai != null) && (ai.AddressCustomerID == CustomerId)) { // Check for the address dependences if (AddressInfoProvider.CheckDependencies(AddressId)) { lblError.Visible = true; lblError.Text = GetString("Ecommerce.DeleteDisabled"); return; } // Delete AddressInfo object from database AddressInfoProvider.DeleteAddressInfo(AddressId); gridAddresses.ReBind(); } } protected void btnHiddenEdit_Click(object sender, EventArgs e) { // Get AddressId from the row AddressId = ValidationHelper.GetInteger(hdnID.Value, 0); AddressInfo ai = AddressInfoProvider.GetAddressInfo(AddressId); if ((ai != null) && (ai.AddressCustomerID == CustomerId)) { plhList.Visible = false; plhEdit.Visible = true; LoadData(ai); } } protected object gridAddresses_OnExternalDataBound(object sender, string sourceName, object parameter) { if (sourceName.ToLowerCSafe() == "actions") { string edit = "" + GetString("general.edit") + ""; string delete = "" + GetString("general.delete") + ""; return edit + " " + delete; } return parameter; } /// /// On btnNew click, go to empty form to create new address. /// protected void btnNew_OnClick(object sender, EventArgs e) { plhList.Visible = false; plhEdit.Visible = true; AddressId = 0; InitData(); } /// /// New address form initialization. /// protected void InitData() { lblAddress.Text = "> " + GetString("Customer_Edit_Address_Edit.NewItemCaption"); // Fill default values CustomerInfo ci = CustomerInfoProvider.GetCustomerInfo(mCustomerId); if (ci != null) { txtAddressDeliveryPhone.Text = ci.CustomerPhone; txtPersonalName.Text = ci.CustomerFirstName + " " + ci.CustomerLastName; txtAddressZip.Text = ""; txtAddressLine1.Text = ""; txtAddressLine2.Text = ""; txtAddressCity.Text = ""; ucCountrySelector.CountryID = ci.CustomerCountryID; ucCountrySelector.StateID = ci.CustomerStateID; } } /// /// Load address data into editing form. /// /// AddressInfo object protected void LoadData(AddressInfo addressObj) { lblAddress.Text = "> " + HTMLHelper.HTMLEncode(addressObj.AddressName); txtAddressZip.Text = addressObj.AddressZip; txtAddressDeliveryPhone.Text = addressObj.AddressPhone; txtPersonalName.Text = addressObj.AddressPersonalName; txtAddressLine1.Text = addressObj.AddressLine1; txtAddressLine2.Text = addressObj.AddressLine2; txtAddressCity.Text = addressObj.AddressCity; ucCountrySelector.CountryID = addressObj.AddressCountryID; ucCountrySelector.StateID = addressObj.AddressStateID; ucCountrySelector.ReloadData(true); } /// /// On btnList click, return to address list. /// protected void btnList_OnClick(object sender, EventArgs e) { plhList.Visible = true; plhEdit.Visible = false; } /// /// On btnOK click, save edited or new created address. /// protected void btnOK_OnClick(object sender, EventArgs e) { if (mCustomerId != 0) { // Check field emptiness string errorMessage = new Validator().NotEmpty(txtAddressLine1.Text, "Customer_Edit_Address_Edit.rqvLine").NotEmpty(txtAddressCity.Text, "Customer_Edit_Address_Edit.rqvCity").NotEmpty(txtAddressZip.Text, "Customer_Edit_Address_Edit.rqvZipCode").NotEmpty(txtPersonalName.Text, "Customer_Edit_Address_Edit.rqvPersonalName").Result; // Check country presence if ((errorMessage == "") && (ucCountrySelector.CountryID <= 0)) { errorMessage = GetString("countryselector.selectedcountryerr"); } if (errorMessage == "") { AddressInfo ai = null; // Create new addressinfo or get the existing one if (AddressId == 0) { ai = new AddressInfo(); ai.AddressEnabled = true; ai.AddressIsBilling = true; ai.AddressIsShipping = true; ai.AddressCustomerID = mCustomerId; } else { ai = AddressInfoProvider.GetAddressInfo(AddressId); } ai.AddressPersonalName = txtPersonalName.Text; ai.AddressLine1 = txtAddressLine1.Text; ai.AddressLine2 = txtAddressLine2.Text; ai.AddressCity = txtAddressCity.Text; ai.AddressZip = txtAddressZip.Text; ai.AddressCountryID = ucCountrySelector.CountryID; ai.AddressStateID = ucCountrySelector.StateID; ai.AddressPhone = txtAddressDeliveryPhone.Text; ai.AddressName = AddressInfoProvider.GetAddressName(ai); // Save addressinfo AddressInfoProvider.SetAddressInfo(ai); AddressId = ai.AddressID; lblInfo.Visible = true; lblInfo.Text = GetString("General.ChangesSaved"); lblAddress.Text = "> " + HTMLHelper.HTMLEncode(ai.AddressName); } else { lblError.Visible = true; lblError.Text = errorMessage; } } } /// /// Overridden SetValue - because of MyAccount webpart. /// /// Name of the property to set /// Value to set public override void SetValue(string propertyName, object value) { base.SetValue(propertyName, value); switch (propertyName.ToLowerCSafe()) { case "customerid": CustomerId = ValidationHelper.GetInteger(value, 0); break; } } }