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;
}
}
}