using System; using System.Web.UI.WebControls; using CMS.Controls; using CMS.GlobalHelper; using CMS.SettingsProvider; using CMS.SiteProvider; using CMS.UIControls; public partial class CMSModules_Avatars_AvatarFilter : CMSAbstractBaseFilterControl { #region "Public properties" 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() { txtAvatarName.Text = String.Empty; drpAvatarType.SelectedIndex = 0; drpAvatarKind.SelectedIndex = 1; drpAvatarName.SelectedIndex = 0; } private void InitializeForm() { // Initialize first dropdown lists drpAvatarName.Items.Add(new ListItem("LIKE", "0")); drpAvatarName.Items.Add(new ListItem("NOT LIKE", "1")); drpAvatarName.Items.Add(new ListItem("=", "2")); drpAvatarName.Items.Add(new ListItem("<>", "3")); DataHelper.FillListControlWithEnum(typeof(AvatarTypeEnum), drpAvatarType, "avat.type", AvatarInfoProvider.GetAvatarTypeString); drpAvatarType.Items.Insert(0, new ListItem(GetString("general.selectall"), "")); drpAvatarKind.Items.Add(new ListItem(GetString("general.selectall"), "0")); drpAvatarKind.Items.Add(new ListItem(GetString("avat.filter.shared"), "1")); drpAvatarKind.Items.Add(new ListItem(GetString("avat.filter.custom"), "2")); // Preselect shared drpAvatarKind.SelectedIndex = 1; } /// /// Builds where condition and raises search event. /// private string BuildWhereCondition() { string whereCondition = String.Empty; // Avatar name string avatarName = txtAvatarName.Text.Trim().Replace("'", "''"); if (!String.IsNullOrEmpty(avatarName)) { // Get proper operator name int sqlOperatorNumber = ValidationHelper.GetInteger(drpAvatarName.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")) { avatarName = "%" + avatarName + "%"; } whereCondition = "(AvatarName " + sqlOperatorName + " N'" + avatarName + "')"; } // Avatar type if (!String.IsNullOrEmpty(drpAvatarType.SelectedValue)) { if (!string.IsNullOrEmpty(whereCondition)) { whereCondition += " AND "; } whereCondition += "(AvatarType = '" + SqlHelperClass.GetSafeQueryString(drpAvatarType.SelectedValue, false) + "')"; } // Avatar kind int sqlKindNumber = ValidationHelper.GetInteger(drpAvatarKind.SelectedValue, 0); string sqlKindCode = ""; switch (sqlKindNumber) { case 1: sqlKindCode = "AvatarIsCustom = 0"; break; case 2: sqlKindCode = "AvatarIsCustom = 1"; break; default: sqlKindCode = ""; break; } if (!String.IsNullOrEmpty(sqlKindCode)) { if (!String.IsNullOrEmpty(whereCondition)) { whereCondition += " AND "; } whereCondition += "(" + sqlKindCode + ")"; } return whereCondition; } #endregion }