示例#1
0
        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));
        }