public async Task AddStat(string name, double value, ulong PlanetId, PopeAIDB Context) { CurrentStat current = await Context.CurrentStats.FirstOrDefaultAsync(x => x.PlanetId == PlanetId); if (current == null) { CurrentStat newstat = new CurrentStat(); newstat.PlanetId = PlanetId; newstat.NewCoins = 0; newstat.MessagesSent = 0; newstat.MessagesUsersSent = 0; newstat.LastStatUpdate = DateTime.UtcNow; await Context.CurrentStats.AddAsync(newstat); await Context.SaveChangesAsync(); current = await Context.CurrentStats.FirstAsync(x => x.PlanetId == PlanetId); } switch (name) { case "Coins": current.NewCoins += value; break; case "UserMessage": current.MessagesUsersSent += (ulong)value; break; case "Message": current.MessagesSent += (ulong)value; break; } await Context.SaveChangesAsync(); }
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 UpdateStats(PopeAIDB Context) { CurrentStat first = await Context.CurrentStats.FirstOrDefaultAsync(); if (first == null) { first = new CurrentStat(); first.LastStatUpdate = DateTime.UtcNow; } if (Context.CurrentStats.Count() == 0) { return; } Random rnd = new Random(); if (DateTime.UtcNow > first.LastStatUpdate.AddHours(1)) { foreach (CurrentStat currentstat in Context.CurrentStats) { Stat newstat = new Stat(); newstat.Time = DateTime.UtcNow; newstat.NewCoins = currentstat.NewCoins; newstat.MessagesSent = currentstat.MessagesSent; newstat.PlanetId = currentstat.PlanetId; newstat.MessagesUsersSent = currentstat.MessagesUsersSent; ulong num = (ulong)rnd.Next(1, int.MaxValue); while (await Context.Stats.FirstOrDefaultAsync(x => x.Id == num) != null) { num = (ulong)rnd.Next(1, int.MaxValue); } newstat.Id = num; await Context.Stats.AddAsync(newstat); currentstat.NewCoins = 0; currentstat.MessagesSent = 0; currentstat.MessagesUsersSent = 0; currentstat.LastStatUpdate = DateTime.UtcNow; } } await Context.SaveChangesAsync(); }
public FootballPlay() { CurrentStats = new CurrentStat(); SeasonStats = new SeasonStat(); CareerStats = new CareerStat(); }