// AdminReviewedSources public AdminReviewedSource GetOrCreateAdminReviewedSource(int sourceId, int adminSourceSearchId) { Source source = this.sourceTasks.GetSource(sourceId); AdminSourceSearch ass = this.adminSourceSearchRepository.Get(adminSourceSearchId); IDictionary <string, object> criteria = new Dictionary <string, object>(); criteria.Add("Source", source); criteria.Add("AdminSourceSearch", ass); AdminReviewedSource ars = this.adminReviewedSourceRepository.FindOne(criteria); if (ars == null) { // TODO when creating a new Reviewed record, this source might be marked relevant in another // equivalent search. However this new Review will be more recent. // We could prompt the user to remind them to mark it as relevant when they review the source... ars = new AdminReviewedSource(); ars.ReviewedDateTime = DateTime.Now; ars.Source = source; ars.AdminSourceSearch = ass; ars.Archive = false; ars = this.adminReviewedSourceRepository.SaveOrUpdate(ars); } return(ars); }
// TODO the criteria for finding previous searches is a little inflexible here. public IList <int> GetAdminSourceSearchIds(AdminSourceSearch adminSourceSearch) { var qo = Session.QueryOver <AdminSourceSearch>(); if (!string.IsNullOrEmpty(adminSourceSearch.AndSearchTerms)) { qo.Where(x => x.AndSearchTerms == adminSourceSearch.AndSearchTerms || x.AndSearchTerms == string.Join(" ", adminSourceSearch.AndSearchTermsQuoted)); if (!string.IsNullOrEmpty(adminSourceSearch.ExcludeSearchTerms)) { qo.And(x => x.ExcludeSearchTerms == adminSourceSearch.ExcludeSearchTerms || x.ExcludeSearchTerms == string.Join(" ", adminSourceSearch.ExcludeSearchTermsQuoted)); } return(qo.Select(x => x.Id).List <int>()); } else { // OrSearchTerms still ignored. return(new List <int>()); } }
public IList <int> GetAdminSourceSearchIds(AdminSourceSearch adminSourceSearch) { return(this.adminSourceSearchQuery.GetAdminSourceSearchIds(adminSourceSearch)); }
public AdminSourceSearch SaveOrUpdateAdminSourceSearch(AdminSourceSearch adminSourceSearch) { return(this.adminSourceSearchRepository.SaveOrUpdate(adminSourceSearch)); }
public JsonNetResult DataTables(SourceDataTablesParam p) { int iTotalRecords = 0; IList <SourceDataTableView> aaData = new List <SourceDataTableView>(); // get or create new AdminSourceSearch for this search AdminUser user = this.userTasks.GetAdminUser(this.User.Identity.Name); AdminSourceSearch adminSourceSearch; if (p.searchAdminSourceSearchId.HasValue && p.searchAdminSourceSearchId.Value > 0) { adminSourceSearch = this.sourceAttachmentTasks.GetAdminSourceSearch(p.searchAdminSourceSearchId.Value); } else { adminSourceSearch = new AdminSourceSearch(p.searchText); adminSourceSearch.SearchedByAdminUser = user; adminSourceSearch = this.sourceAttachmentTasks.SaveOrUpdateAdminSourceSearch(adminSourceSearch); } if (p.searchId.HasValue) { // bypasses NHibernate OutOfMemoryError, but doesn't populate IsAttached SourceDTO dto = this.sourceTasks.GetSourceDTO(p.searchId.Value); if (dto != null) { aaData.Add(new SourceDataTableView(dto)); iTotalRecords = 1; adminSourceSearch.NumOfMatchingSources = 1; } } else { // get past searches in order to use their relevance ratings IList <int> adminSourceSearchIds = this.sourceAttachmentTasks.GetAdminSourceSearchIds(adminSourceSearch); IList <SourceSearchResultDTO> sources = null; if (((PrfPrincipal)User).HasPermission(AdminPermission.CanViewAndSearchAllSources)) { iTotalRecords = this.sourceTasks.GetSearchTotal( ((PrfPrincipal)User).HasPermission(AdminPermission.CanViewAndSearchRestrictedSources), p.searchName, p.searchExtension, adminSourceSearch.FullTextSearchTerm, p.GetStartDate(), p.GetEndDate(), p.authorSearchText); sources = this.sourceTasks.GetPaginatedResults( ((PrfPrincipal)User).HasPermission(AdminPermission.CanViewAndSearchRestrictedSources), p.iDisplayStart, p.iDisplayLength, p.searchName, p.searchExtension, adminSourceSearch.FullTextSearchTerm, p.GetStartDate(), p.GetEndDate(), adminSourceSearchIds, p.iSortingCols, p.iSortCol, p.sSortDir, user.Id, p.personId, p.eventId, p.authorSearchText); } else { throw new NotImplementedException(); } foreach (SourceSearchResultDTO x in sources) { aaData.Add(new SourceDataTableView(x)); } adminSourceSearch.NumOfMatchingSources = iTotalRecords; this.sourceAttachmentTasks.SaveOrUpdateAdminSourceSearch(adminSourceSearch); } return(JsonNet(new DataTablesSourceData { iTotalRecords = iTotalRecords, iTotalDisplayRecords = iTotalRecords, sEcho = p.sEcho, aaData = aaData.ToArray(), adminSourceSearchId = adminSourceSearch.Id })); }
public ActionResult Details(int id) { AdminSourceSearch model = this.sourceAttachmentTasks.GetAdminSourceSearch(id); return(View(model)); }