/// <summary>
    /// UIForm's OnAfterValidate event handler.
    /// </summary>
    protected void EditForm_OnAfterValidate(object sender, EventArgs e)
    {
        SubscriberInfo subscriberObj = EditedObject as SubscriberInfo;

        if (subscriberObj != null)
        {
            string emailNew     = ValidationHelper.GetString(EditForm.GetFieldValue("SubscriberEmail"), String.Empty);
            string emailCurrent = subscriberObj.SubscriberEmail;

            // Check email
            if (emailNew == string.Empty)
            {
                EditForm.StopProcessing = true;
                ShowError(GetString("Subscriber_Edit.ErrorEmptyEmail"));
            }
            else if ((emailNew.ToLowerCSafe() != emailCurrent.ToLowerCSafe()) && (SubscriberInfoProvider.EmailExists(emailNew)))
            {
                EditForm.StopProcessing = true;
                ShowError(GetString("Subscriber_Edit.EmailAlreadyExists"));
            }
        }
        else
        {
            EditForm.StopProcessing = true;
            ShowError(GetString("Subscriber_Edit.SubscriberDoesNotExists"));
        }
    }
    protected void OnBeforeSave(object sender, EventArgs e)
    {
        // Check license
        if (!SubscriberInfoProvider.LicenseVersionCheck(RequestContext.CurrentDomain, FeatureEnum.Subscribers, ObjectActionEnum.Insert))
        {
            NewForm.StopProcessing = true;

            ShowError(GetString("LicenseVersionCheck.Subscribers"));
        }

        // Set SiteID
        NewForm.Data.SetValue("SubscriberSiteID", SiteContext.CurrentSiteID);

        string firstName = ValidationHelper.GetString(NewForm.GetFieldValue("SubscriberFirstName"), string.Empty);
        string lastName  = ValidationHelper.GetString(NewForm.GetFieldValue("SubscriberLastName"), string.Empty);

        // Set full name
        NewForm.Data.SetValue("SubscriberFullName", string.Concat(firstName, " ", lastName));

        string email = ValidationHelper.GetString(NewForm.GetFieldValue("SubscriberEmail"), string.Empty);

        // Check email
        if (email == string.Empty)
        {
            NewForm.StopProcessing = true;

            ShowError(GetString("Subscriber_Edit.ErrorEmptyEmail"));
        }
        else if (SubscriberInfoProvider.EmailExists(email))
        {
            NewForm.StopProcessing = true;

            ShowError(GetString("Subscriber_Edit.EmailAlreadyExists"));
        }
    }
    /// <summary>
    /// Sets data to database.
    /// </summary>
    protected void btnOK_Click(object sender, EventArgs e)
    {
        // Check "Manage subscribers" permission
        if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.newsletter", "managesubscribers"))
        {
            RedirectToCMSDeskAccessDenied("cms.newsletter", "managesubscribers");
        }

        string email = txtSubscriberEmail.Text.Trim();

        // Check entered values
        string errorMessage = new Validator().NotEmpty(email, GetString("Subscriber_Edit.ErrorEmptyEmail"))
                              .IsEmail(email, GetString("NewsletterSubscription.ErrorInvalidEmail"))
                              .Result;

        if (string.IsNullOrEmpty(errorMessage))
        {
            if (!SubscriberInfoProvider.EmailExists(email))
            {
                // Create new subscriber info and set values
                SubscriberInfo subscriberObj = new SubscriberInfo();

                subscriberObj.SubscriberID        = 0;
                subscriberObj.SubscriberLastName  = txtSubscriberLastName.Text.Trim();
                subscriberObj.SubscriberEmail     = email;
                subscriberObj.SubscriberFirstName = txtSubscriberFirstName.Text.Trim();
                subscriberObj.SubscriberFullName  = (subscriberObj.SubscriberFirstName + " " + subscriberObj.SubscriberLastName).Trim();
                subscriberObj.SubscriberSiteID    = CMSContext.CurrentSiteID;
                subscriberObj.SubscriberGUID      = Guid.NewGuid();

                if (SubscriberInfoProvider.LicenseVersionCheck(URLHelper.GetCurrentDomain(), FeatureEnum.Subscribers, VersionActionEnum.Insert))
                {
                    // Save subscriber to DB
                    SubscriberInfoProvider.SetSubscriberInfo(subscriberObj);
                    // Redirect to edit page
                    URLHelper.Redirect("Subscriber_Frameset.aspx?subscriberid=" + Convert.ToString(subscriberObj.SubscriberID) + "&saved=1");
                }
                else
                {
                    ShowError(GetString("LicenseVersionCheck.Subscribers"));
                }
            }
            else
            {
                ShowError(GetString("Subscriber_Edit.EmailAlreadyExists"));
            }
        }
        else
        {
            ShowError(errorMessage);
        }
    }
    /// <summary>
    /// DataForm's OnAfterValidate event handler.
    /// </summary>
    protected void formCustomFields_OnAfterValidate(object sender, EventArgs e)
    {
        // Get subscriber's email
        FormEngineUserControl control = (FormEngineUserControl)formCustomFields.BasicForm.FieldControls["SubscriberEmail"];

        if (control != null)
        {
            string mail = ValidationHelper.GetString(control.Value, String.Empty).Trim();
            // Get original subscriber
            SubscriberInfo subscriberObj = SubscriberInfoProvider.GetSubscriberInfo(subscriberId);
            if (subscriberObj != null)
            {
                // Check the email changes
                if ((subscriberObj.SubscriberEmail.ToLowerCSafe() != mail.ToLowerCSafe()) && (SubscriberInfoProvider.EmailExists(mail)))
                {
                    // Show error message if the email address is already used by another subscriber
                    formCustomFields.BasicForm.StopProcessing = true;
                    ShowError(GetString("Subscriber_Edit.EmailAlreadyExists"));
                }
            }
            else
            {
                formCustomFields.BasicForm.StopProcessing = true;
                ShowError(GetString("Subscriber_Edit.SubscriberDoesNotExists"));
            }
        }
    }