HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/TDijk1/erp-apps.eu/wwwroot/CMSModules/EventLog/Controls/EventFilter.ascx.cs
using System;
using System.Web.UI.WebControls;
using System.Web.UI;

using CMS.Controls;
using CMS.DataEngine;
using CMS.Helpers;
using CMS.UIControls;

public partial class CMSModules_EventLog_Controls_EventFilter : CMSAbstractBaseFilterControl
{
    #region "Variables"

    private bool isAdvancedMode;

    #endregion


    #region "Public properties"

    /// <summary>
    /// Gets the where condition created using filtered parameters.
    /// </summary>
    public override string WhereCondition
    {
        get
        {
            return GenerateWhereCondition();
        }
    }


    /// <summary>
    /// Gets button used to toggle filter's advanced mode.
    /// </summary>
    public override IButtonControl ToggleAdvancedModeButton
    {
        get
        {
            EnsureFilterMode();

            // Advanced mode has already been switched this postback.
            return isAdvancedMode ? lnkShowAdvancedFilter : lnkShowSimpleFilter;
        }
    }

    #endregion


    #region "Page methods"

    protected void Page_Init(object sender, EventArgs e)
    {
        if (!URLHelper.IsPostback())
        {
            drpEventLogType.Value = QueryHelper.GetString("type", null);
        }
    }


    protected void Page_Load(object sender, EventArgs e)
    {
        EnsureFilterMode();
        InitializeForm();
    }

    #endregion


    #region "UI methods"

    /// <summary>
    /// Shows/hides all elements for advanced or simple mode.
    /// </summary>
    /// <param name="showAdvanced">Whether to display advanced filter</param>
    private void ShowFilterElements(bool showAdvanced)
    {
        plcAdvancedSearch.Visible = showAdvanced;
        pnlAdvanced.Visible = showAdvanced;
        pnlSimple.Visible = !showAdvanced;
    }


    /// <summary>
    /// Initializes the layout of the form.
    /// </summary>
    private void InitializeForm()
    {
        // General UI
        lnkShowAdvancedFilter.Text = GetString("general.displayadvancedfilter");
        lnkShowSimpleFilter.Text = GetString("general.displaysimplefilter");
        plcAdvancedSearch.Visible = isAdvancedMode;
        pnlAdvanced.Visible = isAdvancedMode;
        pnlSimple.Visible = !isAdvancedMode;

        UniGrid grid = FilteredControl as UniGrid;
        if (grid != null && grid.RememberState)
        {
            grid.RememberDefaultState = true;
            btnReset.Text = GetString("general.reset");
            btnReset.Click += btnReset_Click;
        }
        else
        {
            btnReset.Visible = false;
        }
    }


    /// <summary>
    /// Ensures correct filter mode flag if filter mode was just changed.
    /// </summary>
    private void EnsureFilterMode()
    {
        if (URLHelper.IsPostback())
        {
            // Get current event target
            string uniqieId = ValidationHelper.GetString(Request.Params[Page.postEventSourceID], String.Empty);

            // If postback was fired by mode switch, update isAdvancedMode variable
            if (uniqieId == lnkShowAdvancedFilter.UniqueID)
            {
                isAdvancedMode = true;
            }
            else if (uniqieId == lnkShowSimpleFilter.UniqueID)
            {
                isAdvancedMode = false;
            }
            else
            {
                isAdvancedMode = ValidationHelper.GetBoolean(ViewState["IsAdvancedMode"], false);
            }
        }
    }


    /// <summary>
    /// Sets the advanced mode.
    /// </summary>
    protected void lnkShowAdvancedFilter_Click(object sender, EventArgs e)
    {
        isAdvancedMode = true;
        ViewState["IsAdvancedMode"] = isAdvancedMode;
        ShowFilterElements(isAdvancedMode);
    }


    /// <summary>
    /// Sets the simple mode.
    /// </summary>
    protected void lnkShowSimpleFilter_Click(object sender, EventArgs e)
    {
        isAdvancedMode = false;
        ViewState["IsAdvancedMode"] = isAdvancedMode;
        ShowFilterElements(isAdvancedMode);
    }

    #endregion


