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/EventManager/Controls/EventList.ascx.cs
using System;
using System.Web.UI.WebControls;
using System.Data;

using CMS.Helpers;
using CMS.Base;
using CMS.SiteProvider;
using CMS.Membership;
using CMS.DocumentEngine;
using CMS.UIControls;
using CMS.ExtendedControls;
using CMS.Globalization;
using CMS.DataEngine;
using CMS.PortalEngine;

public partial class CMSModules_EventManager_Controls_EventList : CMSAdminControl
{
    #region "Private variables"

    private UserInfo currentUserInfo;
    private SiteInfo currentSiteInfo;
    private string mOrderBy = "EventDate DESC";
    private string mItemsPerPage = String.Empty;
    private string mEventScope = "all";
    private string mSiteName = String.Empty;
    private string mGMTTooltip;


    public CMSModules_EventManager_Controls_EventList()
    {
        UsePostBack = false;
        SelectedEventID = 0;
    }

    #endregion


    #region "Properties"

    /// <summary>
    /// Messages placeholder
    /// </summary>
    public override MessagesPlaceHolder MessagesPlaceHolder
    {
        get
        {
            return plcMess;
        }
    }


    /// <summary>
    /// Indicates if control is used on live site.
    /// </summary>
    public override bool IsLiveSite
    {
        get
        {
            return base.IsLiveSite;
        }
        set
        {
            plcMess.IsLiveSite = value;
            base.IsLiveSite = value;
        }
    }


    /// <summary>
    /// Indicates whether change location or postback if edit.
    /// </summary>
    public bool UsePostBack
    {
        get;
        set;
    }


    /// <summary>
    /// Site name filter.
    /// </summary>
    public string SiteName
    {
        get
        {
            return mSiteName;
        }
        set
        {
            mSiteName = value;
        }
    }


    /// <summary>
    /// ID of selected event.
    /// </summary>
    public int SelectedEventID
    {
        get;
        set;
    }


    /// <summary>
    /// Gets or sets the order by condition.
    /// </summary>
    public string OrderBy
    {
        get
        {
            return mOrderBy;
        }
        set
        {
            mOrderBy = value;
        }
    }


    /// <summary>
    /// Gets or sets the value of items per page.
    /// </summary>
    public string ItemsPerPage
    {
        get
        {
            return mItemsPerPage;
        }
        set
        {
            mItemsPerPage = value;
        }
    }


    /// <summary>
    /// Gets or sets event date filter.
    /// </summary>
    public string EventScope
    {
        get
        {
            return mEventScope;
        }
        set
        {
            mEventScope = value;
        }
    }


    /// <summary>
    /// Stop processing.
    /// </summary>
    public override bool StopProcessing
    {
        get
        {
            return base.StopProcessing;
        }
        set
        {
            base.StopProcessing = value;
            gridElem.StopProcessing = value;
        }
    }

    #endregion


