using System;
using System.Data;
using CMS.CMSHelper;
using CMS.GlobalHelper;
using CMS.OnlineMarketing;
using CMS.SettingsProvider;
using CMS.SiteProvider;
using CMS.Controls;
using CMS.UIControls;
using CMS.WebAnalytics;
public partial class CMSModules_ContactManagement_Controls_UI_Activity_Filter : CMSAbstractBaseFilterControl
{
#region "Variables"
private bool mShowContactSelector = true;
#endregion
#region "Properties"
///
/// Gets the where condition created using filtered parameters.
///
public override string WhereCondition
{
get
{
return GenerateWhereCondition();
}
set
{
base.WhereCondition = value;
}
}
///
/// Gets or sets site ID. This value is used when site selector is hidden.
///
public int SiteID
{
get;
set;
}
///
/// Determines whether contact selector is visible.
///
public bool ShowContactSelector
{
get
{
return mShowContactSelector;
}
set
{
mShowContactSelector = value;
}
}
///
/// Determines whether IP text box (filter) is visible.
///
public bool ShowIPFilter
{
get;
set;
}
///
/// Determines whether site selector is visible.
///
public bool ShowSiteFilter
{
get;
set;
}
///
/// Indicates if control is used on live site.
///
public override bool IsLiveSite
{
get
{
return base.IsLiveSite;
}
set
{
base.IsLiveSite = value;
}
}
#endregion
#region "Page methods"
protected override void OnInit(EventArgs e)
{
string currSiteName = null;
int currSiteId = 0;
// Get current site ID/name
if (ContactHelper.IsSiteManager)
{
currSiteId = SiteID;
currSiteName = SiteInfoProvider.GetSiteName(currSiteId);
}
else
{
currSiteName = CMSContext.CurrentSiteName;
currSiteId = CMSContext.CurrentSiteID;
}
SiteID = currSiteId;
ShowSiteFilter = (currSiteId == UniSelector.US_ALL_RECORDS);
ShowIPFilter = ActivitySettingsHelper.IPLoggingEnabled(currSiteName);
base.OnInit(e);
plcCon.Visible = ShowContactSelector;
plcIp.Visible = ShowIPFilter;
plcSite.Visible = ShowSiteFilter;
if (ShowSiteFilter)
{
siteSelector.DropDownCssClass = "DropDownFieldFilter";
}
btnReset.Text = GetString("general.reset");
btnReset.Click += btnReset_Click;
btnFilter.Click += btnSearch_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 "State management"
///
/// Resets filter to the default state.
///
public override void ResetFilter()
{
drpType.Value = null;
fltTimeBetween.Clear();
fltContact.ResetFilter();
fltName.ResetFilter();
fltIP.ResetFilter();
}
///
/// Stores filter state to the specified object.
///
/// The object that holds the filter state.
public override void StoreFilterState(FilterState state)
{
state.AddValue("FromTime", fltTimeBetween.ValueFromTime);
state.AddValue("ToTime", fltTimeBetween.ValueToTime);
base.StoreFilterState(state);
}
///
/// Restores filter state from the specified object.
///
/// The object that holds the filter state.
public override void RestoreFilterState(FilterState state)
{
base.RestoreFilterState(state);
fltTimeBetween.ValueFromTime = state.GetDateTime("FromTime");
fltTimeBetween.ValueToTime = state.GetDateTime("ToTime");
}
#endregion
#region "Search methods - where condition"
///
/// Generates complete filter where condition.
///
private string GenerateWhereCondition()
{
string whereCond = string.Empty;
if (!String.IsNullOrEmpty(drpType.SelectedValue))
{
whereCond = "ActivityType=N'" + drpType.SelectedValue.Replace("'", "''") + "'";
}
int siteId = SiteID;
if (ShowSiteFilter)
{
siteId = ValidationHelper.GetInteger(siteSelector.Value, 0);
}
// Create condition based on site selector
if (siteId > 0)
{
whereCond = SqlHelperClass.AddWhereCondition(whereCond, "ActivitySiteID=" + siteId);
}
else if (siteId == UniSelector.US_GLOBAL_RECORD)
{
whereCond = SqlHelperClass.AddWhereCondition(whereCond, "ActivitySiteID IS NULL");
}
if (ShowContactSelector)
{
// Filter by contact if contact selector is visible
whereCond = SqlHelperClass.AddWhereCondition(whereCond, fltContact.GetCondition());
}
if (ShowIPFilter)
{
// Filter by IP if filter is visible
whereCond = SqlHelperClass.AddWhereCondition(whereCond, fltIP.GetCondition());
}
whereCond = SqlHelperClass.AddWhereCondition(whereCond, fltName.GetCondition());
whereCond = SqlHelperClass.AddWhereCondition(whereCond, fltTimeBetween.GetCondition());
return whereCond;
}
#endregion
}