示例#1
0
 public PartialFindResult <T> GetSongsInList <T>(SongInListQueryParams queryParams, Func <SongInList, T> fac)
 {
     return(repository.HandleQuery(ctx => GetSongsInList(ctx, queryParams, fac)));
 }
示例#2
0
        private PartialFindResult <T> GetSongsInList <T>(IDatabaseContext <SongList> session, SongInListQueryParams queryParams,
                                                         Func <SongInList, T> fac)
        {
            var q = session.OfType <SongInList>().Query()
                    .Where(a => !a.Song.Deleted && a.List.Id == queryParams.ListId)
                    .WhereSongHasName(queryParams.TextQuery, true)
                    .WhereSongHasPVService(queryParams.PVServices)
                    .WhereSongHasArtists(queryParams.ArtistIds, queryParams.ChildVoicebanks)
                    .WhereSongHasTags(queryParams.TagIds)
                    .WhereSongHasType(queryParams.SongTypes)
                    .WhereMatchFilters(queryParams.AdvancedFilters);

            IQueryable <SongInList> resultQ = q.OrderBy(queryParams.SortRule, PermissionContext.LanguagePreference);

            resultQ = resultQ.Paged(queryParams.Paging);

            var contracts  = resultQ.ToArray().Select(s => fac(s)).ToArray();
            var totalCount = (queryParams.Paging.GetTotalCount ? q.Count() : 0);

            return(new PartialFindResult <T>(contracts, totalCount));
        }
示例#3
0
 public PartialFindResult <SongInListContract> GetSongsInList(SongInListQueryParams queryParams)
 {
     return(repository.HandleQuery(session => GetSongsInList(session, queryParams, s => new SongInListContract(s, PermissionContext.LanguagePreference))));
 }