ReportsService.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using MediaBrowser.Controller.Entities;
  2. using MediaBrowser.Controller.Library;
  3. using MediaBrowser.Model.Querying;
  4. using System.Threading.Tasks;
  5. namespace MediaBrowser.Api.Reports
  6. {
  7. public class ReportsService : BaseApiService
  8. {
  9. private readonly ILibraryManager _libraryManager;
  10. public ReportsService(ILibraryManager libraryManager)
  11. {
  12. _libraryManager = libraryManager;
  13. }
  14. public async Task<object> Get(GetItemReport request)
  15. {
  16. var queryResult = await GetQueryResult(request).ConfigureAwait(false);
  17. var reportResult = GetReportResult(queryResult);
  18. return ToOptimizedResult(reportResult);
  19. }
  20. private ReportResult GetReportResult(QueryResult<BaseItem> queryResult)
  21. {
  22. var reportResult = new ReportResult();
  23. // Fill rows and columns
  24. return reportResult;
  25. }
  26. private Task<QueryResult<BaseItem>> GetQueryResult(BaseReportRequest request)
  27. {
  28. // Placeholder in case needed later
  29. User user = null;
  30. var parentItem = string.IsNullOrEmpty(request.ParentId) ?
  31. (user == null ? _libraryManager.RootFolder : user.RootFolder) :
  32. _libraryManager.GetItemById(request.ParentId);
  33. return ((Folder)parentItem).GetItems(GetItemsQuery(request, user));
  34. }
  35. private InternalItemsQuery GetItemsQuery(BaseReportRequest request, User user)
  36. {
  37. var query = new InternalItemsQuery
  38. {
  39. User = user,
  40. CollapseBoxSetItems = false
  41. };
  42. // Set query values based on request
  43. // Example
  44. //query.IncludeItemTypes = new[] {"Movie"};
  45. return query;
  46. }
  47. }
  48. }