Add user email search and sort (#2305)

* Add user sort by email

* Add user search by email
This commit is contained in:
Umar Bolatov
2021-03-29 22:32:44 -07:00
committed by GitHub
parent 0c766a2714
commit a64f71f186
2 changed files with 79 additions and 10 deletions

View File

@@ -19,13 +19,37 @@ namespace BTCPayServer.Controllers
public partial class ServerController
{
[Route("server/users")]
public async Task<IActionResult> ListUsers(UsersViewModel model)
public async Task<IActionResult> ListUsers(
UsersViewModel model,
string sortOrder = null
)
{
model = this.ParseListQuery(model ?? new UsersViewModel());
var users = _UserManager.Users;
model.Total = await users.CountAsync();
model.Users = await users
.Skip(model.Skip).Take(model.Count)
var usersQuery = _UserManager.Users;
if (!string.IsNullOrWhiteSpace(model.SearchTerm))
{
usersQuery = usersQuery.Where(u => u.Email.Contains(model.SearchTerm));
}
if (sortOrder != null)
{
switch (sortOrder)
{
case "desc":
ViewData["NextUserEmailSortOrder"] = "asc";
usersQuery = usersQuery.OrderByDescending(user => user.Email);
break;
case "asc":
usersQuery = usersQuery.OrderBy(user => user.Email);
ViewData["NextUserEmailSortOrder"] = "desc";
break;
}
}
model.Users = await usersQuery
.Skip(model.Skip)
.Take(model.Count)
.Select(u => new UsersViewModel.UserViewModel
{
Name = u.UserName,
@@ -33,7 +57,9 @@ namespace BTCPayServer.Controllers
Id = u.Id,
Verified = u.EmailConfirmed || !u.RequiresEmailConfirmation,
Created = u.Created
}).ToListAsync();
})
.ToListAsync();
model.Total = await usersQuery.CountAsync();
return View(model);
}