public async Task SetAsync(CommandContext ctx, double rate, [Remainder] string rolename) { if (await ctx.Member.IsOwner() != true) { await ctx.ReplyAsync($"Only the owner of this server can use this command!"); return; } RoleIncomes roleincome = await Client.DBContext.RoleIncomes.FirstOrDefaultAsync(x => x.RoleName == rolename && x.PlanetId == ctx.Message.Planet_Id); if (roleincome == null) { PlanetRole role = await(await Cache.GetPlanet(ctx.Planet.Id)).GetRole(rolename); if (role == null) { await ctx.ReplyAsync($"Could not find role {rolename}!"); return; } roleincome = new RoleIncomes(); roleincome.Income = rate; roleincome.RoleId = role.Id; roleincome.PlanetId = ctx.Message.Planet_Id; roleincome.RoleName = role.Name; roleincome.LastPaidOut = DateTime.UtcNow; Client.DBContext.RoleIncomes.Add(roleincome); Client.DBContext.SaveChanges(); await ctx.ReplyAsync($"Set {rolename}'s hourly income/cost to {roleincome.Income} coins!"); } else { roleincome.Income = rate; await Client.DBContext.SaveChangesAsync(); await ctx.ReplyAsync($"Set {rolename}'s hourly income/cost to {roleincome.Income} coins!"); } }
public async Task UpdateRoleIncomes(List <Planet> planets, bool force, PopeAIDB Context) { RoleIncomes first = await Context.RoleIncomes.FirstOrDefaultAsync(); if (first == null) { first = new RoleIncomes(); first.LastPaidOut = DateTime.UtcNow; first.RoleId = 0; } if (DateTime.UtcNow > first.LastPaidOut.AddHours(1) || first.RoleId == 0 || force) { List <PlanetMemberInfo> memberinfo = new List <PlanetMemberInfo>(); Dictionary <ulong, RoleIncomes> RoleIncomeRoleIds = new Dictionary <ulong, RoleIncomes>(); List <ulong> PlanetIds = new List <ulong>(); foreach (RoleIncomes roleincome in Context.RoleIncomes) { RoleIncomeRoleIds.Add(roleincome.RoleId, roleincome); roleincome.LastPaidOut = DateTime.UtcNow; if (PlanetIds.Contains(roleincome.PlanetId) == false) { PlanetIds.Add(roleincome.PlanetId); } } foreach (ulong planetid in PlanetIds) { CurrentStat current = await Context.CurrentStats.FirstOrDefaultAsync(x => x.PlanetId == planetid); foreach (PlanetMember member in await(await Cache.GetPlanet(planetid)).GetMembers()) { foreach (ulong roleid in member.RoleIds) { if (RoleIncomeRoleIds.ContainsKey(roleid)) { RoleIncomes roleincome = RoleIncomeRoleIds[roleid]; (await Context.Users.FirstOrDefaultAsync(x => x.UserId == member.User_Id && x.PlanetId == member.Planet_Id)).Coins += roleincome.Income; current.NewCoins += roleincome.Income; } } } } } await Context.SaveChangesAsync(); }
public async Task ViewAsync(CommandContext ctx, [Remainder] string rolename) { PlanetRole role = await(await Cache.GetPlanet(ctx.Planet.Id)).GetRole(rolename); if (role == null) { await ctx.ReplyAsync($"Could not find role {rolename}"); return; } RoleIncomes roleincome = await Client.DBContext.RoleIncomes.FirstOrDefaultAsync(x => x.RoleName == rolename && x.PlanetId == ctx.Message.Planet_Id); if (roleincome == null) { await ctx.ReplyAsync($"Hourly Income/Cost has not been set for role {rolename}"); return; } await ctx.ReplyAsync($"Hourly Income/Cost for {rolename} is {roleincome.Income} coins"); }