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));
        }