public async Task <ActionResult> Index([FromQuery] UsersListRequestVM vm) { var users = await _users.GetUsersAsync(vm); ViewBag.AllowPasswordAuth = _config.GetStaticConfig().Auth.AllowPasswordAuth; return(View(users)); }
/// <summary> /// Returns the request with default/valid values. /// </summary> private UsersListRequestVM NormalizeListRequest(UsersListRequestVM vm) { if (vm == null) { vm = new UsersListRequestVM(); } var orderableFields = new[] { nameof(UserTitleVM.FullName), nameof(UserTitleVM.Email) }; if (!orderableFields.Contains(vm.OrderBy)) { vm.OrderBy = orderableFields[0]; } if (vm.Page < 0) { vm.Page = 0; } if (vm.OrderDescending == null) { vm.OrderDescending = false; } return(vm); }
/// <summary> /// Returns the list of all registered users. /// </summary> public async Task <UsersListVM> GetUsersAsync(UsersListRequestVM request) { const int PageSize = 20; request = NormalizeListRequest(request); var query = await LoadUsersAsync(); if (!string.IsNullOrEmpty(request.SearchQuery)) { var nq = request.SearchQuery.ToLower(); query = query.Where(x => x.FullName.ToLower().Contains(nq) || x.Email.ToLower().Contains(nq)); } if (request.Roles?.Length > 0) { query = query.Where(x => request.Roles.Contains(x.Role)); } var totalCount = query.Count(); var items = query.OrderBy(request.OrderBy, request.OrderDescending) .Skip(PageSize * request.Page) .Take(PageSize) .ToList(); return(new UsersListVM { Items = items, PageCount = (int)Math.Ceiling((double)totalCount / PageSize), Request = request }); }
public async Task <ActionResult> Index([FromQuery] UsersListRequestVM vm) { var users = await _users.GetUsersAsync(vm); return(View(users)); }