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.Controls;
using CMS.GlobalHelper;
using CMS.UIControls;
public partial class CMSModules_Groups_Controls_GroupFilter : CMSAbstractBaseFilterControl
{
#region "Public properties"
///
/// Where condition built using the filter options.
///
public override string WhereCondition
{
get
{
return BuildWhereCondition();
}
set
{
base.WhereCondition = value;
}
}
#endregion
#region "Events"
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (!RequestHelper.IsPostBack())
{
InitializeForm();
}
btnReset.Text = GetString("general.reset");
btnReset.Click += btnReset_Click;
}
///
/// Resets the associated UniGrid control.
///
protected void btnReset_Click(object sender, EventArgs e)
{
UniGrid grid = FilteredControl as UniGrid;
if (grid != null)
{
grid.Reset();
}
}
///
/// Applies filter on associated UniGrid control.
///
protected void btnSearch_Click(object sender, EventArgs e)
{
UniGrid grid = FilteredControl as UniGrid;
if (grid != null)
{
grid.ApplyFilter(sender, e);
}
}
#endregion
#region "Private methods"
///
/// Resets filter to the default state.
///
public override void ResetFilter()
{
txtGroupName.Text = String.Empty;
drpGroupStatus.SelectedIndex = 0;
drpGroupName.SelectedIndex = 0;
}
///
/// Initializes filter controls.
///
private void InitializeForm()
{
// Initialize first dropdown lists
drpGroupName.Items.Add(new ListItem("LIKE", "0"));
drpGroupName.Items.Add(new ListItem("NOT LIKE", "1"));
drpGroupName.Items.Add(new ListItem("=", "2"));
drpGroupName.Items.Add(new ListItem("<>", "3"));
drpGroupStatus.Items.Add(new ListItem(GetString("general.selectall"), "0"));
drpGroupStatus.Items.Add(new ListItem(GetString("groups.status.waitingforapproval"), "1"));
drpGroupStatus.Items.Add(new ListItem(GetString("general.approved"), "2"));
drpGroupStatus.Items.Add(new ListItem(GetString("general.rejected"), "3"));
// Preselect all
drpGroupStatus.SelectedIndex = 0;
}
///
/// Builds where condition.
///
/// Filter where condition
private string BuildWhereCondition()
{
string whereCondition = String.Empty;
// Group name
string groupName = txtGroupName.Text.Trim().Replace("'", "''");
if (!String.IsNullOrEmpty(groupName))
{
// Get proper operator name
int sqlOperatorNumber = ValidationHelper.GetInteger(drpGroupName.SelectedValue, 0);
string sqlOperatorName = "LIKE";
switch (sqlOperatorNumber)
{
case 1:
sqlOperatorName = "NOT LIKE";
break;
case 2:
sqlOperatorName = "=";
break;
case 3:
sqlOperatorName = "<>";
break;
default:
sqlOperatorName = "LIKE";
break;
}
if ((sqlOperatorName == "LIKE") || (sqlOperatorName == "NOT LIKE"))
{
groupName = "%" + groupName + "%";
}
whereCondition = "(GroupDisplayName " + sqlOperatorName + " N'" + groupName + "')";
}
// Group status
int sqlStatusNumber = ValidationHelper.GetInteger(drpGroupStatus.SelectedValue, 0);
string sqlStatusCode = "";
switch (sqlStatusNumber)
{
case 1:
sqlStatusCode = "GroupApproved IS NULL";
break;
case 2:
sqlStatusCode = "GroupApproved = 1";
break;
case 3:
sqlStatusCode = "GroupApproved = 0";
break;
default:
sqlStatusCode = "";
break;
}
if (!String.IsNullOrEmpty(sqlStatusCode))
{
if (!String.IsNullOrEmpty(whereCondition))
{
whereCondition += " AND ";
}
whereCondition += "(" + sqlStatusCode + ")";
}
return whereCondition;
}
#endregion
}