//id == page public ActionResult Users(int page = 1, string orderby = "", string option = "", int pageSize = 10, string search = "") { if (page < 1) { page = 1; } orderby = orderby.ToLower(); option = option.ToLower(); ViewBag.FirstNameOption = (orderby == "firstname" && option == "asc") ? "desc" : "asc"; ViewBag.LastNameOption = (orderby == "lastname" && option == "asc") ? "desc" : "asc"; ViewBag.UsernameOption = (orderby == "username" && option == "asc") ? "desc" : "asc"; ListUsersInput input = new ListUsersInput { page = page, orderby = orderby, option = option, PageSize = pageSize, search = search }; var result = _userService.GetAllUsers(input); int maxPages = result.TotalCount / pageSize; if (result.TotalCount % pageSize > 0) { maxPages++; } ViewBag.pages = maxPages; return(View(result)); }
public ListUsersDto GetAllUsers(ListUsersInput input) { var query = db.Users.AsQueryable(); if (input.option == "asc") { if (input.orderby == "firstname") { query = query.OrderBy(x => x.FirstName); } else if (input.orderby == "lastname") { query = query.OrderBy(x => x.LastName); } else if (input.orderby == "username") { query = query.OrderBy(x => x.UserName); } else { query = query.OrderBy(x => x.LastName); } } else { if (input.orderby == "firstname") { query = query.OrderByDescending(x => x.FirstName); } else if (input.orderby == "lastname") { query = query.OrderByDescending(x => x.LastName); } else if (input.orderby == "username") { query = query.OrderByDescending(x => x.UserName); } else { query = query.OrderBy(x => x.LastName); } } if (!string.IsNullOrEmpty(input.search)) { query = query.Where(x => x.FirstName.Contains(input.search) || x.LastName.Contains(input.search) || x.UserName.Contains(input.search)); } var tempResult = query.Skip((input.page - 1) * input.PageSize).Take(input.PageSize).Select(x => new { x.Id, x.FirstName, x.LastName, x.UserName }); ListUsersDto result = new ListUsersDto { TotalCount = query.Count(), Users = tempResult.Select(x => new UserDto { ID = x.Id, FirstName = x.FirstName, LastName = x.LastName, Username = x.UserName }).ToList() }; return(result); }