aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-09-15 17:53:18 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-09-15 17:53:18 -0400
commit6d532640a9589c330904d49b0edffb7284f5d8fc (patch)
treedd038db659369941047d0100ab7e355096377dc8
parentd2b6b91ab60cc4ec97416e1de3750d669be578d8 (diff)
fixes #543 - Support filtering games by number of players
-rw-r--r--MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs53
1 files changed, 46 insertions, 7 deletions
diff --git a/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs b/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs
index 21ddcd028..fef87788a 100644
--- a/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs
+++ b/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs
@@ -17,6 +17,13 @@ using System.Threading.Tasks;
namespace MediaBrowser.Api.DefaultTheme
{
+ [Route("/MBT/DefaultTheme/Games", "GET")]
+ public class GetGamesView : IReturn<GamesView>
+ {
+ [ApiMember(Name = "UserId", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public Guid UserId { get; set; }
+ }
+
[Route("/MBT/DefaultTheme/TV", "GET")]
public class GetTvView : IReturn<TvView>
{
@@ -104,6 +111,45 @@ namespace MediaBrowser.Api.DefaultTheme
return view;
}
+ public object Get(GetGamesView request)
+ {
+ var result = GetGamesView(request).Result;
+
+ return ToOptimizedResult(result);
+ }
+
+ private async Task<GamesView> GetGamesView(GetGamesView request)
+ {
+ var user = _userManager.GetUserById(request.UserId);
+
+ var items = user.RootFolder.GetRecursiveChildren(user)
+ .Where(i => i is Game || string.Equals(i.GetType().Name, "GamePlatform", StringComparison.OrdinalIgnoreCase))
+ .ToList();
+
+ var itemsWithBackdrops = FilterItemsForBackdropDisplay(items.Where(i => i.BackdropImagePaths.Count > 0)).ToList();
+
+ var view = new GamesView();
+
+ var fields = new List<ItemFields>();
+
+ var spotlightItemTasks = itemsWithBackdrops
+ .OfType<Game>()
+ .OrderBy(i => Guid.NewGuid())
+ .Take(50)
+ .Select(i => _dtoService.GetBaseItemDto(i, fields, user));
+
+ view.SpotlightItems = await Task.WhenAll(spotlightItemTasks).ConfigureAwait(false);
+
+ return view;
+ }
+
+ public object Get(GetMovieView request)
+ {
+ var result = GetMovieView(request).Result;
+
+ return ToOptimizedResult(result);
+ }
+
public object Get(GetTvView request)
{
var result = GetTvView(request).Result;
@@ -164,13 +210,6 @@ namespace MediaBrowser.Api.DefaultTheme
return view;
}
- public object Get(GetMovieView request)
- {
- var result = GetMovieView(request).Result;
-
- return ToOptimizedResult(result);
- }
-
private async Task<MoviesView> GetMovieView(GetMovieView request)
{
var user = _userManager.GetUserById(request.UserId);