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/Staging/Tools/Controls/ViewTask.ascx.cs
using System;
using System.Data;
using System.Linq;
using System.Text;
using System.Xml;
using System.Collections.Generic;

using CMS.DataEngine;
using CMS.DocumentEngine;
using CMS.Helpers;
using CMS.Base;
using CMS.Synchronization;
using CMS.UIControls;
using CMS.Membership;

public partial class CMSModules_Staging_Tools_Controls_ViewTask : CMSAdminEditControl
{
    #region "Properties"

    /// <summary>
    /// Gets or sets the ID of the task.
    /// </summary>
    public int TaskId
    {
        get;
        set;
    }

    #endregion


    protected void Page_Load(object sender, EventArgs e)
    {
        StagingTaskInfo ti = StagingTaskInfoProvider.GetTaskInfo(TaskId);
        // Set edited object
        EditedObject = ti;

        if (ti == null)
        {
            return;
        }

        ((CMSDeskPage)Page).PageTitle.TitleText += " (" + HTMLHelper.HTMLEncode(ti.TaskTitle) + ")";

        // Get users and task groups
        var usersWhoModifiedObject = GetUsersFromStagingTask(ti);
        var taskInGroups = GetTaskGroupsFromStagingTask(ti);

        string objectType = ti.TaskObjectType;
        if (ti.TaskNodeID > 0)
        {
            objectType = TreeNode.OBJECT_TYPE;
        }

        viewDataSet.ObjectType = objectType;
        viewDataSet.DataSet = GetDataSet(ti.TaskData, ti.TaskType, ti.TaskObjectType);
        viewDataSet.AdditionalContent = GetTaskHeader(ti, usersWhoModifiedObject, taskInGroups);
    }


    /// <summary>
    /// Returns task header table in HTML code
    /// </summary>
    private string GetTaskHeader(StagingTaskInfo ti, IEnumerable<string> usersWhoModifiedObject, IEnumerable<string> taskInGroups)
    {
        const string FORMATTED_TABLE_ROW = "<tr><td class=\"Title Grid\">{0}</td><td>{1}</td></tr>";

        var taskHeaderInHtml = "<table class=\"table table-hover\">";
        taskHeaderInHtml += String.Format(FORMATTED_TABLE_ROW, GetString("staging.detailtasktype"), GetEncodedTaskType(ti));
        taskHeaderInHtml += String.Format(FORMATTED_TABLE_ROW, GetString("staging.detailtasktime"), ti.TaskTime);
        taskHeaderInHtml += String.Format(FORMATTED_TABLE_ROW, GetString("staging.taskprocessedby"), GetEncodedTaskProccessedBy(ti));
        taskHeaderInHtml += String.Format(FORMATTED_TABLE_ROW, GetString("taskUser.taskModifiedBy"), GetEncodedEnumeration(usersWhoModifiedObject));
        taskHeaderInHtml += String.Format(FORMATTED_TABLE_ROW, GetString("stagingTaskGroup.taskGroupedIn"), GetEncodedEnumeration(taskInGroups));
        taskHeaderInHtml += "</table>";
        return taskHeaderInHtml;
    }


    private static string GetEncodedTaskType(StagingTaskInfo ti)
    {
        return HTMLHelper.HTMLEncode(ti.TaskType.ToLocalizedString(TaskHelper.TASK_TYPE_RESOURCE_STRING_PREFIX));
    }


    private static string GetEncodedTaskProccessedBy(StagingTaskInfo ti)
    {
        return DataHelper.GetNotEmpty(ti.TaskServers.Trim(';').Replace(";", ", "), "-");
    }


    private static string GetEncodedEnumeration(IEnumerable<string> items)
    {
        return HTMLHelper.HTMLEncode(String.Join(", ", items));
    }


    /// <summary>
    /// Gets the usernames of users, who modified object for which the given staging task was created.
    /// </summary>
    /// <param name="ti">Staging task</param>
    /// <returns>Returns usernames of users, who modified object for which the given staging task was created</returns>
    private static IEnumerable<string> GetUsersFromStagingTask(StagingTaskInfo ti)
    {
        List<string> usersWhoModifiedObject = new List<string>();

        UserInfoProvider.GetUsers()
            .Columns("UserID", "UserName")
            .WhereIn("UserID", StagingTaskUserInfoProvider.GetTaskUsers().Column("UserID").WhereEquals("TaskID", ti.TaskID))
            .ForEachObject(u => usersWhoModifiedObject.Add(u.UserName));

        return usersWhoModifiedObject;
    }


    /// <summary>
    /// Gets the task groups, in which the staging task is.
    /// </summary>
    /// <param name="ti">Staging task</param>
    /// <returns>Returns display names of task groups, in which the task exists</returns>
    private static IEnumerable<string> GetTaskGroupsFromStagingTask(StagingTaskInfo ti)
    {
        List<string> taskGroups = new List<string>();

        TaskGroupInfoProvider.GetTaskGroups()
            .Columns("TaskGroupID", "TaskGroupCodeName")
            .WhereIn("TaskGroupID", TaskGroupTaskInfoProvider.GetTaskGroupTasks().WhereEquals("TaskID", ti.TaskID).Column("TaskGroupID"))
            .ForEachObject(t => taskGroups.Add(t.TaskGroupCodeName));

        return taskGroups;
    }


    /// <summary>
    /// Returns the dataset loaded from the given document data.
    /// </summary>
    /// <param name="documentData">Document data to make the dataset from</param>
    /// <param name="taskType">Task type</param>
    /// <param name="taskObjectType">Task object type</param>
    protected virtual DataSet GetDataSet(string documentData, TaskTypeEnum taskType, string taskObjectType)
    {
        var man = SyncManager.GetInstance();
        man.OperationType = OperationTypeEnum.Synchronization;
        string className = DocumentHierarchyHelper.GetNodeClassName(documentData, ExportFormatEnum.XML);
        DataSet ds = man.GetSynchronizationTaskDataSet(taskType, className, taskObjectType);

        XmlParserContext xmlContext = new XmlParserContext(null, null, null, XmlSpace.None);
        XmlReader reader = new XmlTextReader(documentData, XmlNodeType.Element, xmlContext);

        return DataHelper.ReadDataSetFromXml(ds, reader, null, null);
    }
}