HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/RMourik/bassol.nl/CMS/CMSModules/Ecommerce/Controls/MyDetails/MyDetails.ascx.cs
using System;
using System.Web.UI.WebControls;

using CMS.Ecommerce;
using CMS.ExtendedControls;
using CMS.Helpers;
using CMS.Base;
using CMS.SiteProvider;
using CMS.Membership;
using CMS.UIControls;
using CMS.DataEngine;

public partial class CMSModules_Ecommerce_Controls_MyDetails_MyDetails : CMSAdminControl
{
    #region "Properties"

    /// <summary>
    /// Customer info object.
    /// </summary>
    public CustomerInfo Customer
    {
        get
        {
            return mCustomer;
        }
        set
        {
            mCustomer = value;
        }
    }


    /// <summary>
    /// If true, control does not process the data.
    /// </summary>
    public override bool StopProcessing
    {
        get
        {
            return ValidationHelper.GetBoolean(ViewState["StopProcessing"], false);
        }
        set
        {
            ViewState["StopProcessing"] = value;
            drpPayment.StopProcessing = value;
            drpShipping.StopProcessing = value;
        }
    }


    public override MessagesPlaceHolder MessagesPlaceHolder
    {
        get
        {
            return plcMessages;
        }
    }

    /// <summary>
    /// Indicates, if Business radio button option was selected.
    /// </summary>
    private bool IsBusiness
    {
        get
        {
            return (radAccType.SelectedValue == BUSINESS);
        }
    }

    #endregion


    #region "Delegates & Events"

    /// <summary>
    /// Inform on new customer creation.
    /// </summary>
    public delegate void CustomerCreated();

    /// <summary>
    /// Fired when new customer is created.
    /// </summary>
    public event CustomerCreated OnCustomerCrated;

    #endregion


    #region "Variables & Constants"

    private CustomerInfo mCustomer;

    private const string BUSINESS = "Business";
    private const string PERSONAL = "Personal";

    #endregion


    #region "Page events"

