Beispiel #1
0
        private void ApplyFilter(IQueryable <IPackage> query, PackageSearchFilter filter)
        {
            if (!string.IsNullOrEmpty(filter.Title))
            {
                query = query.Where(x => x.Title == filter.Title);
            }

            if (filter.Tags != null && filter.Tags.Any())
            {
                filter.Tags.Aggregate(query, (current, tag) => current.Where(p => p.Tags.Contains(tag)));
            }
        }
Beispiel #2
0
        public IPagedResult <PackageDto> SearchThemes(PackageSearchFilter filter)
        {
            if (filter == null)
            {
                throw new ArgumentNullException("filter", "The package search filter cannot be null.");
            }

            IQueryable <IPackage> query      = this.themePackageManager.SourceRepository.GetPackages();
            IQueryable <IPackage> queryCount = this.themePackageManager.SourceRepository.GetPackages();

            this.ApplyFilter(query, filter);
            this.ApplyFilter(queryCount, filter);

            List <IPackage> result = query.OrderBy(p => p.Id)
                                     .Skip(filter.PageIndex)
                                     .Take(filter.PageSize)
                                     .ToList();

            return(new PagedResult <PackageDto>(filter.PageIndex, filter.PageSize, result.MapTo <PackageDto>(), queryCount.Count()));
        }