    #region "Search methods - where condition"

    /// <summary>
    /// Generates complete filter where condition.
    /// </summary>    
    private string GenerateWhereCondition()
    {
        // Get mode from viewstate
        EnsureFilterMode();

        string whereCond = "";

        // Create WHERE condition for basic filter
        string eventType = ValidationHelper.GetString(drpEventLogType.Value, null);
        if (!String.IsNullOrEmpty(eventType))
        {
            whereCond = "EventType='" + eventType + "'";
        }

        whereCond = SqlHelper.AddWhereCondition(whereCond, fltSource.GetCondition());
        whereCond = SqlHelper.AddWhereCondition(whereCond, fltEventCode.GetCondition());
        whereCond = SqlHelper.AddWhereCondition(whereCond, fltTimeBetween.GetCondition());

        // Create WHERE condition for advanced filter (id needed)
        if (isAdvancedMode)
        {
            whereCond = SqlHelper.AddWhereCondition(whereCond, fltUserName.GetCondition());
            whereCond = SqlHelper.AddWhereCondition(whereCond, fltIPAddress.GetCondition());
            whereCond = SqlHelper.AddWhereCondition(whereCond, fltDocumentName.GetCondition());
            whereCond = SqlHelper.AddWhereCondition(whereCond, fltMachineName.GetCondition());
            whereCond = SqlHelper.AddWhereCondition(whereCond, fltEventURL.GetCondition());
            whereCond = SqlHelper.AddWhereCondition(whereCond, fltEventURLRef.GetCondition());
            whereCond = SqlHelper.AddWhereCondition(whereCond, fltDescription.GetCondition());
            whereCond = SqlHelper.AddWhereCondition(whereCond, fltUserAgent.GetCondition());
        }

        return whereCond;
    }

    #endregion


    #region "State management"

    /// <summary>
    /// Stores filter state to the specified object.
    /// </summary>
    /// <param name="state">The object that holds the filter state.</param>
    public override void StoreFilterState(FilterState state)
    {
        base.StoreFilterState(state);
        state.AddValue("AdvancedMode", isAdvancedMode);
        state.AddValue("TimeBetweenFrom", fltTimeBetween.ValueFromTime);
        state.AddValue("TimeBetweenTo", fltTimeBetween.ValueToTime);
    }


    /// <summary>
    /// Restores filter state from the specified object.
    /// </summary>
    /// <param name="state">The object that holds the filter state.</param>
    public override void RestoreFilterState(FilterState state)
    {
        base.RestoreFilterState(state);
        isAdvancedMode = state.GetBoolean("AdvancedMode");
        ViewState["IsAdvancedMode"] = isAdvancedMode;
        ShowFilterElements(isAdvancedMode);

        fltTimeBetween.ValueFromTime = state.GetDateTime("TimeBetweenFrom");
        fltTimeBetween.ValueToTime = state.GetDateTime("TimeBetweenTo");
    }


    /// <summary>
    /// Resets filter to the default state.
    /// </summary>
    public override void ResetFilter()
    {
        drpEventLogType.Value = String.Empty;
        fltEventCode.ResetFilter();
        fltSource.ResetFilter();
        fltUserName.ResetFilter();
        fltIPAddress.ResetFilter();
        fltDocumentName.ResetFilter();
        fltMachineName.ResetFilter();
        fltEventURL.ResetFilter();
        fltEventURLRef.ResetFilter();
        fltDescription.ResetFilter();
        fltUserAgent.ResetFilter();
        fltTimeBetween.Clear();
    }


    /// <summary>
    /// Resets the associated UniGrid control.
    /// </summary>
    protected void btnReset_Click(object sender, EventArgs e)
    {
        UniGrid grid = FilteredControl as UniGrid;
        if (grid != null)
        {
            grid.Reset();
        }
    }


    /// <summary>
    /// Applies the filter.
    /// </summary>
    protected void btnSearch_Click(object sender, EventArgs e)
    {
        UniGrid grid = FilteredControl as UniGrid;
        if (grid != null)
        {
            grid.ApplyFilter(sender, e);
        }

        ShowFilterElements(isAdvancedMode);
    }
    #endregion
}