Ejemplo n.º 1
0
        public object Get(GetUpcomingEpisodes request)
        {
            var user = _userManager.GetUserById(request.UserId);

            var items = GetAllLibraryItems(request.UserId, _userManager, _libraryManager, request.ParentId)
                        .OfType <Episode>();

            var itemsList = _libraryManager.Sort(items, user, new[] { "PremiereDate", "AirTime", "SortName" }, SortOrder.Ascending)
                            .Cast <Episode>()
                            .ToList();

            var unairedEpisodes = itemsList.Where(i => i.IsUnaired).ToList();

            var minPremiereDate  = DateTime.Now.Date.AddDays(-1).ToUniversalTime();
            var previousEpisodes = itemsList.Where(i => !i.IsUnaired && (i.PremiereDate ?? DateTime.MinValue) >= minPremiereDate).ToList();

            previousEpisodes.AddRange(unairedEpisodes);

            var pagedItems = ApplyPaging(previousEpisodes, 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));
        }