public async Task <List <DiscordUser> > GetUsersList(WebAdminUserListFilter filter) { var guild = DiscordClient.GetGuild(filter.GuildID); if (guild == null) { return(new List <DiscordUser>()); } var users = await UserSearchService.FindUsersAsync(guild, filter.UserQuery); var queryFilter = filter.CreateQueryFilter(guild, users); var dbUsers = await GrillBotRepository.UsersRepository.GetUsersQuery(queryFilter, UsersIncludes.None) .Skip((filter.Page == 0 ? 0 : filter.Page - 1) * PaginationInfo.DefaultPageSize).Take(PaginationInfo.DefaultPageSize) .ToListAsync(); var result = new List <DiscordUser>(); foreach (var user in dbUsers) { var mappedUser = await UserHelper.MapUserAsync(DiscordClient, BotState, user); if (mappedUser != null) { result.Add(mappedUser); } } return(result); }
public async Task <PaginationInfo> GetPaginationInfo(WebAdminUserListFilter filter) { var guild = DiscordClient.GetGuild(filter.GuildID); if (guild == null) { return(new PaginationInfo()); } var users = await UserSearchService.FindUsersAsync(guild, filter.UserQuery); var queryFilter = filter.CreateQueryFilter(guild, users); var totalCount = await GrillBotRepository.UsersRepository.GetUsersQuery(queryFilter, UsersIncludes.None).CountAsync(); if (filter.Page < 0) { filter.Page = 0; } var skip = (filter.Page == 0 ? 0 : filter.Page - 1) * PaginationInfo.DefaultPageSize; return(new PaginationInfo() { CanNext = skip + PaginationInfo.DefaultPageSize < totalCount, CanPrev = skip != 0, Page = filter.Page, PagesCount = (int)System.Math.Ceiling(totalCount / (double)PaginationInfo.DefaultPageSize) }); }
public async Task <IActionResult> IndexAsync([FromForm] WebAdminUserListFilter filter) { var guilds = Client.Guilds.ToList(); var users = await UserService.GetUsersList(filter); var filterUsers = await UserService.GetUsersForFilterAsync(); var viewModel = new WebAdminUserListViewModel(users, guilds, filter, filterUsers); return(View(viewModel)); }
public async Task <IActionResult> IndexAsync(WebAdminUserListFilter filter = null) { if (filter == null) { filter = new WebAdminUserListFilter(); } if (filter.GuildID == default) { filter.GuildID = Client.Guilds.FirstOrDefault()?.Id ?? 0; } var guilds = Client.Guilds.ToList(); var users = await UserService.GetUsersList(filter); var pagination = await UserService.GetPaginationInfo(filter); return(View(new WebAdminUserListViewModel(users, guilds, filter, pagination))); }
public async Task <List <DiscordUser> > GetUsersList(WebAdminUserListFilter filter) { var users = new List <DiscordUser>(); using var scope = Services.CreateScope(); using var repository = scope.ServiceProvider.GetService <UsersRepository>(); var dbUsers = repository.GetUsers(filter.Order, filter.SortDesc, filter.GuildID, filter.Limit, filter.UserID).ToList(); foreach (var user in dbUsers) { var mappedUser = await MapUserAsync(user, null); if (mappedUser != null) { users.Add(mappedUser); } } return(users); }
public async Task <PaginationInfo> GetPaginationInfo(WebAdminUserListFilter filter) { var guild = DiscordClient.GetGuild(filter.GuildID); if (guild == null) { return(new PaginationInfo()); } var users = await UserSearchService.FindUsersAsync(guild, filter.UserQuery); var queryFilter = filter.CreateQueryFilter(guild, users); var totalCount = await GrillBotRepository.UsersRepository.GetUsersQuery(queryFilter, UsersIncludes.None).CountAsync(); if (filter.Page < 0) { filter.Page = 0; } var skip = (filter.Page == 0 ? 0 : filter.Page - 1) * PaginationInfo.DefaultPageSize; return(new PaginationInfo(skip, filter.Page, totalCount)); }