Browse Source

stub out tv movies in suggestions

Luke Pulverenti 9 years ago
parent
commit
f091e6f55f

+ 16 - 11
MediaBrowser.Api/Movies/MoviesService.cs

@@ -14,6 +14,7 @@ using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Threading.Tasks;
+using MediaBrowser.Controller.LiveTv;
 
 namespace MediaBrowser.Api.Movies
 {
@@ -132,13 +133,15 @@ namespace MediaBrowser.Api.Movies
 
             var query = new InternalItemsQuery(user)
             {
-                IncludeItemTypes = new[] { typeof(Movie).Name }
+                IncludeItemTypes = new[]
+                {
+                    typeof(Movie).Name,
+                    typeof(Trailer).Name,
+                    //typeof(LiveTvProgram).Name
+                },
+               // IsMovie = true
             };
 
-            var includeList = query.IncludeItemTypes.ToList();
-            includeList.Add(typeof(Trailer).Name);
-            query.IncludeItemTypes = includeList.ToArray();
-
             var parentIds = string.IsNullOrWhiteSpace(request.ParentId) ? new string[] { } : new[] { request.ParentId };
             var movies = _libraryManager.GetItemList(query, parentIds)
                 .OrderBy(i => (int)i.SourceType);
@@ -179,16 +182,18 @@ namespace MediaBrowser.Api.Movies
             var item = string.IsNullOrEmpty(request.Id) ?
                 (!string.IsNullOrWhiteSpace(request.UserId) ? user.RootFolder :
                 _libraryManager.RootFolder) : _libraryManager.GetItemById(request.Id);
-            
+
             var query = new InternalItemsQuery(user)
             {
-                IncludeItemTypes = new[] { typeof(Movie).Name }
+                IncludeItemTypes = new[]
+                {
+                    typeof(Movie).Name,
+                    typeof(Trailer).Name,
+                    //typeof(LiveTvProgram).Name
+                },
+                //IsMovie = true
             };
 
-            var includeList = query.IncludeItemTypes.ToList();
-            includeList.Add(typeof(Trailer).Name);
-            query.IncludeItemTypes = includeList.ToArray();
-
             var list = _libraryManager.GetItemList(query)
                 .OrderBy(i => (int)i.SourceType)
                 .DistinctBy(i => i.GetProviderId(MetadataProviders.Imdb) ?? Guid.NewGuid().ToString("N"))

+ 35 - 1
MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs

@@ -2132,7 +2132,41 @@ namespace MediaBrowser.Server.Implementations.Persistence
             }
             if (query.IsMovie.HasValue)
             {
-                whereClauses.Add("IsMovie=@IsMovie");
+                var alternateTypes = new List<string>();
+                if (query.IncludeItemTypes.Length == 0 || query.IncludeItemTypes.Contains(typeof(Movie).Name))
+                {
+                    alternateTypes.Add(typeof(Movie).FullName);
+                }
+                if (query.IncludeItemTypes.Length == 0 || query.IncludeItemTypes.Contains(typeof(Trailer).Name))
+                {
+                    alternateTypes.Add(typeof(Trailer).FullName);
+                }
+
+                if (alternateTypes.Count == 0)
+                {
+                    whereClauses.Add("IsMovie=@IsMovie");
+                }
+                else
+                {
+                    if (query.IsMovie.Value)
+                    {
+                        var typeClauses = new List<string>();
+                        var typeIndex = 0;
+                        foreach (var type in alternateTypes)
+                        {
+                            var paramName = "@AlternateType" + typeIndex.ToString(CultureInfo.InvariantCulture);
+                            typeClauses.Add("Type=" + paramName);
+                            cmd.Parameters.Add(cmd, paramName, DbType.String).Value = type;
+                            typeIndex++;
+                        }
+
+                        whereClauses.Add("(IsMovie=@IsMovie OR " + string.Join(" OR ", typeClauses.ToArray()) + ")");
+                    }
+                    else
+                    {
+                        whereClauses.Add("(IsMovie is null OR IsMovie=@IsMovie)");
+                    }
+                }
                 cmd.Parameters.Add(cmd, "@IsMovie", DbType.Boolean).Value = query.IsMovie;
             }
             if (query.IsKids.HasValue)