using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CMS.Controls;
using CMS.GlobalHelper;
using CMS.SettingsProvider;
public partial class CMSModules_Newsletters_Controls_SubscriberFilter : CMSAbstractBaseFilterControl
{
///
/// Where condition.
///
public override string WhereCondition
{
get
{
base.WhereCondition = GenerateWhereCondition(txtEmail.Text);
return base.WhereCondition;
}
set
{
base.WhereCondition = value;
}
}
#region "Methods"
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (!RequestHelper.IsPostBack())
{
Reload();
}
}
///
/// Reloads control.
///
protected void Reload()
{
filter.Items.Clear();
filter.Items.Add(new ListItem("LIKE", "LIKE"));
filter.Items.Add(new ListItem("NOT LIKE", "NOT LIKE"));
filter.Items.Add(new ListItem("=", "="));
filter.Items.Add(new ListItem("<>", "<>"));
}
///
/// Generates WHERE condition.
///
private string GenerateWhereCondition(string txtEmail)
{
if (String.IsNullOrEmpty(txtEmail))
{
return null;
}
else
{
string mOperator = "LIKE";
string email = SqlHelperClass.GetSafeQueryString(txtEmail, false);
// Get filter operator (LIKE, NOT LIKE, =, <>)
if (filter.SelectedValue != null)
{
mOperator = filter.SelectedValue;
}
if ((mOperator == "LIKE") || (mOperator == "NOT LIKE"))
{
email = "%" + email + "%";
}
return string.Format("((SubscriberEmail {0} '{1}') OR (Email {0} '{1}'))", mOperator, email);
}
}
#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("condition", filter.SelectedValue);
state.AddValue("email", txtEmail.Text);
}
///
/// Restores filter state from the specified object.
///
/// The object that holds the filter state.
public override void RestoreFilterState(FilterState state)
{
filter.SelectedValue = state.GetString("condition");
txtEmail.Text = state.GetString("email");
}
///
/// Resets the filter settings.
///
public override void ResetFilter()
{
filter.SelectedIndex = 0;
txtEmail.Text = String.Empty;
}
#endregion
}