public async Task Ganglb() { using (var db = new SQLite.Models.DbContext()) { var guildRepo = new GuildRepository(db); var gangRepo = new GangRepository(db); var gangs = gangRepo.GetAll().OrderByDescending(x => x.Wealth); string message = "```asciidoc\n= The Wealthiest Gangs =\n"; int position = 1; int longest = 0; foreach (var gang in gangs) { if (Context.Guild.Id != gang.GuildId) { continue; } if (gang.Name.Length > longest) { longest = $"{position}. {gang.Name}".Length; } if (position >= Config.GANGSLB_CAP || gangs.Last().Id == gang.Id) { break; } position++; } int positionInMessage = 1; foreach (var gang in gangs) { if (Context.Guild.Id != gang.GuildId) { continue; } message += $"{positionInMessage}. {gang.Name}".PadRight(longest + 2) + $" :: {gang.Wealth.ToString("C2")}\n"; if (positionInMessage >= Config.GANGSLB_CAP) { break; } positionInMessage++; } if ((await guildRepo.FetchGuildAsync(Context.Guild.Id)).DM) { var channel = await Context.User.CreateDMChannelAsync(); await channel.SendMessageAsync($"{message}```"); } else { await ReplyAsync($"{message}```"); } } }
private async void OnTimedApplyInterest(object source, ElapsedEventArgs e) { using (var db = new DbContext()) { var gangRepo = new GangRepository(db); Gang[] gangs = gangRepo.GetAll().ToArray(); foreach (var gang in gangs) { var InterestRate = 0.025f + ((gang.Wealth / 100) * .000075f); if (InterestRate > 0.1) { InterestRate = 0.1f; } gang.Wealth *= 1 + InterestRate; } await db.SaveChangesAsync(); } }
public async Task ChangeGangName([Remainder] string name) { using (var db = new SQLite.Models.DbContext()) { var gangRepo = new GangRepository(db); var userRepo = new UserRepository(db); var user = await userRepo.FetchUserAsync(Context.User.Id); if (user.Cash < Config.GANG_NAME_CHANGE_COST) { throw new Exception($"You do not have {Config.GANG_NAME_CHANGE_COST.ToString("C2")}. Balance: {user.Cash.ToString("C2")}."); } if (await gangRepo.GetAll().AnyAsync(x => x.Name == name)) { throw new Exception($"There is already a gang by the name {name}."); } await userRepo.EditCashAsync(Context, -Config.GANG_NAME_CHANGE_COST); await gangRepo.ModifyAsync(x => { x.Name = name; return(Task.CompletedTask); }, Context.User.Id, Context.Guild.Id); await ReplyAsync($"You have successfully changed your gang name to {name} at the cost of {Config.GANG_NAME_CHANGE_COST.ToString("C2")}."); } }