Beispiel #1
0
        public PartialFindResult <T> GetArtists <T>(FollowedArtistQueryParams queryParams, Func <ArtistForUser, T> fac)
        {
            var paging = queryParams.Paging;

            return(HandleQuery(ctx => {
                var query = ctx.OfType <ArtistForUser>().Query()
                            .Where(a => !a.Artist.Deleted && a.User.Id == queryParams.UserId);

                if (queryParams.ArtistType != ArtistType.Unknown)
                {
                    query = query.Where(a => a.Artist.ArtistType == queryParams.ArtistType);
                }

                var artists = query
                              .OrderByName(PermissionContext.LanguagePreference)
                              .Paged(paging)
                              .ToArray()
                              .Select(fac)
                              .ToArray();

                var count = paging.GetTotalCount ? query.Count() : 0;

                return new PartialFindResult <T>(artists, count);
            }));
        }
Beispiel #2
0
        public PartialFindResult <ArtistForUserForApiContract> GetFollowedArtists(
            int id,
            string query                   = "",
            [FromUri] int[] tagId          = null,
            ArtistType artistType          = ArtistType.Unknown,
            int start                      = 0,
            int maxResults                 = defaultMax,
            bool getTotalCount             = false,
            ArtistSortRule sort            = ArtistSortRule.Name,
            NameMatchMode nameMatchMode    = NameMatchMode.Auto,
            ArtistOptionalFields fields    = ArtistOptionalFields.None,
            ContentLanguagePreference lang = ContentLanguagePreference.Default)
        {
            maxResults = Math.Min(maxResults, absoluteMax);
            var textQuery = ArtistSearchTextQuery.Create(query, nameMatchMode);

            var queryParams = new FollowedArtistQueryParams {
                UserId     = id,
                ArtistType = artistType,
                Paging     = new PagingProperties(start, maxResults, getTotalCount),
                SortRule   = sort,
                TagIds     = tagId,
                TextQuery  = textQuery
            };

            var artists = queries.GetArtists(queryParams, afu =>
                                             new ArtistForUserForApiContract(afu, lang, thumbPersister, fields));

            return(artists);
        }
Beispiel #3
0
        public PartialFindResult <ArtistForUserForApiContract> GetFollowedArtists(
            int userId,
            ArtistType artistType          = ArtistType.Unknown,
            int start                      = 0,
            int maxResults                 = defaultMax,
            bool getTotalCount             = false,
            ArtistOptionalFields fields    = ArtistOptionalFields.None,
            ContentLanguagePreference lang = ContentLanguagePreference.Default)
        {
            maxResults = Math.Min(maxResults, absoluteMax);
            var ssl = WebHelper.IsSSL(Request);

            var queryParams = new FollowedArtistQueryParams {
                UserId     = userId,
                ArtistType = artistType,
                Paging     = new PagingProperties(start, maxResults, getTotalCount),
            };

            var artists = queries.GetArtists(queryParams, afu =>
                                             new ArtistForUserForApiContract(afu, lang, thumbPersister, ssl, fields));

            return(artists);
        }