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