using System;
using System.Web.UI.WebControls;
using CMS.CMSHelper;
using CMS.Controls;
using CMS.GlobalHelper;
using CMS.SettingsProvider;
using CMS.SiteProvider;
using CMS.Newsletter;
public partial class CMSModules_Newsletters_Controls_SubscriberBlockedFilter : CMSAbstractBaseFilterControl
{
#region "Constants"
private const string All = "ALL";
private const string Active = "ACTIVE";
private const string Blocked = "BLOCKED";
#endregion
#region "Variables"
private int mBounceLimit;
#endregion
#region "Properties"
///
/// Gets or sets the where condition.
///
public override string WhereCondition
{
get
{
base.WhereCondition = GenerateWhereCondition();
return base.WhereCondition;
}
set
{
base.WhereCondition = value;
}
}
#endregion
#region "Methods"
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (!RequestHelper.IsPostBack())
{
Reload();
}
}
protected void Page_Load(object sender, EventArgs e)
{
mBounceLimit = NewsletterHelper.BouncedEmailsLimit(CMSContext.CurrentSiteName);
}
///
/// Reloads control.
///
protected void Reload()
{
ddlBounceFilter.Items.Clear();
ddlBounceFilter.Items.Add(new ListItem(ResHelper.GetString("general.selectall"), All));
ddlBounceFilter.Items.Add(new ListItem(ResHelper.GetString("newsletter.filter.bouncedemails.active"), Active));
ddlBounceFilter.Items.Add(new ListItem(ResHelper.GetString("newsletter.filter.bouncedemails.blocked"), Blocked));
}
///
/// Generates WHERE condition.
///
private string GenerateWhereCondition()
{
if (mBounceLimit <= 0)
{
return null;
}
switch (ddlBounceFilter.SelectedValue)
{
case All:
return null;
case Active:
return string.Format("(((SubscriberType IS NULL OR SubscriberType='{0}' OR SubscriberType='{1}') AND (SubscriberBounces IS NULL OR SubscriberBounces<{2})) OR (SubscriberType = '{3}') OR (SubscriberType = '{4}'))",
SiteObjectType.USER, PredefinedObjectType.CONTACT, mBounceLimit, SiteObjectType.ROLE, PredefinedObjectType.CONTACTGROUP);
case Blocked:
return string.Format("((SubscriberType IS NULL OR SubscriberType='{0}' OR SubscriberType='{1}') AND (SubscriberBounces>={2}))", SiteObjectType.USER, PredefinedObjectType.CONTACT, mBounceLimit);
default:
return null;
}
}
#endregion
#region "State management"
///
/// Stores filter state to the specified object.
///
/// The object that holds the filter state.
public override void StoreFilterState(FilterState state)
{
state.AddValue("blocked", ddlBounceFilter.SelectedValue);
}
///
/// Restores filter state from the specified object.
///
/// The object that holds the filter state.
public override void RestoreFilterState(FilterState state)
{
ddlBounceFilter.SelectedValue = state.GetString("blocked");
}
///
/// Resets the filter settings.
///
public override void ResetFilter()
{
ddlBounceFilter.SelectedIndex = 0;
}
#endregion
}