public PartialFindResult <T> GetSongsInList <T>(SongInListQueryParams queryParams, Func <SongInList, T> fac) { return(repository.HandleQuery(ctx => GetSongsInList(ctx, queryParams, fac))); }
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)); }
public PartialFindResult <SongInListContract> GetSongsInList(SongInListQueryParams queryParams) { return(repository.HandleQuery(session => GetSongsInList(session, queryParams, s => new SongInListContract(s, PermissionContext.LanguagePreference)))); }