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.FormControls;
using CMS.GlobalHelper;
using CMS.Newsletter;
using CMS.SettingsProvider;
using CMS.UIControls;
public partial class CMSModules_Newsletters_Tools_Subscribers_Subscriber_General : CMSNewsletterSubscribersPage
{
private string emailBeforeSave;
protected int subscriberId = 0;
protected void Page_Load(object sender, EventArgs e)
{
// Initialize dataform
formCustomFields.OnAfterValidate += formCustomFields_OnAfterValidate;
formCustomFields.OnBeforeSave += formCustomFields_OnBeforeSave;
formCustomFields.OnAfterSave += formCustomFields_OnAfterSave;
formCustomFields.OnBeforeValidate += formCustomFields_OnBeforeValidate;
// Get subscriber ID from querystring
subscriberId = QueryHelper.GetInteger("subscriberid", 0);
if (subscriberId > 0)
{
if (!RequestHelper.IsPostBack())
{
// Get subscriber info and check its existence
SubscriberInfo subscriberObj = SubscriberInfoProvider.GetSubscriberInfo(subscriberId);
EditedObject = subscriberObj;
// Fill editing form only if subscriber is of standard type
if (DataHelper.IsEmpty(subscriberObj.SubscriberType) && subscriberObj.SubscriberRelatedID == 0)
{
formCustomFields.ItemID = subscriberObj.SubscriberID;
// Show that the subscriber was created or updated successfully
if (QueryHelper.GetBoolean("saved", false))
{
ShowChangesSaved();
}
}
else
{
formCustomFields.Visible = false;
}
}
}
else
{
formCustomFields.Visible = false;
}
}
///
/// DataForm's OnBeforeValidate event handler.
///
protected void formCustomFields_OnBeforeValidate(object sender, EventArgs e)
{
// Check permissions
if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.newsletter", "managesubscribers"))
{
RedirectToCMSDeskAccessDenied("cms.newsletter", "managesubscribers");
}
}
///
/// DataForm's OnAfterValidate event handler.
///
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"));
}
}
}
///
/// DataForm's OnBeforeSave event handler.
///
protected void formCustomFields_OnBeforeSave(object sender, EventArgs e)
{
emailBeforeSave = SubscriberInfoProvider.GetSubscriberInfo(subscriberId).SubscriberEmail;
}
///
/// DataForm's OnAfterSave event handler.
///
protected void formCustomFields_OnAfterSave(object sender, EventArgs e)
{
if (!formCustomFields.BasicForm.StopProcessing)
{
// Save with provider to log synchronization
SubscriberInfo subscriberObj = SubscriberInfoProvider.GetSubscriberInfo(subscriberId);
// Reset subscriber bounces counter when someone changes his e-mail.
if (emailBeforeSave != subscriberObj.SubscriberEmail)
{
subscriberObj.SubscriberBounces = 0;
}
EditedObject = subscriberObj;
subscriberObj.SubscriberFullName = (subscriberObj.SubscriberFirstName + " " + subscriberObj.SubscriberLastName).Trim();
SubscriberInfoProvider.SetSubscriberInfo(subscriberObj);
ShowChangesSaved();
// Refresh header with display name
ScriptHelper.RefreshTabHeader(Page, null);
}
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if (formCustomFields.BasicForm != null)
{
// Set submit button's CSS class
formCustomFields.BasicForm.SubmitButton.CssClass = "SubmitButton";
}
}
}