public async Task AddModuleManagerRole(ulong guildSnowflake, ulong roleId, WowTrackerModule module) { var config = await _db.ModuleAccessConfigurations .Where(r => r.Guild.Snowflake == guildSnowflake) .FirstOrDefaultAsync(r => r.Module == module); if (config == null) { config = new RoleModuleAccessConfiguration() { Module = module }; config.RoleIds.Add(roleId); var guild = await _db.Guilds.FirstOrDefaultAsync(g => g.Snowflake == guildSnowflake); guild.RoleConfigurations.Add(config); } else { if (!config.RoleIds.Exists(r => r == roleId)) { config.RoleIds.Add(roleId); } } _db.ModuleAccessConfigurations.Update(config); await _db.SaveChangesAsync(); }
public async Task Add(IEnumerable <string> commands, ulong discordChannelId) { var newRestrictions = commands.Select(x => new CommandChannelRestriction(x, discordChannelId)); _db.CommandChannelRestrictions.AddRange(newRestrictions); await _db.SaveChangesAsync().ConfigureAwait(false); }
public async Task AddDkp(ulong guildSnowflake, ulong userSnowflake, int amount) { var user = await _db.Users .Where(u => u.Guild.Snowflake == guildSnowflake) .FirstOrDefaultAsync(u => u.Snowflake == userSnowflake); user.DragonKillPoints += amount; _db.Users.Update(user); await _db.SaveChangesAsync(); }
public async Task EnsureCreated(ulong guildId) { if (_db.Guilds.Any(g => g.Snowflake == guildId)) { return; } var guild = new Guild() { Snowflake = guildId }; _db.Guilds.Add(guild); await _db.SaveChangesAsync(); }
public async Task DeleteProfession(ulong guildSnowflake, ulong userSnowflake, WowProfession professionType) { var user = await _db.Users .Include(u => u.Professions) .Where(u => u.Guild.Snowflake == guildSnowflake) .FirstOrDefaultAsync(u => u.Snowflake == userSnowflake); if (user == null) { return; } var profession = user.Professions.FirstOrDefault(p => p.ProfessionType == professionType); user.Professions.Remove(profession); await _db.SaveChangesAsync().ConfigureAwait(false); }
public async Task AddChannelOptIn(ulong channelId, ulong roleId) { var hasExistingOptIn = await _db.ChannelOptIns.AnyAsync(x => x.DiscordChannelId == channelId).ConfigureAwait(false); if (hasExistingOptIn) { throw new InvalidOperationException("Cannot add multiple opt ins for the same channel"); } var optIn = new ChannelOptIn { DiscordChannelId = channelId, DiscordRoleId = roleId }; _db.ChannelOptIns.Add(optIn); await _db.SaveChangesAsync().ConfigureAwait(false); }
public async Task EnsureCreated(ulong guildSnowflake, ulong userSnowflake) { if (_db.Users.Any(u => u.Guild.Snowflake == guildSnowflake && u.Snowflake == userSnowflake)) { return; } var guild = await _db.Guilds.FirstOrDefaultAsync(g => g.Snowflake == guildSnowflake); if (guild == null) { throw new ArgumentException($"Cannot add user with id {userSnowflake} to guild {guildSnowflake} because it doesn't exist."); } var newUser = new WowTrackerUser() { Snowflake = userSnowflake }; guild.Users.Add(newUser); _db.Guilds.Update(guild); await _db.SaveChangesAsync(); }