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