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)); }