    /// <summary>
    /// On Init page event.
    /// </summary>
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        radAccType.Items.Add(new ListItem(GetString("com.customer.personalaccount"), PERSONAL));
        radAccType.Items.Add(new ListItem(GetString("com.customer.businessaccount"), BUSINESS));
    }

    /// <summary>
    /// Page load.
    /// </summary>
    protected void Page_Load(object sender, EventArgs e)
    {
        // Preselect radio button on first load
        if (!RequestHelper.IsPostBack() && (Customer != null) && Customer.CustomerHasCompanyInfo)
        {
            radAccType.SelectedValue = BUSINESS;
        }

        if (StopProcessing)
        {
            return;
        }

        // Hide if user is not authenticated, setting up form data are not required
        if (!AuthenticationHelper.IsAuthenticated())
        {
            Visible = false;
            return;
        }

        btnOk.Text = GetString("General.OK");
 
        // WAI validation
        lblCustomerPreferredCurrency.AssociatedControlClientID = selectCurrency.InputClientID;
        lblCustomerPreferredShippingOption.AssociatedControlClientID = drpShipping.InputClientID;
        lblCustomerPrefferedPaymentOption.AssociatedControlClientID = drpPayment.InputClientID;

        // Displays/hides company info region
        plcCompanyInfo.Visible = IsBusiness;
        lblTaxRegistrationID.Text = GetString("Customers_Edit.lblTaxRegistrationID");
        lblOrganizationID.Text = GetString("Customers_Edit.lblOrganizationID");

        int siteId = SiteContext.CurrentSiteID;

        // Set site IDs
        drpPayment.SiteID = siteId;
        drpShipping.SiteID = siteId;
        selectCurrency.SiteID = siteId;

        if (mCustomer != null)
        {
            if (!RequestHelper.IsPostBack())
            {
                // Fill editing form
                LoadData();

                // Show that the customer was created or updated successfully
                if (QueryHelper.GetString("saved", String.Empty) == "1")
                {
                    ShowChangesSaved();
                }
            }
        }
        else
        {
            if (!RequestHelper.IsPostBack())
            {
                txtCustomerEmail.Text = MembershipContext.AuthenticatedUser.Email;
            }

            // Show message
            ShowInformation(GetString("MyAccount.MyDetails.CreateNewCustomer"));
        }
    }

    #endregion


    #region "Methods"

    /// <summary>
    /// Load form data.
    /// </summary>
    public void LoadData()
    {
        // Fill the form
        txtCustomerCompany.Text = mCustomer.CustomerCompany;
        txtCustomerEmail.Text = mCustomer.CustomerEmail;
        txtCustomerFirstName.Text = mCustomer.CustomerFirstName;
        txtCustomerLastName.Text = mCustomer.CustomerLastName;
        txtCustomerPhone.Text = mCustomer.CustomerPhone;
        txtOraganizationID.Text = mCustomer.CustomerOrganizationID;
        txtTaxRegistrationID.Text = mCustomer.CustomerTaxRegistrationID;

        // Select customer preferences
        string currentSiteName = SiteContext.CurrentSiteName;
        int currencyId = (Customer.CustomerUser != null) ? Customer.CustomerUser.GetUserPreferredCurrencyID(currentSiteName) : 0;
        currencyId = (currencyId > 0) ? currencyId : Customer.CustomerPreferredCurrencyID;
        if (currencyId > 0)
        {
            selectCurrency.SelectedID = currencyId;
        }

        int paymentId = (Customer.CustomerUser != null) ? Customer.CustomerUser.GetUserPreferredPaymentOptionID(currentSiteName) : 0;
        paymentId = (paymentId > 0) ? paymentId : Customer.CustomerPreferredPaymentOptionID;
        if (paymentId > 0)
        {
            drpPayment.SelectedID = paymentId;
        }

        int shippingId = (Customer.CustomerUser != null) ? Customer.CustomerUser.GetUserPreferredShippingOptionID(currentSiteName) : 0;
        shippingId = (shippingId > 0) ? shippingId : Customer.CustomerPreferredShippingOptionID;
        if (shippingId > 0)
        {
            drpShipping.SelectedID = shippingId;
        }

        if (mCustomer.CustomerHasCompanyInfo)
        {
            radAccType.SelectedValue = BUSINESS;
            plcCompanyInfo.Visible = true;
        }
        else
        {
            radAccType.SelectedValue = PERSONAL;
        }
    }


    /// <summary>
    /// Sets data to database.
    /// </summary>
    protected void btnOK_Click(object sender, EventArgs e)
    {
        string errorMessage = "";
        string siteName = SiteContext.CurrentSiteName;

        if ((txtCustomerCompany.Text.Trim() == "" || !IsBusiness) &&
            ((txtCustomerFirstName.Text.Trim() == "") || (txtCustomerLastName.Text.Trim() == "")))
        {
            errorMessage = GetString("Customers_Edit.errorInsert");
        }

        // At least company name has to be filled when company account is selected
        if (errorMessage == "" && IsBusiness)
        {
            errorMessage = new Validator().NotEmpty(txtCustomerCompany.Text, GetString("customers_edit.errorCompany")).Result;
        }

        // Check the following items if complete company info is required for company account
        if (errorMessage == "" && ECommerceSettings.RequireCompanyInfo(siteName) && IsBusiness)
        {
            errorMessage = new Validator().NotEmpty(txtOraganizationID.Text, GetString("customers_edit.errorOrganizationID"))
                .NotEmpty(txtTaxRegistrationID.Text, GetString("customers_edit.errorTaxRegID")).Result;
        }

        if (errorMessage == "")
        {
            errorMessage = new Validator().IsEmail(txtCustomerEmail.Text.Trim(), GetString("customers_edit.erroremailformat"))
                 .MatchesCondition(txtCustomerEmail.Text.Trim(), k => k.Length < 50, GetString("customers_edit.erroremailformat"))
                 .MatchesCondition(txtCustomerPhone.Text.Trim(), k => k.Length < 50, GetString("customers_edit.errorphoneformat")).Result;
        }

        plcCompanyInfo.Visible = IsBusiness;

        if (errorMessage == "")
        {
            // If customer doesn't already exist, create new one
            if (mCustomer == null)
            {
                mCustomer = new CustomerInfo();
                mCustomer.CustomerEnabled = true;
                mCustomer.CustomerUserID = MembershipContext.AuthenticatedUser.UserID;
            }

            int currencyId = selectCurrency.SelectedID;

            if (ECommerceContext.CurrentShoppingCart != null)
            {
                ECommerceContext.CurrentShoppingCart.ShoppingCartCurrencyID = currencyId;
            }

            mCustomer.CustomerEmail = txtCustomerEmail.Text.Trim();
            mCustomer.CustomerLastName = txtCustomerLastName.Text.Trim();
            mCustomer.CustomerPhone = txtCustomerPhone.Text.Trim();
            mCustomer.CustomerFirstName = txtCustomerFirstName.Text.Trim();
            mCustomer.CustomerCreated = DateTime.Now;

            // Set customer's preferences
            mCustomer.CustomerPreferredCurrencyID = (currencyId > 0) ? currencyId : 0;
            mCustomer.CustomerPreferredPaymentOptionID = drpPayment.SelectedID;
            mCustomer.CustomerPreferredShippingOptionID = drpShipping.SelectedID;

            // Check if customer is registered
            if (mCustomer.CustomerIsRegistered)
            {
                // Find user-site binding
                UserSiteInfo userSite = UserSiteInfoProvider.GetUserSiteInfo(Customer.CustomerUserID, SiteContext.CurrentSiteID);
                if (userSite != null)
                {
                    // Set user's preferences
                    userSite.UserPreferredCurrencyID = mCustomer.CustomerPreferredCurrencyID;
                    userSite.UserPreferredPaymentOptionID = mCustomer.CustomerPreferredPaymentOptionID;
                    userSite.UserPreferredShippingOptionID = mCustomer.CustomerPreferredShippingOptionID;

                    UserSiteInfoProvider.SetUserSiteInfo(userSite);
                }
            }

            if (IsBusiness)
            {
                mCustomer.CustomerCompany = txtCustomerCompany.Text.Trim();
                mCustomer.CustomerOrganizationID = txtOraganizationID.Text.Trim();
                mCustomer.CustomerTaxRegistrationID = txtTaxRegistrationID.Text.Trim();
            }
            else
            {
                mCustomer.CustomerCompany = "";
                mCustomer.CustomerOrganizationID = "";
                mCustomer.CustomerTaxRegistrationID = "";
            }

            // Update customer data
            CustomerInfoProvider.SetCustomerInfo(mCustomer);

            // Update corresponding user email
            UserInfo user = mCustomer.CustomerUser;
            if (user != null)
            {
                user.Email = mCustomer.CustomerEmail;
                user.UserSettings.SetValue("UserPhone", Customer.CustomerPhone);
                UserInfoProvider.SetUserInfo(user);
            }

            // Update corresponding contact data
            ModuleCommands.OnlineMarketingUpdateContactFromExternalData(mCustomer, DataClassInfoProvider.GetDataClassInfo(CustomerInfo.TYPEINFO.ObjectClassName).ClassContactOverwriteEnabled,
            ModuleCommands.OnlineMarketingGetCurrentContactID());

            // Let others now that customer was created
            if (OnCustomerCrated != null)
            {
                OnCustomerCrated();

                ShowChangesSaved();
            }
            else
            {
                URLHelper.Redirect(URLHelper.AddParameterToUrl(RequestContext.CurrentURL, "saved", "1"));
            }
        }
        else
        {
            //Show error
            ShowError(errorMessage);
        }
    }


    /// <summary>
    /// Raises OnShippingChange event.
    /// </summary>
    protected void drpShipping_ShippingChange(object sender, EventArgs e)
    {
        drpPayment.ShippingOptionID = drpShipping.SelectedID;
        drpPayment.SelectedID = 0;
    }


    /// <summary>
    /// Overridden SetValue - because of MyAccount webpart.
    /// </summary>
    /// <param name="propertyName">Name of the property to set</param>
    /// <param name="value">Value to set</param>
    public override bool SetValue(string propertyName, object value)
    {
        base.SetValue(propertyName, value);

        switch (propertyName.ToLowerCSafe())
        {
            case "customer":
                GeneralizedInfo gi = value as GeneralizedInfo;
                if (gi != null)
                {
                    Customer = gi.MainObject as CustomerInfo;
                }
                break;
        }

        return true;
    }

    #endregion
}