private Paging_a_Info PopulatePagingInfo(int totalItems, int currentPage, int pageSize) { int startPage; int endPage; Paging_a_Info paging_A_Info = new Paging_a_Info(); // calculate total pages int totalPages = (int)Math.Ceiling((decimal)(totalItems / pageSize)); if (totalPages <= 10) { // less than 10 total pages so show all startPage = 1; endPage = totalPages; } else { // more than 10 total pages so calculate start and end pages if (currentPage <= 6) { startPage = 1; endPage = 10; } else if (currentPage + 4 >= totalPages) { startPage = totalPages - 9; endPage = totalPages; } else { startPage = currentPage - 5; endPage = currentPage + 4; } } paging_A_Info.startPage = startPage; paging_A_Info.endPage = endPage; paging_A_Info.totalPages = totalPages; paging_A_Info.currentPage = currentPage; return paging_A_Info; }
public NewsDataPagination_a_ViewModels GetNewsList_a(int user_id, NewsTypes type = NewsTypes.All, int page = 1, int pageSize = 4, string columnOrder = "", string sortByOrder = "asc") { sortByOrder = sortByOrder ?? "asc"; List<NewsDataViewModels> List = new List<NewsDataViewModels>(); List<string> colList = new List<string> { "description", "path", "lname" }; string colName = colList.Where(t => t == columnOrder?.Trim().ToLower()).FirstOrDefault(); List<NewsData> list = null; if (string.IsNullOrEmpty(columnOrder) || colName == null || string.IsNullOrEmpty(sortByOrder)) { list = context.NewsData.Where(p => p.user_id == user_id) .OrderBy(t => t.description).Skip((page - 1) * pageSize).Take<NewsData>(pageSize).ToList(); } else { if (colName == "description") { if (sortByOrder == "asc") { list = context.NewsData.Where(p => p.user_id == user_id) .OrderBy(t => t.description).Skip((page - 1) * pageSize).Take<NewsData>(pageSize).ToList(); } else { list = context.NewsData.Where(p => p.user_id == user_id) .OrderByDescending(t => t.description).Skip((page - 1) * pageSize).Take<NewsData>(pageSize).ToList(); } } else if (colName == "path") { if (sortByOrder == "asc") { list = context.NewsData.Where(p => p.user_id == user_id) .OrderBy(t => t.Path).Skip((page - 1) * pageSize).Take<NewsData>(pageSize).ToList(); } else { list = context.NewsData.Where(p => p.user_id == user_id) .OrderByDescending(t => t.Path).Skip((page - 1) * pageSize).Take<NewsData>(pageSize).ToList(); } } else if (colName == "lname") { if (sortByOrder == "asc") { list = context.NewsData.Where(p => p.user_id == user_id) .OrderBy(t => t.lName).Skip((page - 1) * pageSize).Take<NewsData>(pageSize).ToList(); } else { list = context.NewsData.Where(p => p.user_id == user_id) .OrderByDescending(t => t.lName).Skip((page - 1) * pageSize).Take<NewsData>(pageSize).ToList(); } } } if (list != null && list.Count > 0) { foreach (var item in list) { NewsDataViewModels newsData = new NewsDataViewModels { church = item.church, country = item.country, description = item.description, fName = item.fName, lName = item.lName, person = item.person, province = item.province, status = item.status, User_Id = item.user_id, Path = item.Path }; List.Add(newsData); } int TotalItems = context.NewsData.Where(t => t.user_id == user_id).Count(); Paging_a_Info paging_A_Info_ = PopulatePagingInfo(TotalItems, page, pageSize); //PagingInfo pagingInfo = new PagingInfo //{ // CurrentPage = page, // ItemsPerPage = PageSize, // TotalItems = context.NewsData.Where(t => t.user_id == user_id).Count() //}; return new NewsDataPagination_a_ViewModels { NewsDatasList = List, paging_A_Info = paging_A_Info_ , sortByColumn = columnOrder ,sortByOrder= sortByOrder }; } else { return new NewsDataPagination_a_ViewModels { NewsDatasList = new List<NewsDataViewModels>(), paging_A_Info = new Paging_a_Info { //CurrentPage = page, //ItemsPerPage = PageSize, //TotalItems = 0 } }; } }