コード例 #1
0
        /// <summary>
        /// Gets the next up episodes.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>Task{ItemsResult}.</returns>
        private async Task <ItemsResult> GetNextUpEpisodes(GetNextUpEpisodes request)
        {
            var user = _userManager.GetUserById(request.UserId);

            var itemsArray = user.RootFolder
                             .GetRecursiveChildren(user)
                             .OfType <Series>()
                             .AsParallel()
                             .Select(i => GetNextUp(i, user))
                             .ToArray();

            itemsArray = itemsArray
                         .Where(i => i.Item1 != null)
                         .OrderByDescending(i =>
            {
                var seriesUserData =
                    _userDataRepository.GetUserData(user.Id, i.Item1.Series.GetUserDataKey());

                if (seriesUserData.IsFavorite)
                {
                    return(2);
                }

                if (seriesUserData.Likes.HasValue)
                {
                    return(seriesUserData.Likes.Value ? 1 : -1);
                }

                return(0);
            })
                         .ThenByDescending(i => i.Item1.PremiereDate ?? DateTime.MinValue)
                         .ToArray();

            var pagedItems = ApplyPaging(request, itemsArray.Select(i => i.Item1));

            var fields = request.GetItemFields().ToList();

            var returnItems = await GetItemDtos(pagedItems, user, fields).ConfigureAwait(false);

            return(new ItemsResult
            {
                TotalRecordCount = itemsArray.Length,
                Items = returnItems
            });
        }
コード例 #2
0
        /// <summary>
        /// Gets the next up episodes.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>Task{ItemsResult}.</returns>
        private ItemsResult GetNextUpEpisodeItemsResult(GetNextUpEpisodes request)
        {
            var user = _userManager.GetUserById(request.UserId);

            var itemsList = GetNextUpEpisodes(request)
                            .ToList();

            var pagedItems = ApplyPaging(request, itemsList);

            var fields = request.GetItemFields().ToList();

            var returnItems = pagedItems.Select(i => _dtoService.GetBaseItemDto(i, fields, user)).ToArray();

            return(new ItemsResult
            {
                TotalRecordCount = itemsList.Count,
                Items = returnItems
            });
        }
コード例 #3
0
        /// <summary>
        /// Gets the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>System.Object.</returns>
        public object Get(GetNextUpEpisodes request)
        {
            var user = _userManager.GetUserById(request.UserId);

            var itemsList = GetNextUpEpisodes(request)
                            .ToList();

            var pagedItems = ApplyPaging(itemsList, request.StartIndex, request.Limit);

            var fields = request.GetItemFields().ToList();

            var returnItems = pagedItems.Select(i => _dtoService.GetBaseItemDto(i, fields, user)).ToArray();

            var result = new ItemsResult
            {
                TotalRecordCount = itemsList.Count,
                Items            = returnItems
            };

            return(ToOptimizedSerializedResultUsingCache(result));
        }
コード例 #4
0
        /// <summary>
        /// Gets the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>System.Object.</returns>
        public object Get(GetNextUpEpisodes request)
        {
            var result = _tvSeriesManager.GetNextUp(new NextUpQuery
            {
                Limit      = request.Limit,
                ParentId   = request.ParentId,
                SeriesId   = request.SeriesId,
                StartIndex = request.StartIndex,
                UserId     = request.UserId
            });

            var user = _userManager.GetUserById(new Guid(request.UserId));

            var fields = request.GetItemFields().ToList();

            var returnItems = result.Items.Select(i => _dtoService.GetBaseItemDto(i, fields, user)).ToArray();

            return(ToOptimizedSerializedResultUsingCache(new ItemsResult
            {
                TotalRecordCount = result.TotalRecordCount,
                Items = returnItems
            }));
        }