using System;
using System.Data;
using System.Web.UI.WebControls;
using CMS.CMSHelper;
using CMS.Controls;
using CMS.GlobalHelper;
using CMS.SettingsProvider;
using CMS.DocumentEngine;
public partial class CMSModules_IntranetPortal_Controls_EmployeesFilterControl : CMSAbstractBaseFilterControl
{
#region "Constants"
private const string DEPARTMENT_DOC_TYPE = "IntranetPortal.Department";
#endregion
#region "Variables"
private TreeProvider mProvider = null;
#endregion
#region "Properties"
///
/// Gets or sets the button text.
///
public string ButtonText
{
get
{
if (string.IsNullOrEmpty(btnSelect.Text))
{
btnSelect.Text = ResHelper.GetString("general.search");
}
return btnSelect.Text;
}
set
{
btnSelect.Text = value;
}
}
private TreeProvider TreeProvider
{
get
{
if (mProvider == null)
{
mProvider = new TreeProvider(CMSContext.CurrentUser);
}
return mProvider;
}
}
#endregion
#region "Control methods"
///
/// OnLoad override - check wheter filter is set.
///
protected override void OnLoad(EventArgs e)
{
if (!RequestHelper.IsPostBack())
{
InitializeDepartmentFilter();
}
else
{
// Set filter only if it is not filter request
if (Request.Form[btnSelect.UniqueID] == null)
{
// Try to get where condition
txtValue.Text = ValidationHelper.GetString(ViewState["FilterCondition"], string.Empty);
}
if (!string.IsNullOrEmpty(txtValue.Text) || (drpDepartment.SelectedIndex != 0))
{
// Set where condition and raise OnFilter change event
WhereCondition = GenerateWhereCondition(txtValue.Text);
// Raise event
RaiseOnFilterChanged();
}
}
btnSelect.Text = ButtonText;
base.OnLoad(e);
}
///
/// Select button handler.
///
/// Sender
/// EventArgs
protected void btnSelect_Click(object sender, EventArgs e)
{
// Save filter condition
ViewState["FilterCondition"] = txtValue.Text;
// Raise event
RaiseOnFilterChanged();
}
///
/// DDL change slected value handler.
///
/// Sender
/// EventArgs
protected void drpDepartment_SelectedIndexChanged(object sender, EventArgs e)
{
// Save filter condition
ViewState["FilterCondition"] = txtValue.Text;
// Raise event
RaiseOnFilterChanged();
}
///
/// Generates where condition.
///
/// Phrase to be searched
/// Where condition for given phrase
protected string GenerateWhereCondition(string searchPhrase)
{
searchPhrase = SqlHelperClass.GetSafeQueryString(searchPhrase, false);
string whereCondition = null;
// Process name filter where condition
if (!String.IsNullOrEmpty(searchPhrase))
{
whereCondition = "(FullName LIKE N'%" + searchPhrase + "%')";
}
// Process department filter where condition
if (drpDepartment.SelectedValue != String.Empty)
{
int nodeId = ValidationHelper.GetInteger(drpDepartment.SelectedValue, 0);
int permValue = 1 << (int)NodePermissionsEnum.Read;
string whereDepartment = "UserID IN(SELECT DISTINCT UserID FROM CMS_UserRole WHERE RoleID IN(SELECT RoleID FROM View_CMS_ACLItem_ItemsAndOperators WHERE ((Allowed & " + permValue + ") >= " + permValue + ") AND (RoleID IS NOT NULL) AND (ACLOwnerNodeID = " + nodeId + ")))";
whereCondition = SqlHelperClass.AddWhereCondition(whereCondition, whereDepartment);
}
return whereCondition;
}
///
/// Initialize department filter.
///
private void InitializeDepartmentFilter()
{
DataSet dsDepartments = TreeProvider.SelectNodes(CMSContext.CurrentSiteName, "/%", null, true, DEPARTMENT_DOC_TYPE, null, null, -1, true, 0, TreeProvider.SELECTNODES_REQUIRED_COLUMNS + ",DocumentName");
if (!DataHelper.DataSourceIsEmpty(dsDepartments))
{
// Add default value
drpDepartment.Items.Add(new ListItem(ResHelper.GetString("employeesearch.alldepartments"), ""));
foreach (DataRow dr in dsDepartments.Tables[0].Rows)
{
string depName = ValidationHelper.GetString(dr["DocumentName"], "");
string depId = ValidationHelper.GetString(dr["NodeID"], "");
if (!String.IsNullOrEmpty(depName) && !String.IsNullOrEmpty(depId))
{
drpDepartment.Items.Add(new ListItem(depName, depId));
}
}
}
}
#endregion
}