public JsonResult searchListItem(string userName , GridSettings gridSettings) { DataItemSearchFilter filter = new DataItemSearchFilter(); filter.Email = userName; if (gridSettings.IsSearch) { filter.Title = gridSettings.Where.rules.Any(r => r.field == "Title") ? gridSettings.Where.rules.FirstOrDefault(r => r.field == "Title").data : string.Empty; filter.AuthorName = gridSettings.Where.rules.Any(r => r.field == "Author") ? gridSettings.Where.rules.FirstOrDefault(r => r.field == "Author").data : string.Empty; } int totalRecords = 0; var items = dataItemService.Search(filter, gridSettings.SortColumn, gridSettings.SortOrder, gridSettings.PageSize, gridSettings.PageIndex, out totalRecords); var jsonData = new { total = totalRecords / gridSettings.PageSize + 1, page = gridSettings.PageIndex, records = totalRecords, rows = ( from a in items select new { ID = a.ID, Title = a.Title, SubMenuName = a.MainMenu.CodeName + " > " + a.SubCategory.CodeName, Country = a.Country.CodeName, InsertDate = a.CreatedDate, EditDate = a.LastUpdatedDate, Author = a.CreatedUser.FullName } ) }; JsonResult result = Json(jsonData); return result; }
public IEnumerable<DataItem> Search(DataItemSearchFilter filter, string sortColumn, string sortOrder, int pageSize, int pageIndex, out int totalRecords) { IEnumerable<DataItem> items = context.DataItems.ToList(); if (!string.IsNullOrEmpty(filter.Title)) { items = items.Where(t => t.Title.ToLower().Contains(filter.Title.ToLower())); } if (!string.IsNullOrEmpty(filter.CountryName)) { var country = this.context.SubCategories.Where(c => c.ParentCategoryCode == (int)MainCategoryType.Country && c.CodeName.Contains(filter.CountryName.ToLower())).FirstOrDefault(); if (country != null) { items = items.Where(t => t.CountryID == country.Code); } } if (!string.IsNullOrEmpty(filter.SubMenuName)) { string[] menus = filter.SubMenuName.Split('>'); if(menus.Count() > 1) { string mainMenu = menus[0].Trim(); string subMenu = menus[1].Trim(); var main = this.context.MainMenus.Where(m => m.CodeName.Contains(mainMenu.ToLower())).FirstOrDefault(); if(main != null) { var sub = this.context.SubMenus.Where(m => m.ParentCategoryCode == main.Code && m.CodeName.Contains(subMenu.ToLower())).FirstOrDefault(); if(sub != null) { items = items.Where(t => t.SubCategoryID == sub.Code); } } } } if (!string.IsNullOrEmpty(filter.AuthorName)) { items = items.Where(t => t.CreatedUser.FullName.ToLower().Contains(filter.AuthorName.ToLower())); } if (!string.IsNullOrEmpty(filter.Email)) { items = items.Where(t => t.CreatedUser.Email.ToLower().Contains(filter.Email.ToLower())); } totalRecords = items.Count(); return items.OrderByDescending(item => item.CreatedDate).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); }