public BaseSearchModel GetResultsFullTextSearch(SearchFilters filters, GridDescriptor request, IMaterialsContextUow context) { BaseSearchModel model = new BaseSearchModel(); IQueryable <SampleMaterialModel> resultMat = null; int cnt; var commandText = "SELECT ID FROM [fn_FullTextSearch] ({0},{1});"; string cleanSearchString = RemoveCharacters(filters.filter); string searchStringWS = RemoveCharactersWS(filters.filter); var parameters = new object[] { searchStringWS, cleanSearchString }; IList <int> results = context.FullTextSearch.SqlQuery <int>(commandText, parameters).ToList(); resultMat = context.FullTextSearch.GetMaterialsByFullTextSearch(false, filters.filter).Select(m => new SampleMaterialModel() { Id = m.Id, Name = m.material_designation, TypeName = m.material_type, TypeId = m.type_ID, GroupName = m.material_group, GroupId = m.group_ID, ClassName = m.material_class, ClassId = m.class_ID, SubClassName = m.material_subClass, SubClassId = m.subClass_ID, UNS = m.UNS, CAS_RN = m.CAS_RN }).AsQueryable(); HttpContext.Current.Session["ClassificationRecordsCount"] = results; cnt = results.Count; model.ListOfMaterials = PagerSearch <SampleMaterialModel>(request.Pager, resultMat, cnt).ToList(); model.Descriptor = request; model.Filter = new SearchResultsCondition(); model.Filter.FullText = filters.filter; return(model); }
public JsonResult SearchResultsApplyInputFilter() { GridDescriptor request = new GridDescriptor(new SortDescriptor() { PropertyName = "Name", Order = SortOrder.Ascending }); BaseSearchModel model = new BaseSearchModel(); SearchFilters filters = new SearchFilters(); IDictionary <string, object> allFilters = BreadcrumbNavigationGetSet(filters, null); filters = (SearchFilters)(allFilters["filters"]); if (allFilters.ContainsKey("advFilters")) { model = SearchResults(filters, "", (AdvSearchFiltersAll)allFilters["advFilters"], request); } else { model = SearchResults(filters, "", null, request); } SearchResultsCondition filterModel = GetFiltersModel(filters); model.Filter = filterModel; return(Json(ResponseStatus.Success, RenderPartialViewToString("ResultsContainer", model), JsonRequestBehavior.AllowGet)); }
public override int Update(BaseSearchModel model) { try { foreach (RWBarcodeModel item in RWBarcodeModels) { //修改条码信息 ModelAdo<RWBarcodeModel> adoBarcode = new ModelAdo<RWBarcodeModel>(); item.Status = Status; adoBarcode.Update(item); //添加条码历史记录 ModelAdo<RWHistoryModel> adoBarcodeHistroy = new ModelAdo<RWHistoryModel>(); RWHistoryModel historyModel = new RWHistoryModel() { CreateTime = DateTime.Now, BillID = "", BarcodeID = item.ID, Remark = Remark }; adoBarcodeHistroy.Insert(historyModel); } } catch (Exception) { return 0; } return 1; }
public static List <SiteActivity> Search(BaseSearchModel parms, ref int pTotalRows) { //probably should validate valid order by - or do in proc if (string.IsNullOrWhiteSpace(parms.OrderBy)) { parms.IsDescending = true; parms.OrderBy = "CreatedDate desc"; //pOrderBy = "Created DESC"; } else { if ("id activity event comment createddate actionbyuser".IndexOf(parms.OrderBy.ToLower()) == -1) { parms.OrderBy = "CreatedDate"; if (parms.IsDescending) { parms.OrderBy += " DESC"; } //pOrderBy = "Created DESC"; } else if (parms.IsDescending && parms.OrderBy.ToLower().IndexOf("desc") == -1) { parms.OrderBy = parms.OrderBy + " desc"; } } List <SiteActivity> list = ActivityManager.Search(parms.Filter, parms.OrderBy, parms.PageNumber, parms.PageSize, ref pTotalRows); //pTotalRows = parms.TotalRows; return(list); }
public ActionResult Search(string sidx, string sord, int page, int rows , bool _search , string Activity , string Event, string comment, string ActionByUser, string DisplayDate , string filters) { //, string filters = "", string Event:registra int pTotalRows = 0; string where = ""; if ((filters ?? "").Length > 20) { GridFilter data = JsonConvert.DeserializeObject <GridFilter>(filters, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore }); foreach (Rule r in data.rules) { SetRuleFilter(r.field, r.op, r.data, data.groupOp, ref where); } } BaseSearchModel parms = new BaseSearchModel() { Keyword = "", OrderBy = sidx, IsDescending = sord == "desc" ? true : false, PageNumber = page, PageSize = rows }; if (!_search) { //need an operator SetKeywordFilter("Activity", Activity, ref where); SetKeywordFilter("Event", Event, ref where); SetKeywordFilter("ActionByUser", ActionByUser, ref where); SetKeywordFilter("comment", comment, ref where); } parms.Filter = where; List <SiteActivity> list = ActivityServices.Search(parms, ref pTotalRows); int pageIndex = Convert.ToInt32(page) - 1; int pageSize = rows; int totalPages = ( int )Math.Ceiling(( float )pTotalRows / ( float )pageSize); var jsonData = new { total = totalPages, page = page, records = pTotalRows, rows = list }; return(Json(jsonData, JsonRequestBehavior.AllowGet)); }
public void QuestionBcTests_GetAllQuestions() { var random = TestUtils.RandomString(10); var question = new QuestionRequestModel { Question = $"Random question {random} with choice (GetAll)", ImageUrl = "https://www.google.pt/search?q=image", ThumbUrl = "https://www.google.pt/search?q=thumb", Choices = new[] { $"choice1_{random}", $"choice2_{random}", $"choice3_{random}" } }; questionBc.CreateQuestion(question); var search = new BaseSearchModel { Limit = 1, Offset = 0, Filter = random }; var result = questionBc.GetSearchQuery(search); Assert.IsTrue(result.Count() >= 1); var choices = result.FirstOrDefault().Choices; Assert.IsNotNull(choices); Assert.IsTrue(choices.Count() > 1); }
public PagesModel(List <T> items, BaseSearchModel searchModel) { IsPagination = searchModel.IsPagination; PageIndex = searchModel.PageIndex; PageSize = searchModel.PageSize; RecordCount = searchModel.RecordCount; Items = items; }
public Query_MainPage() { this.InitializeComponent(); if (BaseSearch == null) { BaseSearch = new BaseSearchModel(); } }
public async Task <IHttpActionResult> GetAllQuestions( [FromUri] BaseSearchModel searchModel, CancellationToken cancellationToken = default(CancellationToken)) { return(await ExecuteAsync <IHttpActionResult>(() => { return Ok(questionBc.GetSearchQuery(searchModel)); }, cancellationToken)); }
public JsonResult GetSampleMaterialsResizable(bool FromBrowse, string filter, int clId, int clTypeId, GridDescriptor request) { SearchFilters filters = new SearchFilters() { filter = filter, ClasificationId = clId, ClasificationTypeId = clTypeId, FromBrowse = FromBrowse }; BaseSearchModel model = _searchResultsBinder.GetResults(filters, request, materialContextUow, "", null); return(Json(ResponseStatus.Success, RenderPartialViewToString("BrowseResultsContainer", model))); }
public ActionResult AdvStructureSearch(string query, string exactsearch, string stereo, GridDescriptor request) { System.Web.HttpContext.Current.Session["AdvancedSearchFilter"] = null; var tmp = BreadcrumbNavigationGetSet(); AdvSearchFiltersAll filters = new AdvSearchFiltersAll(); if (filters.StructureSearch == null) { filters.StructureSearch = new AdvStructureSearch(); } filters.StructureSearch.Query = query; filters.StructureSearch.Exactsearch = exactsearch; filters.StructureSearch.Stereo = stereo; filters = BreadcrumbNavigationGetSet(filters); StringBuilder sb = new StringBuilder(524288); byte[] bytesData = Encoding.ASCII.GetBytes("query=" + query + ";exactsearch=" + exactsearch + ";stereo=" + stereo + "\0"); int result = StructureSearch(bytesData, sb, sb.Capacity); string recordIds = sb.Replace(";", ",").ToString().Trim().TrimEnd(','); ViewBag.ErrorMsg = "result: " + result + "sb: " + sb; BaseSearchModel model = new BaseSearchModel(); model.IsStructureSearch = true; if (request.Pager == null) { request = new GridDescriptor(new SortDescriptor() { PropertyName = "Name", Order = SortOrder.Ascending }); } model.Descriptor = request; //kada proradi raskomentarisati if (!string.IsNullOrEmpty(recordIds) && result > 0) { model.ListOfMaterials = _searchResultsBinder.GetResultsStructureAdvSearch(recordIds, request, materialContextUow); } SearchResultsCondition filterModel = new SearchResultsCondition(); filterModel.FullText = ""; filterModel.ShowPropertiesFilters = false; filterModel.FromBrowse = false; filterModel.FromAdvanced = true; model.Filter = filterModel; ModelState.Clear(); return(View("AdvSearchResults", model)); }
public void RefreshPager <T>(DevExpress.XtraGrid.GridControl gridControl, List <T> lsList, BaseSearchModel search) { this.searchModel = search; this.bindingSource1.DataSource = lsList; this.bindingNavigator1.BindingSource = this.bindingSource1; gridControl.DataSource = this.bindingSource1; this.lblCurrentPage.Text = "当前页:" + searchModel.PageNum.ToString(); this.lblTotalPage.Text = "总页数:" + searchModel.TotalPage.ToString(); this.lblPageSize.Text = "每页记录数:" + searchModel.PageSize.ToString(); this.lblTotalRecordCount.Text = "总记录数:" + searchModel.RecordCount.ToString(); this.txtJumpTo.Text = searchModel.PageNum.ToString(); }
public void QuestionBcTests_UpdateQuestion() { var random = TestUtils.RandomString(10); var search = new BaseSearchModel { Limit = 10, Offset = 0, Filter = "Random" }; var result = questionBc.GetSearchQuery(search); if (!result.Any()) { Assert.Inconclusive(); } else { bool updated = false; foreach (var question in result) { if (question.Choices.Any()) { var dbQuestion = result.FirstOrDefault(); var original = dbQuestion.Question; dbQuestion.Id = dbQuestion.Id; dbQuestion.Question = $"Updated description {random}"; dbQuestion.Choices = new QuestionChoiceResponseModel[] { new QuestionChoiceResponseModel { Name = $"choice_{random}", Votes = 1 } }; var updatedQuestion = questionBc.UpdateQuestion(dbQuestion); Assert.AreNotEqual(original, updatedQuestion.Question); updated = true; break; } } if (!updated) { Assert.Inconclusive(); } } }
/// <summary> /// Prepare passed list model to display in a grid /// </summary> /// <typeparam name="TListModel">List model type</typeparam> /// <typeparam name="TModel">Model type</typeparam> /// <typeparam name="TObject">Object type</typeparam> /// <param name="listModel">List model</param> /// <param name="searchModel">Search model</param> /// <param name="objectList">Paged list of objects</param> /// <param name="dataFillFunction">Function to populate model data</param> /// <returns>List model</returns> public static TListModel PrepareToGrid <TListModel, TModel, TObject>(this TListModel listModel, BaseSearchModel searchModel, IPagedList <TObject> objectList, Func <IEnumerable <TModel> > dataFillFunction) where TListModel : BasePagedListModel <TModel> { if (listModel == null) { throw new ArgumentNullException(nameof(listModel)); } listModel.Data = dataFillFunction?.Invoke(); listModel.Draw = searchModel?.Draw; listModel.RecordsTotal = objectList?.TotalCount ?? 0; listModel.RecordsFiltered = objectList?.TotalCount ?? 0; return(listModel); }
public ActionResult BrowseSearch(SearchFilters filters) { BaseSearchModel model = new BaseSearchModel(); filters = (SearchFilters)((IDictionary <string, object>)BreadcrumbNavigationGetSet(filters, null, true))["filters"]; model = SearchResults(filters, "", null); SearchResultsCondition filterModel = new SearchResultsCondition(); filterModel.ClasificationId = filters.ClasificationId; filterModel.ClasificationTypeId = filters.ClasificationTypeId; filterModel.ShowPropertiesFilters = false; filterModel.FromBrowse = filters.FromBrowse; filterModel.SelectedSource = filters.Source; model.Filter = filterModel; return(View("BrowseSearch", model)); }
public IEnumerable <Question> GetSearchQuery(BaseSearchModel searchModel) { var query = Query.Include(x => x.QuestionChoices); if (!string.IsNullOrWhiteSpace(searchModel.Filter)) { string lowercaseFilter = searchModel.Filter.ToLower(); query = query.Where(x => x.QuestionDescription.Contains(lowercaseFilter) || x.QuestionChoices.Any(qc => qc.Name.Contains(lowercaseFilter))); } return(query .OrderBy(o => o.Id) .Skip(searchModel.Offset) .Take(searchModel.Limit) .ToArray()); }
public ActionResult Search(SearchFilters filters = null, int HasSearchFilters = 0) { BaseSearchModel model = new BaseSearchModel(); IDictionary <string, object> allFilters = BreadcrumbNavigationGetSet(filters, null); filters = (SearchFilters)(allFilters["filters"]); if (allFilters.ContainsKey("advFilters")) { model = SearchResults(filters, "", (AdvSearchFiltersAll)allFilters["advFilters"]); } else { model = SearchResults(filters, "", null); } model.HasSearchFilters = (HasSearchFiltersEnum)HasSearchFilters; return(View("Search", model)); }
public static List <SiteActivity> SearchToday(string keywords, string pOrderBy, string sortDirection, int pageNumber, int pageSize, ref int pTotalRows) { BaseSearchModel parms = new BaseSearchModel() { Keyword = keywords, PageNumber = pageNumber, PageSize = pageSize }; //probably should validate valid order by - or do in proc if (string.IsNullOrWhiteSpace(pOrderBy)) { parms.IsDescending = true; parms.OrderBy = "CreatedDate"; //pOrderBy = "Created DESC"; } else { if ("activity event email comment createddate".IndexOf(pOrderBy.ToLower()) == -1) { parms.OrderBy = "CreatedDate"; //pOrderBy = "Created DESC"; } else { parms.OrderBy = pOrderBy; } if (sortDirection.ToLower() == "desc") { parms.IsDescending = true; //pOrderBy += " DESC"; } } List <SiteActivity> list = ActivityManager.SearchToday(parms); pTotalRows = parms.TotalRows; return(list); }
public static List <SiteActivity> SearchAll(BaseSearchModel parms, ref int pTotalRows) { //probably should validate valid order by - or do in proc if (string.IsNullOrWhiteSpace(parms.OrderBy)) { parms.IsDescending = true; parms.OrderBy = "CreatedDate"; //pOrderBy = "Created DESC"; } else { if ("id activity event email comment createddate actionbyuser".IndexOf(parms.OrderBy.ToLower()) == -1) { parms.OrderBy = "CreatedDate"; //pOrderBy = "Created DESC"; } } List <SiteActivity> list = ActivityManager.SearchAll(parms); pTotalRows = parms.TotalRows; return(list); }
public IEnumerable <T> Search(BaseSearchModel request) { var dynamicQuery = new List <QueryContainer>(); foreach (var item in request.Fields) { dynamicQuery.Add(Query <T> .Match(m => m.Field(new Field(item.Key.ToLower())).Query(item.Value))); } var result = _elasticClient.Search <T>(s => s .From(request.From) .Size(request.Size) .Index(_indexName) .Query(q => q.Bool(b => b.Must(dynamicQuery.ToArray())))); if (!result.IsValid) { throw new Exception(result.OriginalException.Message); } return(result.Documents); }
public JsonResult ApplyFilters(SearchFilters filters, AdvSearchFiltersAll advFilters, string classIds, int reset = 0) { if (classIds == "") { Session["ClassificationIds"] = ""; } BaseSearchModel model = new BaseSearchModel(); IDictionary <string, object> allFilters = BreadcrumbNavigationGetSet(filters, advFilters, false, classIds); filters = (SearchFilters)allFilters["filters"]; advFilters = (AdvSearchFiltersAll)allFilters["advFilters"]; if (reset == 1) { Session["ClassificationIds"] = ""; advFilters = null; classIds = ""; } model = SearchResults(filters, classIds, advFilters); SearchResultsCondition filterModel = new SearchResultsCondition(); filterModel.ClasificationId = filters.ClasificationId; filterModel.ClasificationTypeId = filters.ClasificationTypeId; filterModel.PropertyClasificationId = filters.PropertyClasificationId; filterModel.PropertyClasificationTypeId = filters.PropertyClasificationTypeId; filterModel.FullText = filters.filter; filterModel.ShowPropertiesFilters = false; filterModel.FromBrowse = filters.FromBrowse; filterModel.SelectedSource = filters.Source; model.Filter = filterModel; System.Web.HttpContext.Current.Session["AdvancedSearchFilter"] = advFilters; ModelState.Clear(); return(Json(ResponseStatus.Success, RenderPartialViewToString("ResultsContainer", model))); }
public static List <SiteActivity> SearchToday(BaseSearchModel parms) { string connectionString = DBConnectionRO(); SiteActivity entity = new SiteActivity(); List <SiteActivity> list = new List <SiteActivity>(); if (parms.PageSize == 0) { parms.PageSize = 25; } int skip = 0; if (parms.PageNumber > 1) { skip = (parms.PageNumber - 1) * parms.PageSize; } if (string.IsNullOrWhiteSpace(parms.OrderBy)) { parms.OrderBy = "CreatedDate"; parms.IsDescending = true; } list = SearchAll(parms); return(list); } //
public BaseSearchModel GetResults(SearchFilters filters, GridDescriptor request, IMaterialsContextUow context, string classificationIds, AdvSearchFiltersAll advFilters) { if (string.IsNullOrWhiteSpace(classificationIds) && HttpContext.Current.Session["ClassificationIds"] != "") { classificationIds = (string)HttpContext.Current.Session["ClassificationIds"]; } BaseSearchModel model = new BaseSearchModel(); if (filters.filter == null) { filters.filter = ""; } IEnumerable <FullTextSearch> results = null; IEnumerable <MaterialTaxonomy> taxonomyResults = new List <MaterialTaxonomy>(); IEnumerable <MaterialTaxonomy> taxonomyResultsL1 = new List <MaterialTaxonomy>(); IEnumerable <MaterialTaxonomy> taxonomyResultsL2 = new List <MaterialTaxonomy>(); IEnumerable <MaterialTaxonomy> taxonomyResultsL3 = new List <MaterialTaxonomy>(); IEnumerable <MaterialTaxonomy> taxonomyResultsL4 = new List <MaterialTaxonomy>(); IEnumerable <int> taxonomyResultIds = new List <int>(); IList <int> typeIds = new List <int>(); IList <int> classIds = new List <int>(); IList <int> subclassIds = new List <int>(); IList <int> groupIds = new List <int>(); IList <int> resultIds = null; if (filters.filter != "") { results = context.FullTextSearch.GetMaterialsByFullTextSearch(false, filters.filter); resultIds = context.FullTextSearch.GetMaterialsIdsByFullTextSearch(filters.filter).ToList(); } else { if ((filters.FromBrowse && filters.ClasificationId != 0)) { taxonomyResults = context.MaterialTaxonomyAll.AllAsNoTracking; results = context.FullTextSearch.AllAsNoTracking; //resultIds = context.FullTextSearch.AllAsNoTracking.Select(c => c.Id).ToList(); resultIds = null; } else { results = new HashSet <FullTextSearch>(); resultIds = null; } } IList <string> allIds = new List <string>(); IList <int> classificationSelection = new List <int>(); if (classificationIds != null && classificationIds.Length > 0) { allIds = classificationIds.Split(',').ToList(); typeIds = new List <int>(); classIds = new List <int>(); subclassIds = new List <int>(); groupIds = new List <int>(); IList <int> propIds = new List <int>(); foreach (var item in allIds) { if (item.Contains("TYPE")) { typeIds.Add(Int32.Parse(item.Replace("TYPE_", ""))); } if (item.Contains("SUBCLASS")) { classIds.Add(Int32.Parse(item.Replace("SUBCLASS_", ""))); } if (item.Contains("CLASS") && !item.Contains("SUBCLASS")) { groupIds.Add(Int32.Parse(item.Replace("CLASS_", ""))); } if (item.Contains("GROUP")) { subclassIds.Add(Int32.Parse(item.Replace("GROUP_", ""))); } if (item.Contains("PROPERTY")) { propIds.Add(Int32.Parse(item.Replace("PROPERTY_", ""))); } } /* * Idem u bazu u MaterialTaxonomy i tamo za materijale koje imam u resultsu radim where po kriterijumima za classificationIds * i to sto dobijem radim INTERSECT sa results od gore, a ovaj results ispod komentarisem */ taxonomyResults = context.MaterialTaxonomyAll.AllAsNoTracking.Where(t => resultIds.Contains(t.ID)); taxonomyResultsL1 = new List <MaterialTaxonomy>(); taxonomyResultsL2 = new List <MaterialTaxonomy>(); taxonomyResultsL3 = new List <MaterialTaxonomy>(); taxonomyResultsL4 = new List <MaterialTaxonomy>(); taxonomyResultIds = new List <int>(); if (typeIds.Count > 0) { taxonomyResultsL1 = taxonomyResults.Where(l1 => l1.Level1 != null && typeIds.Contains((int)l1.Level1)); } if (groupIds.Count > 0) { taxonomyResultsL2 = taxonomyResults.Where(l2 => l2.Level2 != null && groupIds.Contains((int)l2.Level2)); } if (classIds.Count > 0) { taxonomyResultsL3 = taxonomyResults.Where(l3 => l3.Level3 != null && classIds.Contains((int)l3.Level3)); } if (subclassIds.Count > 0) { taxonomyResultsL4 = taxonomyResults.Where(l4 => l4.Level4 != null && subclassIds.Contains((int)l4.Level4)); } taxonomyResultIds = taxonomyResultsL1.Select(i1 => i1.ID).ToList() .Union(taxonomyResultsL2.Select(i2 => i2.ID).ToList()) .Union(taxonomyResultsL3.Select(i3 => i3.ID).ToList()) .Union(taxonomyResultsL4.Select(i4 => i4.ID).ToList()); IList <int> intersectIds = resultIds.Intersect(taxonomyResultIds).Distinct().ToList(); results = results.Where(r => intersectIds.Contains(r.Id)); //results = results.Where(m => (typeIds.Count > 0 && m.type_ID != null && typeIds.Contains((int)m.type_ID)) // || (classIds.Count > 0 && m.class_ID != null && classIds.Contains((int)m.class_ID)) // || (groupIds.Count > 0 && m.group_ID != null && groupIds.Contains((int)m.group_ID)) // || (subclassIds.Count > 0 && m.subClass_ID != null && subclassIds.Contains((int)m.subClass_ID)) // ); if (propIds.Count > 0) { results = results.Where(r => r.prop_IDs != null && CheckIDs(r.prop_IDs, propIds)); } classificationSelection = typeIds.Concat(classIds).Concat(groupIds).Concat(subclassIds).Concat(propIds).ToList(); resultIds = null; } if (filters.FromBrowse) { if (filters.ClasificationId != 0) { switch (filters.ClasificationTypeId) { case 1: results = results.Where(m => m.type_ID == filters.ClasificationId); taxonomyResults = taxonomyResults.Where(m => m.Level1 == filters.ClasificationId); break; case 2: results = results.Where(m => m.group_ID == filters.ClasificationId); taxonomyResults = taxonomyResults.Where(m => m.Level2 == filters.ClasificationId); break; case 3: results = results.Where(m => m.class_ID == filters.ClasificationId); taxonomyResults = taxonomyResults.Where(m => m.Level3 == filters.ClasificationId); break; case 4: results = results.Where(m => m.subClass_ID == filters.ClasificationId); taxonomyResults = taxonomyResults.Where(m => m.Level4 == filters.ClasificationId); break; default: break; } resultIds = null; } } HttpContext.Current.Session["ClassificationSelection"] = classificationSelection; // Inlude source filters if (filters.Source != null && filters.Source != "") { int sourceId; int?sourceDatabookId = null; if (filters.Source != "0") { IList <string> allSourceIds = filters.Source.Split(',').ToList(); if (allSourceIds.Count > 1) { sourceId = allSourceIds[0] != "" ? int.Parse(allSourceIds[0]) : 0; sourceDatabookId = allSourceIds[1] != "" ? int.Parse(allSourceIds[1]) : 0; } else { sourceId = allSourceIds[0] != "" ? int.Parse(allSourceIds[0]) : 0; } } else { sourceId = 0; sourceDatabookId = null; } if (sourceId != 0) { results = results.Where(m => m.source_IDs != null && m.source_IDs.Contains(string.Concat(",", sourceId.ToString(), ","))); resultIds = null; } if (sourceDatabookId != null && sourceDatabookId != 0) { results = results.Where(m => m.databook_IDs != null && m.databook_IDs.Contains(string.Concat(",", sourceDatabookId.ToString(), ","))); resultIds = null; } } //// Inlude column filters SearchFilterColumnsAll columnFilters = (SearchFilterColumnsAll)System.Web.HttpContext.Current.Session["SearchFilterColumnsAll"]; if (columnFilters != null) { foreach (SearchFilterColumns f in columnFilters.AllFilters.Where(c => c.Filter != null && c.Filter.Trim() != "")) { string oneFilter = f.Filter.Trim().ToUpper(); if (f.Name == "Material Name") { results = results.Where(m => m.material_designation != null && m.material_designation.ToUpper().Contains(oneFilter)); resultIds = null; } else if (f.Name == "Type") { results = results.Where(m => m.material_type != null && m.material_type.ToUpper().Contains(oneFilter)); resultIds = null; } else if (f.Name == "Class") { results = results.Where(m => m.material_group != null && m.material_group.ToUpper().Contains(oneFilter)); resultIds = null; } else if (f.Name == "Subclass") { results = results.Where(m => m.material_class != null && m.material_class.ToUpper().Contains(oneFilter)); resultIds = null; } else if (f.Name == "Group") { results = results.Where(m => m.material_subClass != null && m.material_subClass.ToUpper().Contains(oneFilter)); resultIds = null; } else if (f.Name == "UNS No.") { results = results.Where(m => m.UNS != null && m.UNS.ToUpper().Contains(oneFilter)); resultIds = null; } else if (f.Name == "CAS RN") { results = results.Where(m => m.CAS_RN != null && m.CAS_RN.ToUpper().Contains(oneFilter)); resultIds = null; } } } /*adv search*/ if (advFilters != null && advFilters.AllFilters != null && advFilters.AllFilters.Count > 0) { string sessionId = System.Web.HttpContext.Current.Session["TotalMateriaSession"].ToString(); IQueryable <EquivalentProperty> propIds = context.EquivalentProperties.AllAsNoTracking; IQueryable <EquivalentMaterial> matIds = context.EquivalentMaterials.AllAsNoTracking; IEnumerable <int> materialIds = context.AdvSearchResults.GetMaterialsByAdvancedSearch(false, advFilters, sessionId, propIds, matIds); IEnumerable <int> matVisibleIds = results.Select(n => n.Id); materialIds = materialIds.Where(n => matVisibleIds.Contains(n)); IEnumerable <int> resTM = context.FullTextSearch.GetMaterialsByMaterialIds(materialIds).Select(n => n.Id); results = results.Where(n => resTM.Contains(n.Id)); resultIds = null; } // Eval query and prepare final results if (filters.FromBrowse) { // From taxonomy table IList <int> tmpList = null; if (resultIds == null) { tmpList = taxonomyResults.Select(m => m.ID).Distinct().ToList(); } else { tmpList = resultIds.Distinct().ToList(); } HttpContext.Current.Session["ClassificationRecordsCount"] = tmpList; if (request.Sort.PropertyName == "Name") { IList <SampleMaterialModel> retListTemp = taxonomyResults .OrderBy(l => l.ID) .ThenBy(l1 => l1.Level1Name) .ThenByDescending(l4 => l4.Level4Name) .ThenByDescending(l3 => l3.Level3Name) .ThenByDescending(l2 => l2.Level2Name) .Select(m => new SampleMaterialModel() { Id = m.ID, Name = m.MaterialName, TypeName = m.Level1Name, GroupName = m.Level2Name, ClassName = m.Level3Name, SubClassName = m.Level4Name, UNS = null, CAS_RN = null }) .ToList(); IList <SampleMaterialModel> retList = new List <SampleMaterialModel>(); foreach (int matId in tmpList) { SampleMaterialModel mResult = retListTemp.Where(r => r.Id == matId).FirstOrDefault(); if (mResult != null) { retList.Add(new SampleMaterialModel() { Id = mResult.Id, Name = mResult.Name, TypeName = mResult.TypeName, GroupName = mResult.GroupName, ClassName = mResult.ClassName, SubClassName = mResult.SubClassName }); } } model.ListOfMaterials = PagerSearch <SampleMaterialModel>(request.Pager, retList.AsQueryable(), tmpList.Count).ToList(); } else { model.ListOfMaterials = taxonomyResults.AsQueryable().Slice(request).Select(m => new SampleMaterialModel() { Id = m.ID, Name = m.MaterialName, TypeName = m.Level1Name, GroupName = m.Level2Name, ClassName = m.Level3Name, SubClassName = m.Level4Name, UNS = null, CAS_RN = null }) .ToList(); } } else { IList <int> tmpList = null; if (resultIds == null) { tmpList = results.Select(m => m.Id).ToList(); } else { tmpList = resultIds; } HttpContext.Current.Session["ClassificationRecordsCount"] = tmpList; if (request.Sort.PropertyName == "Name") { // If search is not "by taxonomy' use FullTextSearch, else use materialTaxonomy table if (typeIds.Count() == 0 && groupIds.Count() == 0 && classIds.Count == 0 && subclassIds.Count() == 0) { IQueryable <SampleMaterialModel> retList = results.Select(m => new SampleMaterialModel() { Id = m.Id, Name = m.material_designation, TypeName = m.material_type, GroupName = m.material_group, ClassName = m.material_class, SubClassName = m.material_subClass, UNS = m.UNS, CAS_RN = m.CAS_RN }) .AsQueryable(); model.ListOfMaterials = PagerSearch <SampleMaterialModel>(request.Pager, retList, tmpList.Count).ToList(); } else { IEnumerable <MaterialTaxonomy> tr = context.MaterialTaxonomyAll.AllAsNoTracking; IEnumerable <MaterialTaxonomy> tr1 = new List <MaterialTaxonomy>(); IEnumerable <MaterialTaxonomy> tr2 = new List <MaterialTaxonomy>(); IEnumerable <MaterialTaxonomy> tr3 = new List <MaterialTaxonomy>(); IEnumerable <MaterialTaxonomy> tr4 = new List <MaterialTaxonomy>(); if (typeIds.Count > 0) { tr1 = tr.Where(l1 => l1.Level1 != null && typeIds.Contains((int)l1.Level1)); } if (groupIds.Count > 0) { tr2 = tr.Where(l2 => l2.Level2 != null && groupIds.Contains((int)l2.Level2)); } if (classIds.Count > 0) { tr3 = tr.Where(l3 => l3.Level3 != null && classIds.Contains((int)l3.Level3)); } if (subclassIds.Count > 0) { tr4 = tr.Where(l4 => l4.Level4 != null && subclassIds.Contains((int)l4.Level4)); } IList <Tuple <int, string, string, string, string, string> > trs = tr1.Select(i1 => new Tuple <int, string, string, string, string, string>(i1.ID, i1.MaterialName, i1.Level1Name, i1.Level2Name, i1.Level3Name, i1.Level4Name)) .Union(tr2.Select(i2 => new Tuple <int, string, string, string, string, string>(i2.ID, i2.MaterialName, i2.Level1Name, i2.Level2Name, i2.Level3Name, i2.Level4Name))) .Union(tr3.Select(i3 => new Tuple <int, string, string, string, string, string>(i3.ID, i3.MaterialName, i3.Level1Name, i3.Level2Name, i3.Level3Name, i3.Level4Name))) .Union(tr4.Select(i4 => new Tuple <int, string, string, string, string, string>(i4.ID, i4.MaterialName, i4.Level1Name, i4.Level2Name, i4.Level3Name, i4.Level4Name))) .ToList(); IList <SampleMaterialModel> retListTemp = trs .OrderBy(l => l.Item1) .ThenBy(l1 => l1.Item3) .ThenByDescending(l4 => l4.Item6) .ThenByDescending(l3 => l3.Item5) .ThenByDescending(l2 => l2.Item4) .Select(m => new SampleMaterialModel() { Id = m.Item1, Name = m.Item2, TypeName = m.Item3, GroupName = m.Item4, ClassName = m.Item5, SubClassName = m.Item6, UNS = null, CAS_RN = null }) .ToList(); IList <SampleMaterialModel> retList = new List <SampleMaterialModel>(); foreach (int matId in tmpList) { SampleMaterialModel mResult = retListTemp.Where(r => r.Id == matId).FirstOrDefault(); if (mResult != null) { retList.Add(new SampleMaterialModel() { Id = mResult.Id, Name = mResult.Name, TypeName = mResult.TypeName, GroupName = mResult.GroupName, ClassName = mResult.ClassName, SubClassName = mResult.SubClassName }); } } model.ListOfMaterials = PagerSearch <SampleMaterialModel>(request.Pager, retList.AsQueryable(), tmpList.Count).ToList(); } } else { model.ListOfMaterials = results.AsQueryable().Slice(request).Select(m => new SampleMaterialModel() { Id = m.Id, Name = m.material_designation, TypeName = m.material_type, GroupName = m.material_group, ClassName = m.material_class, SubClassName = m.material_subClass, UNS = m.UNS, CAS_RN = m.CAS_RN }) .ToList(); } } model.Descriptor = request; model.Filter = new SearchResultsCondition(); model.Filter.FullText = filters.filter; if (classificationSelection.Count > 0) { HttpContext.Current.Session["NodeNames"] = context.Trees.GetTreeNodesNames(classificationSelection); } else { HttpContext.Current.Session["NodeNames"] = new Dictionary <int, string>(); } return(model); }
/// <summary> /// Current Activity Search /// </summary> /// <returns></returns> public ActionResult DoSearch() { var result = new JsonResult(); try { #region According to Datatables.net, Server side parameters //global search var search = Request.Form["search[value]"]; //what is draw?? var draw = Request.Form["draw"]; var orderBy = string.Empty; //column index var order = int.Parse(Request.Form["order[0][column]"]); //sort direction var orderDir = Request.Form["order[0][dir]"]; int startRec = int.Parse(Request.Form["start"]); int pageSize = int.Parse(Request.Form["length"]); int pageNbr = (startRec / pageSize) + 1; #endregion #region Where filter //individual column wise search var columnSearch = new List <string>(); var globalSearch = new List <string>(); DateTime dt = new DateTime(); //Get all keys starting with columns foreach (var index in Request.Form.AllKeys.Where(x => Regex.Match(x, @"columns\[(\d+)]").Success).Select(x => int.Parse(Regex.Match(x, @"\d+").Value)).Distinct().ToList()) { //get individual columns search value var value = Request.Form[string.Format("columns[{0}][search][value]", index)]; if (!string.IsNullOrWhiteSpace(value)) { value = value.Trim(); string colName = Request.Form[string.Format("columns[{0}][data]", index)]; if (colName == "DisplayDate" || colName == "Created") { if (DateTime.TryParse(value, out dt)) { columnSearch.Add(string.Format(" (convert(varchar(10),CreatedDate,120) = '{0}') ", dt.ToString("yyyy-MM-dd"))); } } else if (colName == "ParentRecordId" || colName == "ParentEntityTypeId" || colName == "ActivityObjectId" || colName == "ActionByUserId") { columnSearch.Add(string.Format(" ( {0} = {1} ) ", colName, value)); } else { if (value.Length > 1 && value.IndexOf("!") == 0) { columnSearch.Add(string.Format("({0} NOT LIKE '%{1}%')", Request.Form[string.Format("columns[{0}][data]", index)], value.Substring(1))); } else { columnSearch.Add(string.Format("({0} LIKE '%{1}%')", Request.Form[string.Format("columns[{0}][data]", index)], value)); } } } //get column filter for global search if (!string.IsNullOrWhiteSpace(search)) { if (index > 0) //skip date { globalSearch.Add(string.Format("({0} LIKE '%{1}%')", Request.Form[string.Format("columns[{0}][data]", index)], search)); } } //get order by from order index if (order == index) { orderBy = Request.Form[string.Format("columns[{0}][data]", index)]; } } var where = string.Empty; //concat all filters for global search if (globalSearch.Any()) { where = globalSearch.Aggregate((current, next) => current + " OR " + next); } if (columnSearch.Any()) { if (!string.IsNullOrEmpty(where)) { where = string.Format("({0}) AND ({1})", where, columnSearch.Aggregate((current, next) => current + " AND " + next)); } else { where = columnSearch.Aggregate((current, next) => current + " AND " + next); } } #endregion BaseSearchModel parms = new BaseSearchModel() { Keyword = "", OrderBy = orderBy, IsDescending = orderDir == "desc" ? true : false, PageNumber = pageNbr, PageSize = pageSize }; parms.Filter = where; var totalRecords = 0; var list = ActivityServices.Search(parms, ref totalRecords); result = Json(new { data = list, draw = int.Parse(draw), recordsTotal = totalRecords, recordsFiltered = totalRecords }, JsonRequestBehavior.AllowGet); } catch (Exception ex) { } return(result); }
public IEnumerable <QuestionResponseModel> GetSearchQuery(BaseSearchModel searchModel) { return(questionRepo.GetSearchQuery(searchModel).Select(y => MapToQuestionModel(y))); }
public JsonResult ApplyPager(GridDescriptor request) { BreadcrumbNavigation nav = (BreadcrumbNavigation)System.Web.HttpContext.Current.Session["Navigation"]; if (nav == null) { nav = new BreadcrumbNavigation(); } AdvSearchFiltersAll filters = new AdvSearchFiltersAll(); AdvancedSearchResults res = nav.GetOrderedItems().Where(n => n.NavigableID == "AdvancedSearchResults").FirstOrDefault() as AdvancedSearchResults; if (res != null) { filters = res.PageData as AdvSearchFiltersAll; } nav.LastNavigable = "AdvancedSearchResults"; System.Web.HttpContext.Current.Session["Navigation"] = nav; BaseSearchModel model = new BaseSearchModel(); if (request.Pager == null) { request = new GridDescriptor(new SortDescriptor() { PropertyName = "Name", Order = SortOrder.Ascending }); } model.Descriptor = request; if (filters.StructureSearch != null) { StringBuilder sb = new StringBuilder(65536); byte[] bytesData = Encoding.ASCII.GetBytes("query=" + filters.StructureSearch.Query + ";exactsearch=" + filters.StructureSearch.Exactsearch + ";stereo=" + filters.StructureSearch.Stereo + "\0"); var result = StructureSearch(bytesData, sb, sb.Capacity); string recordIds = sb.Replace(";", ",").ToString().Trim().TrimEnd(','); if (!string.IsNullOrEmpty(recordIds)) { model.ListOfMaterials = _searchResultsBinder.GetResultsStructureAdvSearch(recordIds, request, materialContextUow); } model.IsStructureSearch = true; } else { model.ListOfMaterials = _searchResultsBinder.GetResultsAdvSearch(filters, request, materialContextUow); } SearchResultsCondition filterModel = new SearchResultsCondition(); //filterModel.ClasificationId = filters.ClasificationId; //filterModel.ClasificationTypeId = filters.ClasificationTypeId; filterModel.FullText = ""; filterModel.ShowPropertiesFilters = false; filterModel.FromBrowse = false; filterModel.FromAdvanced = true; // add Sources to model filterModel.Sources = materialContextUow.Sources.AllAsNoTracking.OrderBy(m => m.Id).ThenBy(n => n.Name).ToList(); filterModel.SelectedSource = filters.SelectedSource; model.Filter = filterModel; //BreadcrumbNavigationGetSet(filters); return(Json(ResponseStatus.Success, RenderPartialViewToString("AdvResultsContainer", model), JsonRequestBehavior.AllowGet)); }
public ActionResult FullTextSearchOnly(SearchFilters filters) { BaseSearchModel model = new BaseSearchModel(); model = _searchResultsBinder.GetResultsFullTextSearch(filters, new GridDescriptor(new SortDescriptor() { PropertyName = "Name", Order = SortOrder.Ascending }), materialContextUow); model.HasSearchFilters = HasSearchFiltersEnum.Yes; BreadcrumbNavigation nav = (BreadcrumbNavigation)System.Web.HttpContext.Current.Session["Navigation"]; if (nav == null) { nav = new BreadcrumbNavigation(); } if (nav.Contains("AdvancedSearch")) { AdvancedSearchNav asn = nav.GetOrderedItems().Where(n => n.NavigableID == "AdvancedSearch").FirstOrDefault() as AdvancedSearchNav; asn.PageData = null; asn.IsVisible = false; } if (nav.Contains("AdvancedSearchResults")) { AdvancedSearchResults asn = nav.GetOrderedItems().Where(n => n.NavigableID == "AdvancedSearchResults").FirstOrDefault() as AdvancedSearchResults; asn.PageData = null; asn.IsVisible = false; } if (nav.Contains("Exporter")) { nav.Pop(); } if (nav.Contains("Comparison")) { nav.Pop(); } if (nav.Contains("MaterialDetails1")) { nav.Pop(); } if (nav.Contains("Subgroups")) { nav.Pop(); } if (nav.Contains("BrowseFacets")) { nav.Pop(); } if (nav.Contains("BrowseHome")) { nav.Pop(); } System.Web.HttpContext.Current.Session["AdvancedSearchFilter"] = null; Session["ClassificationSelection"] = null; Session["ClassificationIds"] = ""; IDictionary <string, object> allFilters = new Dictionary <string, object>(); allFilters.Add("filters", filters); allFilters.Add("advFilters", null); FullSearch fs = nav.GetOrderedItems().Where(n => n.NavigableID == "FullSearch").FirstOrDefault() as FullSearch; if (fs == null) { fs = new FullSearch(); } fs.IsVisible = true; fs.PageData = allFilters; nav.LastNavigable = "FullSearch"; nav.Push(fs); new TableFiltersBinder().resetAllTableFilters(); return(View("Search", model)); }
} // public static List <SiteActivity> SearchAll(BaseSearchModel parms) { string connectionString = DBConnectionRO(); SiteActivity entity = new SiteActivity(); List <SiteActivity> list = new List <SiteActivity>(); if (parms.PageSize == 0) { parms.PageSize = 25; } int skip = 0; if (parms.PageNumber > 1) { skip = (parms.PageNumber - 1) * parms.PageSize; } if (string.IsNullOrWhiteSpace(parms.OrderBy)) { parms.OrderBy = "CreatedDate"; parms.IsDescending = true; } if (parms.StartDate == null || parms.StartDate < new DateTime(2015, 1, 1)) { parms.StartDate = new DateTime(2015, 1, 1); } if (parms.EndDate == null || parms.EndDate < new DateTime(2015, 1, 1)) { parms.EndDate = DateTime.Now; } using (var context = new ViewContext()) { var query = from Results in context.Activity_Summary .Where(s => s.Activity != "Session") select Results; if (!string.IsNullOrWhiteSpace(parms.Keyword)) { query = from Results in query .Where(s => (s.Activity.Contains(parms.Keyword) || (s.Event.Contains(parms.Keyword)) || (s.Comment.Contains(parms.Keyword)) )) select Results; } parms.TotalRows = query.Count(); if (parms.IsDescending) { if (parms.OrderBy == "CreatedDate") { query = query.OrderByDescending(p => p.CreatedDate); } else if (parms.OrderBy == "Activity") { query = query.OrderByDescending(p => p.Activity); } else if (parms.OrderBy == "Event") { query = query.OrderByDescending(p => p.Event); } else if (parms.OrderBy == "ActionByUser") { query = query.OrderByDescending(p => p.ActionByUser); } else { query = query.OrderByDescending(p => p.CreatedDate); } } else { if (parms.OrderBy == "CreatedDate") { query = query.OrderBy(p => p.CreatedDate); } else if (parms.OrderBy == "Activity") { query = query.OrderBy(p => p.Activity); } else if (parms.OrderBy == "Event") { query = query.OrderBy(p => p.Event); } else if (parms.OrderBy == "ActionByUser") { query = query.OrderBy(p => p.ActionByUser); } else { query = query.OrderBy(p => p.CreatedDate); } } var results = query.Skip(skip).Take(parms.PageSize) .ToList(); if (results != null && results.Count > 0) { foreach (Views.Activity_Summary item in results) { entity = new SiteActivity(); entity.Id = item.Id; entity.Activity = item.Activity; entity.Event = item.Event; entity.Comment = item.Comment; entity.Created = ( DateTime )item.CreatedDate; entity.ActionByUser = item.ActionByUser; entity.Referrer = entity.Referrer; list.Add(entity); } } } return(list); } //