public ClientIndexVM GetClientList(string sortOrder, string currentFilter, string searchString, int?page) { try { IEnumerable <ClientVM> clientList = _context.Client .Select(c => new ClientVM { ClientName = c.ClientName, ClientID = c.ClientID, StatusID = c.StatusID, StatusName = c.Status.StatusName, ReferenceID = c.ReferenceID, NumOfApps = c.Applications.Count() }); page = searchString == null ? page : 1; searchString = searchString ?? currentFilter; int currentPageIndex = page.HasValue ? page.Value - 1 : 0; int pageNumber = (page ?? 1); int defaultPageSize = ConstantsRepo.PAGE_SIZE; var sorted = Sort(clientList, sortOrder, searchString); int totalNumOfClients = sorted.Count(); sortOrder = sortOrder ?? ConstantsRepo.SORT_STATUS_BY_NAME_DESC; ClientIndexVM model = new ClientIndexVM { Clients = sorted.ToPagedList(pageNumber, defaultPageSize), CurrentFilter = searchString, CurrentSort = sortOrder, TotalItemCount = totalNumOfClients, ItemStart = currentPageIndex * defaultPageSize + 1, ItemEnd = totalNumOfClients - (defaultPageSize * currentPageIndex) >= defaultPageSize ? defaultPageSize * (currentPageIndex + 1) : totalNumOfClients, ClientHeadingSort = sortOrder == ConstantsRepo.SORT_CLIENT_BY_NAME_DESC ? ConstantsRepo.SORT_CLIENT_BY_NAME_ASCE : ConstantsRepo.SORT_CLIENT_BY_NAME_DESC, StatusSort = sortOrder == ConstantsRepo.SORT_STATUS_BY_NAME_DESC ? ConstantsRepo.SORT_STATUS_BY_NAME_ASCE : ConstantsRepo.SORT_STATUS_BY_NAME_DESC, }; return(model); } catch (Exception) { return(null); } }
public ActionResult Index(string sortOrder, string currentFilter, string searchString, int?page) { ClientIndexVM model = _cRepo.GetClientList(sortOrder, currentFilter, searchString, page); return(View(model)); }