public IPagedList <Contact> GetListByFilter(ContactSearchFilter filter) { List <Contact> contactList = new List <Contact>(); using (ClientManagementContext db = new ClientManagementContext()) { var query = db.Contacts .Where(f => (f.Status != StatusConstants.Deleted) && (filter.UserRoleId == null || filter.UserRoleId == 0 || f.Users.Any(a => a.RoleId == filter.UserRoleId)) && (filter.SearchTerm == string.Empty || f.FirstName.Contains(filter.SearchTerm.Trim()) || f.Email.Contains(filter.SearchTerm.Trim()) || f.CellPhone.Contains(filter.SearchTerm.Trim()))); filter.TotalCount = query.Count(); //sorting Func <Contact, object> OrderByStringField = null; switch (filter.SortColumn) { case "FirstName": OrderByStringField = p => p.FirstName; break; case "Email": OrderByStringField = p => p.Email; break; case "CellPhone": OrderByStringField = p => p.CellPhone; break; default: OrderByStringField = p => p.FirstName; break; } //end sorting var finalQuery = filter.SortDirection == "ASC" ? query.OrderBy(OrderByStringField) : query.OrderByDescending(OrderByStringField); contactList = finalQuery.Skip((filter.PageNumber - 1) * filter.PageSize) .Take(filter.PageSize) .AsParallel() .ToList(); } return(new StaticPagedList <Contact>(contactList, filter.PageNumber, filter.PageSize, filter.TotalCount)); }
public ActionResult List(ContactSearchFilter filter) { filter.SearchTerm = filter.SearchTerm ?? string.Empty; filter.SortColumn = "FirstName"; filter.SortDirection = "ASC"; filter.UserRoleId = UserRoleConstants.Customer; var contactList = _contactService.GetListByFilter(filter); var model = new ContactListViewModel { Contacts = contactList, SearchFilter = filter }; return(View(model)); }
public ActionResult List(int?pageNumber, string searchTerm, string sort = "FirstName", string sortdir = "ASC") { pageNumber = pageNumber ?? 1; var filter = new ContactSearchFilter { PageNumber = (int)pageNumber, SearchTerm = searchTerm ?? string.Empty, SortColumn = sort, SortDirection = sortdir, UserRoleId = UserRoleConstants.Customer }; var contactList = _contactService.GetListByFilter(filter); var model = new ContactListViewModel { Contacts = contactList, SearchFilter = filter }; return(Request.IsAjaxRequest() ? (ActionResult)PartialView("_ContactList", model) : View(model)); }
public ActionResult CustomerContactList(ContactSearchFilter searchFilter) { Logger.Info(_logMsg.Clear().SetPrefixMsg("Search CustomerContactList").Add("CustomerId", searchFilter.CustomerId).ToInputLogString()); try { if (ModelState.IsValid) { _commonFacade = new CommonFacade(); _customerFacade = new CustomerFacade(); CustomerContactViewModel contactVM = new CustomerContactViewModel(); contactVM.SearchFilter = searchFilter; contactVM.ContactList = _customerFacade.GetContactList(contactVM.SearchFilter); ViewBag.PageSize = contactVM.SearchFilter.PageSize; ViewBag.PageSizeList = _commonFacade.GetPageSizeList(); Logger.Info(_logMsg.Clear().SetPrefixMsg("CustomerContactList").ToSuccessLogString()); return(PartialView("~/Views/Contact/_CustomerContactList.cshtml", contactVM)); } return(Json(new { Valid = false, Error = string.Empty, Errors = GetModelValidationErrors() })); } catch (Exception ex) { Logger.Error("Exception occur:\n", ex); Logger.Info(_logMsg.Clear().SetPrefixMsg("Search CustomerContactList").Add("Error Message", ex.Message).ToFailLogString()); return(Error(new HandleErrorInfo(ex, this.ControllerContext.RouteData.Values["controller"].ToString(), this.ControllerContext.RouteData.Values["action"].ToString()))); } }
public IEnumerable <ContactEntity> GetContactList(ContactSearchFilter searchFilter) { _customerDataAccess = new CustomerDataAccess(_context); return(_customerDataAccess.GetContactList(searchFilter)); }