私はチケットダッシュボードを作成しました。私は管理者アカウントでログインした後、2つのチケット要約を表示します。 1つは「あなたのチケット要約」で、もう1つは「すべてのチケット要約」です。今、私は管理者アカウントに他のアカウントのチケットの要約(例えばthis)を見せたいと思っていますが、チケットダッシュボードに追加する方法がわかりません。果樹園に新しいチケットサマリーを追加するには?
1
A
答えて
1
あなたは以前の投稿のコメントとして質問したと思います!しかしとにかく、
そうするいくつかのアプローチがあります。 Orchard Collaborationはウィジェットを使用して、チケットサマリー(ユーザーと管理者の両方)を表します。メインロジックは、モジュール/ Orchard.CRM.Core/DriversのDashboardDriverにあります。
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
));
}
新しいウィジェットを作成する必要があります。 DashboardDriverは、ログインしたユーザーのチケットと、すべてのチケットの概要を表します。新しいウィジェットでは、ユーザーのサマリーチケットのみを表すことができます。新しいウィジェットにはUserIdプロパティが必要で、ログインしたユーザーの代わりにそのユーザーのチケット要約を表します。このようなもの:
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
));
}
関連する問題
- 1. 果樹園にサービスを注入するには1.10.1?
- 2. CKEditorバージョンを使用すると、果樹園のCMSでエラー
- 3. 果樹園の検索と索引付け
- 4. 果樹園:完全なソースかどうか?
- 5. 開発データベースと本番データベースの果樹園のコンテンツを統合します
- 6. オーチャードCMS - どのようにApp_Dataに\サイト\ \ App_Dataに\果樹園を除外するためにwebdeploy
- 7. dendextendの樹形図にノードラベルを追加する
- 8. 新しいコントロールを追加した後に新しい行を追加する
- 9. ボタン新しいデータの検証を追加するには(マクロでExcelに新しいブックを追加する)
- 10. SQLite - 新しいitensを結果に追加
- 11. 新しいボタンを追加してw2uiグリッドに新しいアイテムを追加するには?
- 12. 樹液-selectで配列項目を表示し、アイテムにアンカータグを追加する
- 13. 新しいリソースを新しいリソースに追加する
- 14. 新しいリストに新しい項目を追加する
- 15. VBAにアクセスExcelに新しいシートを追加するには?
- 16. Rのデータフレームの新しい列に新しい値を追加するには?
- 17. trの新しい行に新しいテーブルを追加するには?
- 18. 既存のテーブルに新しいカラムを追加することの効果
- 19. エポックに追加して、新しい日付をJavascriptに追加する
- 20. Windowsのデスクトップアイコンに新しいメニューを追加するには?
- 21. FreePBXに新しいメニューカテゴリを追加するには
- 22. 新しい.phpページをテストレールに追加するには?
- 23. LUISインテントに新しい発言を追加するには?
- 24. オブジェクトに新しいプロパティを追加するには?
- 25. メールの内容に新しい行を追加するには?
- 26. tkinterテキストの新しい行にタグを追加するには?
- 27. ffmpegライブラリに新しいフィルタを追加するには
- 28. OrangeHRMの候補に新しいフィールドを追加するには
- 29. パンダのデータフレームに新しい列を追加するには?
- 30. c# - itext7 - 新しいページにテキストを追加するには?