コード例 #1
0
ファイル: UserService.cs プロジェクト: qwerelt/GrillBot
        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);
        }
コード例 #2
0
        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)
            });
        }
コード例 #3
0
        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));
        }
コード例 #4
0
ファイル: UsersController.cs プロジェクト: qwerelt/GrillBot
        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)));
        }
コード例 #5
0
        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);
        }
コード例 #6
0
ファイル: UserService.cs プロジェクト: qwerelt/GrillBot
        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));
        }