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