    #region "Page events"

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!URLHelper.IsPostback())
        {
            drpEventScope.Items.Add(new ListItem(GetString("general.selectall"), "all"));
            drpEventScope.Items.Add(new ListItem(GetString("eventmanager.eventscopeupcoming"), "upcoming"));

            drpEventScope.SelectedValue = QueryHelper.GetString("scope", "all");
        }

        EventScope = drpEventScope.SelectedValue;

        btnFilter.Text = GetString("general.filter");

        gridElem.HideControlForZeroRows = false;
        gridElem.ZeroRowsText = GetString("Events_List.NoBookingEvent");
        gridElem.OnAction += gridElem_OnAction;

        if ((!RequestHelper.IsPostBack()) && (!string.IsNullOrEmpty(ItemsPerPage)))
        {
            gridElem.Pager.DefaultPageSize = ValidationHelper.GetInteger(ItemsPerPage, -1);
        }

        gridElem.OrderBy = OrderBy;
        gridElem.OnExternalDataBound += gridElem_OnExternalDataBound;

        gridElem.GridName = UsePostBack ? "~/CMSModules/EventManager/Controls/Events_List_Control.xml" : "~/CMSModules/EventManager/Controls/Events_List.xml";

        SetWhereCondition();
    }


    protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);

        ScriptHelper.RegisterModule(this, "CMS.EventManager/EventsGrid", new
        {
            GridSelector = "#" + gridElem.ClientID,
            PagesApplicationHash = UIContextHelper.GetApplicationHash("cms.content", "content"),
            EventDetailURL = UIContextHelper.GetElementUrl("CMS.EventManager", "DetailsEvent")
        });
    }

    #endregion


    #region "Methods"

    /// <summary>
    /// Reloads data.
    /// </summary>
    public override void ReloadData()
    {
        SetWhereCondition();
        gridElem.ReloadData();
        base.ReloadData();
    }


    private void SetWhereCondition()
    {
        // Check existence of CMS.BookingEvent dataclass
        if (DataClassInfoProvider.GetDataClassInfo("CMS.BookingEvent") != null)
        {
            // Filter site name            
            string siteName = SiteName;
            if (siteName == String.Empty)
            {
                siteName = SiteContext.CurrentSiteName;
            }

            // If not show all
            if (siteName != TreeProvider.ALL_SITES)
            {
                gridElem.WhereCondition = "(NodeLinkedNodeID IS NULL AND NodeSiteID = " + SiteInfoProvider.GetSiteID(siteName) + ")";
            }
            else
            {
                gridElem.WhereCondition = "NodeLinkedNodeID IS NULL";
            }

            // Filter time interval
            if (EventScope == "all")
            {
                return;
            }

            string conditionOperator = (EventScope == "upcoming") ? ">=" : "<=";
            gridElem.WhereCondition = SqlHelper.AddWhereCondition(gridElem.WhereCondition, String.Format("EventDate {0} @Date", conditionOperator));

            QueryDataParameters parameters = new QueryDataParameters();
            parameters.Add("@Date", DateTime.Now);

            gridElem.QueryParameters = parameters;
        }
        else
        {
            // Document type with code name 'CMS.BookingEvent' does not exist
            ShowError(GetString("Events_List.NoBookingEventClass"));
        }
    }

    #endregion


    #region "Grid events"

    /// <summary>
    /// Manage if user edit event.
    /// </summary>
    /// <param name="actionName">Edit</param>
    /// <param name="actionArgument">Id of event</param>
    protected void gridElem_OnAction(string actionName, object actionArgument)
    {
        switch (actionName.ToLowerCSafe())
        {
            case "view":
                SelectedEventID = Convert.ToInt32(actionArgument);
                break;
        }
    }


    /// <summary>
    /// Handles data bound event.
    /// </summary>
    protected object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        string result = string.Empty;
        DataRowView data;

        switch (sourceName.ToLowerCSafe())
        {
            case "view":
                {
                    CMSGridActionButton editButton = ((CMSGridActionButton)sender);
                    var dataItemRow = ((DataRowView)(((GridViewRow)(parameter)).DataItem)).Row;
                    var nodeID = dataItemRow.Field<Int32>("NodeID");

                    editButton.Attributes.Add("data-node-id", nodeID.ToString());
                    break;
                }

            // Create link to event document 
            case "documentname":
                {
                    data = (DataRowView)parameter;
                    string documentName = ValidationHelper.GetString(data["DocumentName"], String.Empty);
                    string culture = ValidationHelper.GetString(data["DocumentCulture"], String.Empty);
                    int nodeID = ValidationHelper.GetInteger(data["NodeID"], 0);

                    SiteInfo si = SiteInfoProvider.GetSiteInfo(data["NodeSiteID"].ToInteger(0));
                    if (si != null)
                    {
                        return "<a class=\"js-unigrid-action js-edit\" " +
                               "href=\"javascript:void(0)\" " +
                               "data-node-id=\"" + nodeID + "\" " +
                               "data-document-culture=\"" + culture + "\" >" + HTMLHelper.HTMLEncode(documentName) + "</a>";
                    }
                }
                return HTMLHelper.HTMLEncode(parameter.ToString());

            case "eventtooltip":
                data = (DataRowView)parameter;
                return UniGridFunctions.DocumentNameTooltip(data);

            case "eventdate":
            case "eventopenfrom":
            case "eventopento":
            case "eventdatetooltip":
            case "eventopenfromtooltip":
            case "eventopentotooltip":
                if (!String.IsNullOrEmpty(parameter.ToString()))
                {
                    if (currentUserInfo == null)
                    {
                        currentUserInfo = MembershipContext.AuthenticatedUser;
                    }
                    if (currentSiteInfo == null)
                    {
                        currentSiteInfo = SiteContext.CurrentSite;
                    }

                    if (sourceName.EndsWithCSafe("tooltip"))
                    {
                        return mGMTTooltip ?? (mGMTTooltip = TimeZoneHelper.GetUTCLongStringOffset(currentUserInfo, currentSiteInfo));
                    }

                    DateTime time = ValidationHelper.GetDateTime(parameter, DateTimeHelper.ZERO_TIME);
                    return TimeZoneHelper.ConvertToUserTimeZone(time, true, currentUserInfo, currentSiteInfo);
                }
                return result;
            case "eventenddate":
            case "eventenddatetooltip":
                data = (DataRowView)parameter;
                try
                {
                    parameter = data["eventenddate"];
                }
                catch
                {
                    parameter = null;
                }

                if ((parameter != null) && !String.IsNullOrEmpty(parameter.ToString()))
                {
                    if (currentUserInfo == null)
                    {
                        currentUserInfo = MembershipContext.AuthenticatedUser;
                    }
                    if (currentSiteInfo == null)
                    {
                        currentSiteInfo = SiteContext.CurrentSite;
                    }

                    if (sourceName.EndsWithCSafe("tooltip"))
                    {
                        return mGMTTooltip ?? (mGMTTooltip = TimeZoneHelper.GetUTCLongStringOffset(currentUserInfo, currentSiteInfo));
                    }

                    DateTime time = ValidationHelper.GetDateTime(parameter, DateTimeHelper.ZERO_TIME);
                    return TimeZoneHelper.ConvertToUserTimeZone(time, true, currentUserInfo, currentSiteInfo);
                }
                return result;
        }

        return parameter;
    }

    #endregion
}