コード例 #1
0
ファイル: Gangs.cs プロジェクト: txhawkeye/DEA
        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}```");
                }
            }
        }
コード例 #2
0
ファイル: RecurringFunctions.cs プロジェクト: txhawkeye/DEA
 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();
     }
 }
コード例 #3
0
ファイル: Gangs.cs プロジェクト: txhawkeye/DEA
        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")}.");
            }
        }