Exemplo n.º 1
0
        public object Get(GetChannelItems request)
        {
            var result = _channelManager.GetChannelItems(new ChannelItemQuery
            {
                Limit      = request.Limit,
                StartIndex = request.StartIndex,
                UserId     = request.UserId,
                ChannelId  = request.Id,
                CategoryId = request.CategoryId
            }, CancellationToken.None).Result;

            return(ToOptimizedResult(result));
        }
Exemplo n.º 2
0
        public async Task <object> Get(GetChannelItems request)
        {
            var result = await _channelManager.GetChannelItems(new ChannelItemQuery
            {
                Limit      = request.Limit,
                StartIndex = request.StartIndex,
                UserId     = request.UserId,
                ChannelId  = request.Id,
                FolderId   = request.FolderId,
                OrderBy    = request.GetOrderBy(),
                Filters    = request.GetFilters().ToArray(),
                Fields     = request.GetItemFields()
            }, CancellationToken.None).ConfigureAwait(false);

            return(ToOptimizedResult(result));
        }
Exemplo n.º 3
0
        public async Task <object> Get(GetChannelItems request)
        {
            var result = await _channelManager.GetChannelItems(new ChannelItemQuery
            {
                Limit      = request.Limit,
                StartIndex = request.StartIndex,
                UserId     = request.UserId,
                ChannelId  = request.Id,
                FolderId   = request.FolderId,
                SortOrder  = request.SortOrder,
                SortBy     = (request.SortBy ?? string.Empty).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).ToArray(),
                Filters    = request.GetFilters().ToArray(),
                Fields     = request.GetItemFields()
            }, CancellationToken.None).ConfigureAwait(false);

            return(ToOptimizedResult(result));
        }
Exemplo n.º 4
0
        public async Task <object> Get(GetChannelItems request)
        {
            var user = string.IsNullOrEmpty(request.UserId)
                ? null
                : _userManager.GetUserById(request.UserId);

            var query = new InternalItemsQuery(user)
            {
                Limit      = request.Limit,
                StartIndex = request.StartIndex,
                ChannelIds = new string[] { request.Id },
                ParentId   = string.IsNullOrWhiteSpace(request.FolderId) ? (Guid?)null : new Guid(request.FolderId),
                OrderBy    = request.GetOrderBy(),
                DtoOptions = new Controller.Dto.DtoOptions
                {
                    Fields = request.GetItemFields()
                }
            };

            foreach (var filter in request.GetFilters())
            {
                switch (filter)
                {
                case ItemFilter.Dislikes:
                    query.IsLiked = false;
                    break;

                case ItemFilter.IsFavorite:
                    query.IsFavorite = true;
                    break;

                case ItemFilter.IsFavoriteOrLikes:
                    query.IsFavoriteOrLiked = true;
                    break;

                case ItemFilter.IsFolder:
                    query.IsFolder = true;
                    break;

                case ItemFilter.IsNotFolder:
                    query.IsFolder = false;
                    break;

                case ItemFilter.IsPlayed:
                    query.IsPlayed = true;
                    break;

                case ItemFilter.IsResumable:
                    query.IsResumable = true;
                    break;

                case ItemFilter.IsUnplayed:
                    query.IsPlayed = false;
                    break;

                case ItemFilter.Likes:
                    query.IsLiked = true;
                    break;
                }
            }

            var result = await _channelManager.GetChannelItems(query, CancellationToken.None).ConfigureAwait(false);

            return(ToOptimizedResult(result));
        }
Exemplo n.º 5
0
        public async Task <ActionResult <QueryResult <BaseItemDto> > > GetChannelItems(
            [FromRoute, Required] Guid channelId,
            [FromQuery] Guid?folderId,
            [FromQuery] Guid?userId,
            [FromQuery] int?startIndex,
            [FromQuery] int?limit,
            [FromQuery] string?sortOrder,
            [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFilter[] filters,
            [FromQuery] string?sortBy,
            [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields)
        {
            var user = userId.HasValue && !userId.Equals(Guid.Empty)
                ? _userManager.GetUserById(userId.Value)
                : null;

            var query = new InternalItemsQuery(user)
            {
                Limit      = limit,
                StartIndex = startIndex,
                ChannelIds = new[] { channelId },
                ParentId   = folderId ?? Guid.Empty,
                OrderBy    = RequestHelpers.GetOrderBy(sortBy, sortOrder),
                DtoOptions = new DtoOptions {
                    Fields = fields
                }
            };

            foreach (var filter in filters)
            {
                switch (filter)
                {
                case ItemFilter.IsFolder:
                    query.IsFolder = true;
                    break;

                case ItemFilter.IsNotFolder:
                    query.IsFolder = false;
                    break;

                case ItemFilter.IsUnplayed:
                    query.IsPlayed = false;
                    break;

                case ItemFilter.IsPlayed:
                    query.IsPlayed = true;
                    break;

                case ItemFilter.IsFavorite:
                    query.IsFavorite = true;
                    break;

                case ItemFilter.IsResumable:
                    query.IsResumable = true;
                    break;

                case ItemFilter.Likes:
                    query.IsLiked = true;
                    break;

                case ItemFilter.Dislikes:
                    query.IsLiked = false;
                    break;

                case ItemFilter.IsFavoriteOrLikes:
                    query.IsFavoriteOrLiked = true;
                    break;
                }
            }

            return(await _channelManager.GetChannelItems(query, CancellationToken.None).ConfigureAwait(false));
        }