diff options
Diffstat (limited to 'MediaBrowser.Api/Reports/Stat/ReportStatBuilder.cs')
| -rw-r--r-- | MediaBrowser.Api/Reports/Stat/ReportStatBuilder.cs | 256 |
1 files changed, 0 insertions, 256 deletions
diff --git a/MediaBrowser.Api/Reports/Stat/ReportStatBuilder.cs b/MediaBrowser.Api/Reports/Stat/ReportStatBuilder.cs deleted file mode 100644 index 52b095dee..000000000 --- a/MediaBrowser.Api/Reports/Stat/ReportStatBuilder.cs +++ /dev/null @@ -1,256 +0,0 @@ -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; -using System; -using System.Collections.Generic; -using System.Linq; - -namespace MediaBrowser.Api.Reports -{ - /// <summary> A report stat builder. </summary> - /// <seealso cref="T:MediaBrowser.Api.Reports.ReportBuilderBase"/> - public class ReportStatBuilder : ReportBuilderBase - { - #region [Constructors] - - /// <summary> - /// Initializes a new instance of the MediaBrowser.Api.Reports.ReportStatBuilder class. </summary> - /// <param name="libraryManager"> Manager for library. </param> - public ReportStatBuilder(ILibraryManager libraryManager) - : base(libraryManager) - { - } - - #endregion - - #region [Public Methods] - - /// <summary> Gets report stat result. </summary> - /// <param name="items"> The items. </param> - /// <param name="reportIncludeItemTypes"> List of types of the report include items. </param> - /// <param name="topItem"> The top item. </param> - /// <returns> The report stat result. </returns> - public ReportStatResult GetResult(BaseItem[] items, ReportIncludeItemTypes reportIncludeItemTypes, int topItem = 5) - { - ReportStatResult result = new ReportStatResult(); - result = this.GetResultGenres(result, items, topItem); - result = this.GetResultStudios(result, items, topItem); - result = this.GetResultPersons(result, items, topItem); - result = this.GetResultProductionYears(result, items, topItem); - result = this.GetResultCommunityRatings(result, items, topItem); - result = this.GetResultParentalRatings(result, items, topItem); - - switch (reportIncludeItemTypes) - { - case ReportIncludeItemTypes.Season: - case ReportIncludeItemTypes.Series: - case ReportIncludeItemTypes.MusicAlbum: - case ReportIncludeItemTypes.MusicArtist: - case ReportIncludeItemTypes.Game: - break; - case ReportIncludeItemTypes.Movie: - case ReportIncludeItemTypes.BoxSet: - - break; - case ReportIncludeItemTypes.Book: - case ReportIncludeItemTypes.Episode: - case ReportIncludeItemTypes.Video: - case ReportIncludeItemTypes.MusicVideo: - case ReportIncludeItemTypes.Trailer: - case ReportIncludeItemTypes.Audio: - case ReportIncludeItemTypes.BaseItem: - default: - break; - } - - result.Groups = result.Groups.OrderByDescending(n => n.Items.Count()).ToList(); - - return result; - } - - #endregion - - #region [Protected Internal Methods] - /// <summary> Gets the headers. </summary> - /// <typeparam name="H"> Type of the header. </typeparam> - /// <param name="request"> The request. </param> - /// <returns> The headers. </returns> - /// <seealso cref="M:MediaBrowser.Api.Reports.ReportBuilderBase.GetHeaders{H}(H)"/> - protected internal override List<ReportHeader> GetHeaders<H>(H request) - { - throw new NotImplementedException(); - } - - #endregion - - #region [Private Methods] - - /// <summary> Gets the groups. </summary> - /// <param name="result"> The result. </param> - /// <param name="header"> The header. </param> - /// <param name="topItem"> The top item. </param> - /// <param name="top"> The top. </param> - private void GetGroups(ReportStatResult result, string header, int topItem, IEnumerable<ReportStatItem> top) - { - if (top != null && top.Count() > 0) - { - var group = new ReportStatGroup { Header = ReportStatGroup.FormatedHeader(header, topItem) }; - group.Items.AddRange(top); - result.Groups.Add(group); - } - } - - /// <summary> Gets result community ratings. </summary> - /// <param name="result"> The result. </param> - /// <param name="items"> The items. </param> - /// <param name="topItem"> The top item. </param> - /// <returns> The result community ratings. </returns> - private ReportStatResult GetResultCommunityRatings(ReportStatResult result, BaseItem[] items, int topItem = 5) - { - this.GetGroups(result, GetLocalizedHeader(HeaderMetadata.CommunityRating), topItem, - items.Where(x => x.CommunityRating != null && x.CommunityRating > 0) - .GroupBy(x => x.CommunityRating) - .OrderByDescending(x => x.Count()) - .Take(topItem) - .Select(x => new ReportStatItem - { - Name = x.Key.ToString(), - Value = x.Count().ToString() - }) - ); - - return result; - } - - /// <summary> Gets result genres. </summary> - /// <param name="result"> The result. </param> - /// <param name="items"> The items. </param> - /// <param name="topItem"> The top item. </param> - /// <returns> The result genres. </returns> - private ReportStatResult GetResultGenres(ReportStatResult result, BaseItem[] items, int topItem = 5) - { - this.GetGroups(result, GetLocalizedHeader(HeaderMetadata.Genres), topItem, - items.SelectMany(x => x.Genres) - .GroupBy(x => x) - .OrderByDescending(x => x.Count()) - .Take(topItem) - .Select(x => new ReportStatItem - { - Name = x.Key, - Value = x.Count().ToString(), - Id = GetGenreID(x.Key) - })); - return result; - - } - - /// <summary> Gets result parental ratings. </summary> - /// <param name="result"> The result. </param> - /// <param name="items"> The items. </param> - /// <param name="topItem"> The top item. </param> - /// <returns> The result parental ratings. </returns> - private ReportStatResult GetResultParentalRatings(ReportStatResult result, BaseItem[] items, int topItem = 5) - { - this.GetGroups(result, GetLocalizedHeader(HeaderMetadata.ParentalRatings), topItem, - items.Where(x => x.OfficialRating != null) - .GroupBy(x => x.OfficialRating) - .OrderByDescending(x => x.Count()) - .Take(topItem) - .Select(x => new ReportStatItem - { - Name = x.Key.ToString(), - Value = x.Count().ToString() - }) - ); - - return result; - } - - /// <summary> Gets result persons. </summary> - /// <param name="result"> The result. </param> - /// <param name="items"> The items. </param> - /// <param name="topItem"> The top item. </param> - /// <returns> The result persons. </returns> - private ReportStatResult GetResultPersons(ReportStatResult result, BaseItem[] items, int topItem = 5) - { - List<HeaderMetadata> t = new List<HeaderMetadata> - { - HeaderMetadata.Actor, - HeaderMetadata.Composer, - HeaderMetadata.Director, - HeaderMetadata.GuestStar, - HeaderMetadata.Producer, - HeaderMetadata.Writer, - HeaderMetadata.Artist, - HeaderMetadata.AlbumArtist - }; - foreach (var item in t) - { - var ps = items.SelectMany(x => _libraryManager.GetPeople(x)) - .Where(n => n.Type == item.ToString()) - .GroupBy(x => x.Name) - .OrderByDescending(x => x.Count()) - .Take(topItem); - if (ps != null && ps.Count() > 0) - this.GetGroups(result, GetLocalizedHeader(item), topItem, - ps.Select(x => new ReportStatItem - { - Name = x.Key, - Value = x.Count().ToString(), - Id = GetPersonID(x.Key) - }) - ); - } - - return result; - } - - /// <summary> Gets result production years. </summary> - /// <param name="result"> The result. </param> - /// <param name="items"> The items. </param> - /// <param name="topItem"> The top item. </param> - /// <returns> The result production years. </returns> - private ReportStatResult GetResultProductionYears(ReportStatResult result, BaseItem[] items, int topItem = 5) - { - this.GetGroups(result, GetLocalizedHeader(HeaderMetadata.Year), topItem, - items.Where(x => x.ProductionYear != null && x.ProductionYear > 0) - .GroupBy(x => x.ProductionYear) - .OrderByDescending(x => x.Count()) - .Take(topItem) - .Select(x => new ReportStatItem - { - Name = x.Key.ToString(), - Value = x.Count().ToString() - }) - ); - - return result; - } - - /// <summary> Gets result studios. </summary> - /// <param name="result"> The result. </param> - /// <param name="items"> The items. </param> - /// <param name="topItem"> The top item. </param> - /// <returns> The result studios. </returns> - private ReportStatResult GetResultStudios(ReportStatResult result, BaseItem[] items, int topItem = 5) - { - this.GetGroups(result, GetLocalizedHeader(HeaderMetadata.Studios), topItem, - items.SelectMany(x => x.Studios) - .GroupBy(x => x) - .OrderByDescending(x => x.Count()) - .Take(topItem) - .Select(x => new ReportStatItem - { - Name = x.Key, - Value = x.Count().ToString(), - Id = GetStudioID(x.Key) - }) - ); - - return result; - - } - - #endregion - - } -} |
