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/App_Code/CMSModules/WebFarm/WebFarmTasksExtender.cs
using System;
using System.Data;
using System.Linq;
using System.Web.UI.WebControls;

using CMS;
using CMS.Base;
using CMS.ExtendedControls;
using CMS.ExtendedControls.ActionsConfig;
using CMS.Helpers;
using CMS.UIControls;
using CMS.WebFarmSync;
using CMS.WebFarmSync.Internal;

[assembly: RegisterCustomClass("WebFarmTasksExtender", typeof(WebFarmTasksExtender))]

public class WebFarmTasksExtender : ControlExtender<UniGrid>
{
    #region "Variables"

    private readonly string mAllServers = UniSelector.US_ALL_RECORDS.ToString();
    private string mSelectedServer;
    private WebFarmServerInfo mSelectedServerInfo;

    #endregion


    #region "Properties"

    /// <summary>
    /// Selected web farm server name.
    /// </summary>
    private string SelectedServerName
    {
        get
        {
            if (string.IsNullOrEmpty(mSelectedServer))
            {
                mSelectedServer = ValidationHelper.GetString(Control.UIContext.Data["WebFarmServerName"], mAllServers);
            }

            return mSelectedServer;
        }
    }


    /// <summary>
    /// Selected web farm server info object.
    /// </summary>
    private WebFarmServerInfo SelectedServerInfo
    {
        get
        {
            if (SelectedServerName == mAllServers)
            {
                return null;
            }

            // Get selected server info if server is not loaded yet
            if (mSelectedServerInfo == null)
            {
                mSelectedServerInfo = WebFarmServerInfoProvider.GetWebFarmServerInfo(SelectedServerName);
            }

            // Selected server not found - clear cache and try again (server can be created on other instance)
            if (mSelectedServerInfo == null)
            {
                WebFarmContext.Clear(false);
                mSelectedServerInfo = WebFarmServerInfoProvider.GetWebFarmServerInfo(SelectedServerName);
            }

            return mSelectedServerInfo;
        }
    }


    /// <summary>
    /// Indicates if any particular server was selected.
    /// </summary>
    private bool ServerSelected
    {
        get
        {
            return (SelectedServerInfo != null);
        }
    }

    #endregion


    /// <summary>
    /// Custom control initialization. 
    /// </summary>
    public override void OnInit()
    {
        Control.GridView.RowDataBound += Control_GridViewRowDataBound;
        Control.OnAction += Control_OnAction;
        Control.HeaderActions.ActionPerformed += HeaderActions_ActionPerformed;
        Control.PreRender += Control_OnPreRender;
        Control.GridView.AddCssClass("web-farm");

        // Add header actions
        InitHeaderActions();

        if ((WebFarmLicenseHelper.ServerCount > 1) && !WebFarmLicenseHelper.LicenseIsValid)
        {
            Control.ShowError(ResHelper.GetString("webfarm.unsufficientdomainlicense"));
        }
    }


    private void Control_OnPreRender(object sender, EventArgs eventArgs)
    {
        Control.GridView.Columns[1].Visible = !ServerSelected;
    }


    /// <summary>
    /// Initialize Header actions
    /// </summary>
    private void InitHeaderActions()
    {
        // Prepare header actions
        var clearAction = new HeaderAction
        {
            ButtonStyle = ButtonStyle.Default,
            Text = ResHelper.GetString("WebFarmTasks_List.EmptyButton"),
            CommandName = "clear"
        };
        Control.HeaderActions.AddAction(clearAction);
    }


    /// <summary>
    /// Handles the UniGrid's OnAction event.
    /// </summary>
    /// <param name="actionName">Name of item (button) that throws event</param>
    /// <param name="actionArgument">ID (value of Primary key) of corresponding data row</param>
    private void Control_OnAction(string actionName, object actionArgument)
    {
        if (actionName == "delete")
        {
            int taskId = ValidationHelper.GetInteger(actionArgument, 0);

            // Delete object from database
            if (ServerSelected)
            {
                // Delete task binding to server
                WebFarmTaskInfoProvider.DeleteServerTask(SelectedServerInfo.ServerID, taskId);
            }
            else
            {
                // Delete task object
                WebFarmTaskInfoProvider.DeleteWebFarmTaskInfo(taskId);
            }

            Control.ReloadData();
        }
    }



    private void Control_GridViewRowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            string error = ValidationHelper.GetString(((DataRowView)(e.Row.DataItem)).Row["ErrorMessage"], string.Empty);
            if (!String.IsNullOrEmpty(error))
            {
                e.Row.CssClass = "error";
            }
        }
    }


    /// <summary>
    /// Performs header actions.
    /// </summary>
    protected void HeaderActions_ActionPerformed(object sender, CommandEventArgs e)
    {
        switch (e.CommandName.ToLowerCSafe())
        {
            case "clear":
                EmptyTasks();
                break;
        }
    }


    /// <summary>
    /// Clear task list.
    /// </summary>
    private void EmptyTasks()
    {
        if (!ServerSelected)
        {
            // Delete all task objects
            WebFarmTaskInfoProvider.DeleteServerTasks();
        }
        else
        {
            // Delete bindings to specified server
            WebFarmTaskInfoProvider.DeleteServerTasks(SelectedServerInfo.ServerID);
        }

        Control.ReloadData();
    }
}