Example #1
0
        public PagedList <SeriesGrid> Search(SearchModel <SeriesCriteria> searchModel)
        {
            var qSeries    = View <Series>().All();
            var qSummarize = View <Summarize>().Where(w => w.SourceTable == R.SourceTable.SERIES);
            var qAka       = View <Aka>().Where(w => w.SourceTable == R.SourceTable.SERIES);

            var c = searchModel.Criteria;

            if (!string.IsNullOrWhiteSpace(c.Query))
            {
                var model   = new Series();
                var columns = new[] { model.PropertyName(m => m.Title) };
                qSeries = qSeries.Search(columns, c.Query.ToSearchKeywords()) as IQueryable <Series>;
            }
            if (!string.IsNullOrWhiteSpace(c.Query))
            {
                qSeries = new AkaService(_uow).Union(qSeries, c);
            }
            if (c.IDs != null)
            {
                qSeries = qSeries.Where(w => c.IDs.Contains(w.ID));
            }
            if (c.NotIDs != null)
            {
                qSeries = qSeries.Where(w => !c.NotIDs.Contains(w.ID));
            }
            var results = qSeries.GroupJoin(qSummarize, r => r.ID, s => s.SourceID,
                                            (r, s) => new { Series = r, Summarize = s.DefaultIfEmpty() })
                          .SelectMany(sm => sm.Summarize.Select(s => new SeriesGrid
            {
                ID          = sm.Series.ID,
                UpdatedDate = sm.Series.UpdatedDate,
                Title       = sm.Series.Title,
                ImageUrl    = sm.Series.ImageUrl,
                Synopsis    = sm.Series.Synopsis,
                Status      = sm.Series.Status,
                RawLanguage = sm.Series.RawLanguage,

                CommentCount = s.CommentCount,
                ViewCount    = s.ViewCount,
                VoteUp       = s.VoteUp,
                VoteDown     = s.VoteDown,
                QualityCount = s.QualityCount,
                QualityScore = s.QualityScore
            }));

            // apply sort
            results = results.Sort(c);

            return(results.ToPagedList(searchModel.PagedListConfig));
        }
Example #2
0
        public PagedList <AuthorGrid> Search(SearchModel <AuthorCriteria> searchModel)
        {
            var qAuthor    = View <Author>().All();
            var qSummarize = View <Summarize>().Where(w => w.SourceTable == R.SourceTable.AUTHOR);
            var qAka       = View <Aka>().Where(w => w.SourceTable == R.SourceTable.AUTHOR);

            var c = searchModel.Criteria;

            if (!string.IsNullOrWhiteSpace(c.Query))
            {
                var model   = new Author();
                var columns = new[]
                {
                    model.PropertyName(m => m.Name),
                };
                qAuthor = qAuthor.Search(columns, c.Query.ToSearchKeywords()) as IQueryable <Author>;
            }
            if (!string.IsNullOrWhiteSpace(c.Query))
            {
                qAuthor = new AkaService(_uow).Union(qAuthor, c);
            }

            var results = qAuthor.GroupJoin(qSummarize, r => r.ID, s => s.SourceID,
                                            (r, s) => new { Author = r, Summarize = s.DefaultIfEmpty() })
                          .SelectMany(sm => sm.Summarize.Select(s => new AuthorGrid
            {
                ID          = sm.Author.ID,
                UpdatedDate = sm.Author.UpdatedDate,
                Name        = sm.Author.Name,
                Url         = sm.Author.Url,
                ImageUrl    = sm.Author.ImageUrl,

                CommentCount = s.CommentCount,
                ViewCount    = s.ViewCount,
                VoteUp       = s.VoteUp,
                VoteDown     = s.VoteDown,
                QualityCount = s.QualityCount,
                QualityScore = s.QualityScore
            }));

            // apply sort
            //results = results.Sort(c);

            return(results.ToPagedList(searchModel.PagedListConfig));
        }
Example #3
0
        public PagedList <NovelGrid> Search(SearchModel <NovelCriteria> searchModel)
        {
            var qNovel     = View <Novel>().All();
            var qSummarize = View <Summarize>().Where(w => w.SourceTable == R.SourceTable.NOVEL);
            var qAka       = View <Aka>().Where(w => w.SourceTable == R.SourceTable.NOVEL);

            var c = searchModel.Criteria;

            if (!string.IsNullOrWhiteSpace(c.Query))
            {
                var columns = new[] { "Title" };
                qNovel = qNovel.Search(columns, c.Query.ToSearchKeywords()) as IQueryable <Novel>;
            }
            if (!string.IsNullOrWhiteSpace(c.Query))
            {
                qNovel = new AkaService(_uow).Union(qNovel, c);
            }

            var results = qNovel.GroupJoin(qSummarize, r => r.ID, s => s.SourceID,
                                           (r, s) => new { Novel = r, Summarize = s.DefaultIfEmpty() })
                          .SelectMany(sm => sm.Summarize.Select(s => new NovelGrid
            {
                ID          = sm.Novel.ID,
                UpdatedDate = sm.Novel.UpdatedDate,
                Title       = sm.Novel.Title,
                ImageUrl    = sm.Novel.ImageUrl,
                Synopsis    = sm.Novel.Synopsis,
                Status      = sm.Novel.Status,
                RawLanguage = sm.Novel.RawLanguage,

                CommentCount = s.CommentCount,
                ViewCount    = s.ViewCount,
                VoteUp       = s.VoteUp,
                VoteDown     = s.VoteDown,
                QualityCount = s.QualityCount,
                QualityScore = s.QualityScore
            }));

            // apply sort
            results = results.Sort(c);

            return(results.ToPagedList(searchModel.PagedListConfig));
        }