|
|
|
@ -0,0 +1,64 @@
|
|
|
|
|
using MediaBrowser.Controller.Entities;
|
|
|
|
|
using MediaBrowser.Controller.Library;
|
|
|
|
|
using MediaBrowser.Model.Querying;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
namespace MediaBrowser.Api.Reports
|
|
|
|
|
{
|
|
|
|
|
public class ReportsService : BaseApiService
|
|
|
|
|
{
|
|
|
|
|
private readonly ILibraryManager _libraryManager;
|
|
|
|
|
|
|
|
|
|
public ReportsService(ILibraryManager libraryManager)
|
|
|
|
|
{
|
|
|
|
|
_libraryManager = libraryManager;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<object> Get(GetItemReport request)
|
|
|
|
|
{
|
|
|
|
|
var queryResult = await GetQueryResult(request).ConfigureAwait(false);
|
|
|
|
|
|
|
|
|
|
var reportResult = GetReportResult(queryResult);
|
|
|
|
|
|
|
|
|
|
return ToOptimizedResult(reportResult);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private ReportResult GetReportResult(QueryResult<BaseItem> queryResult)
|
|
|
|
|
{
|
|
|
|
|
var reportResult = new ReportResult();
|
|
|
|
|
|
|
|
|
|
// Fill rows and columns
|
|
|
|
|
|
|
|
|
|
return reportResult;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Task<QueryResult<BaseItem>> GetQueryResult(BaseReportRequest request)
|
|
|
|
|
{
|
|
|
|
|
// Placeholder in case needed later
|
|
|
|
|
User user = null;
|
|
|
|
|
|
|
|
|
|
var parentItem = string.IsNullOrEmpty(request.ParentId) ?
|
|
|
|
|
(user == null ? _libraryManager.RootFolder : user.RootFolder) :
|
|
|
|
|
_libraryManager.GetItemById(request.ParentId);
|
|
|
|
|
|
|
|
|
|
return ((Folder)parentItem).GetItems(GetItemsQuery(request, user));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private InternalItemsQuery GetItemsQuery(BaseReportRequest request, User user)
|
|
|
|
|
{
|
|
|
|
|
var query = new InternalItemsQuery
|
|
|
|
|
{
|
|
|
|
|
User = user,
|
|
|
|
|
CollapseBoxSetItems = false
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Set query values based on request
|
|
|
|
|
|
|
|
|
|
// Example
|
|
|
|
|
//query.IncludeItemTypes = new[] {"Movie"};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return query;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|