public ViewResult RecordsList(SortingInfo sortingInfo, string sortOrder, string searchString, int page = 1) { var userId = User.Identity.GetUserId(); sortingInfo.DataSort = String.IsNullOrEmpty(sortOrder) ? "date_desc" : ""; sortingInfo.NameSort = sortOrder == "name" ? "name_desc" : "name"; sortingInfo.ChargeSort = sortOrder == "charge" ? "charge_desc" : "charge"; sortingInfo.CategorySort = sortOrder == "category" ? "category_desc" : "category"; sortingInfo.SubcategorySort = sortOrder == "subcategory" ? "subcategory_desc" : "subcategory"; var parameters = _recordsRepository.Records.Where(p => p.UserID == userId); if (!String.IsNullOrEmpty(searchString)) { parameters = parameters.Where(p => p.Name.Contains(searchString) || p.Category.Contains(searchString) && p.UserID == userId); } switch (sortOrder) { case "date_desc": parameters = parameters.OrderByDescending(s => s.Date); break; case "name": parameters = parameters.OrderBy(s => s.Name); break; case "name_desc": parameters = parameters.OrderByDescending(s => s.Name); break; case "category": parameters = parameters.OrderBy(s => s.Category); break; case "category_desc": parameters = parameters.OrderByDescending(s => s.Category); break; case "subcategory": parameters = parameters.OrderBy(s => s.Subcategory); break; case "subcategory_desc": parameters = parameters.OrderByDescending(s => s.Subcategory); break; case "charge": parameters = parameters.OrderBy(s => s.Charge); break; case "charge_desc": parameters = parameters.OrderByDescending(s => s.Charge); break; default: parameters = parameters.OrderBy(s => s.Date); break; } RecordsListViewModel model = new RecordsListViewModel { Records = parameters.Skip((page - 1) * PageSize).Take(PageSize), PagingInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = PageSize, TotalItems = parameters.Count(), }, SortingInfo = new SortingInfo { CurrentSearch = searchString, CurrentSort = sortOrder, NameSort = sortingInfo.NameSort, CategorySort = sortingInfo.CategorySort, SubcategorySort = sortingInfo.SubcategorySort, DataSort = sortingInfo.DataSort, ChargeSort = sortingInfo.ChargeSort, } }; return(View(model)); }
public ActionResult Index(int page = 1, string column = "Created", bool descending = true) { IEnumerable <Record> query = db.Records; switch (column) { case "Created": if (descending) { query = query.OrderByDescending(x => x.Created); } else { query = query.OrderBy(x => x.Created); } break; case "UserName": if (descending) { query = query.OrderByDescending(x => x.UserName); } else { query = query.OrderBy(x => x.UserName); } break; case "EMail": if (descending) { query = query.OrderByDescending(x => x.EMail); } else { query = query.OrderBy(x => x.EMail); } break; default: query = query.OrderByDescending(x => x.Created); break; } ; query = query.Skip((page - 1) * PageSize).Take(PageSize); RecordsListViewModel model = new RecordsListViewModel { Records = query, PagingInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = PageSize, TotalItems = db.Records.Count() }, SortingInfo = new SortingInfo { Column = column, Descending = descending } }; return(View(model)); }