コード例 #1
0
        public async Task CreateMember(DiscordUser user)
        {
            if (user == null)
            {
                throw new Exception("Please mention the user to be added.");
            }

            var memberId = user.Id.ToString();
            var member   = await _context.GuildMembers
                           .FirstOrDefaultAsync(x => x.DiscordId == memberId)
                           .ConfigureAwait(false);

            if (member != null)
            {
                throw new Exception("Member already exists.");
            }

            var newMember = new GuildMemberViewModel
            {
                DiscordId     = user.Id.ToString(),
                Username      = user.Username,
                Discriminator = user.Discriminator
            };

            var memberEntity = newMember.MapToEntity();

            _context.GuildMembers.Add(memberEntity);
            await _context.SaveChangesAsync().ConfigureAwait(false);

            return;
        }
コード例 #2
0
        public static GuildMember MapToEntity(this GuildMemberViewModel source)
        {
            if (source == null)
            {
                return(null);
            }

            return(new GuildMember
            {
                DiscordId = source.DiscordId,
                Discriminator = source.Discriminator,
                Username = source.Username,
                DisplayName = source.DisplayName,
                //Guild = source.Guild?.MapToEntity(),
                IsGuildMaster = source.IsGuildMaster
            });
        }
コード例 #3
0
        public async Task AddAllUsers(List <DiscordMember> users)
        {
            var userIds       = users.Select(x => x.Id.ToString()).ToList();
            var existingUsers = await _context.GuildMembers
                                .Where(x => userIds.Any(id => id == x.DiscordId))
                                .AsNoTracking()
                                .ToListAsync()
                                .ConfigureAwait(false);

            var newUserList = users.Where(x => existingUsers.All(existing => existing.DiscordId != x.Id.ToString())).ToList();
            var oldUserList = users.Where(x => existingUsers.Any(existing => existing.DiscordId == x.Id.ToString())).ToList();

            foreach (var newUser in newUserList)
            {
                var newMember = new GuildMemberViewModel
                {
                    DiscordId     = newUser.Id.ToString(),
                    Username      = newUser.Username,
                    Discriminator = newUser.Discriminator,
                    DisplayName   = newUser.Nickname
                };

                var memberEntity = newMember.MapToEntity();

                _context.GuildMembers.Add(memberEntity);
            }

            foreach (var oldUser in oldUserList)
            {
                var user = _context.GuildMembers.FirstOrDefault(x => x.DiscordId == oldUser.Id.ToString());
                user.Discriminator = oldUser.Discriminator;
                user.Username      = oldUser.Username;
                user.DisplayName   = oldUser.DisplayName;
                _context.GuildMembers.Update(user);
            }

            await _context.SaveChangesAsync().ConfigureAwait(false);

            return;
        }