Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Orchardcms 如何在orchard中添加新的票证摘要?_Orchardcms - Fatal编程技术网

Orchardcms 如何在orchard中添加新的票证摘要?

Orchardcms 如何在orchard中添加新的票证摘要?,orchardcms,Orchardcms,我已经创建了一个票证仪表板,在我使用管理员帐户登录后,它将显示两个票证摘要。一个是“您的机票摘要”,另一个是“所有机票摘要”。现在我正计划让我的管理员帐户查看其他帐户的票证摘要(如),但我不知道如何将其添加到票证仪表板。有人能告诉我如何操作吗?我猜你在上一篇文章中也提出了这个问题作为评论!但无论如何 有几种方法可以做到这一点。使用小部件表示票证摘要(对于用户和管理员)。主逻辑位于Modules/Orchard.CRM.Core/Drivers的仪表板驱动程序中 private DriverRes

我已经创建了一个票证仪表板,在我使用管理员帐户登录后,它将显示两个票证摘要。一个是“您的机票摘要”,另一个是“所有机票摘要”。现在我正计划让我的管理员帐户查看其他帐户的票证摘要(如),但我不知道如何将其添加到票证仪表板。有人能告诉我如何操作吗?

我猜你在上一篇文章中也提出了这个问题作为评论!但无论如何

有几种方法可以做到这一点。使用小部件表示票证摘要(对于用户和管理员)。主逻辑位于Modules/Orchard.CRM.Core/Drivers的仪表板驱动程序中

private DriverResult DisplayDetail(DashboardPart part, dynamic shapeHelper)
    {
        if (this.services.WorkContext.CurrentUser == null)
        {
            return null;
        }

        var contentQuery = this.services.ContentManager.HqlQuery().ForVersion(VersionOptions.Published);
        var statusRecords = this.basicDataService.GetStatusRecords().OrderBy(c => c.OrderId).ToList();

        DashboardViewModel model = new DashboardViewModel();
        model.CurrentUserId = this.services.WorkContext.CurrentUser.Id;
        model.IsCustomer = this.crmContentOwnershipService.IsCurrentUserCustomer();
        model.IsOperator = this.services.Authorizer.Authorize(Permissions.OperatorPermission);
        dynamic state = new JObject();

        // Query items created by customer
        if (model.IsCustomer)
        {
            // Ticket contentType
            state.ContentTypes = "Ticket";
            contentQuery = this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery, "Content", "ContentTypes", state);

            state.RequestingUser_Id = model.CurrentUserId.ToString(CultureInfo.InvariantCulture);
            contentQuery = this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery, TicketFieldsFilter.CategoryName, TicketFieldsFilter.RequestingUserType, state);

            var userTicketsCountByStateIds = groupQuery.GetCount(contentQuery, "TicketPartRecord", "StatusRecord.Id");

            model.CurrentUserRequestingTickets = new Collection<dynamic>();
            CRMHelper.AddStatusGroupRecordsToModel(statusRecords, userTicketsCountByStateIds, model.CurrentUserRequestingTickets);

            // overrude items of current users
            state.MaxDueDate = DateTime.UtcNow.Date;
            contentQuery = this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery, TicketFieldsFilter.CategoryName, TicketFieldsFilter.TicketDueDateType, state);
            model.CurrentUserOverrudeRequestingTicketCount = contentQuery.Count();
        }

        // Query the counts of the current user tickets group by stateId
        // *******************************************************
        if (model.IsOperator)
        {
            // Ticket contentType
            state.ContentTypes = "Ticket";
            contentQuery = this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery, "Content", "ContentTypes", state);

            dynamic temp = new
            {
                Users = new int[] { model.CurrentUserId },
                Teams = new int[] { },
                BusinessUnits = new int[] { },
                AccessType = ContentItemPermissionAccessTypes.Assignee
            };

            contentQuery = this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery, ContentItemPermissionFilter.CategoryName, ContentItemPermissionFilter.AnySelectedUserTeamBusinessUnit, temp);

            var userTicketsCountByStateIds = groupQuery.GetCount(contentQuery, "TicketPartRecord", "StatusRecord.Id");

            model.CurrentUserTickets = new Collection<dynamic>();
            CRMHelper.AddStatusGroupRecordsToModel(statusRecords, userTicketsCountByStateIds, model.CurrentUserTickets);

            // overrude items of current users
            state.MaxDueDate = DateTime.UtcNow.Date;
            contentQuery = this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery, TicketFieldsFilter.CategoryName, TicketFieldsFilter.TicketDueDateType, state);
            model.CurrentUserOverrudeItemsCount = contentQuery.Count();
            //*******************************************************
        }

        bool isAdmin = this.services.Authorizer.Authorize(Permissions.AdvancedOperatorPermission);

        if (isAdmin)
        {
            // Query the counts of the whole tickets in the system based on stateId
            state = new JObject();

            contentQuery = this.services.ContentManager.HqlQuery().ForVersion(VersionOptions.Published);

            state.ContentTypes = "Ticket";
            contentQuery = this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery, "Content", "ContentTypes", state);
            var ticketCountsByStateIds = groupQuery.GetCount(contentQuery, "TicketPartRecord", "StatusRecord.Id");

            model.AllTickets = new Collection<dynamic>();
            CRMHelper.AddStatusGroupRecordsToModel(statusRecords, ticketCountsByStateIds, model.AllTickets);

            state.MaxDueDate = DateTime.UtcNow.Date;
            contentQuery = this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery, TicketFieldsFilter.CategoryName, TicketFieldsFilter.TicketDueDateType, state);
            model.AllOverrudeItemsCount = contentQuery.Count();
        }

        // get items without any owner
        contentQuery = this.services.ContentManager.HqlQuery().ForVersion(VersionOptions.Published);
        state.ContentTypes = "Ticket";
        contentQuery = this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery, "Content", "ContentTypes", state);
        contentQuery = this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery, ContentItemPermissionFilter.CategoryName, "ContentItemPermissionPartRecord.ItemsWithoutAnyOwner", state);
        model.AllItemsWithoutOwnerCount = contentQuery.Count();

        // get overrude items count

        // display
        // 1) Number of your open, new, in progress, and closed tickets
        // 2) number of the unassigned, new, open, in progress and closed tickets in the system.
        return ContentShape("Parts_Dashboard",
            () => shapeHelper.Parts_Dashboard(
                Model: model
                ));
    }
