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; }
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 }); }
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; }