public PartialFindResult <SongListForApiContract> GetFeaturedLists(
            string query = "",
            NameMatchMode nameMatchMode = NameMatchMode.Auto,
            SongListFeaturedCategory?featuredCategory = null,
            int start             = 0, int maxResults = defaultMax, bool getTotalCount = false,
            SongListSortRule sort = SongListSortRule.Name)
        {
            var textQuery = SearchTextQuery.Create(query, nameMatchMode);

            return(queries.Find(s => new SongListForApiContract(s, userIconFactory, entryImagePersister, SongListOptionalFields.MainPicture),
                                textQuery, featuredCategory, start, maxResults, getTotalCount, sort));
        }
Beispiel #2
0
        public PartialFindResult <SongListForApiContract> GetSongLists(
            int id,
            string query = "",
            NameMatchMode nameMatchMode = NameMatchMode.Auto,
            int start                     = 0, int maxResults = defaultMax, bool getTotalCount = false,
            SongListSortRule sort         = SongListSortRule.Name,
            SongListOptionalFields?fields = null)
        {
            var textQuery = SearchTextQuery.Create(query, nameMatchMode);

            return(queries.GetCustomSongLists(id, textQuery, sort,
                                              new PagingProperties(start, maxResults, getTotalCount), fields ?? SongListOptionalFields.None));
        }
Beispiel #3
0
        public PartialFindResult <SongListForApiContract> GetSongLists(
            int id,
            string query                = "",
            [FromUri] int[] tagId       = null,
            bool childTags              = false,
            NameMatchMode nameMatchMode = NameMatchMode.Auto,
            int start                     = 0, int maxResults = defaultMax, bool getTotalCount = false,
            SongListSortRule sort         = SongListSortRule.Name,
            SongListOptionalFields?fields = null)
        {
            var textQuery   = SearchTextQuery.Create(query, nameMatchMode);
            var queryParams = new SongListQueryParams {
                TextQuery = textQuery,
                SortRule  = sort,
                Paging    = new PagingProperties(start, maxResults, getTotalCount),
                TagIds    = tagId,
                ChildTags = childTags
            };

            return(queries.GetCustomSongLists(id, queryParams, fields ?? SongListOptionalFields.None));
        }
Beispiel #4
0
        public PartialFindResult <SongListForApiContract> GetFeaturedLists(
            string query                = "",
            [FromUri] int[] tagId       = null,
            bool childTags              = false,
            NameMatchMode nameMatchMode = NameMatchMode.Auto,
            SongListFeaturedCategory?featuredCategory = null,
            int start                      = 0, int maxResults = defaultMax, bool getTotalCount = false,
            SongListSortRule sort          = SongListSortRule.Name,
            SongListOptionalFields fields  = SongListOptionalFields.None,
            ContentLanguagePreference lang = ContentLanguagePreference.Default)
        {
            var textQuery   = SearchTextQuery.Create(query, nameMatchMode);
            var queryParams = new SongListQueryParams {
                TextQuery        = textQuery,
                FeaturedCategory = featuredCategory,
                Paging           = new PagingProperties(start, maxResults, getTotalCount),
                SortRule         = sort,
                TagIds           = tagId,
                ChildTags        = childTags
            };

            return(queries.Find(s => new SongListForApiContract(s, lang, userIconFactory, entryImagePersister, fields), queryParams));
        }
 public static IQueryable <SongList> OrderBy(this IQueryable <SongList> query, SongListSortRule sortRule) => sortRule switch
 {
        public static IQueryable <SongList> OrderBy(this IQueryable <SongList> query, SongListSortRule sortRule)
        {
            switch (sortRule)
            {
            case SongListSortRule.Date:
                return(query
                       .OrderByDate(SortDirection.Descending)
                       .ThenBy(r => r.Name));

            case SongListSortRule.CreateDate:
                return(query.OrderByDescending(r => r.CreateDate));

            case SongListSortRule.Name:
                return(query.OrderBy(r => r.Name));
            }

            return(query);
        }
Beispiel #7
0
        public PartialFindResult <TResult> Find <TResult>(Func <SongList, TResult> fac, SearchTextQuery textQuery, SongListFeaturedCategory?featuredCategory,
                                                          int start, int maxResults, bool getTotalCount, SongListSortRule sort)
        {
            return(HandleQuery(ctx => {
                var listQuery = ctx.Query()
                                .WhereHasFeaturedCategory(featuredCategory, false)
                                .WhereHasName(textQuery);

                var count = getTotalCount ? listQuery.Count() : 0;

                return new PartialFindResult <TResult>(listQuery
                                                       .OrderBy(sort)
                                                       .Paged(new PagingProperties(start, maxResults, getTotalCount))
                                                       .ToArray()
                                                       .Select(s => fac(s))
                                                       .ToArray(), count);
            }));
        }