private DriverResult DisplayDetail(仪表板零件、动态形状帮助)
{
if(this.services.WorkContext.CurrentUser==null)
{
返回null;
}
var contentQuery=this.services.ContentManager.HqlQuery().ForVersion(VersionOptions.Published);
var statusRecords=this.basicDataService.GetStatusRecords().OrderBy(c=>c.OrderId.ToList();
DashboardViewModel=新的DashboardViewModel();
model.CurrentUserId=this.services.WorkContext.CurrentUser.Id;
model.IsCustomer=this.crmcontownershipservice.IsCurrentUserCustomer();
model.IsOperator=this.services.Authorizer.Authorize(Permissions.OperatorPermission);
动态状态=新作业对象();
//由客户创建的查询项
if(型号:IsCustomer)
{
//票证内容类型
state.ContentTypes=“票证”;
contentQuery=this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery,“内容”,“内容类型”,状态);
state.RequestingUser_Id=model.CurrentUserId.ToString(CultureInfo.InvariantCulture);
contentQuery=this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery,TicketFieldFilter.CategoryName,TicketFieldFilter.RequestingUserType,state);
var userticketcountbystateids=groupQuery.GetCount(contentQuery,“TicketPartRecord”,“StatusRecord.Id”);
model.CurrentUserRequestingTickets=新集合();
CRMHelper.AddStatusGroupRecordsToModel(statusRecords、UserTicketCountByStateID、model.CurrentUserRequestingTickets);
//覆盖当前用户的项目
state.MaxDueDate=DateTime.UtcNow.Date;
contentQuery=this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery,TicketFieldFilter.CategoryName,TicketFieldFilter.TicketDueDateType,state);
model.currentUserOverudeRequestingticketCount=contentQuery.Count();
}
//按stateId查询当前用户票证组的计数
// *******************************************************
if(模型等参器)
{
//票证内容类型
state.ContentTypes=“票证”;
contentQuery=this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery,“内容”,“内容类型”,状态);
动态温度=新
{
Users=new int[]{model.CurrentUserId},
Teams=newint[]{},
BusinessUnits=newint[]{},
AccessType=ContentItemPermissionAccessTypes.Assignee
};
contentQuery=this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery,ContentItemPermissionFilter.CategoryName,ContentItemPermissionFilter.AnySelectedUserTeamBusinessUnit,temp);
var userticketcountbystateids=groupQuery.GetCount(contentQuery,“TicketPartRecord”,“StatusRecord.Id”);
model.CurrentUserTickets=新集合();
CRMHelper.AddStatusGroupRecordsToModel(statusRecords、UserTicketCountByStateID、model.CurrentUserTickets);
//覆盖当前用户的项目
state.MaxDueDate=DateTime.UtcNow.Date;
contentQuery=this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery,TicketFieldFilter.CategoryName,TicketFieldFilter.TicketDueDateType,state);
model.CurrentUserOverreadItemsCount=contentQuery.Count();
//*******************************************************
}
bool isAdmin=this.services.Authorizer.Authorize(Permissions.AdvancedOperatorPermission);
如果(isAdmin)
{
//根据stateId查询系统中的整张票数
state=newjobject();
contentQuery=this.services.ContentManager.HqlQuery().ForVersion(VersionOptions.Published);
state.ContentTypes=“票证”;
contentQuery=this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery,“内容”,“内容类型”,状态);
var ticketCountsByStateIds=groupQuery.GetCount(contentQuery,“TicketPartRecord”,“StatusRecord.Id”);
model.AllTickets=新集合();
CRMHelper.AddStatusGroupRecordsToModel(statusRecords、TicketCountsSystemId、model.AllTickets);
state.MaxDueDate=DateTime.UtcNow.Date;
contentQuery=this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery,TicketFieldFilter.CategoryName,TicketFieldFilter.TicketDueDateType,state);
model.alloverrudeItemScont=contentQuery.Count();
}
//获取没有任何所有者的项目
contentQuery=this.services.ContentManager.HqlQuery().ForVersion(VersionOptions.Published);
state.ContentTypes=“票证”;
contentQuery=this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery,“内容”,“内容类型”,状态);
contentQuery=this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery,ContentItemPermissionFilter.CategoryName,“ContentItemPermissionPartRecord.ItemsWithoutAnyOwner”,状态);
model.AllItemsWithoutOwnerCount=contentQuery.Count();
//获取覆盖项计数
//展示
       private DriverResult DisplayDetail(NewUserDashboardPart part, dynamic shapeHelper)
    {
        if (this.services.WorkContext.CurrentUser == null)
        {
            return null;
        }

        var contentQuery = this.services.ContentManager.HqlQuery().ForVersion(VersionOptions.Published);
        var statusRecords = this.basicDataService.GetStatusRecords().OrderBy(c => c.OrderId).ToList();

        DashboardViewModel model = new DashboardViewModel();
        model.CurrentUserId = NewUserDashboardPart.UserId;
        dynamic state = new JObject();

        // Query the counts of the current user tickets group by stateId
        // *******************************************************
             // Ticket contentType
            state.ContentTypes = "Ticket";
            contentQuery = this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery, "Content", "ContentTypes", state);

            dynamic temp = new
            {
                Users = new int[] { model.CurrentUserId },
                Teams = new int[] { },
                BusinessUnits = new int[] { },
                AccessType = ContentItemPermissionAccessTypes.Assignee
            };

            contentQuery = this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery, ContentItemPermissionFilter.CategoryName, ContentItemPermissionFilter.AnySelectedUserTeamBusinessUnit, temp);

            var userTicketsCountByStateIds = groupQuery.GetCount(contentQuery, "TicketPartRecord", "StatusRecord.Id");

            model.CurrentUserTickets = new Collection<dynamic>();
            CRMHelper.AddStatusGroupRecordsToModel(statusRecords, userTicketsCountByStateIds, model.CurrentUserTickets);

            // overrude items of current users
            state.MaxDueDate = DateTime.UtcNow.Date;
            contentQuery = this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery, TicketFieldsFilter.CategoryName, TicketFieldsFilter.TicketDueDateType, state);
            model.CurrentUserOverrudeItemsCount = contentQuery.Count();
            //*******************************************************

        // display
        // 1) Number of your open, new, in progress, and closed tickets
        // 2) number of the unassigned, new, open, in progress and closed tickets in the system.
        return ContentShape("Parts_Dashboard",
            () => shapeHelper.Parts_Dashboard(
                Model: model
                ));
    }