Example #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));
        }
Example #2
0
        public async Task <object> Get(GetUpcomingEpisodes request)
        {
            var user = _userManager.GetUserById(request.UserId);

            var minPremiereDate = DateTime.Now.Date.ToUniversalTime().AddDays(-1);

            var parentIdGuid = string.IsNullOrWhiteSpace(request.ParentId) ? (Guid?)null : new Guid(request.ParentId);

            var options = GetDtoOptions(_authContext, request);

            var itemsResult = _libraryManager.GetItemList(new InternalItemsQuery(user)
            {
                IncludeItemTypes = new[] { typeof(Episode).Name },
                SortBy           = new[] { "PremiereDate", "AirTime", "SortName" },
                SortOrder        = SortOrder.Ascending,
                MinPremiereDate  = minPremiereDate,
                StartIndex       = request.StartIndex,
                Limit            = request.Limit,
                ParentId         = parentIdGuid,
                Recursive        = true,
                DtoOptions       = options
            }).ToList();

            var returnItems = (await _dtoService.GetBaseItemDtos(itemsResult, options, user).ConfigureAwait(false)).ToArray();

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

            return(ToOptimizedSerializedResultUsingCache(result));
        }
Example #3
0
        public object Get(GetUpcomingEpisodes request)
        {
            var user = _userManager.GetUserById(request.UserId);

            var minPremiereDate = DateTime.Now.Date.ToUniversalTime().AddDays(-1);

            var parentIdGuid = string.IsNullOrWhiteSpace(request.ParentId) ? Guid.Empty : new Guid(request.ParentId);

            var options = GetDtoOptions(_authContext, request);

            var itemsResult = _libraryManager.GetItemList(new InternalItemsQuery(user)
            {
                IncludeItemTypes = new[] { typeof(Episode).Name },
                OrderBy          = new[] { ItemSortBy.PremiereDate, ItemSortBy.SortName }.Select(i => new ValueTuple <string, SortOrder>(i, SortOrder.Ascending)).ToArray(),
                MinPremiereDate  = minPremiereDate,
                StartIndex       = request.StartIndex,
                Limit            = request.Limit,
                ParentId         = parentIdGuid,
                Recursive        = true,
                DtoOptions       = options
            });

            var returnItems = _dtoService.GetBaseItemDtos(itemsResult, options, user);

            var result = new QueryResult <BaseItemDto>
            {
                TotalRecordCount = itemsResult.Count,
                Items            = returnItems
            };

            return(ToOptimizedResult(result));
        }
Example #4
0
        public object Get(GetUpcomingEpisodes request)
        {
            var user = _userManager.GetUserById(request.UserId);

            var minPremiereDate = DateTime.Now.Date.ToUniversalTime().AddDays(-1);

            var parentIds = string.IsNullOrWhiteSpace(request.ParentId) ? new string[] { } : new[] { request.ParentId };

            var itemsResult = _libraryManager.GetItemList(new InternalItemsQuery(user)
            {
                IncludeItemTypes = new[] { typeof(Episode).Name },
                SortBy           = new[] { "PremiereDate", "AirTime", "SortName" },
                SortOrder        = SortOrder.Ascending,
                MinPremiereDate  = minPremiereDate,
                StartIndex       = request.StartIndex,
                Limit            = request.Limit
            }, parentIds).ToList();

            var options = GetDtoOptions(request);

            var returnItems = _dtoService.GetBaseItemDtos(itemsResult, options, user).ToArray();

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

            return(ToOptimizedSerializedResultUsingCache(result));
        }