Пример #1
0
        protected static IQueryable<Article> ArticleSort(IProviderArticleFilter filter, IQueryable<Article> query)
        {
            // Sort grid data.  Sord is sort order, Sidx is the index to sort on
            if (filter.Sord == "desc")
            {
                if (filter.Sidx == "CountFlags")
                {
                    // TODO: Rework the CountFlag logics to be more useful, right now it's just a lowerbound
                    query = query.OrderByDescending(anArticle => anArticle.ArticleVotes
                                            .Where(vote => vote.IsFlag)
                                            .Count());
                }
                else
                {
                    // Sort by date if we don't know what this was
                    query = query.OrderByDescending(anArticle => anArticle.EditDate);
                }
            }
            else if (filter.Sord == "asc")
            {
                if (filter.Sidx == "CountFlags")
                {
                    query = query.OrderBy(anArticle => anArticle.ArticleVotes
                                            .Where(vote => vote.IsFlag)
                                            .Count());
                }
                else
                {
                    // Sort by date if we don't know what this was
                    query = query.OrderBy(anArticle => anArticle.EditDate);
                }
            }

            return query;
        }
Пример #2
0
 public static List<ProviderArticle> LoadBy(IProviderArticleFilter filter)
 {
     int m = (filter.Page - 1);
     if (m < 0) m = 0;
     int skip = filter.Rows * m;
     IQueryable<Article> query = DbCtx.Instance.Articles;
     query = ArticleFilter(filter, query);
     query = ArticleSort(filter, query);
     return query.Skip(skip)
             .Take(filter.Rows)
             .ToList()
             .ConvertAll(_converterEntityToProvider);
 }
Пример #3
0
 protected static IQueryable<Article> ArticleFilter(IProviderArticleFilter filter, IQueryable<Article> query)
 {
     return query.Where(anArticle => (filter.Id == null || anArticle.Id == filter.Id) &&
                     (filter.Title == null || anArticle.Title.Contains(filter.Title)) &&
                     (filter.IsHidden == null || anArticle.IsHidden == filter.IsHidden) &&
                     (filter.IsPublished == null || anArticle.IsPublished == filter.IsPublished) &&
                     (filter.IgnoreFlags == null || anArticle.IgnoreFlags == filter.IgnoreFlags) &&
                     (filter.MemberId == null || anArticle.MemberId == filter.MemberId) &&
                     (filter.CountFlags == null || anArticle.ArticleVotes.Where(vote => vote.IsFlag).Count() >= filter.CountFlags)
                 );
 }
Пример #4
0
 public static int Count(IProviderArticleFilter filter)
 {
     IQueryable<Article> query = DbCtx.Instance.Articles;
     query = ArticleFilter(filter, query);
     return query.Count();
 }