public ActionResult AdvancedSearchCustomer() { var advSearchData = new AdvSearchData(); //advSearchData.CustomerEmailList = new SelectList(_context.Customers // .Select(x => new { x.CustomerEmail, x. }), // "Id", // "Status1"); advSearchData.CustomerEmailList = new SelectList(_context.Customers .GroupBy(x => x.CustomerEmail) .Where(x => x.Key != null && !x.Key.Equals(string.Empty)) .Select(x => new { CustomerEmail = x.Key }), "CustomerEmail", "CustomerEmail"); advSearchData.CustomerPhoneList = new SelectList(_context.Customers .GroupBy(x => x.CustomerPhone) .Where(x => x.Key != null && !x.Key.Equals(string.Empty)) .Select(x => new { CustomerPhone = x.Key }), "CustomerPhone", "CustomerPhone"); return(View("AdvancedSearchCustomer", advSearchData)); }
private IQueryable <Customer> SearchAssets(IDataTablesRequest requestModel, AdvSearchData searchViewModel, IQueryable <Customer> query) { // Apply filters if (requestModel.Search.Value != string.Empty) { var value = requestModel.Search.Value.Trim(); query = query.Where(p => p.CustomerEmail.Contains(value) || p.CustomerPhone.Contains(value) || p.CustomerName.Contains(value) || p.CustomerCountry.Contains(value) ); } /***** Advanced Search ******/ if (searchViewModel.CustomerEmail != null) { query = query.Where(x => x.CustomerEmail.Equals(searchViewModel.CustomerEmail)); } if (searchViewModel.CustomerPhone != null) { query = query.Where(x => x.CustomerPhone.Equals(searchViewModel.CustomerPhone)); } /***** Advanced Search ******/ var filteredCount = query.Count(); // Sort var sortedColumns = requestModel.Columns.GetSortedColumns(); var orderByString = String.Empty; foreach (var column in sortedColumns) { orderByString += orderByString != String.Empty ? "," : ""; orderByString += (column.Data) + (column.SortDirection == Column.OrderDirection.Ascendant ? " asc" : " desc"); } //query = query.OrderBy(orderByString == string.Empty ? "BarCode asc" : orderByString); return(query); }
public ActionResult GetCustomers([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest requestModel, AdvSearchData searchViewModel) { IQueryable <Customer> query = _context.Customers; var totalCount = query.Count(); // searching and sorting query = SearchAssets(requestModel, searchViewModel, query); var filteredCount = query.Count(); // Paging query = query.OrderBy(m => m.ID).Skip(requestModel.Start).Take(requestModel.Length); var data = query.Select(CST => new { ID = CST.ID, CustomerEmail = CST.CustomerEmail, CustomerName = CST.CustomerName, CustomerPhone = CST.CustomerPhone, CustomerCountry = CST.CustomerCountry, CustomerImage = CST.CustomerImage //Quantity = IJP, }).ToList(); return(Json(new DataTablesResponse(requestModel.Draw, data, filteredCount, totalCount), JsonRequestBehavior.AllowGet)); }