Esempio n. 1
0
        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));
        }
Esempio n. 3
0
        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;
        }
Esempio n. 4
0
        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));
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
 public PagesModel(List <T> items, BaseSearchModel searchModel)
 {
     IsPagination = searchModel.IsPagination;
     PageIndex    = searchModel.PageIndex;
     PageSize     = searchModel.PageSize;
     RecordCount  = searchModel.RecordCount;
     Items        = items;
 }
Esempio n. 8
0
 public Query_MainPage()
 {
     this.InitializeComponent();
     if (BaseSearch == null)
     {
         BaseSearch = new BaseSearchModel();
     }
 }
Esempio n. 9
0
 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));
        }
Esempio n. 12
0
        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();
        }
Esempio n. 13
0
        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();
                }
            }
        }
Esempio n. 14
0
        /// <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));
        }
Esempio n. 16
0
        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));
        }
Esempio n. 18
0
        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);
        }
Esempio n. 19
0
        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);
        }
Esempio n. 20
0
        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);
        } //
Esempio n. 23
0
        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);
        }
Esempio n. 25
0
 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);
        } //