private PageTuskDTO GetTusk(TableTuskDTO search, int page, int pageSize) { var tusks = from tsks in dbContext.DraftTasks select new TableTuskDTO { Id = tsks.Id, Theme = tsks.Theme, Text = tsks.Text }; int count = tusks.Count(); switch (search.SortField) { case "Theme": tusks = search.SortOrder.Equals("asc") ? tusks.OrderBy(p => p.Theme).Skip((page - 1) * pageSize).Take(pageSize) : tusks.OrderByDescending(p => p.Theme).Skip((page - 1) * pageSize).Take(pageSize); break; case "Text": tusks = search.SortOrder.Equals("asc") ? tusks.OrderBy(p => p.Text).Skip((page - 1) * pageSize).Take(pageSize) : tusks.OrderByDescending(p => p.Text).Skip((page - 1) * pageSize).Take(pageSize); break; default: tusks = tusks.OrderByDescending(d => d.Theme).Skip((page - 1) * pageSize).Take(pageSize); break; } var pageInfo = new PageInfo { PageNumber = page, PageSize = pageSize, TotalItems = count }; var pageTuskDTO = new PageTuskDTO { PageInfo = pageInfo, Tusk = tusks.ToList() }; return(pageTuskDTO); }
// GET: Task public ActionResult Index(string sorting = "", int page = 1) { PageTuskViewModel ptvm = new PageTuskViewModel { search = new TableTuskViewModel() }; if (string.IsNullOrEmpty(sorting)) { ptvm.search.SortField = ""; ptvm.search.SortOrder = ""; } else { string[] sort = sorting.Split('-'); ptvm.search.SortField = sort[0]; ptvm.search.SortOrder = sort[1]; } TableTuskDTO tuskDTO = new TableTuskDTO { SortOrder = ptvm.search.SortOrder, SortField = ptvm.search.SortField }; PageTuskDTO pagetTuskDTO = GetTusk(tuskDTO, page, 30); var config = new MapperConfiguration(cfg => cfg.CreateMap <TableTuskDTO, TableTuskViewModel>()); var mapper = config.CreateMapper(); var tusks = mapper.Map <IEnumerable <TableTuskDTO>, List <TableTuskViewModel> >(pagetTuskDTO.Tusk); var tuskAsIPagedlist = new StaticPagedList <TableTuskViewModel>(tusks, pagetTuskDTO.PageInfo.PageNumber, pagetTuskDTO.PageInfo.PageSize, pagetTuskDTO.PageInfo.TotalItems); ptvm.PageInfo = new PageInfo { PageNumber = pagetTuskDTO.PageInfo.PageNumber, PageSize = pagetTuskDTO.PageInfo.PageSize, TotalItems = pagetTuskDTO.PageInfo.TotalItems }; ptvm.Tusk = tuskAsIPagedlist; var categoryListGroup = new SelectListGroup { Name = "Статусы" }; ptvm.Sorting = new List <SelectListItem> { new SelectListItem() { Text = "Нет сортировки", Value = "", Selected = true } }; categoryListGroup = new SelectListGroup { Name = "По убыванию" }; ptvm.Sorting.Add(new SelectListItem() { Text = "Тема", Group = categoryListGroup, Value = "Theme-desc" }); ptvm.Sorting.Add(new SelectListItem() { Text = "Содержание", Group = categoryListGroup, Value = "Text-desc" }); categoryListGroup = new SelectListGroup { Name = "По возрастанию" }; ptvm.Sorting.Add(new SelectListItem() { Text = "Тема", Group = categoryListGroup, Value = "Theme-asc" }); ptvm.Sorting.Add(new SelectListItem() { Text = "Содержание", Group = categoryListGroup, Value = "Text-asc" }); return(View(ptvm)); }