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)); }
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)); }
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)); }